diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..255097ef --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,33 @@ +name: test + +on: + push: + branches: + - master + pull_request: + +jobs: + test: + runs-on: ${{ matrix.operating-system }} + + strategy: + matrix: + operating-system: [ubuntu-latest, windows-latest, macOS-latest] + + steps: + - name: Checkout + uses: actions/checkout@master + + - name: Set Node.js 10.x + uses: actions/setup-node@master + with: + version: 10.x + + - name: npm install + run: npm install + + - name: npm lint + run: npm run format-check + + - name: npm test + run: npm test \ No newline at end of file diff --git a/LICENSE b/LICENSE index f288702d..e72bfdda 100644 --- a/LICENSE +++ b/LICENSE @@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. +. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..662ff009 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# setup-protoc + +This action makes the `protoc` compiler available to Workflows. + +## Usage + +To get the latest stable version of `protoc` just add this step: + +```yaml +- name: Install Protoc + uses: Arduino/actions/setup-protoc@master +``` + +If you want to pin a major or minor version you can use the `.x` wildcard: + +```yaml +- name: Install Protoc + uses: Arduino/actions/setup-protoc@master + with: + version: '3.x' +``` + +You can also require to include releases marked as `pre-release` in Github using the `include-pre-releases` flag (the dafault value for this flag is `false`) + +```yaml +- name: Install Protoc + uses: Arduino/actions/setup-protoc@master + with: + version: '3.x' + include-pre-releases: true +``` + +To pin the exact version: + +```yaml +- name: Install Protoc + uses: Arduino/actions/setup-protoc@master + with: + version: '3.9.1' +``` + +## Development + +To work on the codebase you have to install all the dependencies: + +```sh +# npm install +``` + +To run the tests: + +```sh +# npm run test +``` + +## Enable verbose logging for a pipeline +Additional log events with the prefix ::debug:: can be enabled by setting the secret `ACTIONS_STEP_DEBUG` to `true`. + +See [step-debug-logs](https://github.com/actions/toolkit/blob/master/docs/action-debugging.md#step-debug-logs) for reference. + + + +## Release + +We check in the `node_modules` to provide runtime dependencies to the system +using the Action, so be careful not to `git add` all the development dependencies +you might have under your local `node_modules`. To release a new version of the +Action the workflow should be the following: + +1. `npm install` to add all the dependencies, included development. +1. `npm run test` to see everything works as expected. +1. `npm run build` to build the Action under the `./lib` folder. +1. `rm -rf node_modules` to remove all the dependencies. +1. `npm install --production` to add back **only** the runtime dependencies. +1. `git add lib node_modules` to check in the code that matters. +1. open a PR and request a review. diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts new file mode 100644 index 00000000..55bb28f2 --- /dev/null +++ b/__tests__/main.test.ts @@ -0,0 +1,115 @@ +import io = require("@actions/io"); +import path = require("path"); +import os = require("os"); +import fs = require("fs"); +import nock = require("nock"); + +const toolDir = path.join(__dirname, "runner", "tools"); +const tempDir = path.join(__dirname, "runner", "temp"); +const dataDir = path.join(__dirname, "testdata"); +const IS_WINDOWS = process.platform === "win32"; + +process.env["RUNNER_TEMP"] = tempDir; +process.env["RUNNER_TOOL_CACHE"] = toolDir; +import * as installer from "../src/installer"; + +describe("installer tests", () => { + beforeEach(async function() { + await io.rmRF(toolDir); + await io.rmRF(tempDir); + await io.mkdirP(toolDir); + await io.mkdirP(tempDir); + }); + + afterAll(async () => { + try { + await io.rmRF(toolDir); + await io.rmRF(tempDir); + } catch { + console.log("Failed to remove test directories"); + } + }); + + it("Downloads version of protoc if no matching version is installed", async () => { + await installer.getProtoc("3.9.0", true); + const protocDir = path.join(toolDir, "protoc", "3.9.0", os.arch()); + + expect(fs.existsSync(`${protocDir}.complete`)).toBe(true); + + if (IS_WINDOWS) { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc.exe"))).toBe( + true + ); + } else { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc"))).toBe(true); + } + }, 100000); + + describe("Gets the latest release of protoc", () => { + beforeEach(() => { + nock("https://api.github.com") + .get("/repos/protocolbuffers/protobuf/releases") + .replyWithFile(200, path.join(dataDir, "releases.json")); + }); + + afterEach(() => { + nock.cleanAll(); + nock.enableNetConnect(); + }); + + it("Gets the latest 3.7.x version of protoc using 3.7 and no matching version is installed", async () => { + await installer.getProtoc("3.7", true); + const protocDir = path.join(toolDir, "protoc", "3.7.1", os.arch()); + + expect(fs.existsSync(`${protocDir}.complete`)).toBe(true); + if (IS_WINDOWS) { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc.exe"))).toBe( + true + ); + } else { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc"))).toBe(true); + } + }, 100000); + + it("Gets latest version of protoc using 3.x and no matching version is installed", async () => { + await installer.getProtoc("3.x", true); + const protocDir = path.join(toolDir, "protoc", "3.9.1", os.arch()); + + expect(fs.existsSync(`${protocDir}.complete`)).toBe(true); + if (IS_WINDOWS) { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc.exe"))).toBe( + true + ); + } else { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc"))).toBe(true); + } + }, 100000); + }); + + describe("Gets the latest release of protoc with broken latest rc tag", () => { + beforeEach(() => { + nock("https://api.github.com") + .get("/repos/protocolbuffers/protobuf/releases") + .replyWithFile(200, path.join(dataDir, "releases-broken-rc-tag.json")); + }); + + afterEach(() => { + nock.cleanAll(); + nock.enableNetConnect(); + }); + + it("Gets latest version of protoc using 3.x with a broken rc tag, filtering pre-releases", async () => { + await installer.getProtoc("3.x", false); + const protocDir = path.join(toolDir, "protoc", "3.9.1", os.arch()); + + expect(fs.existsSync(`${protocDir}.complete`)).toBe(true); + if (IS_WINDOWS) { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc.exe"))).toBe( + true + ); + } else { + expect(fs.existsSync(path.join(protocDir, "bin", "protoc"))).toBe(true); + } + }, 100000); + }); +}); diff --git a/__tests__/testdata/releases-broken-rc-tag.json b/__tests__/testdata/releases-broken-rc-tag.json new file mode 100644 index 00000000..d272fb2b --- /dev/null +++ b/__tests__/testdata/releases-broken-rc-tag.json @@ -0,0 +1,21865 @@ +[ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/19788509", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/19788509/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/19788509/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.10.0-rc1", + "id": 19788509, + "node_id": "MDc6UmVsZWFzZTE5Nzg4NTA5", + "tag_name": "v3.10.0-rc1", + "target_commitish": "3.10.x", + "name": "Protocol Buffers v3.10.0-rc1", + "draft": false, + "author": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-09-05T17:18:54Z", + "published_at": "2019-09-05T19:14:47Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770407", + "id": 14770407, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDA3", + "name": "protobuf-all-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7185979, + "download_count": 109, + "created_at": "2019-09-05T18:57:37Z", + "updated_at": "2019-09-05T18:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-all-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770408", + "id": 14770408, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDA4", + "name": "protobuf-all-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 9325755, + "download_count": 106, + "created_at": "2019-09-05T18:57:37Z", + "updated_at": "2019-09-05T18:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-all-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770409", + "id": 14770409, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDA5", + "name": "protobuf-cpp-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4600297, + "download_count": 16, + "created_at": "2019-09-05T18:57:37Z", + "updated_at": "2019-09-05T18:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-cpp-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770410", + "id": 14770410, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDEw", + "name": "protobuf-cpp-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5615223, + "download_count": 31, + "created_at": "2019-09-05T18:57:37Z", + "updated_at": "2019-09-05T18:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-cpp-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770411", + "id": 14770411, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDEx", + "name": "protobuf-csharp-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5047756, + "download_count": 2, + "created_at": "2019-09-05T18:57:37Z", + "updated_at": "2019-09-05T18:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-csharp-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770412", + "id": 14770412, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDEy", + "name": "protobuf-csharp-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6252048, + "download_count": 12, + "created_at": "2019-09-05T18:57:38Z", + "updated_at": "2019-09-05T18:57:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-csharp-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770413", + "id": 14770413, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDEz", + "name": "protobuf-java-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5268154, + "download_count": 10, + "created_at": "2019-09-05T18:57:38Z", + "updated_at": "2019-09-05T18:57:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-java-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770414", + "id": 14770414, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDE0", + "name": "protobuf-java-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6634508, + "download_count": 20, + "created_at": "2019-09-05T18:57:38Z", + "updated_at": "2019-09-05T18:57:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-java-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770415", + "id": 14770415, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDE1", + "name": "protobuf-js-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4767251, + "download_count": 3, + "created_at": "2019-09-05T18:57:38Z", + "updated_at": "2019-09-05T18:57:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-js-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770416", + "id": 14770416, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDE2", + "name": "protobuf-js-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5888908, + "download_count": 9, + "created_at": "2019-09-05T18:57:38Z", + "updated_at": "2019-09-05T18:57:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-js-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770417", + "id": 14770417, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDE3", + "name": "protobuf-objectivec-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4978078, + "download_count": 2, + "created_at": "2019-09-05T18:57:38Z", + "updated_at": "2019-09-05T18:57:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-objectivec-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770418", + "id": 14770418, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDE4", + "name": "protobuf-objectivec-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6175153, + "download_count": 3, + "created_at": "2019-09-05T18:57:39Z", + "updated_at": "2019-09-05T18:57:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-objectivec-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770419", + "id": 14770419, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDE5", + "name": "protobuf-php-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4941277, + "download_count": 1, + "created_at": "2019-09-05T18:57:39Z", + "updated_at": "2019-09-05T18:57:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-php-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770420", + "id": 14770420, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDIw", + "name": "protobuf-php-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6079058, + "download_count": 2, + "created_at": "2019-09-05T18:57:39Z", + "updated_at": "2019-09-05T18:57:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-php-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770421", + "id": 14770421, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDIx", + "name": "protobuf-python-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4922711, + "download_count": 16, + "created_at": "2019-09-05T18:57:39Z", + "updated_at": "2019-09-05T18:57:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-python-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770422", + "id": 14770422, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDIy", + "name": "protobuf-python-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6050866, + "download_count": 32, + "created_at": "2019-09-05T18:57:39Z", + "updated_at": "2019-09-05T18:57:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-python-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770423", + "id": 14770423, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDIz", + "name": "protobuf-ruby-3.10.0-rc-1.tar.gz", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4865888, + "download_count": 1, + "created_at": "2019-09-05T18:57:39Z", + "updated_at": "2019-09-05T18:57:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-ruby-3.10.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770424", + "id": 14770424, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDI0", + "name": "protobuf-ruby-3.10.0-rc-1.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5936552, + "download_count": 2, + "created_at": "2019-09-05T18:57:39Z", + "updated_at": "2019-09-05T18:57:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protobuf-ruby-3.10.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770425", + "id": 14770425, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDI1", + "name": "protoc-3.10.0-rc-1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1469716, + "download_count": 6, + "created_at": "2019-09-05T18:57:40Z", + "updated_at": "2019-09-05T18:57:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770426", + "id": 14770426, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDI2", + "name": "protoc-3.10.0-rc-1-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1621421, + "download_count": 4, + "created_at": "2019-09-05T18:57:40Z", + "updated_at": "2019-09-05T18:57:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770427", + "id": 14770427, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDI3", + "name": "protoc-3.10.0-rc-1-linux-s390x_64.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1527382, + "download_count": 6, + "created_at": "2019-09-05T18:57:40Z", + "updated_at": "2019-09-05T18:57:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-linux-s390x_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770429", + "id": 14770429, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDI5", + "name": "protoc-3.10.0-rc-1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1521474, + "download_count": 1, + "created_at": "2019-09-05T18:57:40Z", + "updated_at": "2019-09-05T18:57:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770430", + "id": 14770430, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDMw", + "name": "protoc-3.10.0-rc-1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1577972, + "download_count": 56, + "created_at": "2019-09-05T18:57:40Z", + "updated_at": "2019-09-05T18:57:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770431", + "id": 14770431, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDMx", + "name": "protoc-3.10.0-rc-1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2931347, + "download_count": 1, + "created_at": "2019-09-05T18:57:40Z", + "updated_at": "2019-09-05T18:57:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770432", + "id": 14770432, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDMy", + "name": "protoc-3.10.0-rc-1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2890572, + "download_count": 56, + "created_at": "2019-09-05T18:57:40Z", + "updated_at": "2019-09-05T18:57:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770434", + "id": 14770434, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDM0", + "name": "protoc-3.10.0-rc-1-win32.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1088664, + "download_count": 31, + "created_at": "2019-09-05T18:57:41Z", + "updated_at": "2019-09-05T18:57:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14770435", + "id": 14770435, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0NzcwNDM1", + "name": "protoc-3.10.0-rc-1-win64.zip", + "label": null, + "uploader": { + "login": "rafi-kamal", + "id": 1899039, + "node_id": "MDQ6VXNlcjE4OTkwMzk=", + "avatar_url": "https://avatars0.githubusercontent.com/u/1899039?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/rafi-kamal", + "html_url": "https://github.com/rafi-kamal", + "followers_url": "https://api.github.com/users/rafi-kamal/followers", + "following_url": "https://api.github.com/users/rafi-kamal/following{/other_user}", + "gists_url": "https://api.github.com/users/rafi-kamal/gists{/gist_id}", + "starred_url": "https://api.github.com/users/rafi-kamal/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/rafi-kamal/subscriptions", + "organizations_url": "https://api.github.com/users/rafi-kamal/orgs", + "repos_url": "https://api.github.com/users/rafi-kamal/repos", + "events_url": "https://api.github.com/users/rafi-kamal/events{/privacy}", + "received_events_url": "https://api.github.com/users/rafi-kamal/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1413169, + "download_count": 180, + "created_at": "2019-09-05T18:57:41Z", + "updated_at": "2019-09-05T18:57:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.10.0-rc1/protoc-3.10.0-rc-1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.10.0-rc1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.10.0-rc1", + "body": " ## C++\r\n * Switch the proto parser to the faster MOMI parser.\r\n * Properly escape Struct keys in the proto3 JSON serializer.\r\n * Fix crash on uninitialized map entries.\r\n * Informed the compiler of has-bit invariant to produce better code\r\n * Unused imports of files defining descriptor extensions will now be reported\r\n * Add proto2::util::RemoveSubranges to remove multiple subranges in linear time.\r\n * Added BaseTextGenerator::GetCurrentIndentationSize()\r\n * Made implicit weak fields compatible with the Apple linker\r\n * Support 32 bit values for ProtoStreamObjectWriter to Struct.\r\n * Removed the internal-only header coded_stream_inl.h and the internal-only methods defined there.\r\n * Enforced no SWIG wrapping of descriptor_database.h (other headers already had this restriction).\r\n * Implementation of the equivalent of the MOMI parser for serialization. This removes one of the two serialization routines, by making the fast array serialization routine completely general. SerializeToCodedStream can now be implemented in terms of the much much faster array serialization. The array serialization regresses slightly, but when array serialization is not possible this wins big. \r\n * Do not convert unknown field name to snake case to accurately report error.\r\n * Fix a UBSAN warnings. (#6333)\r\n * Add podspec for C++ (#6404)\r\n * protoc: fix source code info location for missing label (#6436)\r\n * C++ Add move constructor for Reflection's SetString (#6477)\r\n\r\n ## Java\r\n * Call loadDescriptor outside of synchronized block to remove one possible source of deadlock.\r\n * Have oneof enums implement a separate interface (other than EnumLite) for clarity.\r\n * Opensource Android Memory Accessors\r\n * Update TextFormat to make use of the new TypeRegistry.\r\n * Support getFieldBuilder and getRepeatedFieldBuilder in ExtendableBuilder\r\n * Update JsonFormat to make use of the new TypeRegistry.\r\n * Add proguard config generator for GmmBenchmarkSuiteLite.\r\n * Change ProtobufArrayList to use Object[] instead of ArrayList for 5-10% faster parsing\r\n * Implement ProtobufArrayList.add(E) for 20% (5%-40%) faster overall protolite2 parsing\r\n * Make a copy of JsonFormat.TypeRegistry at the protobuf top level package. This will eventually replace JsonFormat.TypeRegistry.\r\n * Fix javadoc warnings in generated files (#6231)\r\n * Java: Add Automatic-Module-Name entries to the Manifest (#6568)\r\n\r\n ## Python\r\n * Add descriptor methods in descriptor_pool are deprecated.\r\n * Uses explicit imports to prevent multithread test failures in py3.\r\n * Added __delitem__ for Python extension dict\r\n * Update six version to 1.12.0 and fix legacy_create_init issue (#6391)\r\n\r\n ## JavaScript\r\n * Remove deprecated boolean option to getResultBase64String().\r\n * Fix sint64 zig-zag encoding.\r\n * Simplify hash64 string conversion to avoid DIGIT array. Should reduce overhead if these functions aren't used, and be more efficient by avoiding linear array searches.\r\n * Change the parameter types of binaryReaderFn in ExtensionFieldBinaryInfo to (number, ?, ?).\r\n * Create dates.ts and time_of_days.ts to mirror Java versions. This is a near-identical conversion of c.g.type.util.{Dates,TimeOfDays} respectively.\r\n * Migrate moneys to TypeScript.\r\n\r\n ## Ruby\r\n * Fix scope resolution for Google namespace (#5878)\r\n * Support hashes for struct initializers (#5716)\r\n * Optimized away the creation of empty string objects. (#6502)\r\n * Roll forward Ruby upb changes now that protobuf Ruby build is fixed (#5866)\r\n * Optimized layout_mark() for Ruby (#6521)\r\n * Optimization for layout_init() (#6547)\r\n * Fix for GC of Ruby map frames. (#6533)\r\n\r\n ## Other\r\n * Override CocoaPods module to lowercase (#6464)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/19119210", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/19119210/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/19119210/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.1", + "id": 19119210, + "node_id": "MDc6UmVsZWFzZTE5MTE5MjEw", + "tag_name": "v3.9.1", + "target_commitish": "master", + "name": "Protocol Buffers v3.9.1", + "draft": false, + "author": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-08-05T17:07:28Z", + "published_at": "2019-08-06T21:06:53Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229770", + "id": 14229770, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcw", + "name": "protobuf-all-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7183726, + "download_count": 13131, + "created_at": "2019-08-06T21:03:16Z", + "updated_at": "2019-08-06T21:03:17Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-all-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229771", + "id": 14229771, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcx", + "name": "protobuf-all-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 9288679, + "download_count": 5517, + "created_at": "2019-08-06T21:03:16Z", + "updated_at": "2019-08-06T21:03:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-all-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229772", + "id": 14229772, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcy", + "name": "protobuf-cpp-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4556914, + "download_count": 2766, + "created_at": "2019-08-06T21:03:16Z", + "updated_at": "2019-08-06T21:03:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-cpp-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229773", + "id": 14229773, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcz", + "name": "protobuf-cpp-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5555328, + "download_count": 2440, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-cpp-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229774", + "id": 14229774, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc0", + "name": "protobuf-csharp-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5004619, + "download_count": 178, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-csharp-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229775", + "id": 14229775, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc1", + "name": "protobuf-csharp-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6187725, + "download_count": 1015, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-csharp-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229776", + "id": 14229776, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc2", + "name": "protobuf-java-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5218824, + "download_count": 800, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-java-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229777", + "id": 14229777, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc3", + "name": "protobuf-java-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6558019, + "download_count": 2073, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-java-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229778", + "id": 14229778, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc4", + "name": "protobuf-js-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4715546, + "download_count": 195, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-js-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229779", + "id": 14229779, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc5", + "name": "protobuf-js-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5823537, + "download_count": 462, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-js-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229780", + "id": 14229780, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgw", + "name": "protobuf-objectivec-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4936578, + "download_count": 83, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-objectivec-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229781", + "id": 14229781, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgx", + "name": "protobuf-objectivec-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6112218, + "download_count": 142, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-objectivec-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229782", + "id": 14229782, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgy", + "name": "protobuf-php-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4899475, + "download_count": 186, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-php-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229783", + "id": 14229783, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgz", + "name": "protobuf-php-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6019360, + "download_count": 211, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-php-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229784", + "id": 14229784, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg0", + "name": "protobuf-python-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4874011, + "download_count": 1070, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-python-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229785", + "id": 14229785, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg1", + "name": "protobuf-python-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5988045, + "download_count": 1845, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-python-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229786", + "id": 14229786, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg2", + "name": "protobuf-ruby-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4877570, + "download_count": 55, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-ruby-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229787", + "id": 14229787, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg3", + "name": "protobuf-ruby-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5931743, + "download_count": 49, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-ruby-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229788", + "id": 14229788, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg4", + "name": "protoc-3.9.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1443660, + "download_count": 498, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229789", + "id": 14229789, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg5", + "name": "protoc-3.9.1-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1594993, + "download_count": 89, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229790", + "id": 14229790, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzkw", + "name": "protoc-3.9.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499627, + "download_count": 365, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229791", + "id": 14229791, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzkx", + "name": "protoc-3.9.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1556019, + "download_count": 17701, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229792", + "id": 14229792, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzky", + "name": "protoc-3.9.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2899777, + "download_count": 173, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229793", + "id": 14229793, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzkz", + "name": "protoc-3.9.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2862481, + "download_count": 4618, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229794", + "id": 14229794, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzk0", + "name": "protoc-3.9.1-win32.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1092745, + "download_count": 2393, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229795", + "id": 14229795, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzk1", + "name": "protoc-3.9.1-win64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420840, + "download_count": 11402, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.9.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.9.1", + "body": " ## Python\r\n * Drop building wheel for python 3.4 (#6406)\r\n\r\n ## Csharp\r\n * Fix binary compatibility in 3.9.0 (delisted) FieldCodec factory methods (#6380)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18583977", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18583977/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/18583977/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.0", + "id": 18583977, + "node_id": "MDc6UmVsZWFzZTE4NTgzOTc3", + "tag_name": "v3.9.0", + "target_commitish": "3.9.x", + "name": "Protocol Buffers v3.9.0", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-07-11T14:52:05Z", + "published_at": "2019-07-12T16:32:02Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682279", + "id": 13682279, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjc5", + "name": "protobuf-all-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7162423, + "download_count": 8914, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-all-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682280", + "id": 13682280, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgw", + "name": "protobuf-all-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 9279841, + "download_count": 3849, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-all-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682281", + "id": 13682281, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgx", + "name": "protobuf-cpp-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4537469, + "download_count": 3663, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-cpp-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682282", + "id": 13682282, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgy", + "name": "protobuf-cpp-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5546900, + "download_count": 2559, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-cpp-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682283", + "id": 13682283, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgz", + "name": "protobuf-csharp-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4982916, + "download_count": 134, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-csharp-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682284", + "id": 13682284, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg0", + "name": "protobuf-csharp-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6178952, + "download_count": 751, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-csharp-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682285", + "id": 13682285, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg1", + "name": "protobuf-java-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5196096, + "download_count": 585, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-java-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682286", + "id": 13682286, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg2", + "name": "protobuf-java-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6549546, + "download_count": 1564, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-java-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682287", + "id": 13682287, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg3", + "name": "protobuf-js-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4697125, + "download_count": 156, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-js-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682288", + "id": 13682288, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg4", + "name": "protobuf-js-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5815108, + "download_count": 388, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-js-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682289", + "id": 13682289, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg5", + "name": "protobuf-objectivec-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4918859, + "download_count": 85, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-objectivec-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682290", + "id": 13682290, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjkw", + "name": "protobuf-objectivec-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6103787, + "download_count": 150, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-objectivec-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682291", + "id": 13682291, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjkx", + "name": "protobuf-php-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4880754, + "download_count": 148, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-php-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682292", + "id": 13682292, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjky", + "name": "protobuf-php-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6010915, + "download_count": 185, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-php-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682293", + "id": 13682293, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjkz", + "name": "protobuf-python-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4854771, + "download_count": 1005, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-python-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682294", + "id": 13682294, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk0", + "name": "protobuf-python-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5979617, + "download_count": 1665, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-python-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682295", + "id": 13682295, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk1", + "name": "protobuf-ruby-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4857657, + "download_count": 43, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-ruby-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682296", + "id": 13682296, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk2", + "name": "protobuf-ruby-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5923316, + "download_count": 54, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-ruby-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682297", + "id": 13682297, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk3", + "name": "protoc-3.9.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1443659, + "download_count": 391, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682298", + "id": 13682298, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk4", + "name": "protoc-3.9.0-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1594998, + "download_count": 73, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682299", + "id": 13682299, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk5", + "name": "protoc-3.9.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499621, + "download_count": 194, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682300", + "id": 13682300, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAw", + "name": "protoc-3.9.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1556016, + "download_count": 21638, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682301", + "id": 13682301, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAx", + "name": "protoc-3.9.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2899837, + "download_count": 142, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682302", + "id": 13682302, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAy", + "name": "protoc-3.9.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2862670, + "download_count": 3557, + "created_at": "2019-07-12T16:31:44Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682303", + "id": 13682303, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAz", + "name": "protoc-3.9.0-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1092789, + "download_count": 1844, + "created_at": "2019-07-12T16:31:44Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682304", + "id": 13682304, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzA0", + "name": "protoc-3.9.0-win64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420565, + "download_count": 9253, + "created_at": "2019-07-12T16:31:44Z", + "updated_at": "2019-07-12T16:31:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.9.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.9.0", + "body": "## C++\r\n * Optimize and simplify implementation of RepeatedPtrFieldBase\r\n * Don't create unnecessary unknown field sets.\r\n * Remove branch from accessors to repeated field element array.\r\n * Added delimited parse and serialize util.\r\n * Reduce size by not emitting constants for fieldnumbers\r\n * Fix a bug when comparing finite and infinite field values with explicit tolerances.\r\n * TextFormat::Parser should use a custom Finder to look up extensions by number if one is provided.\r\n * Add MessageLite::Utf8DebugString() to make MessageLite more compatible with Message.\r\n * Fail fast for better performance in DescriptorPool::FindExtensionByNumber() if descriptor has no defined extensions.\r\n * Adding the file name to help debug colliding extensions\r\n * Added FieldDescriptor::PrintableNameForExtension() and DescriptorPool::FindExtensionByPrintableName().\r\n The latter will replace Reflection::FindKnownExtensionByName().\r\n * Replace NULL with nullptr\r\n * Created a new Add method in repeated field that allows adding a range of elements all at once.\r\n * Enabled enum name-to-value mapping functions for C++ lite\r\n * Avoid dynamic initialization in descriptor.proto generated code\r\n * Move stream functions to MessageLite from Message.\r\n * Move all zero_copy_stream functionality to io_lite.\r\n * Do not create array of matched fields for simple repeated fields\r\n * Enabling silent mode by default to reduce make compilation noise. (#6237)\r\n\r\n ## Java\r\n * Expose TextFormat.Printer and make it configurable. Deprecate the static methods.\r\n * Library for constructing google.protobuf.Struct and google.protobuf.Value\r\n * Make OneofDescriptor extend GenericDescriptor.\r\n * Expose streamingness of service methods from MethodDescriptor.\r\n * Fix a bug where TextFormat fails to parse Any filed with > 1 embedded message sub-fields.\r\n * Establish consistent JsonFormat behavior for nulls in oneofs, regardless of order.\r\n * Update GSON version to 3.8.5. (#6268)\r\n * Add `protobuf_java_lite` Bazel target. (#6177)\r\n\r\n## Python\r\n * Change implementation of Name() for enums that allow aliases in proto2 in Python\r\n to be in line with claims in C++ implementation (to return first value).\r\n * Explicitly say what field cannot be set when the new value fails a type check.\r\n * Duplicate register in descriptor pool will raise errors\r\n * Add __slots__ to all well_known_types classes, custom attributes are not allowed anymore.\r\n * text_format only present 8 valid digits for float fields by default\r\n\r\n## JavaScript\r\n * Add Oneof enum to the list of goog.provide\r\n\r\n## PHP\r\n * Rename get/setXXXValue to get/setXXXWrapper. (#6295)\r\n\r\n## Ruby\r\n * Remove to_hash methods. (#6166)\r\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18246008", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18246008/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/18246008/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.0-rc1", + "id": 18246008, + "node_id": "MDc6UmVsZWFzZTE4MjQ2MDA4", + "tag_name": "v3.9.0-rc1", + "target_commitish": "3.9.x", + "name": "Protocol Buffers v3.9.0-rc1", + "draft": false, + "author": null, + "prerelease": true, + "created_at": "2019-06-24T17:15:24Z", + "published_at": "2019-06-26T18:29:50Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416067", + "id": 13416067, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY3", + "name": "protobuf-all-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7170139, + "download_count": 606, + "created_at": "2019-06-26T18:29:17Z", + "updated_at": "2019-06-26T18:29:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-all-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416068", + "id": 13416068, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY4", + "name": "protobuf-all-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 9302592, + "download_count": 611, + "created_at": "2019-06-26T18:29:17Z", + "updated_at": "2019-06-26T18:29:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-all-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416050", + "id": 13416050, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUw", + "name": "protobuf-cpp-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4548408, + "download_count": 122, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-cpp-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416059", + "id": 13416059, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU5", + "name": "protobuf-cpp-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5556802, + "download_count": 159, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-cpp-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416056", + "id": 13416056, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU2", + "name": "protobuf-csharp-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4993113, + "download_count": 42, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-csharp-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416065", + "id": 13416065, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY1", + "name": "protobuf-csharp-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6190806, + "download_count": 105, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-csharp-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416057", + "id": 13416057, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU3", + "name": "protobuf-java-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5208194, + "download_count": 58, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-java-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416066", + "id": 13416066, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY2", + "name": "protobuf-java-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6562708, + "download_count": 136, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-java-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416051", + "id": 13416051, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUx", + "name": "protobuf-js-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4710118, + "download_count": 26, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-js-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416060", + "id": 13416060, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYw", + "name": "protobuf-js-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5826204, + "download_count": 53, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-js-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416055", + "id": 13416055, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU1", + "name": "protobuf-objectivec-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4926229, + "download_count": 26, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-objectivec-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416064", + "id": 13416064, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY0", + "name": "protobuf-objectivec-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6115995, + "download_count": 40, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-objectivec-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416054", + "id": 13416054, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU0", + "name": "protobuf-php-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4891988, + "download_count": 16, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-php-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416063", + "id": 13416063, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYz", + "name": "protobuf-php-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6022899, + "download_count": 41, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-php-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416052", + "id": 13416052, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUy", + "name": "protobuf-python-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4866964, + "download_count": 69, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-python-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416062", + "id": 13416062, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYy", + "name": "protobuf-python-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5990691, + "download_count": 134, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-python-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416053", + "id": 13416053, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUz", + "name": "protobuf-ruby-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4868972, + "download_count": 14, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-ruby-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416061", + "id": 13416061, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYx", + "name": "protobuf-ruby-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5934101, + "download_count": 25, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-ruby-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416044", + "id": 13416044, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ0", + "name": "protoc-3.9.0-rc-1-linux-aarch_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1443658, + "download_count": 45, + "created_at": "2019-06-26T18:29:12Z", + "updated_at": "2019-06-26T18:29:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416047", + "id": 13416047, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ3", + "name": "protoc-3.9.0-rc-1-linux-ppcle_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1594999, + "download_count": 17, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416045", + "id": 13416045, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ1", + "name": "protoc-3.9.0-rc-1-linux-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499616, + "download_count": 20, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416046", + "id": 13416046, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ2", + "name": "protoc-3.9.0-rc-1-linux-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1556017, + "download_count": 764, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416049", + "id": 13416049, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ5", + "name": "protoc-3.9.0-rc-1-osx-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2899822, + "download_count": 31, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416048", + "id": 13416048, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ4", + "name": "protoc-3.9.0-rc-1-osx-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2862659, + "download_count": 312, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416042", + "id": 13416042, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQy", + "name": "protoc-3.9.0-rc-1-win32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1092761, + "download_count": 204, + "created_at": "2019-06-26T18:29:12Z", + "updated_at": "2019-06-26T18:29:16Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416043", + "id": 13416043, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQz", + "name": "protoc-3.9.0-rc-1-win64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420565, + "download_count": 1094, + "created_at": "2019-06-26T18:29:12Z", + "updated_at": "2019-06-26T18:29:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.9.0-rc1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.9.0-rc1", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17642177", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17642177/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/17642177/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0", + "id": 17642177, + "node_id": "MDc6UmVsZWFzZTE3NjQyMTc3", + "tag_name": "v3.8.0", + "target_commitish": "3.8.x", + "name": "Protocol Buffers v3.8.0", + "draft": false, + "author": null, + "prerelease": false, + "created_at": "2019-05-24T18:06:49Z", + "published_at": "2019-05-28T23:00:19Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915687", + "id": 12915687, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg3", + "name": "protobuf-all-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7151747, + "download_count": 59795, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-all-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915688", + "id": 12915688, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg4", + "name": "protobuf-all-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 9245466, + "download_count": 6652, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-all-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915670", + "id": 12915670, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcw", + "name": "protobuf-cpp-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4545607, + "download_count": 9077, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915678", + "id": 12915678, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc4", + "name": "protobuf-cpp-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5541252, + "download_count": 4240, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915676", + "id": 12915676, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc2", + "name": "protobuf-csharp-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4981309, + "download_count": 242, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-csharp-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915685", + "id": 12915685, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg1", + "name": "protobuf-csharp-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6153232, + "download_count": 1283, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-csharp-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915677", + "id": 12915677, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc3", + "name": "protobuf-java-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5199874, + "download_count": 1022, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-java-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915686", + "id": 12915686, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg2", + "name": "protobuf-java-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6536661, + "download_count": 2703, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-java-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915671", + "id": 12915671, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcx", + "name": "protobuf-js-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4707973, + "download_count": 213, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-js-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915680", + "id": 12915680, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgw", + "name": "protobuf-js-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5809582, + "download_count": 637, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-js-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915675", + "id": 12915675, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc1", + "name": "protobuf-objectivec-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4923056, + "download_count": 103, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-objectivec-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915684", + "id": 12915684, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg0", + "name": "protobuf-objectivec-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6098090, + "download_count": 233, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-objectivec-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915674", + "id": 12915674, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc0", + "name": "protobuf-php-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4888538, + "download_count": 267, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-php-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915683", + "id": 12915683, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgz", + "name": "protobuf-php-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6005181, + "download_count": 304, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-php-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915672", + "id": 12915672, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcy", + "name": "protobuf-python-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4861658, + "download_count": 1755, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-python-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915682", + "id": 12915682, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgy", + "name": "protobuf-python-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5972687, + "download_count": 2848, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-python-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915673", + "id": 12915673, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcz", + "name": "protobuf-ruby-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4864895, + "download_count": 70, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-ruby-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915681", + "id": 12915681, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgx", + "name": "protobuf-ruby-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5917545, + "download_count": 79, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-ruby-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915664", + "id": 12915664, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY0", + "name": "protoc-3.8.0-linux-aarch_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1439040, + "download_count": 574, + "created_at": "2019-05-28T22:58:46Z", + "updated_at": "2019-05-28T22:58:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915667", + "id": 12915667, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY3", + "name": "protoc-3.8.0-linux-ppcle_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1589281, + "download_count": 202, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915665", + "id": 12915665, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY1", + "name": "protoc-3.8.0-linux-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1492432, + "download_count": 335, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915666", + "id": 12915666, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY2", + "name": "protoc-3.8.0-linux-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1549882, + "download_count": 114941, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915669", + "id": 12915669, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY5", + "name": "protoc-3.8.0-osx-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2893556, + "download_count": 218, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915668", + "id": 12915668, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY4", + "name": "protoc-3.8.0-osx-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2861189, + "download_count": 19585, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915662", + "id": 12915662, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjYy", + "name": "protoc-3.8.0-win32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1099081, + "download_count": 9825, + "created_at": "2019-05-28T22:58:46Z", + "updated_at": "2019-05-28T22:58:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915663", + "id": 12915663, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjYz", + "name": "protoc-3.8.0-win64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1426373, + "download_count": 15708, + "created_at": "2019-05-28T22:58:46Z", + "updated_at": "2019-05-28T22:58:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.8.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.8.0", + "body": "## C++\r\n * Use std::atomic in case of myriad2 platform\r\n * Always declare enums to be int-sized\r\n * Added DebugString() and ShortDebugString() methods on MessageLite\r\n * Specialized different parse loop control flows\r\n * Make hasbits potentially in register. The or's start forming an obstacle because it's a read modify store on the same mem address on each iteration.\r\n * Move to an internal MACRO for parser validity checks.\r\n * Improve map parsing performance.\r\n * Make MergePartialFromCodedStream non virtual. This allows direct calls, potential inlining and is also a code health improvement\r\n * Add an overall limit to parse_context to prevent reading past it. This allows to remove a annoying level of indirection.\r\n * Fix a mistake, we shouldn't verify map key/value strings for utf8 in opt mode for proto2.\r\n * Further improvements to cut binary size.\r\n * Prepare to make MergePartialFromCodedStream non-virtual.\r\n * A report on some interesting behavior change in python (caused by b/27494216) made me realize there is a check that needs to be done in case the parse ended on a end group tag.\r\n * Add a note of caution to the comments around skip in CodedOutputStream.\r\n * Simplify end check.\r\n * Add overload for ParseMessage for MessageLite/Message types. If the explicit type is not known inlining won't help de-virtualizing the virtual call.\r\n * Reduce linker input. It turns out that ParseMessage is not inlined, producing template instantiations that are used only once and save nothing but cost more.\r\n * Improve the parser.\r\n * [c++17] Changed proto2::RepeatedPtrField iterators to no longer derive from the deprecated std::iterator class.\r\n * Change the default value of case_insensitive_enum_parsing to false for JsonStringToMessage.\r\n * Add a warning if a field name doesn't match the style guide.\r\n * Fix TextFormat not round-trip correctly when float value is max float.\r\n * Added locationed info for some errors at compiler\r\n * Python reserved keywords are now working with getattr()/setattr() for most descriptors.\r\n * Added AllowUnknownField() in text_format\r\n * Append '_' to C++ reserved keywords for message, enum, extension\r\n * Fix MSVC warning C4244 in protobuf's parse_context.h.\r\n * Updating Iterators to be compatible with C++17 in MSVC.\r\n * Use capability annotation in mutex.h\r\n * Fix \"UndefinedBehaviorSanitizer: cfi-bad-type\"\r\n * CriticalSectionLock class as a lightweight replacement for std::mutex on Windows platforms.\r\n * Removed vestigial wire_format_lite_inl.h\r\n\r\n## C#\r\n * Added System.Memory dependency.\r\n\r\n## Java\r\n * Make Java protoc code generator ignore optimize_for LITE_RUNTIME. Users should instead use the Java lite protoc plugin.\r\n * Change Extension getMessageDefaultInstance() to return Message instead of MessageLite.\r\n * Prevent malicious input streams from leaking buffers for ByteString or ByteBuffer parsing.\r\n * Release new Javalite runtime.\r\n * Show warning in case potential file name conflict.\r\n * Allow Java reserved keywords to be used in extensions.\r\n * Added setAllowUnknownFields() in text format\r\n * Add memoization to ExtensionRegistryLite.getEmptyRegistry()\r\n * Improve performance of CodedOutputStream.writeUInt32NoTag\r\n * Add an optimized mismatch-finding algorithm to UnsafeUtil.\r\n * When serializing uint32 varints, check that we have MAX_VARINT32_SIZE bytes left, not just MAX_VARINT_SIZE.\r\n * Minor optimization to RopeByteString.PieceIterator\r\n\r\n## JavaScript\r\n * Simplify generated toObject code when the default value is used.\r\n\r\n## Python\r\n * Changes implementation of Name() for enums that allow aliases in proto2 in Python to be in line with claims in C++ implementation (to return first value).\r\n * Added double_format option in text format printer.\r\n * Added iter and __contains__ to extension dict\r\n * Added allow_unknown_field option in python text format parser\r\n * Fixed Timestamp.ToDatetime() loses precision issue\r\n * Support unknown field in text format printer.\r\n * Float field will be convert to inf if bigger than struct.unpack('f', b'\\xff\\xff\\x7f\\x7f')[0] which is about 3.4028234664e+38,\r\n convert to -inf if smaller than -3.4028234664e+38\r\n * Allowed casting str->bytes in Message.__setstate__\r\n\r\n## Ruby\r\n * Helper methods to get enum name for Ruby." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17092386", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17092386/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/17092386/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0-rc1", + "id": 17092386, + "node_id": "MDc6UmVsZWFzZTE3MDkyMzg2", + "tag_name": "v3.8.0-rc1", + "target_commitish": "3.8.x", + "name": "Protocol Buffers v3.8.0-rc1", + "draft": false, + "author": null, + "prerelease": true, + "created_at": "2019-04-30T17:10:28Z", + "published_at": "2019-05-01T17:24:11Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336833", + "id": 12336833, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODMz", + "name": "protobuf-all-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7151107, + "download_count": 1289, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-all-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336834", + "id": 12336834, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODM0", + "name": "protobuf-all-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 9266615, + "download_count": 1071, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-all-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336804", + "id": 12336804, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODA0", + "name": "protobuf-cpp-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4545471, + "download_count": 240, + "created_at": "2019-05-01T17:23:32Z", + "updated_at": "2019-05-01T17:23:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-cpp-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336818", + "id": 12336818, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODE4", + "name": "protobuf-cpp-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5550867, + "download_count": 354, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-cpp-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336813", + "id": 12336813, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEz", + "name": "protobuf-csharp-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4981335, + "download_count": 63, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-csharp-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336830", + "id": 12336830, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODMw", + "name": "protobuf-csharp-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6164705, + "download_count": 168, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-csharp-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336816", + "id": 12336816, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODE2", + "name": "protobuf-java-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5200991, + "download_count": 159, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-java-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336832", + "id": 12336832, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODMy", + "name": "protobuf-java-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6549487, + "download_count": 280, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-java-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336805", + "id": 12336805, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODA1", + "name": "protobuf-js-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4707570, + "download_count": 49, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-js-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336820", + "id": 12336820, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODIw", + "name": "protobuf-js-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5820379, + "download_count": 128, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-js-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336812", + "id": 12336812, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEy", + "name": "protobuf-objectivec-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4922833, + "download_count": 41, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-objectivec-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336828", + "id": 12336828, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODI4", + "name": "protobuf-objectivec-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6110012, + "download_count": 44, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-objectivec-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336811", + "id": 12336811, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEx", + "name": "protobuf-php-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4888536, + "download_count": 47, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-php-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336826", + "id": 12336826, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODI2", + "name": "protobuf-php-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6016172, + "download_count": 67, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-php-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336808", + "id": 12336808, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODA4", + "name": "protobuf-python-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4861606, + "download_count": 218, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-python-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336824", + "id": 12336824, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODI0", + "name": "protobuf-python-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5983474, + "download_count": 444, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-python-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336810", + "id": 12336810, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEw", + "name": "protobuf-ruby-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4864372, + "download_count": 28, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-ruby-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336822", + "id": 12336822, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODIy", + "name": "protobuf-ruby-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5927588, + "download_count": 27, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-ruby-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373067", + "id": 12373067, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDY3", + "name": "protoc-3.8.0-rc-1-linux-aarch_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1435866, + "download_count": 78, + "created_at": "2019-05-03T17:36:07Z", + "updated_at": "2019-05-03T17:36:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373068", + "id": 12373068, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDY4", + "name": "protoc-3.8.0-rc-1-linux-ppcle_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1587682, + "download_count": 28, + "created_at": "2019-05-03T17:36:07Z", + "updated_at": "2019-05-03T17:36:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373069", + "id": 12373069, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDY5", + "name": "protoc-3.8.0-rc-1-linux-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1490570, + "download_count": 38, + "created_at": "2019-05-03T17:36:07Z", + "updated_at": "2019-05-03T17:36:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373070", + "id": 12373070, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcw", + "name": "protoc-3.8.0-rc-1-linux-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1547835, + "download_count": 3495, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373071", + "id": 12373071, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcx", + "name": "protoc-3.8.0-rc-1-osx-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2889532, + "download_count": 42, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373072", + "id": 12373072, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcy", + "name": "protoc-3.8.0-rc-1-osx-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2857686, + "download_count": 630, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373073", + "id": 12373073, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcz", + "name": "protoc-3.8.0-rc-1-win32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1096082, + "download_count": 313, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373074", + "id": 12373074, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDc0", + "name": "protoc-3.8.0-rc-1-win64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1424892, + "download_count": 1794, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.8.0-rc1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.8.0-rc1", + "body": "## C++\r\n * Use std::atomic in case of myriad2 platform\r\n * Always declare enums to be int-sized\r\n * Added DebugString() and ShortDebugString() methods on MessageLite\r\n * Specialized different parse loop control flows\r\n * Make hasbits potentially in register. The or's start forming an obstacle because it's a read modify store on the same mem address on each iteration.\r\n * Move to an internal MACRO for parser validity checks.\r\n * Improve map parsing performance.\r\n * Make MergePartialFromCodedStream non virtual. This allows direct calls, potential inlining and is also a code health improvement\r\n * Add an overall limit to parse_context to prevent reading past it. This allows to remove a annoying level of indirection.\r\n * Fix a mistake, we shouldn't verify map key/value strings for utf8 in opt mode for proto2.\r\n * Further improvements to cut binary size.\r\n * Prepare to make MergePartialFromCodedStream non-virtual.\r\n * A report on some interesting behavior change in python (caused by b/27494216) made me realize there is a check that needs to be done in case the parse ended on a end group tag.\r\n * Add a note of caution to the comments around skip in CodedOutputStream.\r\n * Simplify end check.\r\n * Add overload for ParseMessage for MessageLite/Message types. If the explicit type is not known inlining won't help de-virtualizing the virtual call.\r\n * Reduce linker input. It turns out that ParseMessage is not inlined, producing template instantiations that are used only once and save nothing but cost more.\r\n * Improve the parser.\r\n * [c++17] Changed proto2::RepeatedPtrField iterators to no longer derive from the deprecated std::iterator class.\r\n * Change the default value of case_insensitive_enum_parsing to false for JsonStringToMessage.\r\n * Add a warning if a field name doesn't match the style guide.\r\n * Fix TextFormat not round-trip correctly when float value is max float.\r\n * Added locationed info for some errors at compiler\r\n * Python reserved keywords are now working with getattr()/setattr() for most descriptors.\r\n * Added AllowUnknownField() in text_format\r\n * Append '_' to C++ reserved keywords for message, enum, extension\r\n * Fix MSVC warning C4244 in protobuf's parse_context.h.\r\n * Updating Iterators to be compatible with C++17 in MSVC.\r\n * Use capability annotation in mutex.h\r\n * Fix \"UndefinedBehaviorSanitizer: cfi-bad-type\"\r\n * CriticalSectionLock class as a lightweight replacement for std::mutex on Windows platforms.\r\n * Removed vestigial wire_format_lite_inl.h\r\n\r\n## C#\r\n * Added System.Memory dependency.\r\n\r\n## Java\r\n * Make Java protoc code generator ignore optimize_for LITE_RUNTIME. Users should instead use the Java lite protoc plugin.\r\n * Change Extension getMessageDefaultInstance() to return Message instead of MessageLite.\r\n * Prevent malicious input streams from leaking buffers for ByteString or ByteBuffer parsing.\r\n * Release new Javalite runtime.\r\n * Show warning in case potential file name conflict.\r\n * Allow Java reserved keywords to be used in extensions.\r\n * Added setAllowUnknownFields() in text format\r\n * Add memoization to ExtensionRegistryLite.getEmptyRegistry()\r\n * Improve performance of CodedOutputStream.writeUInt32NoTag\r\n * Add an optimized mismatch-finding algorithm to UnsafeUtil.\r\n * When serializing uint32 varints, check that we have MAX_VARINT32_SIZE bytes left, not just MAX_VARINT_SIZE.\r\n * Minor optimization to RopeByteString.PieceIterator\r\n\r\n## JavaScript\r\n * Simplify generated toObject code when the default value is used.\r\n\r\n## Python\r\n * Changes implementation of Name() for enums that allow aliases in proto2 in Python to be in line with claims in C++ implementation (to return first value).\r\n * Added double_format option in text format printer.\r\n * Added iter and __contains__ to extension dict\r\n * Added allow_unknown_field option in python text format parser\r\n * Fixed Timestamp.ToDatetime() loses precision issue\r\n * Support unknown field in text format printer.\r\n * Float field will be convert to inf if bigger than struct.unpack('f', b'\\xff\\xff\\x7f\\x7f')[0] which is about 3.4028234664e+38,\r\n convert to -inf if smaller than -3.4028234664e+38\r\n * Allowed casting str->bytes in Message.__setstate__\r\n\r\n## Ruby\r\n * Helper methods to get enum name for Ruby." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/16360088", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/16360088/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/16360088/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.1", + "id": 16360088, + "node_id": "MDc6UmVsZWFzZTE2MzYwMDg4", + "tag_name": "v3.7.1", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.1", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-03-26T16:30:12Z", + "published_at": "2019-03-26T16:40:34Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759566", + "id": 11759566, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY2", + "name": "protobuf-all-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7018070, + "download_count": 74679, + "created_at": "2019-03-27T17:36:55Z", + "updated_at": "2019-03-27T17:36:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-all-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759567", + "id": 11759567, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY3", + "name": "protobuf-all-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8985859, + "download_count": 7840, + "created_at": "2019-03-27T17:36:55Z", + "updated_at": "2019-03-27T17:36:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-all-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759568", + "id": 11759568, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY4", + "name": "protobuf-cpp-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4554569, + "download_count": 23187, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-cpp-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759569", + "id": 11759569, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY5", + "name": "protobuf-cpp-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5540852, + "download_count": 4658, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-cpp-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759570", + "id": 11759570, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcw", + "name": "protobuf-csharp-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4975598, + "download_count": 341, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-csharp-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759571", + "id": 11759571, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcx", + "name": "protobuf-csharp-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6134194, + "download_count": 1834, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-csharp-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759572", + "id": 11759572, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcy", + "name": "protobuf-java-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5036793, + "download_count": 1416, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-java-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759573", + "id": 11759573, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcz", + "name": "protobuf-java-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6256175, + "download_count": 3749, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-java-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759574", + "id": 11759574, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc0", + "name": "protobuf-js-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4714126, + "download_count": 287, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-js-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759575", + "id": 11759575, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc1", + "name": "protobuf-js-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5808427, + "download_count": 725, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-js-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759576", + "id": 11759576, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc2", + "name": "protobuf-objectivec-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4931515, + "download_count": 156, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-objectivec-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759577", + "id": 11759577, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc3", + "name": "protobuf-objectivec-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6097730, + "download_count": 305, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-objectivec-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759578", + "id": 11759578, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc4", + "name": "protobuf-php-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4942632, + "download_count": 308, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-php-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759579", + "id": 11759579, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc5", + "name": "protobuf-php-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6053988, + "download_count": 376, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-php-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759580", + "id": 11759580, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgw", + "name": "protobuf-python-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4869789, + "download_count": 2976, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-python-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759581", + "id": 11759581, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgx", + "name": "protobuf-python-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5967559, + "download_count": 3484, + "created_at": "2019-03-27T17:36:58Z", + "updated_at": "2019-03-27T17:37:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-python-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759582", + "id": 11759582, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgy", + "name": "protobuf-ruby-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4872450, + "download_count": 97, + "created_at": "2019-03-27T17:36:58Z", + "updated_at": "2019-03-27T17:37:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-ruby-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759583", + "id": 11759583, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgz", + "name": "protobuf-ruby-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5912898, + "download_count": 120, + "created_at": "2019-03-27T17:36:58Z", + "updated_at": "2019-03-27T17:37:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-ruby-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763702", + "id": 11763702, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzAy", + "name": "protoc-3.7.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420854, + "download_count": 1408, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763703", + "id": 11763703, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzAz", + "name": "protoc-3.7.1-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568760, + "download_count": 500, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763704", + "id": 11763704, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA0", + "name": "protoc-3.7.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473386, + "download_count": 389, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763705", + "id": 11763705, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA1", + "name": "protoc-3.7.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529306, + "download_count": 257331, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763706", + "id": 11763706, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA2", + "name": "protoc-3.7.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2844672, + "download_count": 234, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763707", + "id": 11763707, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA3", + "name": "protoc-3.7.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2806619, + "download_count": 12273, + "created_at": "2019-03-27T22:11:58Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763708", + "id": 11763708, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA4", + "name": "protoc-3.7.1-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1091216, + "download_count": 4208, + "created_at": "2019-03-27T22:11:58Z", + "updated_at": "2019-03-27T22:12:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763709", + "id": 11763709, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA5", + "name": "protoc-3.7.1-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1413094, + "download_count": 20044, + "created_at": "2019-03-27T22:11:58Z", + "updated_at": "2019-03-27T22:12:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.1", + "body": "## C++\r\n * Avoid linking against libatomic in prebuilt protoc binaries (#5875)\r\n * Avoid marking generated C++ messages as final, though we will do this in a future release (#5928)\r\n * Miscellaneous build fixes\r\n\r\n## JavaScript\r\n * Fixed redefinition of global variable f (#5932)\r\n\r\n## Ruby\r\n * Replace strptime with custom implementation (#5906)\r\n * Fixed the bug that bytes fields cannot be larger than 16000 bytes (#5924)\r\n * Miscellaneous bug fixes\r\n\r\n## PHP\r\n * Replace strptime with custom implementation (#5906)\r\n * Fixed the bug that bytes fields cannot be larger than 16000 bytes (#5924)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15729828", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15729828/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15729828/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0-rc.3", + "id": 15729828, + "node_id": "MDc6UmVsZWFzZTE1NzI5ODI4", + "tag_name": "v3.7.0-rc.3", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0-rc.3", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-02-22T22:53:16Z", + "published_at": "2019-02-22T23:11:13Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202941", + "id": 11202941, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQx", + "name": "protobuf-all-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7009237, + "download_count": 1019, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-all-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202942", + "id": 11202942, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQy", + "name": "protobuf-all-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8996112, + "download_count": 754, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-all-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202943", + "id": 11202943, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQz", + "name": "protobuf-cpp-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4555680, + "download_count": 126, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-cpp-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202944", + "id": 11202944, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ0", + "name": "protobuf-cpp-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5551338, + "download_count": 250, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-cpp-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202945", + "id": 11202945, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ1", + "name": "protobuf-csharp-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4977445, + "download_count": 49, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-csharp-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202946", + "id": 11202946, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ2", + "name": "protobuf-csharp-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6146214, + "download_count": 109, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-csharp-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202947", + "id": 11202947, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ3", + "name": "protobuf-java-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5037931, + "download_count": 98, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-java-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202948", + "id": 11202948, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ4", + "name": "protobuf-java-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6268866, + "download_count": 230, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-java-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202949", + "id": 11202949, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ5", + "name": "protobuf-js-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4716077, + "download_count": 50, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-js-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202950", + "id": 11202950, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUw", + "name": "protobuf-js-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5820117, + "download_count": 72, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-js-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202951", + "id": 11202951, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUx", + "name": "protobuf-objectivec-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4932912, + "download_count": 34, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-objectivec-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202952", + "id": 11202952, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUy", + "name": "protobuf-objectivec-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6110520, + "download_count": 42, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-objectivec-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202953", + "id": 11202953, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUz", + "name": "protobuf-php-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4941502, + "download_count": 57, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-php-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202954", + "id": 11202954, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU0", + "name": "protobuf-php-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6061450, + "download_count": 41, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-php-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202955", + "id": 11202955, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU1", + "name": "protobuf-python-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4870869, + "download_count": 148, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-python-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202956", + "id": 11202956, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU2", + "name": "protobuf-python-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5979189, + "download_count": 301, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-python-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202957", + "id": 11202957, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU3", + "name": "protobuf-ruby-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4866769, + "download_count": 34, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-ruby-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202958", + "id": 11202958, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU4", + "name": "protobuf-ruby-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5917784, + "download_count": 33, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-ruby-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205515", + "id": 11205515, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE1", + "name": "protoc-3.7.0-rc-3-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1421033, + "download_count": 55, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:38:16Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205516", + "id": 11205516, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE2", + "name": "protoc-3.7.0-rc-3-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568661, + "download_count": 56, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:38:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205517", + "id": 11205517, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE3", + "name": "protoc-3.7.0-rc-3-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473644, + "download_count": 57, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:43:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205518", + "id": 11205518, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE4", + "name": "protoc-3.7.0-rc-3-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529606, + "download_count": 1116, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:38:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205519", + "id": 11205519, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE5", + "name": "protoc-3.7.0-rc-3-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2844639, + "download_count": 47, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205520", + "id": 11205520, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTIw", + "name": "protoc-3.7.0-rc-3-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2806722, + "download_count": 463, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205521", + "id": 11205521, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTIx", + "name": "protoc-3.7.0-rc-3-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1093901, + "download_count": 395, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205522", + "id": 11205522, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTIy", + "name": "protoc-3.7.0-rc-3-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415430, + "download_count": 1695, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0-rc.3", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0-rc.3", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15659336", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15659336/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15659336/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0", + "id": 15659336, + "node_id": "MDc6UmVsZWFzZTE1NjU5MzM2", + "tag_name": "v3.7.0", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-02-28T20:55:14Z", + "published_at": "2019-02-28T21:33:02Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294890", + "id": 11294890, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODkw", + "name": "protobuf-all-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7005840, + "download_count": 49920, + "created_at": "2019-02-28T21:48:23Z", + "updated_at": "2019-02-28T21:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-all-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294892", + "id": 11294892, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODky", + "name": "protobuf-all-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8974388, + "download_count": 4560, + "created_at": "2019-02-28T21:48:23Z", + "updated_at": "2019-02-28T21:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-all-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294893", + "id": 11294893, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODkz", + "name": "protobuf-cpp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4554405, + "download_count": 6106, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-cpp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294894", + "id": 11294894, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk0", + "name": "protobuf-cpp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5540626, + "download_count": 2440, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-cpp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294895", + "id": 11294895, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk1", + "name": "protobuf-csharp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4975889, + "download_count": 196, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-csharp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294896", + "id": 11294896, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk2", + "name": "protobuf-csharp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6133736, + "download_count": 1066, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-csharp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294897", + "id": 11294897, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk3", + "name": "protobuf-java-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5036617, + "download_count": 6641, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-java-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294898", + "id": 11294898, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk4", + "name": "protobuf-java-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6255941, + "download_count": 1759, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-java-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294900", + "id": 11294900, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAw", + "name": "protobuf-js-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4714958, + "download_count": 170, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-js-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294901", + "id": 11294901, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAx", + "name": "protobuf-js-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5808210, + "download_count": 434, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-js-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294902", + "id": 11294902, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAy", + "name": "protobuf-objectivec-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4931402, + "download_count": 121, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-objectivec-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294903", + "id": 11294903, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAz", + "name": "protobuf-objectivec-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6097500, + "download_count": 287, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-objectivec-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294904", + "id": 11294904, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA0", + "name": "protobuf-php-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4941097, + "download_count": 245, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-php-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294905", + "id": 11294905, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA1", + "name": "protobuf-php-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6049227, + "download_count": 210, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-php-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294906", + "id": 11294906, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA2", + "name": "protobuf-python-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4869606, + "download_count": 1842, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-python-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294908", + "id": 11294908, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA4", + "name": "protobuf-python-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5967332, + "download_count": 1983, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-python-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294909", + "id": 11294909, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA5", + "name": "protobuf-ruby-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4863624, + "download_count": 66, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-ruby-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294910", + "id": 11294910, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTEw", + "name": "protobuf-ruby-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5906198, + "download_count": 72, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-ruby-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299044", + "id": 11299044, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ0", + "name": "protoc-3.7.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1421033, + "download_count": 534, + "created_at": "2019-03-01T02:40:20Z", + "updated_at": "2019-03-01T02:40:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299046", + "id": 11299046, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ2", + "name": "protoc-3.7.0-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568661, + "download_count": 453, + "created_at": "2019-03-01T02:40:20Z", + "updated_at": "2019-03-01T02:40:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299047", + "id": 11299047, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ3", + "name": "protoc-3.7.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473644, + "download_count": 198, + "created_at": "2019-03-01T02:40:20Z", + "updated_at": "2019-03-01T02:40:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299048", + "id": 11299048, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ4", + "name": "protoc-3.7.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529606, + "download_count": 89275, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299049", + "id": 11299049, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ5", + "name": "protoc-3.7.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2844639, + "download_count": 124, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299050", + "id": 11299050, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDUw", + "name": "protoc-3.7.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2806722, + "download_count": 15425, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299051", + "id": 11299051, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDUx", + "name": "protoc-3.7.0-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1093899, + "download_count": 2219, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299052", + "id": 11299052, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDUy", + "name": "protoc-3.7.0-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415428, + "download_count": 32334, + "created_at": "2019-03-01T02:40:22Z", + "updated_at": "2019-03-01T02:40:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0", + "body": "## C++\r\n * Introduced new MOMI (maybe-outside-memory-interval) parser.\r\n * Add an option to json_util to parse enum as case-insensitive. In the future, enum parsing in json_util will become case-sensitive.\r\n * Added conformance test for enum aliases\r\n * Added support for --cpp_out=speed:...\r\n * Added use of C++ override keyword where appropriate\r\n * Many other cleanups and fixes.\r\n\r\n## Java\r\n * Fix illegal reflective access warning in JDK 9+\r\n * Add BOM\r\n\r\n## Python\r\n * Added Python 3.7 compatibility.\r\n * Modified ParseFromString to return bytes parsed .\r\n * Introduce Proto C API.\r\n * FindFileContainingSymbol in descriptor pool is now able to find field and enum values.\r\n * reflection.MakeClass() and reflection.ParseMessage() are deprecated.\r\n * Added DescriptorPool.FindMethodByName() method in pure python (c extension alreay has it)\r\n * Flipped proto3 to preserve unknown fields by default.\r\n * Added support for memoryview in python3 proto message parsing.\r\n * Added MergeFrom for repeated scalar fields in c extension (pure python already has it)\r\n * Surrogates are now rejected at setters in python3.\r\n * Added public unknown field API.\r\n * RecursionLimit is also set to max if allow_oversize_protos is enabled.\r\n * Disallow duplicate scalars in proto3 text_format parse.\r\n * Fix some segment faults for c extension map field.\r\n\r\n## PHP\r\n * Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_php_c.txt.\r\n * Supports php 7.3\r\n * Added helper methods to convert between enum values and names.\r\n * Allow setting/getting wrapper message fields using primitive values.\r\n * Various bug fixes.\r\n\r\n## Ruby\r\n * Ruby 2.6 support.\r\n * Drops support for ruby < 2.3.\r\n * Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_ruby.txt.\r\n * Json parsing can specify an option to ignore unknown fields: msg.decode_json(data, {ignore_unknown_fields: true}).\r\n * Added support for proto2 syntax (partially).\r\n * Various bug fixes.\r\n\r\n## C#\r\n * More support for FieldMask include merge, intersect and more.\r\n * Increasing the default recursion limit to 100.\r\n * Support loading FileDescriptors dynamically.\r\n * Provide access to comments from descriptors.\r\n * Added Any.Is method.\r\n * Compatible with C# 6\r\n * Added IComparable and comparison operators on Timestamp.\r\n\r\n## Objective-C\r\n * Add ability to introspect list of enum values (#4678)\r\n * Copy the value when setting message/data fields (#5215)\r\n * Support suppressing the objc package prefix checks on a list of files (#5309)\r\n * More complete keyword and NSObject method (via categories) checks for field names, can result in more fields being rename, but avoids the collisions at runtime (#5289)\r\n * Small fixes to TextFormat generation for extensions (#5362)\r\n * Provide more details/context in deprecation messages (#5412)\r\n * Array/Dictionary enumeration blocks NS_NOESCAPE annotation for Swift (#5421)\r\n * Properly annotate extensions for ARC when their names imply behaviors (#5427)\r\n * Enum alias name collision improvements (#5480)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15323628", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15323628/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15323628/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0rc2", + "id": 15323628, + "node_id": "MDc6UmVsZWFzZTE1MzIzNjI4", + "tag_name": "v3.7.0rc2", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0rc2", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-02-01T19:27:19Z", + "published_at": "2019-02-01T20:04:58Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890880", + "id": 10890880, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgw", + "name": "protobuf-all-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7004523, + "download_count": 2236, + "created_at": "2019-02-01T19:44:28Z", + "updated_at": "2019-02-01T19:44:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-all-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890881", + "id": 10890881, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgx", + "name": "protobuf-all-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8994228, + "download_count": 1652, + "created_at": "2019-02-01T19:44:28Z", + "updated_at": "2019-02-01T19:44:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-all-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890882", + "id": 10890882, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgy", + "name": "protobuf-cpp-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4555122, + "download_count": 336, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-cpp-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890883", + "id": 10890883, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgz", + "name": "protobuf-cpp-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5550468, + "download_count": 447, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-cpp-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890884", + "id": 10890884, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg0", + "name": "protobuf-csharp-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4976690, + "download_count": 68, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-csharp-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890885", + "id": 10890885, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg1", + "name": "protobuf-csharp-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6145864, + "download_count": 231, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-csharp-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890886", + "id": 10890886, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg2", + "name": "protobuf-java-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5037480, + "download_count": 208, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-java-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890887", + "id": 10890887, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg3", + "name": "protobuf-java-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6267997, + "download_count": 465, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-java-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890888", + "id": 10890888, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg4", + "name": "protobuf-js-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4715024, + "download_count": 94, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-js-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890889", + "id": 10890889, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg5", + "name": "protobuf-js-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5819245, + "download_count": 127, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-js-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890890", + "id": 10890890, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODkw", + "name": "protobuf-objectivec-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4930985, + "download_count": 56, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-objectivec-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890891", + "id": 10890891, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODkx", + "name": "protobuf-objectivec-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6109650, + "download_count": 92, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-objectivec-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890892", + "id": 10890892, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODky", + "name": "protobuf-php-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4939189, + "download_count": 62, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-php-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890893", + "id": 10890893, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODkz", + "name": "protobuf-php-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6059043, + "download_count": 78, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-php-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890894", + "id": 10890894, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk0", + "name": "protobuf-python-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4870086, + "download_count": 339, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-python-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890895", + "id": 10890895, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk1", + "name": "protobuf-python-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5978322, + "download_count": 552, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-python-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890896", + "id": 10890896, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk2", + "name": "protobuf-ruby-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4865956, + "download_count": 36, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-ruby-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890897", + "id": 10890897, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk3", + "name": "protobuf-ruby-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5916915, + "download_count": 43, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-ruby-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928913", + "id": 10928913, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTEz", + "name": "protoc-3.7.0-rc-2-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420784, + "download_count": 108, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928914", + "id": 10928914, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE0", + "name": "protoc-3.7.0-rc-2-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568305, + "download_count": 44, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928915", + "id": 10928915, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE1", + "name": "protoc-3.7.0-rc-2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473469, + "download_count": 77, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928916", + "id": 10928916, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE2", + "name": "protoc-3.7.0-rc-2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529327, + "download_count": 13020, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928917", + "id": 10928917, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE3", + "name": "protoc-3.7.0-rc-2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2775259, + "download_count": 57, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928918", + "id": 10928918, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE4", + "name": "protoc-3.7.0-rc-2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2719561, + "download_count": 1027, + "created_at": "2019-02-04T22:57:37Z", + "updated_at": "2019-02-04T22:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928919", + "id": 10928919, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE5", + "name": "protoc-3.7.0-rc-2-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1094351, + "download_count": 583, + "created_at": "2019-02-04T22:57:37Z", + "updated_at": "2019-02-04T22:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928920", + "id": 10928920, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTIw", + "name": "protoc-3.7.0-rc-2-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415226, + "download_count": 3211, + "created_at": "2019-02-04T22:57:37Z", + "updated_at": "2019-02-04T22:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0rc2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0rc2", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15271745", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15271745/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15271745/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0rc1", + "id": 15271745, + "node_id": "MDc6UmVsZWFzZTE1MjcxNzQ1", + "tag_name": "v3.7.0rc1", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0rc1", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-01-28T23:15:59Z", + "published_at": "2019-01-30T19:48:52Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852324", + "id": 10852324, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI0", + "name": "protobuf-all-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7005610, + "download_count": 530, + "created_at": "2019-01-30T17:26:57Z", + "updated_at": "2019-01-30T17:26:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-all-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852325", + "id": 10852325, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI1", + "name": "protobuf-all-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8971536, + "download_count": 382, + "created_at": "2019-01-30T17:26:57Z", + "updated_at": "2019-01-30T17:26:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-all-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852326", + "id": 10852326, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI2", + "name": "protobuf-cpp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4553992, + "download_count": 145, + "created_at": "2019-01-30T17:26:58Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-cpp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852327", + "id": 10852327, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI3", + "name": "protobuf-cpp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5539751, + "download_count": 138, + "created_at": "2019-01-30T17:26:58Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-cpp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852328", + "id": 10852328, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI4", + "name": "protobuf-csharp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4974812, + "download_count": 29, + "created_at": "2019-01-30T17:26:58Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-csharp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852329", + "id": 10852329, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI5", + "name": "protobuf-csharp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6133378, + "download_count": 63, + "created_at": "2019-01-30T17:26:59Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-csharp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852330", + "id": 10852330, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMw", + "name": "protobuf-java-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5036072, + "download_count": 66, + "created_at": "2019-01-30T17:26:59Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-java-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852331", + "id": 10852331, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMx", + "name": "protobuf-java-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6254802, + "download_count": 104, + "created_at": "2019-01-30T17:27:00Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-java-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852332", + "id": 10852332, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMy", + "name": "protobuf-js-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4711526, + "download_count": 31, + "created_at": "2019-01-30T17:27:00Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-js-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852333", + "id": 10852333, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMz", + "name": "protobuf-js-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5807335, + "download_count": 44, + "created_at": "2019-01-30T17:27:00Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-js-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852334", + "id": 10852334, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM0", + "name": "protobuf-objectivec-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4930955, + "download_count": 29, + "created_at": "2019-01-30T17:27:01Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-objectivec-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852335", + "id": 10852335, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM1", + "name": "protobuf-objectivec-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6096625, + "download_count": 28, + "created_at": "2019-01-30T17:27:01Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-objectivec-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852337", + "id": 10852337, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM3", + "name": "protobuf-php-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4937967, + "download_count": 34, + "created_at": "2019-01-30T17:27:01Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-php-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852338", + "id": 10852338, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM4", + "name": "protobuf-php-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6046286, + "download_count": 28, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-php-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852339", + "id": 10852339, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM5", + "name": "protobuf-python-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4869243, + "download_count": 94, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-python-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852340", + "id": 10852340, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzQw", + "name": "protobuf-python-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5966443, + "download_count": 159, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-python-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852341", + "id": 10852341, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzQx", + "name": "protobuf-ruby-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4863318, + "download_count": 24, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-ruby-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852342", + "id": 10852342, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzQy", + "name": "protobuf-ruby-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5905173, + "download_count": 18, + "created_at": "2019-01-30T17:27:03Z", + "updated_at": "2019-01-30T17:27:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-ruby-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854573", + "id": 10854573, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTcz", + "name": "protoc-3.7.0-rc1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420784, + "download_count": 50, + "created_at": "2019-01-30T19:31:50Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854574", + "id": 10854574, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc0", + "name": "protoc-3.7.0-rc1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473469, + "download_count": 34, + "created_at": "2019-01-30T19:31:51Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854575", + "id": 10854575, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc1", + "name": "protoc-3.7.0-rc1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529327, + "download_count": 1045, + "created_at": "2019-01-30T19:31:51Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854576", + "id": 10854576, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc2", + "name": "protoc-3.7.0-rc1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2775259, + "download_count": 40, + "created_at": "2019-01-30T19:31:51Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854577", + "id": 10854577, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc3", + "name": "protoc-3.7.0-rc1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2719561, + "download_count": 227, + "created_at": "2019-01-30T19:31:52Z", + "updated_at": "2019-01-30T19:31:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854578", + "id": 10854578, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc4", + "name": "protoc-3.7.0-rc1-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1094352, + "download_count": 244, + "created_at": "2019-01-30T19:31:52Z", + "updated_at": "2019-01-30T19:31:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854579", + "id": 10854579, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc5", + "name": "protoc-3.7.0-rc1-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415227, + "download_count": 1175, + "created_at": "2019-01-30T19:31:53Z", + "updated_at": "2019-01-30T19:31:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0rc1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0rc1", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/12126801", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/12126801/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/12126801/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.1", + "id": 12126801, + "node_id": "MDc6UmVsZWFzZTEyMTI2ODAx", + "tag_name": "v3.6.1", + "target_commitish": "3.6.x", + "name": "Protocol Buffers v3.6.1", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2018-07-27T20:30:28Z", + "published_at": "2018-07-31T19:02:06Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067302", + "id": 8067302, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDI=", + "name": "protobuf-all-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6726203, + "download_count": 88659, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067303", + "id": 8067303, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDM=", + "name": "protobuf-all-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8643093, + "download_count": 64673, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067304", + "id": 8067304, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDQ=", + "name": "protobuf-cpp-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4450975, + "download_count": 72516, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067305", + "id": 8067305, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDU=", + "name": "protobuf-cpp-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5424612, + "download_count": 19076, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067306", + "id": 8067306, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDY=", + "name": "protobuf-csharp-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4785417, + "download_count": 1115, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-csharp-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067307", + "id": 8067307, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDc=", + "name": "protobuf-csharp-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5925119, + "download_count": 5628, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-csharp-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067308", + "id": 8067308, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDg=", + "name": "protobuf-java-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4927479, + "download_count": 5240, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-java-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067309", + "id": 8067309, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDk=", + "name": "protobuf-java-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6132648, + "download_count": 65844, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-java-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067310", + "id": 8067310, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTA=", + "name": "protobuf-js-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4610095, + "download_count": 1692, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-js-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067311", + "id": 8067311, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTE=", + "name": "protobuf-js-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5681236, + "download_count": 2336, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-js-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067312", + "id": 8067312, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTI=", + "name": "protobuf-objectivec-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4810146, + "download_count": 701, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-objectivec-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067313", + "id": 8067313, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTM=", + "name": "protobuf-objectivec-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5957261, + "download_count": 1306, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-objectivec-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067314", + "id": 8067314, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTQ=", + "name": "protobuf-php-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4820325, + "download_count": 1275, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-php-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067315", + "id": 8067315, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTU=", + "name": "protobuf-php-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5907893, + "download_count": 1213, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-php-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067316", + "id": 8067316, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTY=", + "name": "protobuf-python-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4748789, + "download_count": 16154, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-python-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067317", + "id": 8067317, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTc=", + "name": "protobuf-python-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5825925, + "download_count": 10766, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-python-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067318", + "id": 8067318, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTg=", + "name": "protobuf-ruby-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4736562, + "download_count": 414, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-ruby-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067319", + "id": 8067319, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTk=", + "name": "protobuf-ruby-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5760683, + "download_count": 363, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-ruby-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067332", + "id": 8067332, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzI=", + "name": "protoc-3.6.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1524236, + "download_count": 3503, + "created_at": "2018-07-30T22:49:53Z", + "updated_at": "2018-07-30T22:49:54Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067333", + "id": 8067333, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzM=", + "name": "protoc-3.6.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1374262, + "download_count": 5644, + "created_at": "2018-07-30T22:49:53Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067334", + "id": 8067334, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzQ=", + "name": "protoc-3.6.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1423451, + "download_count": 1253555, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067335", + "id": 8067335, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzU=", + "name": "protoc-3.6.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2556410, + "download_count": 5046, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067336", + "id": 8067336, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzY=", + "name": "protoc-3.6.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2508161, + "download_count": 53458, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067337", + "id": 8067337, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzc=", + "name": "protoc-3.6.1-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1007473, + "download_count": 100656, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.6.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.6.1", + "body": "## C++\r\n * Introduced workaround for Windows issue with std::atomic and std::once_flag initialization (#4777, #4773)\r\n\r\n## PHP\r\n * Added compatibility with PHP 7.3 (#4898)\r\n\r\n## Ruby\r\n * Fixed Ruby crash involving Any encoding (#4718)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/11166814", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/11166814/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/11166814/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.0", + "id": 11166814, + "node_id": "MDc6UmVsZWFzZTExMTY2ODE0", + "tag_name": "v3.6.0", + "target_commitish": "3.6.x", + "name": "Protocol Buffers v3.6.0", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2018-06-06T23:47:37Z", + "published_at": "2018-06-19T17:57:08Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437208", + "id": 7437208, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMDg=", + "name": "protobuf-all-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6727974, + "download_count": 24460, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-all-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437209", + "id": 7437209, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMDk=", + "name": "protobuf-all-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8651481, + "download_count": 10808, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-all-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437210", + "id": 7437210, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTA=", + "name": "protobuf-cpp-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4454101, + "download_count": 24527, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-cpp-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437211", + "id": 7437211, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTE=", + "name": "protobuf-cpp-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5434113, + "download_count": 7831, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-cpp-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437212", + "id": 7437212, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTI=", + "name": "protobuf-csharp-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4787073, + "download_count": 299, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-csharp-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437213", + "id": 7437213, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTM=", + "name": "protobuf-csharp-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5934620, + "download_count": 1522, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-csharp-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437214", + "id": 7437214, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTQ=", + "name": "protobuf-java-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4930538, + "download_count": 2630, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-java-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437215", + "id": 7437215, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTU=", + "name": "protobuf-java-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6142145, + "download_count": 3151, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-java-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437216", + "id": 7437216, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTY=", + "name": "protobuf-js-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4612355, + "download_count": 313, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-js-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437217", + "id": 7437217, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTc=", + "name": "protobuf-js-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5690736, + "download_count": 686, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-js-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437218", + "id": 7437218, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTg=", + "name": "protobuf-objectivec-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4812519, + "download_count": 196, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-objectivec-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437219", + "id": 7437219, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTk=", + "name": "protobuf-objectivec-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5966759, + "download_count": 410, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-objectivec-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437220", + "id": 7437220, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjA=", + "name": "protobuf-php-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4821603, + "download_count": 356, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-php-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437221", + "id": 7437221, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjE=", + "name": "protobuf-php-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5916599, + "download_count": 361, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-php-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437222", + "id": 7437222, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjI=", + "name": "protobuf-python-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4750984, + "download_count": 5133, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-python-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437223", + "id": 7437223, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjM=", + "name": "protobuf-python-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5835404, + "download_count": 3667, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-python-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437224", + "id": 7437224, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjQ=", + "name": "protobuf-ruby-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4738895, + "download_count": 118, + "created_at": "2018-06-06T21:11:03Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-ruby-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437225", + "id": 7437225, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjU=", + "name": "protobuf-ruby-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5769896, + "download_count": 126, + "created_at": "2018-06-06T21:11:03Z", + "updated_at": "2018-06-06T21:11:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-ruby-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589938", + "id": 7589938, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5Mzg=", + "name": "protoc-3.6.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1527853, + "download_count": 900, + "created_at": "2018-06-19T16:21:33Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589939", + "id": 7589939, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5Mzk=", + "name": "protoc-3.6.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1375778, + "download_count": 451, + "created_at": "2018-06-19T16:21:33Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589940", + "id": 7589940, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDA=", + "name": "protoc-3.6.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1425463, + "download_count": 175995, + "created_at": "2018-06-19T16:21:33Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589941", + "id": 7589941, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDE=", + "name": "protoc-3.6.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2556912, + "download_count": 298, + "created_at": "2018-06-19T16:21:34Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589942", + "id": 7589942, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDI=", + "name": "protoc-3.6.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2507544, + "download_count": 36330, + "created_at": "2018-06-19T16:21:34Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589943", + "id": 7589943, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDM=", + "name": "protoc-3.6.0-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1007591, + "download_count": 29240, + "created_at": "2018-06-19T16:21:34Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.6.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.6.0", + "body": "## General\r\n * We are moving protobuf repository to its own github organization (see https://github.com/google/protobuf/issues/4796). Please let us know what you think about the move by taking this survey: https://docs.google.com/forms/d/e/1FAIpQLSeH1ckwm6ZrSfmtrOjRwmF3yCSWQbbO5pTPqPb6_rUppgvBqA/viewform\r\n\r\n## C++\r\n * Starting from this release, we now require C++11. For those we cannot yet upgrade to C++11, we will try to keep the 3.5.x branch updated with critical bug fixes only. If you have any concerns about this, please comment on issue #2780.\r\n * Moved to C++11 types like std::atomic and std::unique_ptr and away from our old custom-built equivalents.\r\n * Added support for repeated message fields in lite protos using implicit weak fields. This is an experimental feature that allows the linker to strip out more unused messages than previously was possible.\r\n * Fixed SourceCodeInfo for interpreted options and extension range options.\r\n * Fixed always_print_enums_as_ints option for JSON serialization.\r\n * Added support for ignoring unknown enum values when parsing JSON.\r\n * Create std::string in Arena memory.\r\n * Fixed ValidateDateTime to correctly check the day.\r\n * Fixed bug in ZeroCopyStreamByteSink.\r\n * Various other cleanups and fixes.\r\n\r\n## Java\r\n * Dropped support for Java 6.\r\n * Added a UTF-8 decoder that uses Unsafe to directly decode a byte buffer.\r\n * Added deprecation annotations to generated code for deprecated oneof fields.\r\n * Fixed map field serialization in DynamicMessage.\r\n * Cleanup and documentation for Java Lite runtime.\r\n * Various other fixes and cleanups\r\n * Fixed unboxed arraylists to handle an edge case\r\n * Improved performance for copying between unboxed arraylists\r\n * Fixed lite protobuf to avoid Java compiler warnings\r\n * Improved test coverage for lite runtime\r\n * Performance improvements for lite runtime\r\n\r\n## Python\r\n * Fixed bytes/string map key incompatibility between C++ and pure-Python implementations (issue #4029)\r\n * Added `__init__.py` files to compiler and util subpackages\r\n * Use /MT for all Windows versions\r\n * Fixed an issue affecting the Python-C++ implementation when used with Cython (issue #2896)\r\n * Various text format fixes\r\n * Various fixes to resolve behavior differences between the pure-Python and Python-C++ implementations\r\n\r\n## PHP\r\n * Added php_metadata_namespace to control the file path of generated metadata file.\r\n * Changed generated classes of nested message/enum. E.g., Foo.Bar, which previously generates Foo_Bar, now generates Foo/Bar\r\n * Added array constructor. When creating a message, users can pass a php array whose content is field name to value pairs into constructor. The created message will be initialized according to the array. Note that message field should use a message value instead of a sub-array.\r\n * Various bug fixes.\r\n\r\n## Objective-C\r\n * We removed some helper class methods from GPBDictionary to shrink the size of the library, the functionary is still there, but you may need to do some specific +alloc / -init… methods instead.\r\n * Minor improvements in the performance of object field getters/setters by avoiding some memory management overhead.\r\n * Fix a memory leak during the raising of some errors.\r\n * Make header importing completely order independent.\r\n * Small code improvements for things the undefined behaviors compiler option was flagging.\r\n\r\n## Ruby\r\n * Added ruby_package file option to control the module of generated class.\r\n * Various bug fixes.\r\n\r\n## Javascript\r\n * Allow setting string to int64 field.\r\n\r\n## Csharp\r\n * Unknown fields are now parsed and then sent back on the wire. They can be discarded at parse time via a CodedInputStream option.\r\n * Movement towards working with .NET 3.5 and Unity\r\n * Expression trees are no longer used\r\n * AOT generics issues in Unity/il2cpp have a workaround (see commit 1b219a174c413af3b18a082a4295ce47932314c4 for details)\r\n * Floating point values are now compared bitwise (affects NaN value comparisons)\r\n * The default size limit when parsing is now 2GB rather than 64MB\r\n * MessageParser now supports parsing from a slice of a byte array\r\n * JSON list parsing now accepts null values where the underlying proto representation does" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8987160", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8987160/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/8987160/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.1", + "id": 8987160, + "node_id": "MDc6UmVsZWFzZTg5ODcxNjA=", + "tag_name": "v3.5.1", + "target_commitish": "3.5.x", + "name": "Protocol Buffers v3.5.1", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-12-20T23:07:13Z", + "published_at": "2017-12-20T23:16:09Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681213", + "id": 5681213, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTM=", + "name": "protobuf-all-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6662844, + "download_count": 101211, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681204", + "id": 5681204, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDQ=", + "name": "protobuf-all-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8644234, + "download_count": 37194, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681221", + "id": 5681221, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMjE=", + "name": "protobuf-cpp-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4272851, + "download_count": 80116, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:15:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-cpp-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681212", + "id": 5681212, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTI=", + "name": "protobuf-cpp-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5283316, + "download_count": 21121, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-cpp-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681220", + "id": 5681220, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMjA=", + "name": "protobuf-csharp-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4598804, + "download_count": 1164, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-csharp-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681211", + "id": 5681211, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTE=", + "name": "protobuf-csharp-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5779926, + "download_count": 5305, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-csharp-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681219", + "id": 5681219, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTk=", + "name": "protobuf-java-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4741940, + "download_count": 6286, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-java-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681210", + "id": 5681210, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTA=", + "name": "protobuf-java-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5979798, + "download_count": 11337, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-java-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681218", + "id": 5681218, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTg=", + "name": "protobuf-js-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4428997, + "download_count": 1150, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-js-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681209", + "id": 5681209, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDk=", + "name": "protobuf-js-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5538299, + "download_count": 3311, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-js-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681217", + "id": 5681217, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTc=", + "name": "protobuf-objectivec-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4720219, + "download_count": 6918, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-objectivec-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681208", + "id": 5681208, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDg=", + "name": "protobuf-objectivec-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5902164, + "download_count": 1323, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-objectivec-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681214", + "id": 5681214, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTQ=", + "name": "protobuf-php-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4617382, + "download_count": 1090, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-php-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681205", + "id": 5681205, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDU=", + "name": "protobuf-php-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5735533, + "download_count": 1123, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-php-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681216", + "id": 5681216, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTY=", + "name": "protobuf-python-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4564059, + "download_count": 34907, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-python-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681207", + "id": 5681207, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDc=", + "name": "protobuf-python-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5678860, + "download_count": 10496, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-python-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681215", + "id": 5681215, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTU=", + "name": "protobuf-ruby-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4555313, + "download_count": 298, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-ruby-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681206", + "id": 5681206, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDY=", + "name": "protobuf-ruby-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5618462, + "download_count": 273, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-ruby-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699542", + "id": 5699542, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDI=", + "name": "protoc-3.5.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1325630, + "download_count": 9600, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699544", + "id": 5699544, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDQ=", + "name": "protoc-3.5.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1335294, + "download_count": 2775, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699543", + "id": 5699543, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDM=", + "name": "protoc-3.5.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1379374, + "download_count": 1042099, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699546", + "id": 5699546, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDY=", + "name": "protoc-3.5.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1919580, + "download_count": 843, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699545", + "id": 5699545, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDU=", + "name": "protoc-3.5.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1868520, + "download_count": 95525, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699547", + "id": 5699547, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDc=", + "name": "protoc-3.5.1-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1256726, + "download_count": 78076, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.5.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.5.1", + "body": "## Planned Future Changes\r\n * Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.6.0 release, after unknown fields semantic changes are finished. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## protoc\r\n * Fixed a bug introduced in 3.5.0 and protoc in Windows now accepts non-ascii characters in paths again.\r\n\r\n## C++\r\n * Removed several usages of C++11 features in the code base.\r\n * Fixed some compiler warnings.\r\n\r\n## PHP\r\n * Fixed memory leak in C-extension implementation.\r\n * Added `discardUnknokwnFields` API.\r\n * Removed duplicatd typedef in C-extension headers.\r\n * Avoided calling private php methods (`timelib_update_ts`).\r\n * Fixed `Any.php` to use fully-qualified name for `DescriptorPool`.\r\n\r\n## Ruby\r\n * Added `Google_Protobuf_discard_unknown` for discarding unknown fields in\r\n messages.\r\n\r\n## C#\r\n * Unknown fields are now preserved by default.\r\n * Floating point values are now bitwise compared, affecting message equality check and `Contains()` API in map and repeated fields.\r\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8497769", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8497769/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/8497769/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.0", + "id": 8497769, + "node_id": "MDc6UmVsZWFzZTg0OTc3Njk=", + "tag_name": "v3.5.0", + "target_commitish": "3.5.x", + "name": "Protocol Buffers v3.5.0", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-11-13T18:47:29Z", + "published_at": "2017-11-13T19:59:44Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5358507", + "id": 5358507, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNTg1MDc=", + "name": "protobuf-all-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6643422, + "download_count": 17029, + "created_at": "2017-11-15T23:05:50Z", + "updated_at": "2017-11-15T23:05:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-all-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5358506", + "id": 5358506, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNTg1MDY=", + "name": "protobuf-all-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8610000, + "download_count": 7903, + "created_at": "2017-11-15T23:05:50Z", + "updated_at": "2017-11-15T23:05:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-all-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334594", + "id": 5334594, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTQ=", + "name": "protobuf-cpp-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4269335, + "download_count": 20625, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334585", + "id": 5334585, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODU=", + "name": "protobuf-cpp-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5281431, + "download_count": 10713, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334593", + "id": 5334593, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTM=", + "name": "protobuf-csharp-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4582740, + "download_count": 344, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-csharp-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334584", + "id": 5334584, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODQ=", + "name": "protobuf-csharp-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5748525, + "download_count": 1532, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-csharp-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334592", + "id": 5334592, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTI=", + "name": "protobuf-java-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4739082, + "download_count": 1563, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-java-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334583", + "id": 5334583, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODM=", + "name": "protobuf-java-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5977909, + "download_count": 3017, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-java-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334591", + "id": 5334591, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTE=", + "name": "protobuf-js-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4426035, + "download_count": 332, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-js-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334582", + "id": 5334582, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODI=", + "name": "protobuf-js-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5536414, + "download_count": 587, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-js-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334590", + "id": 5334590, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTA=", + "name": "protobuf-objectivec-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4717355, + "download_count": 165, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-objectivec-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334581", + "id": 5334581, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODE=", + "name": "protobuf-objectivec-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5900276, + "download_count": 347, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-objectivec-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334586", + "id": 5334586, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODY=", + "name": "protobuf-php-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4613185, + "download_count": 401, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-php-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334578", + "id": 5334578, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1Nzg=", + "name": "protobuf-php-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5732176, + "download_count": 401, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-php-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334588", + "id": 5334588, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODg=", + "name": "protobuf-python-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4560124, + "download_count": 2736, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-python-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334580", + "id": 5334580, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODA=", + "name": "protobuf-python-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5676817, + "download_count": 2836, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-python-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334587", + "id": 5334587, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODc=", + "name": "protobuf-ruby-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4552961, + "download_count": 135, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-ruby-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334579", + "id": 5334579, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1Nzk=", + "name": "protobuf-ruby-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5615381, + "download_count": 86, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-ruby-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345337", + "id": 5345337, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzMzc=", + "name": "protoc-3.5.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1324915, + "download_count": 639, + "created_at": "2017-11-14T18:46:56Z", + "updated_at": "2017-11-14T18:46:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345340", + "id": 5345340, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDA=", + "name": "protoc-3.5.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1335046, + "download_count": 408, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345339", + "id": 5345339, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzMzk=", + "name": "protoc-3.5.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1379309, + "download_count": 399547, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345342", + "id": 5345342, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDI=", + "name": "protoc-3.5.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1920165, + "download_count": 217, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345341", + "id": 5345341, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDE=", + "name": "protoc-3.5.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1868368, + "download_count": 174647, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345343", + "id": 5345343, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDM=", + "name": "protoc-3.5.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1256007, + "download_count": 16244, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.5.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.5.0", + "body": "## Planned Future Changes\r\n * Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.5.0 or 3.6.0 release, after unknown fields semantic changes are finished. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## General\r\n * Unknown fields are now preserved in proto3 for most of the language implementations for proto3 by default. See the per-language section for details.\r\n * reserve keyword are now supported in enums\r\n\r\n## C++\r\n * Proto3 messages are now preserving unknown fields by default. If you rely on unknowns fields being dropped. Please use DiscardUnknownFields() explicitly.\r\n * Deprecated the `unsafe_arena_release_*` and `unsafe_arena_add_allocated_*` methods for string fields.\r\n * Added move constructor and move assignment to RepeatedField, RepeatedPtrField and google::protobuf::Any.\r\n * Added perfect forwarding in Arena::CreateMessage\r\n * In-progress experimental support for implicit weak fields with lite protos. This feature allows the linker to strip out more unused messages and reduce binary size.\r\n * Various performance optimizations.\r\n\r\n## Java\r\n * Proto3 messages are now preserving unknown fields by default. If you’d like to drop unknown fields, please use the DiscardUnknownFieldsParser API. For example:\r\n```java\r\n Parser parser = DiscardUnknownFieldsParser.wrap(Foo.parser());\r\n Foo foo = parser.parseFrom(input);\r\n```\r\n * Added a new `CodedInputStream` decoder for `Iterable` with direct ByteBuffers.\r\n * `TextFormat` now prints unknown length-delimited fields as messages if possible.\r\n * `FieldMaskUtil.merge()` no longer creates unnecessary empty messages when a message field is unset in both source message and destination message.\r\n * Various performance optimizations.\r\n\r\n## Python\r\n * Proto3 messages are now preserving unknown fields by default. Use `message.DiscardUnknownFields()` to drop unknown fields.\r\n * Add FieldDescriptor.file in generated code.\r\n * Add descriptor pool `FindOneofByName` in pure python.\r\n * Change unknown enum values into unknown field set .\r\n * Add more Python dict/list compatibility for `Struct`/`ListValue`.\r\n * Add utf-8 support for `text_format.Merge()/Parse()`.\r\n * Support numeric unknown enum values for proto3 JSON format.\r\n * Add warning for Unexpected end-group tag in cpp extension.\r\n\r\n## PHP\r\n * Proto3 messages are now preserving unknown fields.\r\n * Provide well known type messages in runtime.\r\n * Add prefix ‘PB’ to generated class of reserved names.\r\n * Fixed all conformance tests for encode/decode json in php runtime. C extension needs more work.\r\n\r\n## Objective-C\r\n * Fixed some issues around copying of messages with unknown fields and then mutating the unknown fields in the copy.\r\n\r\n## C#\r\n * Added unknown field support in JsonParser.\r\n * Fixed oneof message field merge.\r\n * Simplify parsing messages from array slices.\r\n\r\n## Ruby\r\n * Unknown fields are now preserved by default.\r\n * Fixed several bugs for segment fault.\r\n\r\n## Javascript\r\n * Decoder can handle both paced and unpacked data no matter how the proto is defined.\r\n * Decoder now accept long varint for 32 bit integers." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7776142", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7776142/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/7776142/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.1", + "id": 7776142, + "node_id": "MDc6UmVsZWFzZTc3NzYxNDI=", + "tag_name": "v3.4.1", + "target_commitish": "master", + "name": "Protocol Buffers v3.4.1", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-09-14T19:24:28Z", + "published_at": "2017-09-15T22:32:03Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837110", + "id": 4837110, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMTA=", + "name": "protobuf-cpp-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4274863, + "download_count": 54743, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837101", + "id": 4837101, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDE=", + "name": "protobuf-cpp-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5282063, + "download_count": 17486, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837109", + "id": 4837109, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDk=", + "name": "protobuf-csharp-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4584979, + "download_count": 884, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-csharp-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837100", + "id": 4837100, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDA=", + "name": "protobuf-csharp-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5745337, + "download_count": 3219, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-csharp-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837108", + "id": 4837108, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDg=", + "name": "protobuf-java-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4740609, + "download_count": 3428, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-java-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837098", + "id": 4837098, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTg=", + "name": "protobuf-java-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5969759, + "download_count": 8315, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-java-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837107", + "id": 4837107, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDc=", + "name": "protobuf-javanano-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4344875, + "download_count": 319, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-javanano-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837099", + "id": 4837099, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTk=", + "name": "protobuf-javanano-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5393151, + "download_count": 452, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-javanano-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837106", + "id": 4837106, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDY=", + "name": "protobuf-js-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4432501, + "download_count": 601, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-js-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837095", + "id": 4837095, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTU=", + "name": "protobuf-js-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5536984, + "download_count": 1224, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-js-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837102", + "id": 4837102, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDI=", + "name": "protobuf-objectivec-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4721493, + "download_count": 435, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-objectivec-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837097", + "id": 4837097, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTc=", + "name": "protobuf-objectivec-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5898495, + "download_count": 798, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-objectivec-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837103", + "id": 4837103, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDM=", + "name": "protobuf-php-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4567499, + "download_count": 690, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-php-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837093", + "id": 4837093, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTM=", + "name": "protobuf-php-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5657205, + "download_count": 741, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-php-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837104", + "id": 4837104, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDQ=", + "name": "protobuf-python-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4559061, + "download_count": 6863, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-python-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837096", + "id": 4837096, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTY=", + "name": "protobuf-python-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5669755, + "download_count": 6574, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-python-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837105", + "id": 4837105, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDU=", + "name": "protobuf-ruby-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4549873, + "download_count": 257, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-ruby-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837094", + "id": 4837094, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTQ=", + "name": "protobuf-ruby-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5607256, + "download_count": 417, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-ruby-3.4.1.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.4.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.4.1", + "body": "This is mostly a bug fix release on runtime packages. It is safe to use 3.4.0 protoc packages for this release.\r\n* Fixed the missing files in 3.4.0 tarballs, affecting windows and cmake users.\r\n* C#: Fixed dotnet target platform to be net45 again.\r\n* Ruby: Fixed a segmentation error when using maps in multi-threaded cases.\r\n* PHP: php_generic_service file level option tag number (in descriptor.proto) has been reassigned to avoid conflicts." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7354501", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7354501/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/7354501/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.0", + "id": 7354501, + "node_id": "MDc6UmVsZWFzZTczNTQ1MDE=", + "tag_name": "v3.4.0", + "target_commitish": "3.4.x", + "name": "Protocol Buffers v3.4.0", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-08-15T23:39:12Z", + "published_at": "2017-08-15T23:57:38Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588492", + "id": 4588492, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0OTI=", + "name": "protobuf-cpp-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4268226, + "download_count": 44822, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-cpp-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588487", + "id": 4588487, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODc=", + "name": "protobuf-cpp-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5267370, + "download_count": 8427, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-cpp-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588491", + "id": 4588491, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0OTE=", + "name": "protobuf-csharp-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4577020, + "download_count": 629, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-csharp-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588483", + "id": 4588483, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODM=", + "name": "protobuf-csharp-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5730643, + "download_count": 1951, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-csharp-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588490", + "id": 4588490, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0OTA=", + "name": "protobuf-java-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4732134, + "download_count": 5399, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-java-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588478", + "id": 4588478, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0Nzg=", + "name": "protobuf-java-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5955061, + "download_count": 4115, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-java-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588489", + "id": 4588489, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODk=", + "name": "protobuf-js-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4425440, + "download_count": 469, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-js-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588480", + "id": 4588480, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODA=", + "name": "protobuf-js-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5522292, + "download_count": 790, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-js-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588488", + "id": 4588488, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODg=", + "name": "protobuf-objectivec-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4712330, + "download_count": 393, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-objectivec-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588482", + "id": 4588482, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODI=", + "name": "protobuf-objectivec-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5883799, + "download_count": 552, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-objectivec-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588486", + "id": 4588486, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODY=", + "name": "protobuf-php-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4558384, + "download_count": 655, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-php-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588481", + "id": 4588481, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODE=", + "name": "protobuf-php-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5641513, + "download_count": 606, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-php-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588484", + "id": 4588484, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODQ=", + "name": "protobuf-python-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4551285, + "download_count": 12329, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-python-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588477", + "id": 4588477, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0Nzc=", + "name": "protobuf-python-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5655059, + "download_count": 6915, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-python-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588485", + "id": 4588485, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODU=", + "name": "protobuf-ruby-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4541659, + "download_count": 251, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-ruby-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588479", + "id": 4588479, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0Nzk=", + "name": "protobuf-ruby-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5592549, + "download_count": 210, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-ruby-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588205", + "id": 4588205, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDU=", + "name": "protoc-3.4.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1346738, + "download_count": 1621, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588201", + "id": 4588201, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDE=", + "name": "protoc-3.4.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1389600, + "download_count": 314379, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588202", + "id": 4588202, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDI=", + "name": "protoc-3.4.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1872491, + "download_count": 731, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588204", + "id": 4588204, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDQ=", + "name": "protoc-3.4.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1820351, + "download_count": 30606, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588203", + "id": 4588203, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDM=", + "name": "protoc-3.4.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1245321, + "download_count": 64941, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.4.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.4.0", + "body": "## Planned Future Changes\r\n * Preserve unknown fields in proto3: We are going to bring unknown fields back into proto3. In this release, some languages start to support preserving unknown fields in proto3, controlled by flags/options. Some languages also introduce explicit APIs to drop unknown fields for migration. Please read the change log sections by languages for details. See [general timeline and plan](https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view) and [issues and discussions](https://github.com/google/protobuf/issues/272)\r\n\r\n * Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.5.0 or 3.6.0 release, after unknown fields semantic changes are finished. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## General\r\n * Extension ranges now accept options and are customizable.\r\n * ```reserve``` keyword now supports ```max``` in field number ranges, e.g. ```reserve 1000 to max;```\r\n\r\n## C++\r\n * Proto3 messages are now able to preserve unknown fields. The default behavior is still to drop unknowns, which will be flipped in a future release. If you rely on unknowns fields being dropped. Please use ```Message::DiscardUnknownFields()``` explicitly.\r\n * Packable proto3 fields are now packed by default in serialization.\r\n * Following C++11 features are introduced when C++11 is available:\r\n - move-constructor and move-assignment are introduced to messages\r\n - Repeated fields constructor now takes ```std::initializer_list```\r\n - rvalue setters are introduced for string fields\r\n * Experimental Table-Driven parsing and serialization available to test. To enable it, pass in table_driven_parsing table_driven_serialization protoc generator flags for C++\r\n\r\n ```$ protoc --cpp_out=table_driven_parsing,table_driven_serialization:./ test.proto```\r\n\r\n * lite generator parameter supported by the generator. Once set, all generated files, use lite runtime regardless of the optimizer_for setting in the .proto file.\r\n * Various optimizations to make C++ code more performant on PowerPC platform\r\n * Fixed maps data corruption when the maps are modified by both reflection API and generated API.\r\n * Deterministic serialization on maps reflection now uses stable sort.\r\n * file() accessors are introduced to various *Descriptor classes to make writing template function easier.\r\n * ```ByteSize()``` and ```SpaceUsed()``` are deprecated.Use ```ByteSizeLong()``` and ```SpaceUsedLong()``` instead\r\n * Consistent hash function is used for maps in DEBUG and NDEBUG build.\r\n * \"using namespace std\" is removed from stubs/common.h\r\n * Various performance optimizations and bug fixes\r\n\r\n## Java\r\n * Introduced new parser API DiscardUnknownFieldsParser in preparation of proto3 unknown fields preservation change. Users who want to drop unknown fields should migrate to use this new parser API.\r\n For example:\r\n\r\n ```java\r\n Parser parser = DiscardUnknownFieldsParser.wrap(Foo.parser());\r\n Foo foo = parser.parseFrom(input);\r\n ```\r\n\r\n * Introduced new TextFormat API printUnicodeFieldValue() that prints field value without escaping unicode characters.\r\n * Added ```Durations.compare(Duration, Duration)``` and ```Timestamps.compare(Timestamp, Timestamp)```.\r\n * JsonFormat now accepts base64url encoded bytes fields.\r\n * Optimized CodedInputStream to do less copies when parsing large bytes fields.\r\n * Optimized TextFormat to allocate less memory when printing.\r\n\r\n## Python\r\n * SerializeToString API is changed to ```SerializeToString(self, **kwargs)```, deterministic parameter is accepted for deterministic serialization.\r\n * Added sort_keys parameter in json format to make the output deterministic.\r\n * Added indent parameter in json format.\r\n * Added extension support in json format.\r\n * Added ```__repr__``` support for repeated field in cpp implementation.\r\n * Added file in FieldDescriptor.\r\n * Added pretty-print filter to text format.\r\n * Services and method descriptors are always printed even if generic_service option is turned off.\r\n * Note: AppEngine 2.5 is deprecated on June 2017 that AppEngine 2.5 will never update protobuf runtime. Users who depend on AppEngine 2.5 should use old protoc.\r\n\r\n## PHP\r\n * Support PHP generic services. Specify file option ```php_generic_service=true``` to enable generating service interface.\r\n * Message, repeated and map fields setters take value instead of reference.\r\n * Added map iterator in c extension.\r\n * Support json  encode/decode.\r\n * Added more type info in getter/setter phpdoc\r\n * Fixed the problem that c extension and php implementation cannot be used together.\r\n * Added file option php_namespace to use custom php namespace instead of package.\r\n * Added fluent setter.\r\n * Added descriptor API in runtime for custom encode/decode.\r\n * Various bug fixes.\r\n\r\n## Objective-C\r\n * Fix for GPBExtensionRegistry copying and add tests.\r\n * Optimize GPBDictionary.m codegen to reduce size of overall library by 46K per architecture.\r\n * Fix some cases of reading of 64bit map values.\r\n * Properly error on a tag with field number zero.\r\n * Preserve unknown fields in proto3 syntax files.\r\n * Document the exceptions on some of the writing apis.\r\n\r\n## C#\r\n * Implemented ```IReadOnlyDictionary``` in ```MapField```\r\n * Added TryUnpack method for Any message in addition to Unpack.\r\n * Converted C# projects to MSBuild (csproj) format.\r\n\r\n## Ruby\r\n * Several bug fixes.\r\n\r\n## Javascript\r\n * Added support of field option js_type. Now one can specify the JS type of a 64-bit integer field to be string in the generated code by adding option ```[jstype = JS_STRING]``` on the field.\r\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/6229270", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/6229270/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/6229270/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.3.0", + "id": 6229270, + "node_id": "MDc6UmVsZWFzZTYyMjkyNzA=", + "tag_name": "v3.3.0", + "target_commitish": "master", + "name": "Protocol Buffers v3.3.0", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-04-29T00:23:19Z", + "published_at": "2017-05-04T22:49:52Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3804700", + "id": 3804700, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM4MDQ3MDA=", + "name": "protobuf-cpp-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4218377, + "download_count": 110789, + "created_at": "2017-05-04T22:49:46Z", + "updated_at": "2017-05-04T22:49:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3804701", + "id": 3804701, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM4MDQ3MDE=", + "name": "protobuf-cpp-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5209888, + "download_count": 17316, + "created_at": "2017-05-04T22:49:46Z", + "updated_at": "2017-05-04T22:49:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763180", + "id": 3763180, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODA=", + "name": "protobuf-csharp-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4527038, + "download_count": 1090, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-csharp-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763178", + "id": 3763178, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxNzg=", + "name": "protobuf-csharp-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5668485, + "download_count": 4652, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-csharp-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763176", + "id": 3763176, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxNzY=", + "name": "protobuf-java-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4673529, + "download_count": 6059, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-java-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763179", + "id": 3763179, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxNzk=", + "name": "protobuf-java-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5882236, + "download_count": 10381, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-java-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763182", + "id": 3763182, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODI=", + "name": "protobuf-js-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4304861, + "download_count": 2455, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-js-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763181", + "id": 3763181, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODE=", + "name": "protobuf-js-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5336404, + "download_count": 2252, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-js-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763183", + "id": 3763183, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODM=", + "name": "protobuf-objectivec-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4662054, + "download_count": 795, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-objectivec-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763184", + "id": 3763184, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODQ=", + "name": "protobuf-objectivec-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5817230, + "download_count": 1380, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-objectivec-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763185", + "id": 3763185, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODU=", + "name": "protobuf-php-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4485412, + "download_count": 1298, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-php-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763186", + "id": 3763186, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODY=", + "name": "protobuf-php-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5537794, + "download_count": 1352, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-php-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763189", + "id": 3763189, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODk=", + "name": "protobuf-python-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4492367, + "download_count": 22234, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-python-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763187", + "id": 3763187, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODc=", + "name": "protobuf-python-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5586094, + "download_count": 6054, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-python-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763188", + "id": 3763188, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODg=", + "name": "protobuf-ruby-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4487580, + "download_count": 556, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-ruby-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763190", + "id": 3763190, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxOTA=", + "name": "protobuf-ruby-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5529614, + "download_count": 387, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-ruby-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764080", + "id": 3764080, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwODA=", + "name": "protoc-3.3.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1309442, + "download_count": 2608, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:00:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764079", + "id": 3764079, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwNzk=", + "name": "protoc-3.3.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1352576, + "download_count": 386355, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T05:59:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764078", + "id": 3764078, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwNzg=", + "name": "protoc-3.3.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1503324, + "download_count": 660, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:01:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764082", + "id": 3764082, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwODI=", + "name": "protoc-3.3.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1451625, + "download_count": 28352, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:03:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764081", + "id": 3764081, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwODE=", + "name": "protoc-3.3.0-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1210198, + "download_count": 32447, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:02:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.3.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.3.0", + "body": "## Planned Future Changes\r\n * There are some changes that are not included in this release but are planned for the near future:\r\n - Preserve unknown fields in proto3: please read this [doc](https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view) for the timeline and follow up this [github issue](https://github.com/google/protobuf/issues/272) for discussion.\r\n - Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.4.0 or 3.5.0 release. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## C++\r\n * Fixed map fields serialization of DynamicMessage to correctly serialize both key and value regardless of their presence.\r\n * Parser now rejects field number 0 correctly.\r\n * New API Message::SpaceUsedLong() that’s equivalent to Message::SpaceUsed() but returns the value in size_t.\r\n * JSON support\r\n - New flag always_print_enums_as_ints in JsonPrintOptions.\r\n - New flag preserve_proto_field_names in JsonPrintOptions. It will instruct the JSON printer to use the original field name declared in the .proto file instead of converting them to lowerCamelCase when printing JSON.\r\n - JsonPrintOptions.always_print_primtive_fields now works for oneof message fields.\r\n - Fixed a bug that doesn’t allow different fields to set the same json_name value.\r\n - Fixed a performance bug that causes excessive memory copy when printing large messages.\r\n * Various performance optimizations.\r\n\r\n## Java\r\n * Map field setters eagerly validate inputs and throw NullPointerExceptions as appropriate.\r\n * Added ByteBuffer overloads to the generated parsing methods and the Parser interface.\r\n * proto3 enum's getNumber() method now throws on UNRECOGNIZED values.\r\n * Output of JsonFormat is now locale independent.\r\n\r\n## Python\r\n * Added FindServiceByName() in the pure-Python DescriptorPool. This works only for descriptors added with DescriptorPool.Add(). Generated descriptor_pool does not support this yet.\r\n * Added a descriptor_pool parameter for parsing Any in text_format.Parse().\r\n * descriptor_pool.FindFileContainingSymbol() now is able to find nested extensions.\r\n * Extending empty [] to repeated field now sets parent message presence.\r\n\r\n## PHP\r\n * Added file option php_class_prefix. The prefix will be prepended to all generated classes defined in the file.\r\n * When encoding, negative int32 values are sign-extended to int64.\r\n * Repeated/Map field setter accepts a regular PHP array. Type checking is done on the array elements.\r\n * encode/decode are renamed to serializeToString/mergeFromString.\r\n * Added mergeFrom, clear method on Message.\r\n * Fixed a bug that oneof accessor didn’t return the field name that is actually set.\r\n * C extension now works with php7.\r\n * This is the first GA release of PHP. We guarantee that old generated code can always work with new runtime and new generated code.\r\n\r\n## Objective-C\r\n * Fixed help for GPBTimestamp for dates before the epoch that contain fractional seconds.\r\n * Added GPBMessageDropUnknownFieldsRecursively() to remove unknowns from a message and any sub messages.\r\n * Addressed a threading race in extension registration/lookup.\r\n * Increased the max message parsing depth to 100 to match the other languages.\r\n * Removed some use of dispatch_once in favor of atomic compare/set since it needs to be heap based.\r\n * Fixes for new Xcode 8.3 warnings.\r\n\r\n## C#\r\n * Fixed MapField.Values.CopyTo, which would throw an exception unnecessarily if provided exactly the right size of array to copy to.\r\n * Fixed enum JSON formatting when multiple names mapped to the same numeric value.\r\n * Added JSON formatting option to format enums as integers.\r\n * Modified RepeatedField to implement IReadOnlyList.\r\n * Introduced the start of custom option handling; it's not as pleasant as it might be, but the information is at least present. We expect to extend code generation to improve this in the future.\r\n * Introduced ByteString.FromStream and ByteString.FromStreamAsync to efficiently create a ByteString from a stream.\r\n * Added whole-message deprecation, which decorates the class with [Obsolete].\r\n\r\n## Ruby\r\n * Fixed Message#to_h for messages with map fields.\r\n * Fixed memcpy() in binary gems to work for old glibc, without breaking the build for non-glibc libc’s like musl.\r\n\r\n## Javascript\r\n * Added compatibility tests for version 3.0.0.\r\n * Added conformance tests.\r\n * Fixed serialization of extensions: we need to emit a value even if it is falsy (like the number 0).\r\n * Use closurebuilder.py in favor of calcdeps.py for compiling JavaScript." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5291438", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5291438/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/5291438/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.2.0", + "id": 5291438, + "node_id": "MDc6UmVsZWFzZTUyOTE0Mzg=", + "tag_name": "v3.2.0", + "target_commitish": "master", + "name": "Protocol Buffers v3.2.0", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-01-27T23:03:40Z", + "published_at": "2017-02-17T19:53:08Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075410", + "id": 3075410, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTA=", + "name": "protobuf-cpp-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4148324, + "download_count": 32055, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-cpp-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075411", + "id": 3075411, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTE=", + "name": "protobuf-cpp-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5139444, + "download_count": 13605, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-cpp-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075412", + "id": 3075412, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTI=", + "name": "protobuf-csharp-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4440220, + "download_count": 736, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-csharp-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075413", + "id": 3075413, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTM=", + "name": "protobuf-csharp-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5575195, + "download_count": 3370, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-csharp-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075414", + "id": 3075414, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTQ=", + "name": "protobuf-java-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4599172, + "download_count": 4183, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-java-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075415", + "id": 3075415, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTU=", + "name": "protobuf-java-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5811811, + "download_count": 6630, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-java-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075418", + "id": 3075418, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTg=", + "name": "protobuf-js-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4237559, + "download_count": 2149, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-js-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075419", + "id": 3075419, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTk=", + "name": "protobuf-js-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5270870, + "download_count": 1808, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-js-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075420", + "id": 3075420, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjA=", + "name": "protobuf-objectivec-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4585356, + "download_count": 903, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-objectivec-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075421", + "id": 3075421, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjE=", + "name": "protobuf-objectivec-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5747803, + "download_count": 1161, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-objectivec-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075422", + "id": 3075422, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjI=", + "name": "protobuf-php-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4399867, + "download_count": 1019, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-php-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075423", + "id": 3075423, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjM=", + "name": "protobuf-php-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5451037, + "download_count": 885, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-php-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075424", + "id": 3075424, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjQ=", + "name": "protobuf-python-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4422343, + "download_count": 9672, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-python-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075425", + "id": 3075425, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjU=", + "name": "protobuf-python-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5517969, + "download_count": 9190, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-python-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075426", + "id": 3075426, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjY=", + "name": "protobuf-ruby-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4411454, + "download_count": 273, + "created_at": "2017-01-28T02:28:32Z", + "updated_at": "2017-01-28T02:28:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-ruby-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075427", + "id": 3075427, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0Mjc=", + "name": "protobuf-ruby-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5448090, + "download_count": 278, + "created_at": "2017-01-28T02:28:32Z", + "updated_at": "2017-01-28T02:28:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-ruby-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089849", + "id": 3089849, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NDk=", + "name": "protoc-3.2.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1289753, + "download_count": 1252, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089850", + "id": 3089850, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTA=", + "name": "protoc-3.2.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1330859, + "download_count": 781697, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089851", + "id": 3089851, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTE=", + "name": "protoc-3.2.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1475588, + "download_count": 515, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089852", + "id": 3089852, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTI=", + "name": "protoc-3.2.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1425967, + "download_count": 88079, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089853", + "id": 3089853, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTM=", + "name": "protoc-3.2.0-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1193879, + "download_count": 51344, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.2.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.2.0", + "body": "## General\n- Added protoc version number to protoc plugin protocol. It can be used by\n protoc plugin to detect which version of protoc is used with the plugin and\n mitigate known problems in certain version of protoc.\n\n## C++\n- The default parsing byte size limit has been raised from 64MB to 2GB.\n- Added rvalue setters for non-arena string fields.\n- Enabled debug logging for Android.\n- Fixed a double-free problem when using Reflection::SetAllocatedMessage()\n with extension fields.\n- Fixed several deterministic serialization bugs:\n- MessageLite::SerializeAsString() now respects the global deterministic\n serialization flag.\n- Extension fields are serialized deterministically as well. Fixed protocol\n compiler to correctly report importing-self as an error.\n- Fixed FileDescriptor::DebugString() to print custom options correctly.\n- Various performance/codesize optimizations and cleanups.\n\n## Java\n- The default parsing byte size limit has been raised from 64MB to 2GB.\n- Added recursion limit when parsing JSON.\n- Fixed a bug that enumType.getDescriptor().getOptions() doesn't have custom\n options.\n- Fixed generated code to support field numbers up to 2^29-1.\n\n## Python\n- You can now assign NumPy scalars/arrays (np.int32, np.int64) to protobuf\n fields, and assigning other numeric types has been optimized for\n performance.\n- Pure-Python: message types are now garbage-collectable.\n- Python/C++: a lot of internal cleanup/refactoring.\n\n## PHP (Alpha)\n- For 64-bit integers type (int64/uint64/sfixed64/fixed64/sint64), use PHP\n integer on 64-bit environment and PHP string on 32-bit environment.\n- PHP generated code also conforms to PSR-4 now.\n- Fixed ZTS build for c extension.\n- Fixed c extension build on Mac.\n- Fixed c extension build on 32-bit linux.\n- Fixed the bug that message without namespace is not found in the descriptor\n pool. (#2240)\n- Fixed the bug that repeated field is not iterable in c extension.\n- Message names Empty will be converted to GPBEmpty in generated code.\n- Added phpdoc in generated files.\n- The released API is almost stable. Unless there is large problem, we won't\n change it. See\n https://developers.google.com/protocol-buffers/docs/reference/php-generated\n for more details.\n\n## Objective-C\n- Added support for push/pop of the stream limit on CodedInputStream for\n anyone doing manual parsing.\n\n## C#\n- No changes.\n\n## Ruby\n- Message objects now support #respond_to? for field getters/setters.\n- You can now compare “message == non_message_object” and it will return false\n instead of throwing an exception.\n- JRuby: fixed #hashCode to properly reflect the values in the message.\n\n## Javascript\n- Deserialization of repeated fields no longer has quadratic performance\n behavior.\n- UTF-8 encoding/decoding now properly supports high codepoints.\n- Added convenience methods for some well-known types: Any, Struct, and\n Timestamp. These make it easier to convert data between native JavaScript\n types and the well-known protobuf types.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5200729", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5200729/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/5200729/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.2.0rc2", + "id": 5200729, + "node_id": "MDc6UmVsZWFzZTUyMDA3Mjk=", + "tag_name": "v3.2.0rc2", + "target_commitish": "master", + "name": "Protocol Buffers v3.2.0rc2", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2017-01-18T23:14:38Z", + "published_at": "2017-01-19T01:25:37Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016879", + "id": 3016879, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4Nzk=", + "name": "protobuf-cpp-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4147791, + "download_count": 1500, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-cpp-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016880", + "id": 3016880, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODA=", + "name": "protobuf-cpp-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5144659, + "download_count": 1424, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-cpp-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016881", + "id": 3016881, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODE=", + "name": "protobuf-csharp-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4440148, + "download_count": 252, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-csharp-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016882", + "id": 3016882, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODI=", + "name": "protobuf-csharp-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5581363, + "download_count": 478, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-csharp-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016883", + "id": 3016883, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODM=", + "name": "protobuf-java-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4598801, + "download_count": 431, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-java-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016884", + "id": 3016884, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODQ=", + "name": "protobuf-java-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5818304, + "download_count": 776, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-java-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016885", + "id": 3016885, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODU=", + "name": "protobuf-javanano-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4217007, + "download_count": 166, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-javanano-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016886", + "id": 3016886, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODY=", + "name": "protobuf-javanano-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5256002, + "download_count": 180, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-javanano-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016887", + "id": 3016887, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODc=", + "name": "protobuf-js-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4237496, + "download_count": 187, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-js-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016888", + "id": 3016888, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODg=", + "name": "protobuf-js-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5276389, + "download_count": 260, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-js-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016889", + "id": 3016889, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODk=", + "name": "protobuf-objectivec-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4585081, + "download_count": 173, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-objectivec-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016890", + "id": 3016890, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTA=", + "name": "protobuf-objectivec-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5754275, + "download_count": 195, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-objectivec-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016891", + "id": 3016891, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTE=", + "name": "protobuf-php-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4399466, + "download_count": 213, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-php-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016892", + "id": 3016892, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTI=", + "name": "protobuf-php-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5456855, + "download_count": 228, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-php-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016893", + "id": 3016893, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTM=", + "name": "protobuf-python-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4422603, + "download_count": 1215, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-python-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016894", + "id": 3016894, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTQ=", + "name": "protobuf-python-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5523810, + "download_count": 1157, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-python-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016895", + "id": 3016895, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTU=", + "name": "protobuf-ruby-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4402385, + "download_count": 152, + "created_at": "2017-01-19T00:52:29Z", + "updated_at": "2017-01-19T00:52:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-ruby-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016896", + "id": 3016896, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTY=", + "name": "protobuf-ruby-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5444899, + "download_count": 148, + "created_at": "2017-01-19T00:52:29Z", + "updated_at": "2017-01-19T00:52:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-ruby-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017023", + "id": 3017023, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjM=", + "name": "protoc-3.2.0rc2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1289753, + "download_count": 218, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017024", + "id": 3017024, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjQ=", + "name": "protoc-3.2.0rc2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1330859, + "download_count": 7421, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017025", + "id": 3017025, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjU=", + "name": "protoc-3.2.0rc2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1475588, + "download_count": 170, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017026", + "id": 3017026, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjY=", + "name": "protoc-3.2.0rc2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1425967, + "download_count": 843, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017027", + "id": 3017027, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjc=", + "name": "protoc-3.2.0rc2-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1193876, + "download_count": 2175, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.2.0rc2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.2.0rc2", + "body": "Release candidate for v3.2.0.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4219533", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4219533/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/4219533/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.1.0", + "id": 4219533, + "node_id": "MDc6UmVsZWFzZTQyMTk1MzM=", + "tag_name": "v3.1.0", + "target_commitish": "3.1.x", + "name": "Protocol Buffers v3.1.0", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2016-09-24T02:12:45Z", + "published_at": "2016-09-24T02:39:45Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368385", + "id": 2368385, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODU=", + "name": "protobuf-cpp-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4109863, + "download_count": 354545, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-cpp-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368388", + "id": 2368388, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODg=", + "name": "protobuf-cpp-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5089433, + "download_count": 18638, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-cpp-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368384", + "id": 2368384, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODQ=", + "name": "protobuf-csharp-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4400099, + "download_count": 1561, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-csharp-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368389", + "id": 2368389, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODk=", + "name": "protobuf-csharp-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5521752, + "download_count": 3121, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-csharp-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368386", + "id": 2368386, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODY=", + "name": "protobuf-java-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4557846, + "download_count": 4488, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-java-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368387", + "id": 2368387, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODc=", + "name": "protobuf-java-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5758590, + "download_count": 7661, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-java-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368393", + "id": 2368393, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTM=", + "name": "protobuf-javanano-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4178575, + "download_count": 1078, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:12Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-javanano-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368394", + "id": 2368394, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTQ=", + "name": "protobuf-javanano-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5200448, + "download_count": 889, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:13Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-javanano-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368390", + "id": 2368390, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTA=", + "name": "protobuf-js-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4195734, + "download_count": 1923, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-js-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368391", + "id": 2368391, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTE=", + "name": "protobuf-js-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5215181, + "download_count": 1963, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-js-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368392", + "id": 2368392, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTI=", + "name": "protobuf-objectivec-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4542396, + "download_count": 776, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:12Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-objectivec-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368395", + "id": 2368395, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTU=", + "name": "protobuf-objectivec-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5690237, + "download_count": 1542, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:14Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-objectivec-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368396", + "id": 2368396, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTY=", + "name": "protobuf-php-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4344388, + "download_count": 899, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:14Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-php-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368400", + "id": 2368400, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjg0MDA=", + "name": "protobuf-php-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5365714, + "download_count": 934, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-php-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368397", + "id": 2368397, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTc=", + "name": "protobuf-python-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4377622, + "download_count": 20873, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:15Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-python-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368399", + "id": 2368399, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTk=", + "name": "protobuf-python-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5461413, + "download_count": 5235, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:15Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-python-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368398", + "id": 2368398, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTg=", + "name": "protobuf-ruby-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4364631, + "download_count": 429, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:14Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-ruby-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368401", + "id": 2368401, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjg0MDE=", + "name": "protobuf-ruby-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5389485, + "download_count": 354, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-ruby-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380449", + "id": 2380449, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NDk=", + "name": "protoc-3.1.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1246949, + "download_count": 1172, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380453", + "id": 2380453, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTM=", + "name": "protoc-3.1.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1287347, + "download_count": 836096, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380452", + "id": 2380452, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTI=", + "name": "protoc-3.1.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1458268, + "download_count": 545, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380450", + "id": 2380450, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTA=", + "name": "protoc-3.1.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1405142, + "download_count": 18036, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380451", + "id": 2380451, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTE=", + "name": "protoc-3.1.0-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1188785, + "download_count": 22310, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.1.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.1.0", + "body": "## General\n- Proto3 support in PHP (alpha).\n- Various bug fixes.\n\n## C++\n- Added MessageLite::ByteSizeLong() that’s equivalent to\n MessageLite::ByteSize() but returns the value in size_t. Useful to check\n whether a message is over the 2G size limit that protobuf can support.\n- Moved default_instances to global variables. This allows default_instance\n addresses to be known at compile time.\n- Adding missing generic gcc 64-bit atomicops.\n- Restore New*Callback into google::protobuf namespace since these are used\n by the service stubs code\n- JSON support.\n - Fixed some conformance issues.\n- Fixed a JSON serialization bug for bytes fields.\n\n## Java\n- Fixed a bug in TextFormat that doesn’t accept empty repeated fields (i.e.,\n “field: [ ]”).\n- JSON support\n - Fixed JsonFormat to do correct snake_case-to-camelCase conversion for\n non-style-conforming field names.\n - Fixed JsonFormat to parse empty Any message correctly.\n - Added an option to JsonFormat.Parser to ignore unknown fields.\n- Experimental API\n - Added UnsafeByteOperations.unsafeWrap(byte[]) to wrap a byte array into\n ByteString without copy.\n\n## Python\n- JSON support\n - Fixed some conformance issues.\n\n## PHP (Alpha)\n- We have added the proto3 support for PHP via both a pure PHP package and a\n native c extension. The pure PHP package is intended to provide usability\n to wider range of PHP platforms, while the c extension is intended to\n provide higher performance. Both implementations provide the same runtime\n APIs and share the same generated code. Users don’t need to re-generate\n code for the same proto definition when they want to switch the\n implementation later. The pure PHP package is included in the php/src\n directory, and the c extension is included in the php/ext directory. \n \n Both implementations provide idiomatic PHP APIs:\n - All messages and enums are defined as PHP classes.\n - All message fields can only be accessed via getter/setter.\n - Both repeated field elements and map elements are stored in containers\n that act like a normal PHP array.\n \n Unlike several existing third-party PHP implementations for protobuf, our\n implementations are built on a \"strongly-typed\" philosophy: message fields\n and array/map containers will throw exceptions eagerly when values of the\n incorrect type (not including those that can be type converted, e.g.,\n double <-> integer <-> numeric string) are inserted.\n \n Currently, pure PHP runtime supports php5.5, 5.6 and 7 on linux. C\n extension runtime supports php5.5 and 5.6 on linux.\n \n See php/README.md for more details about installment. See\n https://developers.google.com/protocol-buffers/docs/phptutorial for more\n details about APIs.\n\n## Objective-C\n- Helpers are now provided for working the the Any well known type (see\n GPBWellKnownTypes.h for the api additions).\n- Some improvements in startup code (especially when extensions aren’t used).\n\n## Javascript\n- Fixed missing import of jspb.Map\n- Fixed valueWriterFn variable name\n\n## Ruby\n- Fixed hash computation for JRuby's RubyMessage\n- Make sure map parsing frames are GC-rooted.\n- Added API support for well-known types.\n\n## C#\n- Removed check on dependency in the C# reflection API.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4065428", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4065428/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/4065428/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.2", + "id": 4065428, + "node_id": "MDc6UmVsZWFzZTQwNjU0Mjg=", + "tag_name": "v3.0.2", + "target_commitish": "3.0.x", + "name": "Protocol Buffers v3.0.2", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2016-09-06T22:40:51Z", + "published_at": "2016-09-06T22:54:42Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267854", + "id": 2267854, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTQ=", + "name": "protobuf-cpp-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4077714, + "download_count": 12606, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-cpp-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267847", + "id": 2267847, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDc=", + "name": "protobuf-cpp-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5041514, + "download_count": 2742, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-cpp-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267853", + "id": 2267853, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTM=", + "name": "protobuf-csharp-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4364571, + "download_count": 341, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-csharp-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267842", + "id": 2267842, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDI=", + "name": "protobuf-csharp-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5472818, + "download_count": 881, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-csharp-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267852", + "id": 2267852, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTI=", + "name": "protobuf-java-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4519235, + "download_count": 1105, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-java-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267841", + "id": 2267841, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDE=", + "name": "protobuf-java-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5700286, + "download_count": 1718, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-java-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267848", + "id": 2267848, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDg=", + "name": "protobuf-js-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4160840, + "download_count": 582, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-js-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267845", + "id": 2267845, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDU=", + "name": "protobuf-js-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5163086, + "download_count": 470, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-js-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267849", + "id": 2267849, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDk=", + "name": "protobuf-objectivec-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4504414, + "download_count": 287, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-objectivec-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267844", + "id": 2267844, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDQ=", + "name": "protobuf-objectivec-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5625211, + "download_count": 380, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-objectivec-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267851", + "id": 2267851, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTE=", + "name": "protobuf-python-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4341362, + "download_count": 3850, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-python-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267846", + "id": 2267846, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDY=", + "name": "protobuf-python-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5404825, + "download_count": 11089, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-python-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267850", + "id": 2267850, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTA=", + "name": "protobuf-ruby-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4330600, + "download_count": 200, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-ruby-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267843", + "id": 2267843, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDM=", + "name": "protobuf-ruby-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5338051, + "download_count": 170, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-ruby-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272522", + "id": 2272522, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjI=", + "name": "protoc-3.0.2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1258450, + "download_count": 406, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272521", + "id": 2272521, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjE=", + "name": "protoc-3.0.2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1297257, + "download_count": 122955, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272524", + "id": 2272524, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjQ=", + "name": "protoc-3.0.2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1422393, + "download_count": 218, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272525", + "id": 2272525, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjU=", + "name": "protoc-3.0.2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1369223, + "download_count": 10234, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272523", + "id": 2272523, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjM=", + "name": "protoc-3.0.2-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1166025, + "download_count": 6358, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.2", + "body": "## General\n- Various bug fixes.\n\n## Objective C\n- Fix for oneofs in proto3 syntax files where fields were set to the zero\n value.\n- Fix for embedded null character in strings.\n- CocoaDocs support\n\n## Ruby\n- Fixed memory corruption bug in parsing that could occur under GC pressure.\n\n## Javascript\n- jspb.Map is now properly exported to CommonJS modules.\n\n## C#\n- Removed legacy_enum_values flag.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3757284", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3757284/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3757284/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0", + "id": 3757284, + "node_id": "MDc6UmVsZWFzZTM3NTcyODQ=", + "tag_name": "v3.0.0", + "target_commitish": "3.0.0-GA", + "name": "Protocol Buffers v3.0.0", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2016-07-27T21:40:30Z", + "published_at": "2016-07-28T05:03:44Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058282", + "id": 2058282, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyODI=", + "name": "protobuf-cpp-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4075839, + "download_count": 77247, + "created_at": "2016-07-28T05:03:15Z", + "updated_at": "2016-07-28T05:03:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-cpp-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058275", + "id": 2058275, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzU=", + "name": "protobuf-cpp-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5038816, + "download_count": 18638, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-cpp-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058283", + "id": 2058283, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyODM=", + "name": "protobuf-csharp-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4362759, + "download_count": 1519, + "created_at": "2016-07-28T05:03:15Z", + "updated_at": "2016-07-28T05:03:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-csharp-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058274", + "id": 2058274, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzQ=", + "name": "protobuf-csharp-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5470033, + "download_count": 5642, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-csharp-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058280", + "id": 2058280, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyODA=", + "name": "protobuf-java-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4517208, + "download_count": 6973, + "created_at": "2016-07-28T05:03:15Z", + "updated_at": "2016-07-28T05:03:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-java-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058271", + "id": 2058271, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzE=", + "name": "protobuf-java-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5697581, + "download_count": 13342, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-java-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058279", + "id": 2058279, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzk=", + "name": "protobuf-js-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4158764, + "download_count": 1268, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-js-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058268", + "id": 2058268, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNjg=", + "name": "protobuf-js-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5160378, + "download_count": 2282, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:16Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-js-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067174", + "id": 2067174, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzQ=", + "name": "protobuf-lite-3.0.1-sources.jar", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-java-archive", + "state": "uploaded", + "size": 500270, + "download_count": 783, + "created_at": "2016-07-29T16:59:04Z", + "updated_at": "2016-07-29T16:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-lite-3.0.1-sources.jar" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058277", + "id": 2058277, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzc=", + "name": "protobuf-objectivec-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4487992, + "download_count": 866, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-objectivec-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058273", + "id": 2058273, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzM=", + "name": "protobuf-objectivec-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5608546, + "download_count": 1384, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-objectivec-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058276", + "id": 2058276, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzY=", + "name": "protobuf-python-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4339278, + "download_count": 161947, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-python-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058272", + "id": 2058272, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzI=", + "name": "protobuf-python-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5401909, + "download_count": 10434, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:17Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-python-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058278", + "id": 2058278, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzg=", + "name": "protobuf-ruby-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4328117, + "download_count": 624, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-ruby-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058269", + "id": 2058269, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNjk=", + "name": "protobuf-ruby-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5334911, + "download_count": 541, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:17Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-ruby-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062561", + "id": 2062561, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NjE=", + "name": "protoc-3.0.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1257713, + "download_count": 2104, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062560", + "id": 2062560, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NjA=", + "name": "protoc-3.0.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1296281, + "download_count": 208190, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062562", + "id": 2062562, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NjI=", + "name": "protoc-3.0.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1421215, + "download_count": 756, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062559", + "id": 2062559, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NTk=", + "name": "protoc-3.0.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1369203, + "download_count": 16456, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067374", + "id": 2067374, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjczNzQ=", + "name": "protoc-3.0.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1165663, + "download_count": 28990, + "created_at": "2016-07-29T17:52:52Z", + "updated_at": "2016-07-29T17:52:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067178", + "id": 2067178, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzg=", + "name": "protoc-gen-javalite-3.0.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 823037, + "download_count": 341, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067175", + "id": 2067175, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzU=", + "name": "protoc-gen-javalite-3.0.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 843176, + "download_count": 878, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067179", + "id": 2067179, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzk=", + "name": "protoc-gen-javalite-3.0.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 841851, + "download_count": 329, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067177", + "id": 2067177, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzc=", + "name": "protoc-gen-javalite-3.0.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 816051, + "download_count": 940, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067376", + "id": 2067376, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjczNzY=", + "name": "protoc-gen-javalite-3.0.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 766116, + "download_count": 2366, + "created_at": "2016-07-29T17:53:51Z", + "updated_at": "2016-07-29T17:53:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0", + "body": "# Version 3.0.0\n\nThis change log summarizes all the changes since the last stable release\n(v2.6.1). See the last section about changes since v3.0.0-beta-4.\n\n## Proto3\n- Introduced Protocol Buffers language version 3 (aka proto3).\n \n When protocol buffers was initially open sourced it implemented Protocol\n Buffers language version 2 (aka proto2), which is why the version number\n started from v2.0.0. From v3.0.0, a new language version (proto3) is\n introduced while the old version (proto2) will continue to be supported.\n \n The main intent of introducing proto3 is to clean up protobuf before pushing\n the language as the foundation of Google's new API platform. In proto3, the\n language is simplified, both for ease of use and to make it available in a\n wider range of programming languages. At the same time a few features are\n added to better support common idioms found in APIs.\n \n The following are the main new features in language version 3:\n 1. Removal of field presence logic for primitive value fields, removal of\n required fields, and removal of default values. This makes proto3\n significantly easier to implement with open struct representations, as\n in languages like Android Java, Objective C, or Go.\n 2. Removal of unknown fields.\n 3. Removal of extensions, which are instead replaced by a new standard\n type called Any.\n 4. Fix semantics for unknown enum values.\n 5. Addition of maps (back-ported to proto2)\n 6. Addition of a small set of standard types for representation of time,\n dynamic data, etc (back-ported to proto2)\n 7. A well-defined encoding in JSON as an alternative to binary proto\n encoding.\n \n A new notion \"syntax\" is introduced to specify whether a .proto file\n uses proto2 or proto3:\n \n ```\n // foo.proto\n syntax = \"proto3\";\n message Bar {...}\n ```\n \n If omitted, the protocol buffer compiler generates a warning and \"proto2\" is\n used as the default. This warning will be turned into an error in a future\n release.\n \n We recommend that new Protocol Buffers users use proto3. However, we do not\n generally recommend that existing users migrate from proto2 from proto3 due\n to API incompatibility, and we will continue to support proto2 for a long\n time.\n \n Other significant changes in proto3.\n- Explicit \"optional\" keyword are disallowed in proto3 syntax, as fields are\n optional by default; required fields are no longer supported.\n- Removed non-zero default values and field presence logic for non-message\n fields. e.g. has_xxx() methods are removed; primitive fields set to default\n values (0 for numeric fields, empty for string/bytes fields) will be skipped\n during serialization.\n- Group fields are no longer supported in proto3 syntax.\n- Changed repeated primitive fields to use packed serialization by default in\n proto3 (implemented for C++, Java, Python in this release). The user can\n still disable packed serialization by setting packed to false for now.\n- Added well-known type protos (any.proto, empty.proto, timestamp.proto,\n duration.proto, etc.). Users can import and use these protos just like\n regular proto files. Additional runtime support are available for each\n language.\n- Proto3 JSON is supported in several languages (fully supported in C++, Java,\n Python and C# partially supported in Ruby). The JSON spec is defined in the\n proto3 language guide:\n \n https://developers.google.com/protocol-buffers/docs/proto3#json\n \n We will publish a more detailed spec to define the exact behavior of\n proto3-conformant JSON serializers and parsers. Until then, do not rely\n on specific behaviors of the implementation if it’s not documented in\n the above spec.\n- Proto3 enforces strict UTF-8 checking. Parsing will fail if a string\n field contains non UTF-8 data.\n\n## General\n- Introduced new language implementations (C#, JavaScript, Ruby, Objective-C)\n to proto3.\n- Added support for map fields (implemented in both proto2 and proto3).\n Map fields can be declared using the following syntax:\n \n ```\n message Foo {\n map values = 1;\n }\n ```\n \n The data of a map field is stored in memory as an unordered map and\n can be accessed through generated accessors.\n- Added a \"reserved\" keyword in both proto2 and proto3 syntax. Users can use\n this keyword to declare reserved field numbers and names to prevent them\n from being reused by other fields in the same message.\n \n To reserve field numbers, add a reserved declaration in your message:\n \n ```\n message TestMessage {\n reserved 2, 15, 9 to 11, 3;\n }\n ```\n \n This reserves field numbers 2, 3, 9, 10, 11 and 15. If a user uses any of\n these as field numbers, the protocol buffer compiler will report an error.\n \n Field names can also be reserved:\n \n ```\n message TestMessage {\n reserved \"foo\", \"bar\";\n }\n ```\n- Added a deterministic serialization API (currently available in C++). The\n deterministic serialization guarantees that given a binary, equal messages\n will be serialized to the same bytes. This allows applications like\n MapReduce to group equal messages based on the serialized bytes. The\n deterministic serialization is, however, NOT canonical across languages; it\n is also unstable across different builds with schema changes due to unknown\n fields. Users who need canonical serialization, e.g. persistent storage in\n a canonical form, fingerprinting, etc, should define their own\n canonicalization specification and implement the serializer using reflection\n APIs rather than relying on this API.\n- Added a new field option \"json_name\". By default proto field names are\n converted to \"lowerCamelCase\" in proto3 JSON format. This option can be\n used to override this behavior and specify a different JSON name for the\n field.\n- Added conformance tests to ensure implementations are following proto3 JSON\n specification.\n\n## C++\n- Added arena allocation support (for both proto2 and proto3).\n \n Profiling shows memory allocation and deallocation constitutes a significant\n fraction of CPU-time spent in protobuf code and arena allocation is a\n technique introduced to reduce this cost. With arena allocation, new\n objects are allocated from a large piece of preallocated memory and\n deallocation of these objects is almost free. Early adoption shows 20% to\n 50% improvement in some Google binaries.\n \n To enable arena support, add the following option to your .proto file:\n \n ```\n option cc_enable_arenas = true;\n ```\n \n The protocol buffer compiler will generate additional code to make the generated\n message classes work with arenas. This does not change the existing API\n of protobuf messages and does not affect wire format. Your existing code\n should continue to work after adding this option. In the future we will\n make this option enabled by default.\n \n To actually take advantage of arena allocation, you need to use the arena\n APIs when creating messages. A quick example of using the arena API:\n \n ```\n {\n google::protobuf::Arena arena;\n // Allocate a protobuf message in the arena.\n MyMessage* message = Arena::CreateMessage(&arena);\n // All submessages will be allocated in the same arena.\n if (!message->ParseFromString(data)) {\n // Deal with malformed input data.\n }\n // Must not delete the message here. It will be deleted automatically\n // when the arena is destroyed.\n }\n ```\n \n Currently arena allocation does not work with map fields. Enabling arenas in a .proto\n file containing map fields will result in compile errors in the generated\n code. This will be addressed in a future release.\n- Added runtime support for the Any type. To use Any in your proto file, first\n import the definition of Any:\n \n ```\n // foo.proto\n import \"google/protobuf/any.proto\";\n message Foo {\n google.protobuf.Any any_field = 1;\n }\n message Bar {\n int32 value = 1;\n }\n ```\n \n Then in C++ you can access the Any field using PackFrom()/UnpackTo()\n methods:\n \n ```\n Foo foo;\n Bar bar = ...;\n foo.mutable_any_field()->PackFrom(bar);\n ...\n if (foo.any_field().IsType()) {\n foo.any_field().UnpackTo(&bar);\n ...\n }\n ```\n- In text format, the entries of a map field will be sorted by key.\n- Introduced new utility functions/classes in the google/protobuf/util\n directory:\n - MessageDifferencer: compare two proto messages and report their\n differences.\n - JsonUtil: support converting protobuf binary format to/from JSON.\n - TimeUtil: utility functions to work with well-known types Timestamp\n and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- Introduced a deterministic serialization API in\n CodedOutputStream::SetSerializationDeterministic(bool). See the notes about\n deterministic serialization in the General section.\n\n## Java\n- Introduced a new util package that will be distributed as a separate\n artifact in maven. It contains:\n - JsonFormat: convert proto messages to/from JSON.\n - Timestamps/Durations: utility functions to work with Timestamp and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- Introduced an ExperimentalApi annotation. Annotated APIs are experimental\n and are subject to change in a backward incompatible way in future releases.\n- Introduced zero-copy serialization as an ExperimentalApi\n - Introduction of the `ByteOutput` interface. This is similar to\n `OutputStream` but provides semantics for lazy writing (i.e. no\n immediate copy required) of fields that are considered to be immutable.\n - `ByteString` now supports writing to a `ByteOutput`, which will directly\n expose the internals of the `ByteString` (i.e. `byte[]` or `ByteBuffer`)\n to the `ByteOutput` without copying.\n - `CodedOutputStream` now supports writing to a `ByteOutput`. `ByteString`\n instances that are too large to fit in the internal buffer will be\n (lazily) written to the `ByteOutput` directly.\n - This allows applications using large `ByteString` fields to avoid\n duplication of these fields entirely. Such an application can supply a\n `ByteOutput` that chains together the chunks received from\n `CodedOutputStream` before forwarding them onto the IO system.\n- Other related changes to `CodedOutputStream`\n - Additional use of `sun.misc.Unsafe` where possible to perform fast\n access to `byte[]` and `ByteBuffer` values and avoiding unnecessary\n range checking.\n - `ByteBuffer`-backed `CodedOutputStream` now writes directly to the\n `ByteBuffer` rather than to an intermediate array.\n- Performance optimizations for String fields serialization.\n- The static PARSER in each generated message is deprecated, and it will\n be removed in a future release. A static parser() getter is generated\n for each message type instead.\n- File option \"java_generate_equals_and_hash\" is now deprecated. equals() and\n hashCode() methods are generated by default.\n\n## Python\n- Python has received several updates, most notably support for proto3\n semantics in any .proto file that declares syntax=\"proto3\".\n Messages declared in proto3 files no longer represent field presence\n for scalar fields (number, enums, booleans, or strings). You can\n no longer call HasField() for such fields, and they are serialized\n based on whether they have a non-zero/empty/false value.\n- One other notable change is in the C++-accelerated implementation.\n Descriptor objects (which describe the protobuf schema and allow\n reflection over it) are no longer duplicated between the Python\n and C++ layers. The Python descriptors are now simple wrappers\n around the C++ descriptors. This change should significantly\n reduce the memory usage of programs that use a lot of message\n types.\n- Added map support.\n - maps now have a dict-like interface (msg.map_field[key] = value)\n - existing code that modifies maps via the repeated field interface\n will need to be updated.\n- Added proto3 JSON format utility. It includes support for all field types and a few well-known types.\n- Added runtime support for Any, Timestamp, Duration and FieldMask.\n- \"[ ]\" is now accepted for repeated scalar fields in text format parser.\n- Removed legacy Python 2.5 support.\n- Moved to a single Python 2.x/3.x-compatible codebase\n\n## Ruby\n- We have added proto3 support for Ruby via a native C/JRuby extension.\n \n For the moment we only support proto3. Proto2 support is planned, but not\n yet implemented. Proto3 JSON is supported, but the special JSON mappings\n for the well-known types are not yet implemented.\n \n The Ruby extension itself is included in the ruby/ directory, and details on\n building and installing the extension are in ruby/README.md. The extension\n is also be published as a Ruby gem. Code generator support is included as\n part of `protoc` with the `--ruby_out` flag.\n \n The Ruby extension implements a user-friendly DSL to define message types\n (also generated by the code generator from `.proto` files). Once a message\n type is defined, the user may create instances of the message that behave in\n ways idiomatic to Ruby. For example:\n - Message fields are present as ordinary Ruby properties (getter method\n `foo` and setter method `foo=`).\n - Repeated field elements are stored in a container that acts like a native\n Ruby array, and map elements are stored in a container that acts like a\n native Ruby hashmap.\n - The usual well-known methods, such as `#to_s`, `#dup`, and the like, are\n present.\n \n Unlike several existing third-party Ruby extensions for protobuf, this\n extension is built on a \"strongly-typed\" philosophy: message fields and\n array/map containers will throw exceptions eagerly when values of the\n incorrect type are inserted.\n \n See ruby/README.md for details.\n\n## Objective-C\n- Objective-C includes a code generator and a native objective-c runtime\n library. By adding “--objc_out” to protoc, the code generator will generate\n a header(_.pbobjc.h) and an implementation file(_.pbobjc.m) for each proto\n file.\n \n In this first release, the generated interface provides: enums, messages,\n field support(single, repeated, map, oneof), proto2 and proto3 syntax\n support, parsing and serialization. It’s compatible with ARC and non-ARC\n usage. In addition, users can access it via the swift bridging header.\n\n## C#\n- C# support is derived from the project at\n https://github.com/jskeet/protobuf-csharp-port, which is now in maintenance mode.\n- The primary differences between the previous project and the proto3 version are that\n message types are now mutable, and the codegen is integrated in protoc\n- There are two NuGet packages: Google.Protobuf (the support library) and\n Google.Protobuf.Tools (containing protoc)\n- Target platforms now .NET 4.5, selected portable subsets and .NET Core.\n- Null values are used to represent \"no value\" for message type fields, and for wrapper\n types such as Int32Value which map to C# nullable value types.\n- Proto3 semantics supported; proto2 files are prohibited for C# codegen.\n- Enum values are PascalCased, and if there's a prefix which matches the\n name of the enum, that is removed (so an enum `COLOR` with a value\n `COLOR_LIGHT_GRAY` would generate a value of just `LightGray`).\n\n## JavaScript\n- Added proto2/proto3 support for JavaScript. The runtime is written in pure\n JavaScript and works in browsers and in Node.js. To generate JavaScript\n code for your proto, invoke protoc with \"--js_out\". See js/README.md\n for more build instructions.\n- JavaScript has support for binary protobuf format, but not proto3 JSON.\n There is also no support for reflection, since the code size impacts from this\n are often not the right choice for the browser.\n- There is support for both CommonJS imports and Closure `goog.require()`.\n\n## Lite\n- Supported Proto3 lite-runtime in Java for mobile platforms.\n A new \"lite\" generator parameter was introduced in the protoc for C++ for\n Proto3 syntax messages. Example usage:\n \n ```\n ./protoc --cpp_out=lite:$OUTPUT_PATH foo.proto\n ```\n \n The protoc will treat the current input and all the transitive dependencies\n as LITE. The same generator parameter must be used to generate the\n dependencies.\n \n In Proto3 syntax files, \"optimized_for=LITE_RUNTIME\" is no longer supported.\n \n For Java, --javalite_out code generator is supported as a separate compiler\n plugin in a separate branch.\n- Performance optimizations for Java Lite runtime on Android:\n - Reduced allocations\n - Reduced method overhead after ProGuarding\n - Reduced code size after ProGuarding\n- Java Lite protos now implement deep equals/hashCode/toString\n\n## Compatibility Notice\n- v3.0.0 is the first API stable release of the v3.x series. We do not expect\n any future API breaking changes.\n- For C++, Java Lite and Objective-C, source level compatibility is\n guaranteed. Upgrading from v3.0.0 to newer minor version releases will be\n source compatible. For example, if your code compiles against protobuf\n v3.0.0, it will continue to compile after you upgrade protobuf library to\n v3.1.0.\n- For other languages, both source level compatibility and binary level\n compatibility are guaranteed. For example, if you have a Java binary built\n against protobuf v3.0.0. After switching the protobuf runtime binary to\n v3.1.0, your built binary should continue to work.\n- Compatibility is only guaranteed for documented API and documented\n behaviors. If you are using undocumented API (e.g., use anything in the C++\n internal namespace), it can be broken by minor version releases in an\n undetermined manner.\n\n## Changes since v3.0.0-beta-4\n\n### Ruby\n- When you assign a string field `a.string_field = “X”`, we now call\n #encode(UTF-8) on the string and freeze the copy. This saves you from\n needing to ensure the string is already encoded as UTF-8. It also prevents\n you from mutating the string after it has been assigned (this is how we\n ensure it stays valid UTF-8).\n- The generated file for `foo.proto` is now `foo_pb.rb` instead of just\n `foo.rb`. This makes it easier to see which imports/requires are from\n protobuf generated code, and also prevents conflicts with any `foo.rb` file\n you might have written directly in Ruby. It is a backward-incompatible\n change: you will need to update all of your `require` statements.\n- For package names like `foo_bar`, we now translate this to the Ruby module\n `FooBar`. This is more idiomatic Ruby than what we used to do (`Foo_bar`).\n\n### JavaScript\n- Scalar fields like numbers and boolean now return defaults instead of\n `undefined` or `null` when they are unset. You can test for presence\n explicitly by calling `hasFoo()`, which we now generate for scalar fields in\n proto2.\n\n### Java Lite\n- Java Lite is now implemented as a separate plugin, maintained in the\n `javalite` branch. Both lite runtime and protoc artifacts will be available\n in Maven.\n\n### C#\n- Target platforms now .NET 4.5, selected portable subsets and .NET Core.\n- legacy_enum_values option is no longer supported.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3685225", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3685225/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3685225/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-4", + "id": 3685225, + "node_id": "MDc6UmVsZWFzZTM2ODUyMjU=", + "tag_name": "v3.0.0-beta-4", + "target_commitish": "master", + "name": "Protocol Buffers v3.0.0-beta-4", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2016-07-18T21:46:05Z", + "published_at": "2016-07-20T00:40:38Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009152", + "id": 2009152, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxNTI=", + "name": "protobuf-cpp-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4064930, + "download_count": 1755, + "created_at": "2016-07-18T21:51:17Z", + "updated_at": "2016-07-18T21:51:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-cpp-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009155", + "id": 2009155, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxNTU=", + "name": "protobuf-cpp-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5039995, + "download_count": 1713, + "created_at": "2016-07-18T21:51:17Z", + "updated_at": "2016-07-18T21:51:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-cpp-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016612", + "id": 2016612, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTI=", + "name": "protobuf-csharp-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4361267, + "download_count": 238, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-csharp-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016610", + "id": 2016610, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTA=", + "name": "protobuf-csharp-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5481933, + "download_count": 694, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-csharp-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016608", + "id": 2016608, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MDg=", + "name": "protobuf-java-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4499651, + "download_count": 452, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-java-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016613", + "id": 2016613, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTM=", + "name": "protobuf-java-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5699557, + "download_count": 818, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-java-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016616", + "id": 2016616, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTY=", + "name": "protobuf-javanano-3.0.0-alpha-7.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4141470, + "download_count": 233, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-javanano-3.0.0-alpha-7.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016617", + "id": 2016617, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTc=", + "name": "protobuf-javanano-3.0.0-alpha-7.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5162387, + "download_count": 327, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-javanano-3.0.0-alpha-7.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016618", + "id": 2016618, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTg=", + "name": "protobuf-js-3.0.0-alpha-7.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4154790, + "download_count": 225, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-js-3.0.0-alpha-7.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016620", + "id": 2016620, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MjA=", + "name": "protobuf-js-3.0.0-alpha-7.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5173182, + "download_count": 331, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-js-3.0.0-alpha-7.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016611", + "id": 2016611, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTE=", + "name": "protobuf-objectivec-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4487226, + "download_count": 199, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-objectivec-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016609", + "id": 2016609, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MDk=", + "name": "protobuf-objectivec-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5621031, + "download_count": 335, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-objectivec-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016614", + "id": 2016614, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTQ=", + "name": "protobuf-python-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4336363, + "download_count": 1097, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-python-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016615", + "id": 2016615, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTU=", + "name": "protobuf-python-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5413005, + "download_count": 1337, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-python-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016619", + "id": 2016619, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTk=", + "name": "protobuf-ruby-3.0.0-alpha-7.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4321880, + "download_count": 194, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-ruby-3.0.0-alpha-7.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016621", + "id": 2016621, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MjE=", + "name": "protobuf-ruby-3.0.0-alpha-7.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5346945, + "download_count": 196, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-ruby-3.0.0-alpha-7.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009106", + "id": 2009106, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxMDY=", + "name": "protoc-3.0.0-beta-4-linux-x86-32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1254614, + "download_count": 261, + "created_at": "2016-07-18T21:39:58Z", + "updated_at": "2016-07-18T21:39:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-linux-x86-32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009105", + "id": 2009105, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxMDU=", + "name": "protoc-3.0.0-beta-4-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1294788, + "download_count": 9354, + "created_at": "2016-07-18T21:39:58Z", + "updated_at": "2016-07-18T21:39:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2014997", + "id": 2014997, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTQ5OTc=", + "name": "protoc-3.0.0-beta-4-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1642210, + "download_count": 198, + "created_at": "2016-07-19T19:06:28Z", + "updated_at": "2016-07-19T19:06:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2015017", + "id": 2015017, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTUwMTc=", + "name": "protoc-3.0.0-beta-4-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1595153, + "download_count": 1508, + "created_at": "2016-07-19T19:10:45Z", + "updated_at": "2016-07-19T19:10:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009109", + "id": 2009109, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxMDk=", + "name": "protoc-3.0.0-beta-4-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2721435, + "download_count": 24840, + "created_at": "2016-07-18T21:39:58Z", + "updated_at": "2016-07-18T21:40:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-4", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-4", + "body": "# Version 3.0.0-beta-4\n\n## General\n- Added a deterministic serialization API for C++. The deterministic\n serialization guarantees that given a binary, equal messages will be\n serialized to the same bytes. This allows applications like MapReduce to\n group equal messages based on the serialized bytes. The deterministic\n serialization is, however, NOT canonical across languages; it is also\n unstable across different builds with schema changes due to unknown fields.\n Users who need canonical serialization, e.g. persistent storage in a\n canonical form, fingerprinting, etc, should define their own\n canonicalization specification and implement the serializer using reflection\n APIs rather than relying on this API.\n- Added OneofOptions. You can now define custom options for oneof groups.\n \n ```\n import \"google/protobuf/descriptor.proto\";\n extend google.protobuf.OneofOptions {\n optional int32 my_oneof_extension = 12345;\n }\n message Foo {\n oneof oneof_group {\n (my_oneof_extension) = 54321;\n ...\n }\n }\n ```\n\n## C++ (beta)\n- Introduced a deterministic serialization API in\n CodedOutputStream::SetSerializationDeterministic(bool). See the notes about\n deterministic serialization in the General section.\n- Added google::protobuf::Map::swap() to swap two map fields.\n- Fixed a memory leak when calling Reflection::ReleaseMessage() on a message\n allocated on arena.\n- Improved error reporting when parsing text format protos.\n- JSON\n - Added a new parser option to ignore unknown fields when parsing JSON.\n - Added convenient methods for message to/from JSON conversion.\n- Various performance optimizations.\n\n## Java (beta)\n- File option \"java_generate_equals_and_hash\" is now deprecated. equals() and\n hashCode() methods are generated by default.\n- Added a new JSON printer option \"omittingInsignificantWhitespace\" to produce\n a more compact JSON output. The printer will pretty-print by default.\n- Updated Java runtime to be compatible with 2.5.0/2.6.1 generated protos.\n\n## Python (beta)\n- Added support to pretty print Any messages in text format.\n- Added a flag to ignore unknown fields when parsing JSON.\n- Bugfix: \"@type\" field of a JSON Any message is now correctly put before\n other fields.\n\n## Objective-C (beta)\n- Updated the code to support compiling with more compiler warnings\n enabled. (Issue 1616)\n- Exposing more detailed errors for parsing failures. (PR 1623)\n- Small (breaking) change to the naming of some methods on the support classes\n for map<>. There were collisions with the system provided KVO support, so\n the names were changed to avoid those issues. (PR 1699)\n- Fixed for proper Swift bridging of error handling during parsing. (PR 1712)\n- Complete support for generating sources that will go into a Framework and\n depend on generated sources from other Frameworks. (Issue 1457)\n\n## C# (beta)\n- RepeatedField optimizations.\n- Support for .NET Core.\n- Minor bug fixes.\n- Ability to format a single value in JsonFormatter (advanced usage only).\n- Modifications to attributes applied to generated code.\n\n## Javascript (alpha)\n- Maps now have a real map API instead of being treated as repeated fields.\n- Well-known types are now provided in the google-protobuf package, and the\n code generator knows to require() them from that package.\n- Bugfix: non-canonical varints are correctly decoded.\n\n## Ruby (alpha)\n- Accessors for oneof fields now return default values instead of nil.\n\n## Java Lite\n- Java lite support is removed from protocol compiler. It will be supported\n as a protocol compiler plugin in a separate code branch.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3443087", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3443087/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3443087/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-3.1", + "id": 3443087, + "node_id": "MDc6UmVsZWFzZTM0NDMwODc=", + "tag_name": "v3.0.0-beta-3.1", + "target_commitish": "objc-framework-fix", + "name": "Protocol Buffers v3.0.0-beta-3.1", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2016-06-14T00:02:01Z", + "published_at": "2016-06-14T18:42:06Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1907911", + "id": 1907911, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE5MDc5MTE=", + "name": "protoc-3.0.0-beta-3.1-osx-fat.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3127935, + "download_count": 830, + "created_at": "2016-06-27T20:11:20Z", + "updated_at": "2016-06-27T20:11:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3.1/protoc-3.0.0-beta-3.1-osx-fat.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1848036", + "id": 1848036, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE4NDgwMzY=", + "name": "protoc-3.0.0-beta-3.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1606235, + "download_count": 759, + "created_at": "2016-06-14T18:36:56Z", + "updated_at": "2016-06-14T18:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3.1/protoc-3.0.0-beta-3.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1848047", + "id": 1848047, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE4NDgwNDc=", + "name": "protoc-3.0.0-beta-3.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1562139, + "download_count": 4989, + "created_at": "2016-06-14T18:41:19Z", + "updated_at": "2016-06-14T18:41:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3.1/protoc-3.0.0-beta-3.1-osx-x86_64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-3.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-3.1", + "body": "Fix iOS framework.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3236555", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3236555/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3236555/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-3", + "id": 3236555, + "node_id": "MDc6UmVsZWFzZTMyMzY1NTU=", + "tag_name": "v3.0.0-beta-3", + "target_commitish": "beta-3", + "name": "Protocol Buffers v3.0.0-beta-3", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2016-05-16T18:34:04Z", + "published_at": "2016-05-16T20:32:35Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692215", + "id": 1692215, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTU=", + "name": "protobuf-cpp-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4030692, + "download_count": 4247, + "created_at": "2016-05-16T20:28:24Z", + "updated_at": "2016-05-16T20:28:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-cpp-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692216", + "id": 1692216, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTY=", + "name": "protobuf-cpp-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5005561, + "download_count": 148161, + "created_at": "2016-05-16T20:28:24Z", + "updated_at": "2016-05-16T20:28:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-cpp-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692217", + "id": 1692217, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTc=", + "name": "protobuf-csharp-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4314255, + "download_count": 346, + "created_at": "2016-05-16T20:28:58Z", + "updated_at": "2016-05-16T20:29:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-csharp-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692218", + "id": 1692218, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTg=", + "name": "protobuf-csharp-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5434342, + "download_count": 1365, + "created_at": "2016-05-16T20:28:58Z", + "updated_at": "2016-05-16T20:29:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-csharp-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692219", + "id": 1692219, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTk=", + "name": "protobuf-java-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4430590, + "download_count": 1066, + "created_at": "2016-05-16T20:29:09Z", + "updated_at": "2016-05-16T20:29:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-java-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692220", + "id": 1692220, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjA=", + "name": "protobuf-java-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5610383, + "download_count": 2173, + "created_at": "2016-05-16T20:29:09Z", + "updated_at": "2016-05-16T20:29:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-java-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692226", + "id": 1692226, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjY=", + "name": "protobuf-javanano-3.0.0-alpha-6.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4099533, + "download_count": 209, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-javanano-3.0.0-alpha-6.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692225", + "id": 1692225, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjU=", + "name": "protobuf-javanano-3.0.0-alpha-6.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5119405, + "download_count": 278, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-javanano-3.0.0-alpha-6.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692230", + "id": 1692230, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMzA=", + "name": "protobuf-js-3.0.0-alpha-6.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4104965, + "download_count": 264, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-js-3.0.0-alpha-6.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692228", + "id": 1692228, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjg=", + "name": "protobuf-js-3.0.0-alpha-6.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5112119, + "download_count": 430, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:54Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-js-3.0.0-alpha-6.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692222", + "id": 1692222, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjI=", + "name": "protobuf-objectivec-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4414606, + "download_count": 277, + "created_at": "2016-05-16T20:29:27Z", + "updated_at": "2016-05-16T20:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-objectivec-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692221", + "id": 1692221, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjE=", + "name": "protobuf-objectivec-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5524534, + "download_count": 506, + "created_at": "2016-05-16T20:29:27Z", + "updated_at": "2016-05-16T20:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-objectivec-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692223", + "id": 1692223, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjM=", + "name": "protobuf-python-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4287166, + "download_count": 42463, + "created_at": "2016-05-16T20:29:45Z", + "updated_at": "2016-05-16T20:29:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-python-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692224", + "id": 1692224, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjQ=", + "name": "protobuf-python-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5361795, + "download_count": 1147, + "created_at": "2016-05-16T20:29:45Z", + "updated_at": "2016-05-16T20:29:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-python-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692229", + "id": 1692229, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjk=", + "name": "protobuf-ruby-3.0.0-alpha-6.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4282057, + "download_count": 188, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-ruby-3.0.0-alpha-6.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692227", + "id": 1692227, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjc=", + "name": "protobuf-ruby-3.0.0-alpha-6.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5303675, + "download_count": 182, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-ruby-3.0.0-alpha-6.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704771", + "id": 1704771, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzE=", + "name": "protoc-3.0.0-beta-3-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1232898, + "download_count": 373, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704769", + "id": 1704769, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3Njk=", + "name": "protoc-3.0.0-beta-3-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1271885, + "download_count": 35048, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704770", + "id": 1704770, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzA=", + "name": "protoc-3.0.0-beta-3-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1604259, + "download_count": 222, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704772", + "id": 1704772, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzI=", + "name": "protoc-3.0.0-beta-3-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1553242, + "download_count": 1841, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704773", + "id": 1704773, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzM=", + "name": "protoc-3.0.0-beta-3-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1142516, + "download_count": 5467, + "created_at": "2016-05-18T18:39:14Z", + "updated_at": "2016-05-18T18:39:15Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-3", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-3", + "body": "# Version 3.0.0-beta-3\n\n## General\n- Supported Proto3 lite-runtime in C++/Java for mobile platforms.\n- Any type now supports APIs to specify prefixes other than\n type.googleapis.com\n- Removed javanano_use_deprecated_package option; Nano will always has its own\n \".nano\" package.\n\n## C++ (Beta)\n- Improved hash maps.\n - Improved hash maps comments. In particular, please note that equal hash\n maps will not necessarily have the same iteration order and\n serialization.\n - Added a new hash maps implementation that will become the default in a\n later release.\n- Arenas\n - Several inlined methods in Arena were moved to out-of-line to improve\n build performance and code size.\n - Added SpaceAllocatedAndUsed() to report both space used and allocated\n - Added convenient class UnsafeArenaAllocatedRepeatedPtrFieldBackInserter\n- Any\n - Allow custom type URL prefixes in Any packing.\n - TextFormat now expand the Any type rather than printing bytes.\n- Performance optimizations and various bug fixes.\n\n## Java (Beta)\n- Introduced an ExperimentalApi annotation. Annotated APIs are experimental\n and are subject to change in a backward incompatible way in future releases.\n- Introduced zero-copy serialization as an ExperimentalApi\n - Introduction of the `ByteOutput` interface. This is similar to\n `OutputStream` but provides semantics for lazy writing (i.e. no\n immediate copy required) of fields that are considered to be immutable.\n - `ByteString` now supports writing to a `ByteOutput`, which will directly\n expose the internals of the `ByteString` (i.e. `byte[]` or `ByteBuffer`)\n to the `ByteOutput` without copying.\n - `CodedOutputStream` now supports writing to a `ByteOutput`. `ByteString`\n instances that are too large to fit in the internal buffer will be\n (lazily) written to the `ByteOutput` directly.\n - This allows applications using large `ByteString` fields to avoid\n duplication of these fields entirely. Such an application can supply a\n `ByteOutput` that chains together the chunks received from\n `CodedOutputStream` before forwarding them onto the IO system.\n- Other related changes to `CodedOutputStream`\n - Additional use of `sun.misc.Unsafe` where possible to perform fast\n access to `byte[]` and `ByteBuffer` values and avoiding unnecessary\n range checking.\n - `ByteBuffer`-backed `CodedOutputStream` now writes directly to the\n `ByteBuffer` rather than to an intermediate array.\n- Improved lite-runtime.\n - Lite protos now implement deep equals/hashCode/toString\n - Significantly improved the performance of Builder#mergeFrom() and\n Builder#mergeDelimitedFrom()\n- Various bug fixes and small feature enhancement.\n - Fixed stack overflow when in hashCode() for infinite recursive oneofs.\n - Fixed the lazy field parsing in lite to merge rather than overwrite.\n - TextFormat now supports reporting line/column numbers on errors.\n - Updated to add appropriate @Override for better compiler errors.\n\n## Python (Beta)\n- Added JSON format for Any, Struct, Value and ListValue\n- \"[ ]\" is now accepted for both repeated scalar fields and repeated message\n fields in text format parser.\n- Numerical field name is now supported in text format.\n- Added DiscardUnknownFields API for python protobuf message.\n\n## Objective-C (Beta)\n- Proto comments now come over as HeaderDoc comments in the generated sources\n so Xcode can pick them up and display them.\n- The library headers have been updated to use HeaderDoc comments so Xcode can\n pick them up and display them.\n- The per message and per field overhead in both generated code and runtime\n object sizes was reduced.\n- Generated code now include deprecated annotations when the proto file\n included them.\n\n## C# (Beta)\n\n In general: some changes are breaking, which require regenerating messages.\n Most user-written code will not be impacted _except_ for the renaming of enum\n values.\n- Allow custom type URL prefixes in `Any` packing, and ignore them when\n unpacking\n- `protoc` is now in a separate NuGet package (Google.Protobuf.Tools)\n- New option: `internal_access` to generate internal classes\n- Enum values are now PascalCased, and if there's a prefix which matches the\n name of the enum, that is removed (so an enum `COLOR` with a value\n `COLOR_BLUE` would generate a value of just `Blue`). An option\n (`legacy_enum_values`) is temporarily available to disable this, but the\n option will be removed for GA.\n- `json_name` option is now honored\n- If group tags are encountered when parsing, they are validated more\n thoroughly (although we don't support actual groups)\n- NuGet dependencies are better specified\n- Breaking: `Preconditions` is renamed to `ProtoPreconditions`\n- Breaking: `GeneratedCodeInfo` is renamed to `GeneratedClrTypeInfo`\n- `JsonFormatter` now allows writing to a `TextWriter`\n- New interface, `ICustomDiagnosticMessage` to allow more compact\n representations from `ToString`\n- `CodedInputStream` and `CodedOutputStream` now implement `IDisposable`,\n which simply disposes of the streams they were constructed with\n- Map fields no longer support null values (in line with other languages)\n- Improvements in JSON formatting and parsing\n\n## Javascript (Alpha)\n- Better support for \"bytes\" fields: bytes fields can be read as either a\n base64 string or UInt8Array (in environments where TypedArray is supported).\n- New support for CommonJS imports. This should make it easier to use the\n JavaScript support in Node.js and tools like WebPack. See js/README.md for\n more information.\n- Some significant internal refactoring to simplify and modularize the code.\n\n## Ruby (Alpha)\n- JSON serialization now properly uses camelCased names, with a runtime option\n that will preserve original names from .proto files instead.\n- Well-known types are now included in the distribution.\n- Release now includes binary gems for Windows, Mac, and Linux instead of just\n source gems.\n- Bugfix for serializing oneofs.\n\n## C++/Java Lite (Alpha)\n\nA new \"lite\" generator parameter was introduced in the protoc for C++ and\nJava for Proto3 syntax messages. Example usage:\n\n```\n ./protoc --cpp_out=lite:$OUTPUT_PATH foo.proto\n```\n\nThe protoc will treat the current input and all the transitive dependencies\nas LITE. The same generator parameter must be used to generate the\ndependencies.\n\nIn Proto3 syntax files, \"optimized_for=LITE_RUNTIME\" is no longer supported.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/2348523", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/2348523/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/2348523/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-2", + "id": 2348523, + "node_id": "MDc6UmVsZWFzZTIzNDg1MjM=", + "tag_name": "v3.0.0-beta-2", + "target_commitish": "v3.0.0-beta-2", + "name": "Protocol Buffers v3.0.0-beta-2", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2015-12-30T21:35:10Z", + "published_at": "2015-12-30T21:36:30Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166411", + "id": 1166411, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTE=", + "name": "protobuf-cpp-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3962352, + "download_count": 14400, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-cpp-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166407", + "id": 1166407, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDc=", + "name": "protobuf-cpp-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 4921103, + "download_count": 9298, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-cpp-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166408", + "id": 1166408, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDg=", + "name": "protobuf-csharp-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4228543, + "download_count": 825, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-csharp-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166409", + "id": 1166409, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDk=", + "name": "protobuf-csharp-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5330247, + "download_count": 2833, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-csharp-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166410", + "id": 1166410, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTA=", + "name": "protobuf-java-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4328686, + "download_count": 2698, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-java-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166406", + "id": 1166406, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDY=", + "name": "protobuf-java-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5477505, + "download_count": 5183, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-java-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166418", + "id": 1166418, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTg=", + "name": "protobuf-javanano-3.0.0-alpha-5.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4031642, + "download_count": 334, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-javanano-3.0.0-alpha-5.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166420", + "id": 1166420, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjA=", + "name": "protobuf-javanano-3.0.0-alpha-5.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5034923, + "download_count": 430, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-javanano-3.0.0-alpha-5.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166419", + "id": 1166419, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTk=", + "name": "protobuf-js-3.0.0-alpha-5.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4032391, + "download_count": 706, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-js-3.0.0-alpha-5.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166421", + "id": 1166421, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjE=", + "name": "protobuf-js-3.0.0-alpha-5.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5024582, + "download_count": 1125, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-js-3.0.0-alpha-5.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166413", + "id": 1166413, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTM=", + "name": "protobuf-objectivec-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4359689, + "download_count": 543, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-objectivec-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166414", + "id": 1166414, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTQ=", + "name": "protobuf-objectivec-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5449070, + "download_count": 803, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-objectivec-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166415", + "id": 1166415, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTU=", + "name": "protobuf-python-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4211281, + "download_count": 10343, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-python-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166412", + "id": 1166412, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTI=", + "name": "protobuf-python-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5268501, + "download_count": 8409, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:54Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-python-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166423", + "id": 1166423, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjM=", + "name": "protobuf-ruby-3.0.0-alpha-5.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4204014, + "download_count": 244, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-ruby-3.0.0-alpha-5.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166422", + "id": 1166422, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjI=", + "name": "protobuf-ruby-3.0.0-alpha-5.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5211211, + "download_count": 256, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-ruby-3.0.0-alpha-5.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215864", + "id": 1215864, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4NjQ=", + "name": "protoc-3.0.0-beta-2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1198994, + "download_count": 611, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215865", + "id": 1215865, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4NjU=", + "name": "protoc-3.0.0-beta-2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1235538, + "download_count": 272732, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215866", + "id": 1215866, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4NjY=", + "name": "protoc-3.0.0-beta-2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1553529, + "download_count": 329, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215867", + "id": 1215867, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4Njc=", + "name": "protoc-3.0.0-beta-2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499581, + "download_count": 3615, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166397", + "id": 1166397, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjYzOTc=", + "name": "protoc-3.0.0-beta-2-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1130790, + "download_count": 10501, + "created_at": "2015-12-30T21:20:36Z", + "updated_at": "2015-12-30T21:20:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-2", + "body": "# Version 3.0.0-beta-2\n\n## General\n- Introduced a new language implementation: JavaScript.\n- Added a new field option \"json_name\". By default proto field names are\n converted to \"lowerCamelCase\" in proto3 JSON format. This option can be\n used to override this behavior and specify a different JSON name for the\n field.\n- Added conformance tests to ensure implementations are following proto3 JSON\n specification.\n\n## C++ (Beta)\n- Various bug fixes and improvements to the JSON support utility:\n - Duplicate map keys in JSON are now rejected (i.e., translation will\n fail).\n - Fixed wire-format for google.protobuf.Value/ListValue.\n - Fixed precision loss when converting google.protobuf.Timestamp.\n - Fixed a bug when parsing invalid UTF-8 code points.\n - Fixed a memory leak.\n - Reduced call stack usage.\n\n## Java (Beta)\n- Cleaned up some unused methods on CodedOutputStream.\n- Presized lists for packed fields during parsing in the lite runtime to\n reduce allocations and improve performance.\n- Improved the performance of unknown fields in the lite runtime.\n- Introduced UnsafeByteStrings to support zero-copy ByteString creation.\n- Various bug fixes and improvements to the JSON support utility:\n - Fixed a thread-safety bug.\n - Added a new option “preservingProtoFieldNames” to JsonFormat.\n - Added a new option “includingDefaultValueFields” to JsonFormat.\n - Updated the JSON utility to comply with proto3 JSON specification.\n\n## Python (Beta)\n- Added proto3 JSON format utility. It includes support for all field types\n and a few well-known types except for Any and Struct.\n- Added runtime support for Any, Timestamp, Duration and FieldMask.\n- \"[ ]\" is now accepted for repeated scalar fields in text format parser.\n\n## Objective-C (Beta)\n- Various bug-fixes and code tweaks to pass more strict compiler warnings.\n- Now has conformance test coverage and is passing all tests.\n\n## C# (Beta)\n- Various bug-fixes.\n- Code generation: Files generated in directories based on namespace.\n- Code generation: Include comments from .proto files in XML doc\n comments (naively)\n- Code generation: Change organization/naming of \"reflection class\" (access\n to file descriptor)\n- Code generation and library: Add Parser property to MessageDescriptor,\n and introduce a non-generic parser type.\n- Library: Added TypeRegistry to support JSON parsing/formatting of Any.\n- Library: Added Any.Pack/Unpack support.\n- Library: Implemented JSON parsing.\n\n## Javascript (Alpha)\n- Added proto3 support for JavaScript. The runtime is written in pure\n JavaScript and works in browsers and in Node.js. To generate JavaScript\n code for your proto, invoke protoc with \"--js_out\". See js/README.md\n for more build instructions.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1728131", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1728131/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/1728131/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-1", + "id": 1728131, + "node_id": "MDc6UmVsZWFzZTE3MjgxMzE=", + "tag_name": "v3.0.0-beta-1", + "target_commitish": "beta-1", + "name": "Protocol Buffers v3.0.0-beta-1", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2015-08-27T07:02:06Z", + "published_at": "2015-08-27T07:09:35Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820816", + "id": 820816, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxNg==", + "name": "protobuf-cpp-3.0.0-beta-1.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3980108, + "download_count": 9056, + "created_at": "2015-08-27T07:07:19Z", + "updated_at": "2015-08-27T07:07:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-cpp-3.0.0-beta-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820815", + "id": 820815, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxNQ==", + "name": "protobuf-cpp-3.0.0-beta-1.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 4937540, + "download_count": 3508, + "created_at": "2015-08-27T07:07:19Z", + "updated_at": "2015-08-27T07:07:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-cpp-3.0.0-beta-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820826", + "id": 820826, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNg==", + "name": "protobuf-csharp-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4189177, + "download_count": 498, + "created_at": "2015-08-27T07:07:56Z", + "updated_at": "2015-08-27T07:08:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-csharp-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820825", + "id": 820825, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNQ==", + "name": "protobuf-csharp-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5275951, + "download_count": 1210, + "created_at": "2015-08-27T07:07:56Z", + "updated_at": "2015-08-27T07:07:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-csharp-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820818", + "id": 820818, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxOA==", + "name": "protobuf-java-3.0.0-beta-1.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4335955, + "download_count": 1258, + "created_at": "2015-08-27T07:07:26Z", + "updated_at": "2015-08-27T07:07:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-java-3.0.0-beta-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820817", + "id": 820817, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxNw==", + "name": "protobuf-java-3.0.0-beta-1.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5478475, + "download_count": 2165, + "created_at": "2015-08-27T07:07:26Z", + "updated_at": "2015-08-27T07:07:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-java-3.0.0-beta-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820824", + "id": 820824, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNA==", + "name": "protobuf-javanano-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4048907, + "download_count": 291, + "created_at": "2015-08-27T07:07:50Z", + "updated_at": "2015-08-27T07:07:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-javanano-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820823", + "id": 820823, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMw==", + "name": "protobuf-javanano-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5051351, + "download_count": 370, + "created_at": "2015-08-27T07:07:50Z", + "updated_at": "2015-08-27T07:07:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-javanano-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820828", + "id": 820828, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyOA==", + "name": "protobuf-objectivec-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4377629, + "download_count": 936, + "created_at": "2015-08-27T07:08:05Z", + "updated_at": "2015-08-27T07:08:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-objectivec-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820827", + "id": 820827, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNw==", + "name": "protobuf-objectivec-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5469745, + "download_count": 477, + "created_at": "2015-08-27T07:08:05Z", + "updated_at": "2015-08-27T07:08:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-objectivec-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820819", + "id": 820819, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxOQ==", + "name": "protobuf-python-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4202350, + "download_count": 3299, + "created_at": "2015-08-27T07:07:37Z", + "updated_at": "2015-08-27T07:07:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-python-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820820", + "id": 820820, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMA==", + "name": "protobuf-python-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5258478, + "download_count": 803, + "created_at": "2015-08-27T07:07:37Z", + "updated_at": "2015-08-27T07:07:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-python-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820821", + "id": 820821, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMQ==", + "name": "protobuf-ruby-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4221516, + "download_count": 547, + "created_at": "2015-08-27T07:07:43Z", + "updated_at": "2015-08-27T07:07:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-ruby-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820822", + "id": 820822, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMg==", + "name": "protobuf-ruby-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5227546, + "download_count": 251, + "created_at": "2015-08-27T07:07:43Z", + "updated_at": "2015-08-27T07:07:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-ruby-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/822313", + "id": 822313, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMjMxMw==", + "name": "protoc-3.0.0-beta-1-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-zip-compressed", + "state": "uploaded", + "size": 1071236, + "download_count": 3340, + "created_at": "2015-08-27T17:36:25Z", + "updated_at": "2015-08-27T17:36:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protoc-3.0.0-beta-1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-1", + "body": "# Version 3.0.0-beta-1\n\n## Supported languages\n- C++/Java/Python/Ruby/Nano/Objective-C/C#\n\n## About Beta\n- This is the first beta release of protobuf v3.0.0. Not all languages\n have reached beta stage. Languages not marked as beta are still in\n alpha (i.e., be prepared for API breaking changes).\n\n## General\n- Proto3 JSON is supported in several languages (fully supported in C++\n and Java, partially supported in Ruby/C#). The JSON spec is defined in\n the proto3 language guide:\n \n https://developers.google.com/protocol-buffers/docs/proto3#json\n \n We will publish a more detailed spec to define the exact behavior of\n proto3-conformant JSON serializers and parsers. Until then, do not rely\n on specific behaviors of the implementation if it’s not documented in\n the above spec. More specifically, the behavior is not yet finalized for\n the following:\n - Parsing invalid JSON input (e.g., input with trailing commas).\n - Non-camelCase names in JSON input.\n - The same field appears multiple times in JSON input.\n - JSON arrays contain “null” values.\n - The message has unknown fields.\n- Proto3 now enforces strict UTF-8 checking. Parsing will fail if a string\n field contains non UTF-8 data.\n\n## C++ (Beta)\n- Introduced new utility functions/classes in the google/protobuf/util\n directory:\n - MessageDifferencer: compare two proto messages and report their\n differences.\n - JsonUtil: support converting protobuf binary format to/from JSON.\n - TimeUtil: utility functions to work with well-known types Timestamp\n and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- Performance optimization of arena construction and destruction.\n- Bug fixes for arena and maps support.\n- Changed to use cmake for Windows Visual Studio builds.\n- Added Bazel support.\n\n## Java (Beta)\n- Introduced a new util package that will be distributed as a separate\n artifact in maven. It contains:\n - JsonFormat: convert proto messages to/from JSON.\n - TimeUtil: utility functions to work with Timestamp and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- The static PARSER in each generated message is deprecated, and it will\n be removed in a future release. A static parser() getter is generated\n for each message type instead.\n- Performance optimizations for String fields serialization.\n- Performance optimizations for Lite runtime on Android:\n - Reduced allocations\n - Reduced method overhead after ProGuarding\n - Reduced code size after ProGuarding\n\n## Python (Alpha)\n- Removed legacy Python 2.5 support.\n- Moved to a single Python 2.x/3.x-compatible codebase, instead of using 2to3.\n- Fixed build/tests on Python 2.6, 2.7, 3.3, and 3.4.\n - Pure-Python works on all four.\n - Python/C++ implementation works on all but 3.4, due to changes in the\n Python/C++ API in 3.4.\n- Some preliminary work has been done to allow for multiple DescriptorPools\n with Python/C++.\n\n## Ruby (Alpha)\n- Many bugfixes:\n - fixed parsing/serialization of bytes, sint, sfixed types\n - other parser bugfixes\n - fixed memory leak affecting Ruby 2.2\n\n## JavaNano (Alpha)\n- JavaNano generated code now will be put in a nano package by default to\n avoid conflicts with Java generated code.\n\n## Objective-C (Alpha)\n- Added non-null markup to ObjC library. Requires SDK 8.4+ to build.\n- Many bugfixes:\n - Removed the class/enum filter.\n - Renamed some internal types to avoid conflicts with the well-known types\n protos.\n - Added missing support for parsing repeated primitive fields in packed or\n unpacked forms.\n - Added *Count for repeated and map<> fields to avoid auto-create when\n checking for them being set.\n\n## C# (Alpha)\n- Namespace changed to Google.Protobuf (and NuGet package will be named\n correspondingly).\n- Target platforms now .NET 4.5 and selected portable subsets only.\n- Removed lite runtime.\n- Reimplementation to use mutable message types.\n- Null references used to represent \"no value\" for message type fields.\n- Proto3 semantics supported; proto2 files are prohibited for C# codegen.\n Most proto3 features supported:\n - JSON formatting (a.k.a. serialization to JSON), including well-known\n types (except for Any).\n - Wrapper types mapped to nullable value types (or string/ByteString\n allowing nullability). JSON parsing is not supported yet.\n - maps\n - oneof\n - enum unknown value preservation\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1331430", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1331430/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/1331430/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-alpha-3", + "id": 1331430, + "node_id": "MDc6UmVsZWFzZTEzMzE0MzA=", + "tag_name": "v3.0.0-alpha-3", + "target_commitish": "3.0.0-alpha-3", + "name": "Protocol Buffers v3.0.0-alpha-3", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2015-05-28T21:52:44Z", + "published_at": "2015-05-29T17:43:59Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607114", + "id": 607114, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNA==", + "name": "protobuf-cpp-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2663408, + "download_count": 4048, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-cpp-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607112", + "id": 607112, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMg==", + "name": "protobuf-cpp-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3404082, + "download_count": 3116, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-cpp-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607109", + "id": 607109, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEwOQ==", + "name": "protobuf-csharp-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3703019, + "download_count": 669, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-csharp-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607113", + "id": 607113, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMw==", + "name": "protobuf-csharp-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 4688302, + "download_count": 1023, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-csharp-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607111", + "id": 607111, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMQ==", + "name": "protobuf-java-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2976571, + "download_count": 1110, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-java-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607110", + "id": 607110, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMA==", + "name": "protobuf-java-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3893606, + "download_count": 1683, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-java-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607115", + "id": 607115, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNQ==", + "name": "protobuf-javanano-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2731791, + "download_count": 310, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-javanano-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607117", + "id": 607117, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNw==", + "name": "protobuf-javanano-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3515888, + "download_count": 428, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-javanano-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607118", + "id": 607118, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExOA==", + "name": "protobuf-objectivec-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3051861, + "download_count": 386, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-objectivec-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607116", + "id": 607116, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNg==", + "name": "protobuf-objectivec-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3934883, + "download_count": 452, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-objectivec-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607119", + "id": 607119, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExOQ==", + "name": "protobuf-python-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2887753, + "download_count": 2757, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-python-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607120", + "id": 607120, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEyMA==", + "name": "protobuf-python-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3721372, + "download_count": 780, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-python-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607121", + "id": 607121, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEyMQ==", + "name": "protobuf-ruby-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2902837, + "download_count": 238, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-ruby-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607122", + "id": 607122, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEyMg==", + "name": "protobuf-ruby-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3688422, + "download_count": 256, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-ruby-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/603320", + "id": 603320, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwMzMyMA==", + "name": "protoc-3.0.0-alpha-3-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-zip-compressed", + "state": "uploaded", + "size": 1018078, + "download_count": 6235, + "created_at": "2015-05-27T05:20:43Z", + "updated_at": "2015-05-27T05:20:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protoc-3.0.0-alpha-3-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-alpha-3", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-alpha-3", + "body": "# Version 3.0.0-alpha-3 (C++/Java/Python/Ruby/JavaNano/Objective-C/C#)\n\n## General\n- Introduced two new language implementations (Objective-C, C#) to proto3.\n- Explicit \"optional\" keyword are disallowed in proto3 syntax, as fields are\n optional by default.\n- Group fields are no longer supported in proto3 syntax.\n- Changed repeated primitive fields to use packed serialization by default in\n proto3 (implemented for C++, Java, Python in this release). The user can\n still disable packed serialization by setting packed to false for now.\n- Added well-known type protos (any.proto, empty.proto, timestamp.proto,\n duration.proto, etc.). Users can import and use these protos just like\n regular proto files. Addtional runtime support will be added for them in\n future releases (in the form of utility helper functions, or having them\n replaced by language specific types in generated code).\n- Added a \"reserved\" keyword in both proto2 and proto3 syntax. User can use\n this keyword to declare reserved field numbers and names to prevent them\n from being reused by other fields in the same message.\n \n To reserve field numbers, add a reserved declaration in your message:\n \n ```\n message TestMessage {\n reserved 2, 15, 9 to 11, 3;\n }\n ```\n \n This reserves field numbers 2, 3, 9, 10, 11 and 15. If a user uses any of\n these as field numbers, the protocol buffer compiler will report an error.\n \n Field names can also be reserved:\n \n ```\n message TestMessage {\n reserved \"foo\", \"bar\";\n }\n ```\n- Various bug fixes since 3.0.0-alpha-2\n\n## Objective-C\n- Objective-C includes a code generator and a native objective-c runtime\n library. By adding “--objc_out” to protoc, the code generator will generate\n a header(_.pbobjc.h) and an implementation file(_.pbobjc.m) for each proto\n file.\n \n In this first release, the generated interface provides: enums, messages,\n field support(single, repeated, map, oneof), proto2 and proto3 syntax\n support, parsing and serialization. It’s compatible with ARC and non-ARC\n usage. Besides, user can also access it via the swift bridging header.\n \n See objectivec/README.md for details.\n\n## C#\n- C# protobufs are based on project\n https://github.com/jskeet/protobuf-csharp-port. The original project was\n frozen and all the new development will happen here.\n- Codegen plugin for C# was completely rewritten to C++ and is now an\n intergral part of protoc.\n- Some refactorings and cleanup has been applied to the C# runtime library.\n- Only proto2 is supported in C# at the moment, proto3 support is in\n progress and will likely bring significant breaking changes to the API.\n \n See csharp/README.md for details.\n\n## C++\n- Added runtime support for Any type. To use Any in your proto file, first\n import the definition of Any:\n \n ```\n // foo.proto\n import \"google/protobuf/any.proto\";\n message Foo {\n google.protobuf.Any any_field = 1;\n }\n message Bar {\n int32 value = 1;\n }\n ```\n \n Then in C++ you can access the Any field using PackFrom()/UnpackTo()\n methods:\n \n ```\n Foo foo;\n Bar bar = ...;\n foo.mutable_any_field()->PackFrom(bar);\n ...\n if (foo.any_field().IsType()) {\n foo.any_field().UnpackTo(&bar);\n ...\n }\n ```\n- In text format, entries of a map field will be sorted by key.\n\n## Java\n- Continued optimizations on the lite runtime to improve performance for\n Android.\n\n## Python\n- Added map support.\n - maps now have a dict-like interface (msg.map_field[key] = value)\n - existing code that modifies maps via the repeated field interface\n will need to be updated.\n\n## Ruby\n- Improvements to RepeatedField's emulation of the Ruby Array API.\n- Various speedups and internal cleanups.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1087370", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1087370/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/1087370/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v2.4.1", + "id": 1087370, + "node_id": "MDc6UmVsZWFzZTEwODczNzA=", + "tag_name": "v2.4.1", + "target_commitish": "master", + "name": "Protocol Buffers v2.4.1", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2011-04-30T15:29:10Z", + "published_at": "2015-03-25T00:49:41Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489121", + "id": 489121, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTEyMQ==", + "name": "protobuf-2.4.1.tar.bz2", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-bzip", + "state": "uploaded", + "size": 1440188, + "download_count": 12890, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.bz2" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489122", + "id": 489122, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTEyMg==", + "name": "protobuf-2.4.1.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 1935301, + "download_count": 41827, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489120", + "id": 489120, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTEyMA==", + "name": "protobuf-2.4.1.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2510666, + "download_count": 7474, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protobuf-2.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489119", + "id": 489119, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTExOQ==", + "name": "protoc-2.4.1-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 642756, + "download_count": 6470, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protoc-2.4.1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v2.4.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v2.4.1", + "body": "# Version 2.4.1\n\n## C++\n- Fixed the frendship problem for old compilers to make the library now gcc 3\n compatible again.\n- Fixed vcprojects/extract_includes.bat to extract compiler/plugin.h.\n\n## Java\n- Removed usages of JDK 1.6 only features to make the library now JDK 1.5\n compatible again.\n- Fixed a bug about negative enum values.\n- serialVersionUID is now defined in generated messages for java serializing.\n- Fixed protoc to use java.lang.Object, which makes \"Object\" now a valid\n message name again.\n\n## Python\n- Experimental C++ implementation now requires C++ protobuf library installed.\n See the README.txt in the python directory for details.\n" + } +] diff --git a/__tests__/testdata/releases.json b/__tests__/testdata/releases.json new file mode 100644 index 00000000..b58b5b71 --- /dev/null +++ b/__tests__/testdata/releases.json @@ -0,0 +1,20907 @@ +[ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/19119210", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/19119210/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/19119210/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.1", + "id": 19119210, + "node_id": "MDc6UmVsZWFzZTE5MTE5MjEw", + "tag_name": "v3.9.1", + "target_commitish": "master", + "name": "Protocol Buffers v3.9.1", + "draft": false, + "author": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-08-05T17:07:28Z", + "published_at": "2019-08-06T21:06:53Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229770", + "id": 14229770, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcw", + "name": "protobuf-all-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7183726, + "download_count": 13131, + "created_at": "2019-08-06T21:03:16Z", + "updated_at": "2019-08-06T21:03:17Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-all-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229771", + "id": 14229771, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcx", + "name": "protobuf-all-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 9288679, + "download_count": 5517, + "created_at": "2019-08-06T21:03:16Z", + "updated_at": "2019-08-06T21:03:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-all-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229772", + "id": 14229772, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcy", + "name": "protobuf-cpp-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4556914, + "download_count": 2766, + "created_at": "2019-08-06T21:03:16Z", + "updated_at": "2019-08-06T21:03:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-cpp-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229773", + "id": 14229773, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzcz", + "name": "protobuf-cpp-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5555328, + "download_count": 2440, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-cpp-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229774", + "id": 14229774, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc0", + "name": "protobuf-csharp-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5004619, + "download_count": 178, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-csharp-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229775", + "id": 14229775, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc1", + "name": "protobuf-csharp-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6187725, + "download_count": 1015, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-csharp-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229776", + "id": 14229776, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc2", + "name": "protobuf-java-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5218824, + "download_count": 800, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-java-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229777", + "id": 14229777, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc3", + "name": "protobuf-java-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6558019, + "download_count": 2073, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-java-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229778", + "id": 14229778, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc4", + "name": "protobuf-js-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4715546, + "download_count": 195, + "created_at": "2019-08-06T21:03:17Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-js-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229779", + "id": 14229779, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzc5", + "name": "protobuf-js-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5823537, + "download_count": 462, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-js-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229780", + "id": 14229780, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgw", + "name": "protobuf-objectivec-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4936578, + "download_count": 83, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-objectivec-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229781", + "id": 14229781, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgx", + "name": "protobuf-objectivec-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6112218, + "download_count": 142, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-objectivec-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229782", + "id": 14229782, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgy", + "name": "protobuf-php-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4899475, + "download_count": 186, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-php-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229783", + "id": 14229783, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzgz", + "name": "protobuf-php-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6019360, + "download_count": 211, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-php-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229784", + "id": 14229784, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg0", + "name": "protobuf-python-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4874011, + "download_count": 1070, + "created_at": "2019-08-06T21:03:18Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-python-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229785", + "id": 14229785, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg1", + "name": "protobuf-python-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5988045, + "download_count": 1845, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-python-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229786", + "id": 14229786, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg2", + "name": "protobuf-ruby-3.9.1.tar.gz", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4877570, + "download_count": 55, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-ruby-3.9.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229787", + "id": 14229787, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg3", + "name": "protobuf-ruby-3.9.1.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5931743, + "download_count": 49, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-ruby-3.9.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229788", + "id": 14229788, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg4", + "name": "protoc-3.9.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1443660, + "download_count": 498, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229789", + "id": 14229789, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzg5", + "name": "protoc-3.9.1-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1594993, + "download_count": 89, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229790", + "id": 14229790, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzkw", + "name": "protoc-3.9.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499627, + "download_count": 365, + "created_at": "2019-08-06T21:03:19Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229791", + "id": 14229791, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzkx", + "name": "protoc-3.9.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1556019, + "download_count": 17701, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229792", + "id": 14229792, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzky", + "name": "protoc-3.9.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2899777, + "download_count": 173, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229793", + "id": 14229793, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzkz", + "name": "protoc-3.9.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2862481, + "download_count": 4618, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229794", + "id": 14229794, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzk0", + "name": "protoc-3.9.1-win32.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1092745, + "download_count": 2393, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/14229795", + "id": 14229795, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE0MjI5Nzk1", + "name": "protoc-3.9.1-win64.zip", + "label": null, + "uploader": { + "login": "anandolee", + "id": 11618033, + "node_id": "MDQ6VXNlcjExNjE4MDMz", + "avatar_url": "https://avatars0.githubusercontent.com/u/11618033?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/anandolee", + "html_url": "https://github.com/anandolee", + "followers_url": "https://api.github.com/users/anandolee/followers", + "following_url": "https://api.github.com/users/anandolee/following{/other_user}", + "gists_url": "https://api.github.com/users/anandolee/gists{/gist_id}", + "starred_url": "https://api.github.com/users/anandolee/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/anandolee/subscriptions", + "organizations_url": "https://api.github.com/users/anandolee/orgs", + "repos_url": "https://api.github.com/users/anandolee/repos", + "events_url": "https://api.github.com/users/anandolee/events{/privacy}", + "received_events_url": "https://api.github.com/users/anandolee/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420840, + "download_count": 11402, + "created_at": "2019-08-06T21:03:20Z", + "updated_at": "2019-08-06T21:03:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.9.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.9.1", + "body": " ## Python\r\n * Drop building wheel for python 3.4 (#6406)\r\n\r\n ## Csharp\r\n * Fix binary compatibility in 3.9.0 (delisted) FieldCodec factory methods (#6380)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18583977", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18583977/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/18583977/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.0", + "id": 18583977, + "node_id": "MDc6UmVsZWFzZTE4NTgzOTc3", + "tag_name": "v3.9.0", + "target_commitish": "3.9.x", + "name": "Protocol Buffers v3.9.0", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-07-11T14:52:05Z", + "published_at": "2019-07-12T16:32:02Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682279", + "id": 13682279, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjc5", + "name": "protobuf-all-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7162423, + "download_count": 8914, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-all-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682280", + "id": 13682280, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgw", + "name": "protobuf-all-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 9279841, + "download_count": 3849, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-all-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682281", + "id": 13682281, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgx", + "name": "protobuf-cpp-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4537469, + "download_count": 3663, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-cpp-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682282", + "id": 13682282, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgy", + "name": "protobuf-cpp-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5546900, + "download_count": 2559, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-cpp-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682283", + "id": 13682283, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjgz", + "name": "protobuf-csharp-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4982916, + "download_count": 134, + "created_at": "2019-07-12T16:31:40Z", + "updated_at": "2019-07-12T16:31:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-csharp-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682284", + "id": 13682284, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg0", + "name": "protobuf-csharp-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6178952, + "download_count": 751, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-csharp-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682285", + "id": 13682285, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg1", + "name": "protobuf-java-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5196096, + "download_count": 585, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-java-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682286", + "id": 13682286, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg2", + "name": "protobuf-java-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6549546, + "download_count": 1564, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-java-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682287", + "id": 13682287, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg3", + "name": "protobuf-js-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4697125, + "download_count": 156, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-js-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682288", + "id": 13682288, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg4", + "name": "protobuf-js-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5815108, + "download_count": 388, + "created_at": "2019-07-12T16:31:41Z", + "updated_at": "2019-07-12T16:31:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-js-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682289", + "id": 13682289, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjg5", + "name": "protobuf-objectivec-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4918859, + "download_count": 85, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-objectivec-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682290", + "id": 13682290, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjkw", + "name": "protobuf-objectivec-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6103787, + "download_count": 150, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-objectivec-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682291", + "id": 13682291, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjkx", + "name": "protobuf-php-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4880754, + "download_count": 148, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-php-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682292", + "id": 13682292, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjky", + "name": "protobuf-php-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6010915, + "download_count": 185, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-php-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682293", + "id": 13682293, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjkz", + "name": "protobuf-python-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4854771, + "download_count": 1005, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-python-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682294", + "id": 13682294, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk0", + "name": "protobuf-python-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5979617, + "download_count": 1665, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-python-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682295", + "id": 13682295, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk1", + "name": "protobuf-ruby-3.9.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4857657, + "download_count": 43, + "created_at": "2019-07-12T16:31:42Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-ruby-3.9.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682296", + "id": 13682296, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk2", + "name": "protobuf-ruby-3.9.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5923316, + "download_count": 54, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protobuf-ruby-3.9.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682297", + "id": 13682297, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk3", + "name": "protoc-3.9.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1443659, + "download_count": 391, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682298", + "id": 13682298, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk4", + "name": "protoc-3.9.0-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1594998, + "download_count": 73, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682299", + "id": 13682299, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMjk5", + "name": "protoc-3.9.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499621, + "download_count": 194, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682300", + "id": 13682300, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAw", + "name": "protoc-3.9.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1556016, + "download_count": 21638, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682301", + "id": 13682301, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAx", + "name": "protoc-3.9.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2899837, + "download_count": 142, + "created_at": "2019-07-12T16:31:43Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682302", + "id": 13682302, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAy", + "name": "protoc-3.9.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2862670, + "download_count": 3557, + "created_at": "2019-07-12T16:31:44Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682303", + "id": 13682303, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzAz", + "name": "protoc-3.9.0-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1092789, + "download_count": 1844, + "created_at": "2019-07-12T16:31:44Z", + "updated_at": "2019-07-12T16:31:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13682304", + "id": 13682304, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNjgyMzA0", + "name": "protoc-3.9.0-win64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420565, + "download_count": 9253, + "created_at": "2019-07-12T16:31:44Z", + "updated_at": "2019-07-12T16:31:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.9.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.9.0", + "body": "## C++\r\n * Optimize and simplify implementation of RepeatedPtrFieldBase\r\n * Don't create unnecessary unknown field sets.\r\n * Remove branch from accessors to repeated field element array.\r\n * Added delimited parse and serialize util.\r\n * Reduce size by not emitting constants for fieldnumbers\r\n * Fix a bug when comparing finite and infinite field values with explicit tolerances.\r\n * TextFormat::Parser should use a custom Finder to look up extensions by number if one is provided.\r\n * Add MessageLite::Utf8DebugString() to make MessageLite more compatible with Message.\r\n * Fail fast for better performance in DescriptorPool::FindExtensionByNumber() if descriptor has no defined extensions.\r\n * Adding the file name to help debug colliding extensions\r\n * Added FieldDescriptor::PrintableNameForExtension() and DescriptorPool::FindExtensionByPrintableName().\r\n The latter will replace Reflection::FindKnownExtensionByName().\r\n * Replace NULL with nullptr\r\n * Created a new Add method in repeated field that allows adding a range of elements all at once.\r\n * Enabled enum name-to-value mapping functions for C++ lite\r\n * Avoid dynamic initialization in descriptor.proto generated code\r\n * Move stream functions to MessageLite from Message.\r\n * Move all zero_copy_stream functionality to io_lite.\r\n * Do not create array of matched fields for simple repeated fields\r\n * Enabling silent mode by default to reduce make compilation noise. (#6237)\r\n\r\n ## Java\r\n * Expose TextFormat.Printer and make it configurable. Deprecate the static methods.\r\n * Library for constructing google.protobuf.Struct and google.protobuf.Value\r\n * Make OneofDescriptor extend GenericDescriptor.\r\n * Expose streamingness of service methods from MethodDescriptor.\r\n * Fix a bug where TextFormat fails to parse Any filed with > 1 embedded message sub-fields.\r\n * Establish consistent JsonFormat behavior for nulls in oneofs, regardless of order.\r\n * Update GSON version to 3.8.5. (#6268)\r\n * Add `protobuf_java_lite` Bazel target. (#6177)\r\n\r\n## Python\r\n * Change implementation of Name() for enums that allow aliases in proto2 in Python\r\n to be in line with claims in C++ implementation (to return first value).\r\n * Explicitly say what field cannot be set when the new value fails a type check.\r\n * Duplicate register in descriptor pool will raise errors\r\n * Add __slots__ to all well_known_types classes, custom attributes are not allowed anymore.\r\n * text_format only present 8 valid digits for float fields by default\r\n\r\n## JavaScript\r\n * Add Oneof enum to the list of goog.provide\r\n\r\n## PHP\r\n * Rename get/setXXXValue to get/setXXXWrapper. (#6295)\r\n\r\n## Ruby\r\n * Remove to_hash methods. (#6166)\r\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18246008", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/18246008/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/18246008/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.0-rc1", + "id": 18246008, + "node_id": "MDc6UmVsZWFzZTE4MjQ2MDA4", + "tag_name": "v3.9.0-rc1", + "target_commitish": "3.9.x", + "name": "Protocol Buffers v3.9.0-rc1", + "draft": false, + "author": null, + "prerelease": true, + "created_at": "2019-06-24T17:15:24Z", + "published_at": "2019-06-26T18:29:50Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416067", + "id": 13416067, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY3", + "name": "protobuf-all-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7170139, + "download_count": 606, + "created_at": "2019-06-26T18:29:17Z", + "updated_at": "2019-06-26T18:29:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-all-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416068", + "id": 13416068, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY4", + "name": "protobuf-all-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 9302592, + "download_count": 611, + "created_at": "2019-06-26T18:29:17Z", + "updated_at": "2019-06-26T18:29:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-all-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416050", + "id": 13416050, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUw", + "name": "protobuf-cpp-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4548408, + "download_count": 122, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-cpp-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416059", + "id": 13416059, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU5", + "name": "protobuf-cpp-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5556802, + "download_count": 159, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-cpp-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416056", + "id": 13416056, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU2", + "name": "protobuf-csharp-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4993113, + "download_count": 42, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-csharp-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416065", + "id": 13416065, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY1", + "name": "protobuf-csharp-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6190806, + "download_count": 105, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-csharp-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416057", + "id": 13416057, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU3", + "name": "protobuf-java-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5208194, + "download_count": 58, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-java-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416066", + "id": 13416066, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY2", + "name": "protobuf-java-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6562708, + "download_count": 136, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-java-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416051", + "id": 13416051, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUx", + "name": "protobuf-js-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4710118, + "download_count": 26, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-js-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416060", + "id": 13416060, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYw", + "name": "protobuf-js-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5826204, + "download_count": 53, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-js-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416055", + "id": 13416055, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU1", + "name": "protobuf-objectivec-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4926229, + "download_count": 26, + "created_at": "2019-06-26T18:29:15Z", + "updated_at": "2019-06-26T18:29:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-objectivec-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416064", + "id": 13416064, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDY0", + "name": "protobuf-objectivec-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6115995, + "download_count": 40, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-objectivec-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416054", + "id": 13416054, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDU0", + "name": "protobuf-php-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4891988, + "download_count": 16, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-php-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416063", + "id": 13416063, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYz", + "name": "protobuf-php-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6022899, + "download_count": 41, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-php-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416052", + "id": 13416052, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUy", + "name": "protobuf-python-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4866964, + "download_count": 69, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-python-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416062", + "id": 13416062, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYy", + "name": "protobuf-python-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5990691, + "download_count": 134, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-python-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416053", + "id": 13416053, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDUz", + "name": "protobuf-ruby-3.9.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4868972, + "download_count": 14, + "created_at": "2019-06-26T18:29:14Z", + "updated_at": "2019-06-26T18:29:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-ruby-3.9.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416061", + "id": 13416061, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDYx", + "name": "protobuf-ruby-3.9.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5934101, + "download_count": 25, + "created_at": "2019-06-26T18:29:16Z", + "updated_at": "2019-06-26T18:29:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protobuf-ruby-3.9.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416044", + "id": 13416044, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ0", + "name": "protoc-3.9.0-rc-1-linux-aarch_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1443658, + "download_count": 45, + "created_at": "2019-06-26T18:29:12Z", + "updated_at": "2019-06-26T18:29:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416047", + "id": 13416047, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ3", + "name": "protoc-3.9.0-rc-1-linux-ppcle_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1594999, + "download_count": 17, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416045", + "id": 13416045, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ1", + "name": "protoc-3.9.0-rc-1-linux-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499616, + "download_count": 20, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416046", + "id": 13416046, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ2", + "name": "protoc-3.9.0-rc-1-linux-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1556017, + "download_count": 764, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416049", + "id": 13416049, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ5", + "name": "protoc-3.9.0-rc-1-osx-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2899822, + "download_count": 31, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416048", + "id": 13416048, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQ4", + "name": "protoc-3.9.0-rc-1-osx-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2862659, + "download_count": 312, + "created_at": "2019-06-26T18:29:13Z", + "updated_at": "2019-06-26T18:29:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416042", + "id": 13416042, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQy", + "name": "protoc-3.9.0-rc-1-win32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1092761, + "download_count": 204, + "created_at": "2019-06-26T18:29:12Z", + "updated_at": "2019-06-26T18:29:16Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/13416043", + "id": 13416043, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEzNDE2MDQz", + "name": "protoc-3.9.0-rc-1-win64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420565, + "download_count": 1094, + "created_at": "2019-06-26T18:29:12Z", + "updated_at": "2019-06-26T18:29:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0-rc1/protoc-3.9.0-rc-1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.9.0-rc1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.9.0-rc1", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17642177", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17642177/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/17642177/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0", + "id": 17642177, + "node_id": "MDc6UmVsZWFzZTE3NjQyMTc3", + "tag_name": "v3.8.0", + "target_commitish": "3.8.x", + "name": "Protocol Buffers v3.8.0", + "draft": false, + "author": null, + "prerelease": false, + "created_at": "2019-05-24T18:06:49Z", + "published_at": "2019-05-28T23:00:19Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915687", + "id": 12915687, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg3", + "name": "protobuf-all-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7151747, + "download_count": 59795, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-all-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915688", + "id": 12915688, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg4", + "name": "protobuf-all-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 9245466, + "download_count": 6652, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-all-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915670", + "id": 12915670, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcw", + "name": "protobuf-cpp-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4545607, + "download_count": 9077, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915678", + "id": 12915678, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc4", + "name": "protobuf-cpp-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5541252, + "download_count": 4240, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-cpp-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915676", + "id": 12915676, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc2", + "name": "protobuf-csharp-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4981309, + "download_count": 242, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-csharp-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915685", + "id": 12915685, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg1", + "name": "protobuf-csharp-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6153232, + "download_count": 1283, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-csharp-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915677", + "id": 12915677, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc3", + "name": "protobuf-java-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5199874, + "download_count": 1022, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-java-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915686", + "id": 12915686, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg2", + "name": "protobuf-java-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6536661, + "download_count": 2703, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-java-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915671", + "id": 12915671, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcx", + "name": "protobuf-js-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4707973, + "download_count": 213, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-js-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915680", + "id": 12915680, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgw", + "name": "protobuf-js-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5809582, + "download_count": 637, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-js-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915675", + "id": 12915675, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc1", + "name": "protobuf-objectivec-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4923056, + "download_count": 103, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-objectivec-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915684", + "id": 12915684, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njg0", + "name": "protobuf-objectivec-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6098090, + "download_count": 233, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-objectivec-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915674", + "id": 12915674, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njc0", + "name": "protobuf-php-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4888538, + "download_count": 267, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-php-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915683", + "id": 12915683, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgz", + "name": "protobuf-php-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6005181, + "download_count": 304, + "created_at": "2019-05-28T22:58:50Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-php-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915672", + "id": 12915672, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcy", + "name": "protobuf-python-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4861658, + "download_count": 1755, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-python-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915682", + "id": 12915682, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgy", + "name": "protobuf-python-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5972687, + "download_count": 2848, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-python-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915673", + "id": 12915673, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njcz", + "name": "protobuf-ruby-3.8.0.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4864895, + "download_count": 70, + "created_at": "2019-05-28T22:58:48Z", + "updated_at": "2019-05-28T22:58:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-ruby-3.8.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915681", + "id": 12915681, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1Njgx", + "name": "protobuf-ruby-3.8.0.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5917545, + "download_count": 79, + "created_at": "2019-05-28T22:58:49Z", + "updated_at": "2019-05-28T22:58:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protobuf-ruby-3.8.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915664", + "id": 12915664, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY0", + "name": "protoc-3.8.0-linux-aarch_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1439040, + "download_count": 574, + "created_at": "2019-05-28T22:58:46Z", + "updated_at": "2019-05-28T22:58:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915667", + "id": 12915667, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY3", + "name": "protoc-3.8.0-linux-ppcle_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1589281, + "download_count": 202, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915665", + "id": 12915665, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY1", + "name": "protoc-3.8.0-linux-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1492432, + "download_count": 335, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915666", + "id": 12915666, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY2", + "name": "protoc-3.8.0-linux-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1549882, + "download_count": 114941, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915669", + "id": 12915669, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY5", + "name": "protoc-3.8.0-osx-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2893556, + "download_count": 218, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915668", + "id": 12915668, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjY4", + "name": "protoc-3.8.0-osx-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2861189, + "download_count": 19585, + "created_at": "2019-05-28T22:58:47Z", + "updated_at": "2019-05-28T22:58:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915662", + "id": 12915662, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjYy", + "name": "protoc-3.8.0-win32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1099081, + "download_count": 9825, + "created_at": "2019-05-28T22:58:46Z", + "updated_at": "2019-05-28T22:58:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12915663", + "id": 12915663, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyOTE1NjYz", + "name": "protoc-3.8.0-win64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1426373, + "download_count": 15708, + "created_at": "2019-05-28T22:58:46Z", + "updated_at": "2019-05-28T22:58:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0/protoc-3.8.0-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.8.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.8.0", + "body": "## C++\r\n * Use std::atomic in case of myriad2 platform\r\n * Always declare enums to be int-sized\r\n * Added DebugString() and ShortDebugString() methods on MessageLite\r\n * Specialized different parse loop control flows\r\n * Make hasbits potentially in register. The or's start forming an obstacle because it's a read modify store on the same mem address on each iteration.\r\n * Move to an internal MACRO for parser validity checks.\r\n * Improve map parsing performance.\r\n * Make MergePartialFromCodedStream non virtual. This allows direct calls, potential inlining and is also a code health improvement\r\n * Add an overall limit to parse_context to prevent reading past it. This allows to remove a annoying level of indirection.\r\n * Fix a mistake, we shouldn't verify map key/value strings for utf8 in opt mode for proto2.\r\n * Further improvements to cut binary size.\r\n * Prepare to make MergePartialFromCodedStream non-virtual.\r\n * A report on some interesting behavior change in python (caused by b/27494216) made me realize there is a check that needs to be done in case the parse ended on a end group tag.\r\n * Add a note of caution to the comments around skip in CodedOutputStream.\r\n * Simplify end check.\r\n * Add overload for ParseMessage for MessageLite/Message types. If the explicit type is not known inlining won't help de-virtualizing the virtual call.\r\n * Reduce linker input. It turns out that ParseMessage is not inlined, producing template instantiations that are used only once and save nothing but cost more.\r\n * Improve the parser.\r\n * [c++17] Changed proto2::RepeatedPtrField iterators to no longer derive from the deprecated std::iterator class.\r\n * Change the default value of case_insensitive_enum_parsing to false for JsonStringToMessage.\r\n * Add a warning if a field name doesn't match the style guide.\r\n * Fix TextFormat not round-trip correctly when float value is max float.\r\n * Added locationed info for some errors at compiler\r\n * Python reserved keywords are now working with getattr()/setattr() for most descriptors.\r\n * Added AllowUnknownField() in text_format\r\n * Append '_' to C++ reserved keywords for message, enum, extension\r\n * Fix MSVC warning C4244 in protobuf's parse_context.h.\r\n * Updating Iterators to be compatible with C++17 in MSVC.\r\n * Use capability annotation in mutex.h\r\n * Fix \"UndefinedBehaviorSanitizer: cfi-bad-type\"\r\n * CriticalSectionLock class as a lightweight replacement for std::mutex on Windows platforms.\r\n * Removed vestigial wire_format_lite_inl.h\r\n\r\n## C#\r\n * Added System.Memory dependency.\r\n\r\n## Java\r\n * Make Java protoc code generator ignore optimize_for LITE_RUNTIME. Users should instead use the Java lite protoc plugin.\r\n * Change Extension getMessageDefaultInstance() to return Message instead of MessageLite.\r\n * Prevent malicious input streams from leaking buffers for ByteString or ByteBuffer parsing.\r\n * Release new Javalite runtime.\r\n * Show warning in case potential file name conflict.\r\n * Allow Java reserved keywords to be used in extensions.\r\n * Added setAllowUnknownFields() in text format\r\n * Add memoization to ExtensionRegistryLite.getEmptyRegistry()\r\n * Improve performance of CodedOutputStream.writeUInt32NoTag\r\n * Add an optimized mismatch-finding algorithm to UnsafeUtil.\r\n * When serializing uint32 varints, check that we have MAX_VARINT32_SIZE bytes left, not just MAX_VARINT_SIZE.\r\n * Minor optimization to RopeByteString.PieceIterator\r\n\r\n## JavaScript\r\n * Simplify generated toObject code when the default value is used.\r\n\r\n## Python\r\n * Changes implementation of Name() for enums that allow aliases in proto2 in Python to be in line with claims in C++ implementation (to return first value).\r\n * Added double_format option in text format printer.\r\n * Added iter and __contains__ to extension dict\r\n * Added allow_unknown_field option in python text format parser\r\n * Fixed Timestamp.ToDatetime() loses precision issue\r\n * Support unknown field in text format printer.\r\n * Float field will be convert to inf if bigger than struct.unpack('f', b'\\xff\\xff\\x7f\\x7f')[0] which is about 3.4028234664e+38,\r\n convert to -inf if smaller than -3.4028234664e+38\r\n * Allowed casting str->bytes in Message.__setstate__\r\n\r\n## Ruby\r\n * Helper methods to get enum name for Ruby." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17092386", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/17092386/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/17092386/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0-rc1", + "id": 17092386, + "node_id": "MDc6UmVsZWFzZTE3MDkyMzg2", + "tag_name": "v3.8.0-rc1", + "target_commitish": "3.8.x", + "name": "Protocol Buffers v3.8.0-rc1", + "draft": false, + "author": null, + "prerelease": true, + "created_at": "2019-04-30T17:10:28Z", + "published_at": "2019-05-01T17:24:11Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336833", + "id": 12336833, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODMz", + "name": "protobuf-all-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7151107, + "download_count": 1289, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-all-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336834", + "id": 12336834, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODM0", + "name": "protobuf-all-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 9266615, + "download_count": 1071, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-all-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336804", + "id": 12336804, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODA0", + "name": "protobuf-cpp-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4545471, + "download_count": 240, + "created_at": "2019-05-01T17:23:32Z", + "updated_at": "2019-05-01T17:23:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-cpp-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336818", + "id": 12336818, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODE4", + "name": "protobuf-cpp-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5550867, + "download_count": 354, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-cpp-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336813", + "id": 12336813, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEz", + "name": "protobuf-csharp-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4981335, + "download_count": 63, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-csharp-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336830", + "id": 12336830, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODMw", + "name": "protobuf-csharp-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6164705, + "download_count": 168, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-csharp-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336816", + "id": 12336816, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODE2", + "name": "protobuf-java-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5200991, + "download_count": 159, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-java-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336832", + "id": 12336832, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODMy", + "name": "protobuf-java-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6549487, + "download_count": 280, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:45Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-java-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336805", + "id": 12336805, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODA1", + "name": "protobuf-js-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4707570, + "download_count": 49, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-js-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336820", + "id": 12336820, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODIw", + "name": "protobuf-js-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5820379, + "download_count": 128, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-js-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336812", + "id": 12336812, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEy", + "name": "protobuf-objectivec-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4922833, + "download_count": 41, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-objectivec-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336828", + "id": 12336828, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODI4", + "name": "protobuf-objectivec-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6110012, + "download_count": 44, + "created_at": "2019-05-01T17:23:35Z", + "updated_at": "2019-05-01T17:23:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-objectivec-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336811", + "id": 12336811, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEx", + "name": "protobuf-php-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4888536, + "download_count": 47, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-php-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336826", + "id": 12336826, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODI2", + "name": "protobuf-php-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 6016172, + "download_count": 67, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-php-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336808", + "id": 12336808, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODA4", + "name": "protobuf-python-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4861606, + "download_count": 218, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-python-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336824", + "id": 12336824, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODI0", + "name": "protobuf-python-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5983474, + "download_count": 444, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-python-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336810", + "id": 12336810, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODEw", + "name": "protobuf-ruby-3.8.0-rc-1.tar.gz", + "label": null, + "uploader": null, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4864372, + "download_count": 28, + "created_at": "2019-05-01T17:23:33Z", + "updated_at": "2019-05-01T17:23:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-ruby-3.8.0-rc-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12336822", + "id": 12336822, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzM2ODIy", + "name": "protobuf-ruby-3.8.0-rc-1.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 5927588, + "download_count": 27, + "created_at": "2019-05-01T17:23:34Z", + "updated_at": "2019-05-01T17:23:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protobuf-ruby-3.8.0-rc-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373067", + "id": 12373067, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDY3", + "name": "protoc-3.8.0-rc-1-linux-aarch_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1435866, + "download_count": 78, + "created_at": "2019-05-03T17:36:07Z", + "updated_at": "2019-05-03T17:36:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373068", + "id": 12373068, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDY4", + "name": "protoc-3.8.0-rc-1-linux-ppcle_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1587682, + "download_count": 28, + "created_at": "2019-05-03T17:36:07Z", + "updated_at": "2019-05-03T17:36:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373069", + "id": 12373069, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDY5", + "name": "protoc-3.8.0-rc-1-linux-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1490570, + "download_count": 38, + "created_at": "2019-05-03T17:36:07Z", + "updated_at": "2019-05-03T17:36:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373070", + "id": 12373070, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcw", + "name": "protoc-3.8.0-rc-1-linux-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1547835, + "download_count": 3495, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373071", + "id": 12373071, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcx", + "name": "protoc-3.8.0-rc-1-osx-x86_32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2889532, + "download_count": 42, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373072", + "id": 12373072, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcy", + "name": "protoc-3.8.0-rc-1-osx-x86_64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 2857686, + "download_count": 630, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373073", + "id": 12373073, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDcz", + "name": "protoc-3.8.0-rc-1-win32.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1096082, + "download_count": 313, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/12373074", + "id": 12373074, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMzczMDc0", + "name": "protoc-3.8.0-rc-1-win64.zip", + "label": null, + "uploader": null, + "content_type": "application/zip", + "state": "uploaded", + "size": 1424892, + "download_count": 1794, + "created_at": "2019-05-03T17:36:08Z", + "updated_at": "2019-05-03T17:36:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.8.0-rc1/protoc-3.8.0-rc-1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.8.0-rc1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.8.0-rc1", + "body": "## C++\r\n * Use std::atomic in case of myriad2 platform\r\n * Always declare enums to be int-sized\r\n * Added DebugString() and ShortDebugString() methods on MessageLite\r\n * Specialized different parse loop control flows\r\n * Make hasbits potentially in register. The or's start forming an obstacle because it's a read modify store on the same mem address on each iteration.\r\n * Move to an internal MACRO for parser validity checks.\r\n * Improve map parsing performance.\r\n * Make MergePartialFromCodedStream non virtual. This allows direct calls, potential inlining and is also a code health improvement\r\n * Add an overall limit to parse_context to prevent reading past it. This allows to remove a annoying level of indirection.\r\n * Fix a mistake, we shouldn't verify map key/value strings for utf8 in opt mode for proto2.\r\n * Further improvements to cut binary size.\r\n * Prepare to make MergePartialFromCodedStream non-virtual.\r\n * A report on some interesting behavior change in python (caused by b/27494216) made me realize there is a check that needs to be done in case the parse ended on a end group tag.\r\n * Add a note of caution to the comments around skip in CodedOutputStream.\r\n * Simplify end check.\r\n * Add overload for ParseMessage for MessageLite/Message types. If the explicit type is not known inlining won't help de-virtualizing the virtual call.\r\n * Reduce linker input. It turns out that ParseMessage is not inlined, producing template instantiations that are used only once and save nothing but cost more.\r\n * Improve the parser.\r\n * [c++17] Changed proto2::RepeatedPtrField iterators to no longer derive from the deprecated std::iterator class.\r\n * Change the default value of case_insensitive_enum_parsing to false for JsonStringToMessage.\r\n * Add a warning if a field name doesn't match the style guide.\r\n * Fix TextFormat not round-trip correctly when float value is max float.\r\n * Added locationed info for some errors at compiler\r\n * Python reserved keywords are now working with getattr()/setattr() for most descriptors.\r\n * Added AllowUnknownField() in text_format\r\n * Append '_' to C++ reserved keywords for message, enum, extension\r\n * Fix MSVC warning C4244 in protobuf's parse_context.h.\r\n * Updating Iterators to be compatible with C++17 in MSVC.\r\n * Use capability annotation in mutex.h\r\n * Fix \"UndefinedBehaviorSanitizer: cfi-bad-type\"\r\n * CriticalSectionLock class as a lightweight replacement for std::mutex on Windows platforms.\r\n * Removed vestigial wire_format_lite_inl.h\r\n\r\n## C#\r\n * Added System.Memory dependency.\r\n\r\n## Java\r\n * Make Java protoc code generator ignore optimize_for LITE_RUNTIME. Users should instead use the Java lite protoc plugin.\r\n * Change Extension getMessageDefaultInstance() to return Message instead of MessageLite.\r\n * Prevent malicious input streams from leaking buffers for ByteString or ByteBuffer parsing.\r\n * Release new Javalite runtime.\r\n * Show warning in case potential file name conflict.\r\n * Allow Java reserved keywords to be used in extensions.\r\n * Added setAllowUnknownFields() in text format\r\n * Add memoization to ExtensionRegistryLite.getEmptyRegistry()\r\n * Improve performance of CodedOutputStream.writeUInt32NoTag\r\n * Add an optimized mismatch-finding algorithm to UnsafeUtil.\r\n * When serializing uint32 varints, check that we have MAX_VARINT32_SIZE bytes left, not just MAX_VARINT_SIZE.\r\n * Minor optimization to RopeByteString.PieceIterator\r\n\r\n## JavaScript\r\n * Simplify generated toObject code when the default value is used.\r\n\r\n## Python\r\n * Changes implementation of Name() for enums that allow aliases in proto2 in Python to be in line with claims in C++ implementation (to return first value).\r\n * Added double_format option in text format printer.\r\n * Added iter and __contains__ to extension dict\r\n * Added allow_unknown_field option in python text format parser\r\n * Fixed Timestamp.ToDatetime() loses precision issue\r\n * Support unknown field in text format printer.\r\n * Float field will be convert to inf if bigger than struct.unpack('f', b'\\xff\\xff\\x7f\\x7f')[0] which is about 3.4028234664e+38,\r\n convert to -inf if smaller than -3.4028234664e+38\r\n * Allowed casting str->bytes in Message.__setstate__\r\n\r\n## Ruby\r\n * Helper methods to get enum name for Ruby." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/16360088", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/16360088/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/16360088/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.1", + "id": 16360088, + "node_id": "MDc6UmVsZWFzZTE2MzYwMDg4", + "tag_name": "v3.7.1", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.1", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-03-26T16:30:12Z", + "published_at": "2019-03-26T16:40:34Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759566", + "id": 11759566, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY2", + "name": "protobuf-all-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7018070, + "download_count": 74679, + "created_at": "2019-03-27T17:36:55Z", + "updated_at": "2019-03-27T17:36:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-all-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759567", + "id": 11759567, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY3", + "name": "protobuf-all-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8985859, + "download_count": 7840, + "created_at": "2019-03-27T17:36:55Z", + "updated_at": "2019-03-27T17:36:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-all-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759568", + "id": 11759568, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY4", + "name": "protobuf-cpp-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4554569, + "download_count": 23187, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-cpp-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759569", + "id": 11759569, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTY5", + "name": "protobuf-cpp-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5540852, + "download_count": 4658, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-cpp-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759570", + "id": 11759570, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcw", + "name": "protobuf-csharp-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4975598, + "download_count": 341, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-csharp-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759571", + "id": 11759571, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcx", + "name": "protobuf-csharp-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6134194, + "download_count": 1834, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-csharp-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759572", + "id": 11759572, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcy", + "name": "protobuf-java-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5036793, + "download_count": 1416, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-java-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759573", + "id": 11759573, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTcz", + "name": "protobuf-java-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6256175, + "download_count": 3749, + "created_at": "2019-03-27T17:36:56Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-java-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759574", + "id": 11759574, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc0", + "name": "protobuf-js-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4714126, + "download_count": 287, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:36:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-js-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759575", + "id": 11759575, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc1", + "name": "protobuf-js-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5808427, + "download_count": 725, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-js-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759576", + "id": 11759576, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc2", + "name": "protobuf-objectivec-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4931515, + "download_count": 156, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-objectivec-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759577", + "id": 11759577, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc3", + "name": "protobuf-objectivec-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6097730, + "download_count": 305, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-objectivec-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759578", + "id": 11759578, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc4", + "name": "protobuf-php-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4942632, + "download_count": 308, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-php-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759579", + "id": 11759579, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTc5", + "name": "protobuf-php-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6053988, + "download_count": 376, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-php-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759580", + "id": 11759580, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgw", + "name": "protobuf-python-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4869789, + "download_count": 2976, + "created_at": "2019-03-27T17:36:57Z", + "updated_at": "2019-03-27T17:37:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-python-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759581", + "id": 11759581, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgx", + "name": "protobuf-python-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5967559, + "download_count": 3484, + "created_at": "2019-03-27T17:36:58Z", + "updated_at": "2019-03-27T17:37:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-python-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759582", + "id": 11759582, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgy", + "name": "protobuf-ruby-3.7.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4872450, + "download_count": 97, + "created_at": "2019-03-27T17:36:58Z", + "updated_at": "2019-03-27T17:37:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-ruby-3.7.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11759583", + "id": 11759583, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzU5NTgz", + "name": "protobuf-ruby-3.7.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5912898, + "download_count": 120, + "created_at": "2019-03-27T17:36:58Z", + "updated_at": "2019-03-27T17:37:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-ruby-3.7.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763702", + "id": 11763702, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzAy", + "name": "protoc-3.7.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420854, + "download_count": 1408, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763703", + "id": 11763703, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzAz", + "name": "protoc-3.7.1-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568760, + "download_count": 500, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763704", + "id": 11763704, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA0", + "name": "protoc-3.7.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473386, + "download_count": 389, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763705", + "id": 11763705, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA1", + "name": "protoc-3.7.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529306, + "download_count": 257331, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763706", + "id": 11763706, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA2", + "name": "protoc-3.7.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2844672, + "download_count": 234, + "created_at": "2019-03-27T22:11:57Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763707", + "id": 11763707, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA3", + "name": "protoc-3.7.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2806619, + "download_count": 12273, + "created_at": "2019-03-27T22:11:58Z", + "updated_at": "2019-03-27T22:11:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763708", + "id": 11763708, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA4", + "name": "protoc-3.7.1-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1091216, + "download_count": 4208, + "created_at": "2019-03-27T22:11:58Z", + "updated_at": "2019-03-27T22:12:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11763709", + "id": 11763709, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNzYzNzA5", + "name": "protoc-3.7.1-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1413094, + "download_count": 20044, + "created_at": "2019-03-27T22:11:58Z", + "updated_at": "2019-03-27T22:12:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.1", + "body": "## C++\r\n * Avoid linking against libatomic in prebuilt protoc binaries (#5875)\r\n * Avoid marking generated C++ messages as final, though we will do this in a future release (#5928)\r\n * Miscellaneous build fixes\r\n\r\n## JavaScript\r\n * Fixed redefinition of global variable f (#5932)\r\n\r\n## Ruby\r\n * Replace strptime with custom implementation (#5906)\r\n * Fixed the bug that bytes fields cannot be larger than 16000 bytes (#5924)\r\n * Miscellaneous bug fixes\r\n\r\n## PHP\r\n * Replace strptime with custom implementation (#5906)\r\n * Fixed the bug that bytes fields cannot be larger than 16000 bytes (#5924)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15729828", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15729828/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15729828/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0-rc.3", + "id": 15729828, + "node_id": "MDc6UmVsZWFzZTE1NzI5ODI4", + "tag_name": "v3.7.0-rc.3", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0-rc.3", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-02-22T22:53:16Z", + "published_at": "2019-02-22T23:11:13Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202941", + "id": 11202941, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQx", + "name": "protobuf-all-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7009237, + "download_count": 1019, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-all-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202942", + "id": 11202942, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQy", + "name": "protobuf-all-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8996112, + "download_count": 754, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-all-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202943", + "id": 11202943, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQz", + "name": "protobuf-cpp-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4555680, + "download_count": 126, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-cpp-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202944", + "id": 11202944, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ0", + "name": "protobuf-cpp-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5551338, + "download_count": 250, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-cpp-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202945", + "id": 11202945, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ1", + "name": "protobuf-csharp-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4977445, + "download_count": 49, + "created_at": "2019-02-22T23:07:31Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-csharp-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202946", + "id": 11202946, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ2", + "name": "protobuf-csharp-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6146214, + "download_count": 109, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-csharp-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202947", + "id": 11202947, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ3", + "name": "protobuf-java-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5037931, + "download_count": 98, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-java-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202948", + "id": 11202948, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ4", + "name": "protobuf-java-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6268866, + "download_count": 230, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-java-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202949", + "id": 11202949, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTQ5", + "name": "protobuf-js-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4716077, + "download_count": 50, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-js-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202950", + "id": 11202950, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUw", + "name": "protobuf-js-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5820117, + "download_count": 72, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-js-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202951", + "id": 11202951, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUx", + "name": "protobuf-objectivec-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4932912, + "download_count": 34, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-objectivec-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202952", + "id": 11202952, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUy", + "name": "protobuf-objectivec-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6110520, + "download_count": 42, + "created_at": "2019-02-22T23:07:32Z", + "updated_at": "2019-02-22T23:07:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-objectivec-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202953", + "id": 11202953, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTUz", + "name": "protobuf-php-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4941502, + "download_count": 57, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-php-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202954", + "id": 11202954, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU0", + "name": "protobuf-php-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6061450, + "download_count": 41, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-php-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202955", + "id": 11202955, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU1", + "name": "protobuf-python-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4870869, + "download_count": 148, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-python-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202956", + "id": 11202956, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU2", + "name": "protobuf-python-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5979189, + "download_count": 301, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-python-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202957", + "id": 11202957, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU3", + "name": "protobuf-ruby-3.7.0-rc-3.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4866769, + "download_count": 34, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-ruby-3.7.0-rc-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11202958", + "id": 11202958, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjAyOTU4", + "name": "protobuf-ruby-3.7.0-rc-3.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5917784, + "download_count": 33, + "created_at": "2019-02-22T23:07:33Z", + "updated_at": "2019-02-22T23:07:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protobuf-ruby-3.7.0-rc-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205515", + "id": 11205515, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE1", + "name": "protoc-3.7.0-rc-3-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1421033, + "download_count": 55, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:38:16Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205516", + "id": 11205516, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE2", + "name": "protoc-3.7.0-rc-3-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568661, + "download_count": 56, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:38:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205517", + "id": 11205517, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE3", + "name": "protoc-3.7.0-rc-3-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473644, + "download_count": 57, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:43:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205518", + "id": 11205518, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE4", + "name": "protoc-3.7.0-rc-3-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529606, + "download_count": 1116, + "created_at": "2019-02-23T03:38:13Z", + "updated_at": "2019-02-23T03:38:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205519", + "id": 11205519, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTE5", + "name": "protoc-3.7.0-rc-3-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2844639, + "download_count": 47, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205520", + "id": 11205520, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTIw", + "name": "protoc-3.7.0-rc-3-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2806722, + "download_count": 463, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205521", + "id": 11205521, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTIx", + "name": "protoc-3.7.0-rc-3-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1093901, + "download_count": 395, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11205522", + "id": 11205522, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjA1NTIy", + "name": "protoc-3.7.0-rc-3-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415430, + "download_count": 1695, + "created_at": "2019-02-23T03:38:14Z", + "updated_at": "2019-02-23T03:38:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0-rc.3/protoc-3.7.0-rc-3-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0-rc.3", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0-rc.3", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15659336", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15659336/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15659336/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0", + "id": 15659336, + "node_id": "MDc6UmVsZWFzZTE1NjU5MzM2", + "tag_name": "v3.7.0", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-02-28T20:55:14Z", + "published_at": "2019-02-28T21:33:02Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294890", + "id": 11294890, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODkw", + "name": "protobuf-all-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7005840, + "download_count": 49920, + "created_at": "2019-02-28T21:48:23Z", + "updated_at": "2019-02-28T21:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-all-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294892", + "id": 11294892, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODky", + "name": "protobuf-all-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8974388, + "download_count": 4560, + "created_at": "2019-02-28T21:48:23Z", + "updated_at": "2019-02-28T21:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-all-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294893", + "id": 11294893, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODkz", + "name": "protobuf-cpp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4554405, + "download_count": 6106, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-cpp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294894", + "id": 11294894, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk0", + "name": "protobuf-cpp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5540626, + "download_count": 2440, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-cpp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294895", + "id": 11294895, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk1", + "name": "protobuf-csharp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4975889, + "download_count": 196, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-csharp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294896", + "id": 11294896, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk2", + "name": "protobuf-csharp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6133736, + "download_count": 1066, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-csharp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294897", + "id": 11294897, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk3", + "name": "protobuf-java-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5036617, + "download_count": 6641, + "created_at": "2019-02-28T21:48:24Z", + "updated_at": "2019-02-28T21:48:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-java-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294898", + "id": 11294898, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0ODk4", + "name": "protobuf-java-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6255941, + "download_count": 1759, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-java-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294900", + "id": 11294900, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAw", + "name": "protobuf-js-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4714958, + "download_count": 170, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-js-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294901", + "id": 11294901, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAx", + "name": "protobuf-js-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5808210, + "download_count": 434, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-js-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294902", + "id": 11294902, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAy", + "name": "protobuf-objectivec-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4931402, + "download_count": 121, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-objectivec-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294903", + "id": 11294903, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTAz", + "name": "protobuf-objectivec-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6097500, + "download_count": 287, + "created_at": "2019-02-28T21:48:25Z", + "updated_at": "2019-02-28T21:48:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-objectivec-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294904", + "id": 11294904, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA0", + "name": "protobuf-php-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4941097, + "download_count": 245, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-php-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294905", + "id": 11294905, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA1", + "name": "protobuf-php-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6049227, + "download_count": 210, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-php-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294906", + "id": 11294906, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA2", + "name": "protobuf-python-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4869606, + "download_count": 1842, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-python-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294908", + "id": 11294908, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA4", + "name": "protobuf-python-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5967332, + "download_count": 1983, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-python-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294909", + "id": 11294909, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTA5", + "name": "protobuf-ruby-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4863624, + "download_count": 66, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-ruby-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11294910", + "id": 11294910, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk0OTEw", + "name": "protobuf-ruby-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5906198, + "download_count": 72, + "created_at": "2019-02-28T21:48:26Z", + "updated_at": "2019-02-28T21:48:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protobuf-ruby-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299044", + "id": 11299044, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ0", + "name": "protoc-3.7.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1421033, + "download_count": 534, + "created_at": "2019-03-01T02:40:20Z", + "updated_at": "2019-03-01T02:40:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299046", + "id": 11299046, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ2", + "name": "protoc-3.7.0-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568661, + "download_count": 453, + "created_at": "2019-03-01T02:40:20Z", + "updated_at": "2019-03-01T02:40:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299047", + "id": 11299047, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ3", + "name": "protoc-3.7.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473644, + "download_count": 198, + "created_at": "2019-03-01T02:40:20Z", + "updated_at": "2019-03-01T02:40:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299048", + "id": 11299048, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ4", + "name": "protoc-3.7.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529606, + "download_count": 89275, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299049", + "id": 11299049, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDQ5", + "name": "protoc-3.7.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2844639, + "download_count": 124, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299050", + "id": 11299050, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDUw", + "name": "protoc-3.7.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2806722, + "download_count": 15425, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299051", + "id": 11299051, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDUx", + "name": "protoc-3.7.0-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1093899, + "download_count": 2219, + "created_at": "2019-03-01T02:40:21Z", + "updated_at": "2019-03-01T02:40:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/11299052", + "id": 11299052, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExMjk5MDUy", + "name": "protoc-3.7.0-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415428, + "download_count": 32334, + "created_at": "2019-03-01T02:40:22Z", + "updated_at": "2019-03-01T02:40:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0", + "body": "## C++\r\n * Introduced new MOMI (maybe-outside-memory-interval) parser.\r\n * Add an option to json_util to parse enum as case-insensitive. In the future, enum parsing in json_util will become case-sensitive.\r\n * Added conformance test for enum aliases\r\n * Added support for --cpp_out=speed:...\r\n * Added use of C++ override keyword where appropriate\r\n * Many other cleanups and fixes.\r\n\r\n## Java\r\n * Fix illegal reflective access warning in JDK 9+\r\n * Add BOM\r\n\r\n## Python\r\n * Added Python 3.7 compatibility.\r\n * Modified ParseFromString to return bytes parsed .\r\n * Introduce Proto C API.\r\n * FindFileContainingSymbol in descriptor pool is now able to find field and enum values.\r\n * reflection.MakeClass() and reflection.ParseMessage() are deprecated.\r\n * Added DescriptorPool.FindMethodByName() method in pure python (c extension alreay has it)\r\n * Flipped proto3 to preserve unknown fields by default.\r\n * Added support for memoryview in python3 proto message parsing.\r\n * Added MergeFrom for repeated scalar fields in c extension (pure python already has it)\r\n * Surrogates are now rejected at setters in python3.\r\n * Added public unknown field API.\r\n * RecursionLimit is also set to max if allow_oversize_protos is enabled.\r\n * Disallow duplicate scalars in proto3 text_format parse.\r\n * Fix some segment faults for c extension map field.\r\n\r\n## PHP\r\n * Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_php_c.txt.\r\n * Supports php 7.3\r\n * Added helper methods to convert between enum values and names.\r\n * Allow setting/getting wrapper message fields using primitive values.\r\n * Various bug fixes.\r\n\r\n## Ruby\r\n * Ruby 2.6 support.\r\n * Drops support for ruby < 2.3.\r\n * Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_ruby.txt.\r\n * Json parsing can specify an option to ignore unknown fields: msg.decode_json(data, {ignore_unknown_fields: true}).\r\n * Added support for proto2 syntax (partially).\r\n * Various bug fixes.\r\n\r\n## C#\r\n * More support for FieldMask include merge, intersect and more.\r\n * Increasing the default recursion limit to 100.\r\n * Support loading FileDescriptors dynamically.\r\n * Provide access to comments from descriptors.\r\n * Added Any.Is method.\r\n * Compatible with C# 6\r\n * Added IComparable and comparison operators on Timestamp.\r\n\r\n## Objective-C\r\n * Add ability to introspect list of enum values (#4678)\r\n * Copy the value when setting message/data fields (#5215)\r\n * Support suppressing the objc package prefix checks on a list of files (#5309)\r\n * More complete keyword and NSObject method (via categories) checks for field names, can result in more fields being rename, but avoids the collisions at runtime (#5289)\r\n * Small fixes to TextFormat generation for extensions (#5362)\r\n * Provide more details/context in deprecation messages (#5412)\r\n * Array/Dictionary enumeration blocks NS_NOESCAPE annotation for Swift (#5421)\r\n * Properly annotate extensions for ARC when their names imply behaviors (#5427)\r\n * Enum alias name collision improvements (#5480)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15323628", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15323628/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15323628/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0rc2", + "id": 15323628, + "node_id": "MDc6UmVsZWFzZTE1MzIzNjI4", + "tag_name": "v3.7.0rc2", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0rc2", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-02-01T19:27:19Z", + "published_at": "2019-02-01T20:04:58Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890880", + "id": 10890880, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgw", + "name": "protobuf-all-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7004523, + "download_count": 2236, + "created_at": "2019-02-01T19:44:28Z", + "updated_at": "2019-02-01T19:44:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-all-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890881", + "id": 10890881, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgx", + "name": "protobuf-all-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8994228, + "download_count": 1652, + "created_at": "2019-02-01T19:44:28Z", + "updated_at": "2019-02-01T19:44:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-all-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890882", + "id": 10890882, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgy", + "name": "protobuf-cpp-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4555122, + "download_count": 336, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-cpp-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890883", + "id": 10890883, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODgz", + "name": "protobuf-cpp-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5550468, + "download_count": 447, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-cpp-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890884", + "id": 10890884, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg0", + "name": "protobuf-csharp-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4976690, + "download_count": 68, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-csharp-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890885", + "id": 10890885, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg1", + "name": "protobuf-csharp-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6145864, + "download_count": 231, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-csharp-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890886", + "id": 10890886, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg2", + "name": "protobuf-java-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5037480, + "download_count": 208, + "created_at": "2019-02-01T19:44:29Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-java-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890887", + "id": 10890887, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg3", + "name": "protobuf-java-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6267997, + "download_count": 465, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-java-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890888", + "id": 10890888, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg4", + "name": "protobuf-js-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4715024, + "download_count": 94, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-js-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890889", + "id": 10890889, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODg5", + "name": "protobuf-js-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5819245, + "download_count": 127, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-js-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890890", + "id": 10890890, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODkw", + "name": "protobuf-objectivec-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4930985, + "download_count": 56, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-objectivec-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890891", + "id": 10890891, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODkx", + "name": "protobuf-objectivec-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6109650, + "download_count": 92, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-objectivec-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890892", + "id": 10890892, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODky", + "name": "protobuf-php-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4939189, + "download_count": 62, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-php-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890893", + "id": 10890893, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODkz", + "name": "protobuf-php-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6059043, + "download_count": 78, + "created_at": "2019-02-01T19:44:30Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-php-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890894", + "id": 10890894, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk0", + "name": "protobuf-python-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4870086, + "download_count": 339, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-python-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890895", + "id": 10890895, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk1", + "name": "protobuf-python-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5978322, + "download_count": 552, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-python-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890896", + "id": 10890896, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk2", + "name": "protobuf-ruby-3.7.0-rc-2.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4865956, + "download_count": 36, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-ruby-3.7.0-rc-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10890897", + "id": 10890897, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODkwODk3", + "name": "protobuf-ruby-3.7.0-rc-2.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5916915, + "download_count": 43, + "created_at": "2019-02-01T19:44:31Z", + "updated_at": "2019-02-01T19:44:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protobuf-ruby-3.7.0-rc-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928913", + "id": 10928913, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTEz", + "name": "protoc-3.7.0-rc-2-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420784, + "download_count": 108, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928914", + "id": 10928914, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE0", + "name": "protoc-3.7.0-rc-2-linux-ppcle_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1568305, + "download_count": 44, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-ppcle_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928915", + "id": 10928915, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE1", + "name": "protoc-3.7.0-rc-2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473469, + "download_count": 77, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928916", + "id": 10928916, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE2", + "name": "protoc-3.7.0-rc-2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529327, + "download_count": 13020, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928917", + "id": 10928917, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE3", + "name": "protoc-3.7.0-rc-2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2775259, + "download_count": 57, + "created_at": "2019-02-04T22:57:36Z", + "updated_at": "2019-02-04T22:57:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928918", + "id": 10928918, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE4", + "name": "protoc-3.7.0-rc-2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2719561, + "download_count": 1027, + "created_at": "2019-02-04T22:57:37Z", + "updated_at": "2019-02-04T22:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928919", + "id": 10928919, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTE5", + "name": "protoc-3.7.0-rc-2-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1094351, + "download_count": 583, + "created_at": "2019-02-04T22:57:37Z", + "updated_at": "2019-02-04T22:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10928920", + "id": 10928920, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwOTI4OTIw", + "name": "protoc-3.7.0-rc-2-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415226, + "download_count": 3211, + "created_at": "2019-02-04T22:57:37Z", + "updated_at": "2019-02-04T22:57:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc2/protoc-3.7.0-rc-2-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0rc2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0rc2", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15271745", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/15271745/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/15271745/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.0rc1", + "id": 15271745, + "node_id": "MDc6UmVsZWFzZTE1MjcxNzQ1", + "tag_name": "v3.7.0rc1", + "target_commitish": "3.7.x", + "name": "Protocol Buffers v3.7.0rc1", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-01-28T23:15:59Z", + "published_at": "2019-01-30T19:48:52Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852324", + "id": 10852324, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI0", + "name": "protobuf-all-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 7005610, + "download_count": 530, + "created_at": "2019-01-30T17:26:57Z", + "updated_at": "2019-01-30T17:26:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-all-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852325", + "id": 10852325, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI1", + "name": "protobuf-all-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8971536, + "download_count": 382, + "created_at": "2019-01-30T17:26:57Z", + "updated_at": "2019-01-30T17:26:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-all-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852326", + "id": 10852326, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI2", + "name": "protobuf-cpp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4553992, + "download_count": 145, + "created_at": "2019-01-30T17:26:58Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-cpp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852327", + "id": 10852327, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI3", + "name": "protobuf-cpp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5539751, + "download_count": 138, + "created_at": "2019-01-30T17:26:58Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-cpp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852328", + "id": 10852328, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI4", + "name": "protobuf-csharp-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4974812, + "download_count": 29, + "created_at": "2019-01-30T17:26:58Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-csharp-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852329", + "id": 10852329, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzI5", + "name": "protobuf-csharp-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6133378, + "download_count": 63, + "created_at": "2019-01-30T17:26:59Z", + "updated_at": "2019-01-30T17:27:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-csharp-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852330", + "id": 10852330, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMw", + "name": "protobuf-java-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 5036072, + "download_count": 66, + "created_at": "2019-01-30T17:26:59Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-java-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852331", + "id": 10852331, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMx", + "name": "protobuf-java-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6254802, + "download_count": 104, + "created_at": "2019-01-30T17:27:00Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-java-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852332", + "id": 10852332, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMy", + "name": "protobuf-js-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4711526, + "download_count": 31, + "created_at": "2019-01-30T17:27:00Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-js-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852333", + "id": 10852333, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzMz", + "name": "protobuf-js-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5807335, + "download_count": 44, + "created_at": "2019-01-30T17:27:00Z", + "updated_at": "2019-01-30T17:27:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-js-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852334", + "id": 10852334, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM0", + "name": "protobuf-objectivec-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4930955, + "download_count": 29, + "created_at": "2019-01-30T17:27:01Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-objectivec-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852335", + "id": 10852335, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM1", + "name": "protobuf-objectivec-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6096625, + "download_count": 28, + "created_at": "2019-01-30T17:27:01Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-objectivec-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852337", + "id": 10852337, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM3", + "name": "protobuf-php-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4937967, + "download_count": 34, + "created_at": "2019-01-30T17:27:01Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-php-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852338", + "id": 10852338, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM4", + "name": "protobuf-php-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6046286, + "download_count": 28, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-php-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852339", + "id": 10852339, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzM5", + "name": "protobuf-python-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4869243, + "download_count": 94, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-python-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852340", + "id": 10852340, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzQw", + "name": "protobuf-python-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5966443, + "download_count": 159, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-python-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852341", + "id": 10852341, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzQx", + "name": "protobuf-ruby-3.7.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4863318, + "download_count": 24, + "created_at": "2019-01-30T17:27:02Z", + "updated_at": "2019-01-30T17:27:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-ruby-3.7.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10852342", + "id": 10852342, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODUyMzQy", + "name": "protobuf-ruby-3.7.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5905173, + "download_count": 18, + "created_at": "2019-01-30T17:27:03Z", + "updated_at": "2019-01-30T17:27:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protobuf-ruby-3.7.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854573", + "id": 10854573, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTcz", + "name": "protoc-3.7.0-rc1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1420784, + "download_count": 50, + "created_at": "2019-01-30T19:31:50Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854574", + "id": 10854574, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc0", + "name": "protoc-3.7.0-rc1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1473469, + "download_count": 34, + "created_at": "2019-01-30T19:31:51Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854575", + "id": 10854575, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc1", + "name": "protoc-3.7.0-rc1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1529327, + "download_count": 1045, + "created_at": "2019-01-30T19:31:51Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854576", + "id": 10854576, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc2", + "name": "protoc-3.7.0-rc1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2775259, + "download_count": 40, + "created_at": "2019-01-30T19:31:51Z", + "updated_at": "2019-01-30T19:31:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854577", + "id": 10854577, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc3", + "name": "protoc-3.7.0-rc1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2719561, + "download_count": 227, + "created_at": "2019-01-30T19:31:52Z", + "updated_at": "2019-01-30T19:31:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854578", + "id": 10854578, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc4", + "name": "protoc-3.7.0-rc1-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1094352, + "download_count": 244, + "created_at": "2019-01-30T19:31:52Z", + "updated_at": "2019-01-30T19:31:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/10854579", + "id": 10854579, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEwODU0NTc5", + "name": "protoc-3.7.0-rc1-win64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1415227, + "download_count": 1175, + "created_at": "2019-01-30T19:31:53Z", + "updated_at": "2019-01-30T19:31:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0rc1/protoc-3.7.0-rc1-win64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.7.0rc1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.7.0rc1", + "body": "" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/12126801", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/12126801/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/12126801/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.1", + "id": 12126801, + "node_id": "MDc6UmVsZWFzZTEyMTI2ODAx", + "tag_name": "v3.6.1", + "target_commitish": "3.6.x", + "name": "Protocol Buffers v3.6.1", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2018-07-27T20:30:28Z", + "published_at": "2018-07-31T19:02:06Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067302", + "id": 8067302, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDI=", + "name": "protobuf-all-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6726203, + "download_count": 88659, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067303", + "id": 8067303, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDM=", + "name": "protobuf-all-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8643093, + "download_count": 64673, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067304", + "id": 8067304, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDQ=", + "name": "protobuf-cpp-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4450975, + "download_count": 72516, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067305", + "id": 8067305, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDU=", + "name": "protobuf-cpp-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5424612, + "download_count": 19076, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-cpp-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067306", + "id": 8067306, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDY=", + "name": "protobuf-csharp-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4785417, + "download_count": 1115, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-csharp-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067307", + "id": 8067307, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDc=", + "name": "protobuf-csharp-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5925119, + "download_count": 5628, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-csharp-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067308", + "id": 8067308, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDg=", + "name": "protobuf-java-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4927479, + "download_count": 5240, + "created_at": "2018-07-30T22:48:20Z", + "updated_at": "2018-07-30T22:48:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-java-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067309", + "id": 8067309, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMDk=", + "name": "protobuf-java-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6132648, + "download_count": 65844, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-java-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067310", + "id": 8067310, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTA=", + "name": "protobuf-js-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4610095, + "download_count": 1692, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-js-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067311", + "id": 8067311, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTE=", + "name": "protobuf-js-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5681236, + "download_count": 2336, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-js-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067312", + "id": 8067312, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTI=", + "name": "protobuf-objectivec-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4810146, + "download_count": 701, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-objectivec-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067313", + "id": 8067313, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTM=", + "name": "protobuf-objectivec-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5957261, + "download_count": 1306, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-objectivec-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067314", + "id": 8067314, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTQ=", + "name": "protobuf-php-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4820325, + "download_count": 1275, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-php-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067315", + "id": 8067315, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTU=", + "name": "protobuf-php-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5907893, + "download_count": 1213, + "created_at": "2018-07-30T22:48:21Z", + "updated_at": "2018-07-30T22:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-php-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067316", + "id": 8067316, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTY=", + "name": "protobuf-python-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4748789, + "download_count": 16154, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-python-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067317", + "id": 8067317, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTc=", + "name": "protobuf-python-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5825925, + "download_count": 10766, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-python-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067318", + "id": 8067318, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTg=", + "name": "protobuf-ruby-3.6.1.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4736562, + "download_count": 414, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-ruby-3.6.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067319", + "id": 8067319, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMTk=", + "name": "protobuf-ruby-3.6.1.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5760683, + "download_count": 363, + "created_at": "2018-07-30T22:48:22Z", + "updated_at": "2018-07-30T22:48:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-ruby-3.6.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067332", + "id": 8067332, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzI=", + "name": "protoc-3.6.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1524236, + "download_count": 3503, + "created_at": "2018-07-30T22:49:53Z", + "updated_at": "2018-07-30T22:49:54Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067333", + "id": 8067333, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzM=", + "name": "protoc-3.6.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1374262, + "download_count": 5644, + "created_at": "2018-07-30T22:49:53Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067334", + "id": 8067334, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzQ=", + "name": "protoc-3.6.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1423451, + "download_count": 1253555, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067335", + "id": 8067335, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzU=", + "name": "protoc-3.6.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2556410, + "download_count": 5046, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067336", + "id": 8067336, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzY=", + "name": "protoc-3.6.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2508161, + "download_count": 53458, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/8067337", + "id": 8067337, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgwNjczMzc=", + "name": "protoc-3.6.1-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1007473, + "download_count": 100656, + "created_at": "2018-07-30T22:49:54Z", + "updated_at": "2018-07-30T22:49:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.6.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.6.1", + "body": "## C++\r\n * Introduced workaround for Windows issue with std::atomic and std::once_flag initialization (#4777, #4773)\r\n\r\n## PHP\r\n * Added compatibility with PHP 7.3 (#4898)\r\n\r\n## Ruby\r\n * Fixed Ruby crash involving Any encoding (#4718)" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/11166814", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/11166814/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/11166814/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.0", + "id": 11166814, + "node_id": "MDc6UmVsZWFzZTExMTY2ODE0", + "tag_name": "v3.6.0", + "target_commitish": "3.6.x", + "name": "Protocol Buffers v3.6.0", + "draft": false, + "author": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2018-06-06T23:47:37Z", + "published_at": "2018-06-19T17:57:08Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437208", + "id": 7437208, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMDg=", + "name": "protobuf-all-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6727974, + "download_count": 24460, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-all-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437209", + "id": 7437209, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMDk=", + "name": "protobuf-all-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8651481, + "download_count": 10808, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-all-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437210", + "id": 7437210, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTA=", + "name": "protobuf-cpp-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4454101, + "download_count": 24527, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-cpp-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437211", + "id": 7437211, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTE=", + "name": "protobuf-cpp-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5434113, + "download_count": 7831, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-cpp-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437212", + "id": 7437212, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTI=", + "name": "protobuf-csharp-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4787073, + "download_count": 299, + "created_at": "2018-06-06T21:11:00Z", + "updated_at": "2018-06-06T21:11:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-csharp-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437213", + "id": 7437213, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTM=", + "name": "protobuf-csharp-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5934620, + "download_count": 1522, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-csharp-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437214", + "id": 7437214, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTQ=", + "name": "protobuf-java-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4930538, + "download_count": 2630, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-java-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437215", + "id": 7437215, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTU=", + "name": "protobuf-java-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 6142145, + "download_count": 3151, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-java-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437216", + "id": 7437216, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTY=", + "name": "protobuf-js-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4612355, + "download_count": 313, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-js-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437217", + "id": 7437217, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTc=", + "name": "protobuf-js-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5690736, + "download_count": 686, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-js-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437218", + "id": 7437218, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTg=", + "name": "protobuf-objectivec-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4812519, + "download_count": 196, + "created_at": "2018-06-06T21:11:01Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-objectivec-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437219", + "id": 7437219, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMTk=", + "name": "protobuf-objectivec-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5966759, + "download_count": 410, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-objectivec-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437220", + "id": 7437220, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjA=", + "name": "protobuf-php-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4821603, + "download_count": 356, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-php-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437221", + "id": 7437221, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjE=", + "name": "protobuf-php-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5916599, + "download_count": 361, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-php-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437222", + "id": 7437222, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjI=", + "name": "protobuf-python-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4750984, + "download_count": 5133, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-python-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437223", + "id": 7437223, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjM=", + "name": "protobuf-python-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5835404, + "download_count": 3667, + "created_at": "2018-06-06T21:11:02Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-python-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437224", + "id": 7437224, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjQ=", + "name": "protobuf-ruby-3.6.0.tar.gz", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4738895, + "download_count": 118, + "created_at": "2018-06-06T21:11:03Z", + "updated_at": "2018-06-06T21:11:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-ruby-3.6.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7437225", + "id": 7437225, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc0MzcyMjU=", + "name": "protobuf-ruby-3.6.0.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5769896, + "download_count": 126, + "created_at": "2018-06-06T21:11:03Z", + "updated_at": "2018-06-06T21:11:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protobuf-ruby-3.6.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589938", + "id": 7589938, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5Mzg=", + "name": "protoc-3.6.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1527853, + "download_count": 900, + "created_at": "2018-06-19T16:21:33Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589939", + "id": 7589939, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5Mzk=", + "name": "protoc-3.6.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1375778, + "download_count": 451, + "created_at": "2018-06-19T16:21:33Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589940", + "id": 7589940, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDA=", + "name": "protoc-3.6.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1425463, + "download_count": 175995, + "created_at": "2018-06-19T16:21:33Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589941", + "id": 7589941, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDE=", + "name": "protoc-3.6.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2556912, + "download_count": 298, + "created_at": "2018-06-19T16:21:34Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589942", + "id": 7589942, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDI=", + "name": "protoc-3.6.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2507544, + "download_count": 36330, + "created_at": "2018-06-19T16:21:34Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/7589943", + "id": 7589943, + "node_id": "MDEyOlJlbGVhc2VBc3NldDc1ODk5NDM=", + "name": "protoc-3.6.0-win32.zip", + "label": null, + "uploader": { + "login": "acozzette", + "id": 1115459, + "node_id": "MDQ6VXNlcjExMTU0NTk=", + "avatar_url": "https://avatars3.githubusercontent.com/u/1115459?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/acozzette", + "html_url": "https://github.com/acozzette", + "followers_url": "https://api.github.com/users/acozzette/followers", + "following_url": "https://api.github.com/users/acozzette/following{/other_user}", + "gists_url": "https://api.github.com/users/acozzette/gists{/gist_id}", + "starred_url": "https://api.github.com/users/acozzette/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/acozzette/subscriptions", + "organizations_url": "https://api.github.com/users/acozzette/orgs", + "repos_url": "https://api.github.com/users/acozzette/repos", + "events_url": "https://api.github.com/users/acozzette/events{/privacy}", + "received_events_url": "https://api.github.com/users/acozzette/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1007591, + "download_count": 29240, + "created_at": "2018-06-19T16:21:34Z", + "updated_at": "2018-06-19T16:21:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.6.0/protoc-3.6.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.6.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.6.0", + "body": "## General\r\n * We are moving protobuf repository to its own github organization (see https://github.com/google/protobuf/issues/4796). Please let us know what you think about the move by taking this survey: https://docs.google.com/forms/d/e/1FAIpQLSeH1ckwm6ZrSfmtrOjRwmF3yCSWQbbO5pTPqPb6_rUppgvBqA/viewform\r\n\r\n## C++\r\n * Starting from this release, we now require C++11. For those we cannot yet upgrade to C++11, we will try to keep the 3.5.x branch updated with critical bug fixes only. If you have any concerns about this, please comment on issue #2780.\r\n * Moved to C++11 types like std::atomic and std::unique_ptr and away from our old custom-built equivalents.\r\n * Added support for repeated message fields in lite protos using implicit weak fields. This is an experimental feature that allows the linker to strip out more unused messages than previously was possible.\r\n * Fixed SourceCodeInfo for interpreted options and extension range options.\r\n * Fixed always_print_enums_as_ints option for JSON serialization.\r\n * Added support for ignoring unknown enum values when parsing JSON.\r\n * Create std::string in Arena memory.\r\n * Fixed ValidateDateTime to correctly check the day.\r\n * Fixed bug in ZeroCopyStreamByteSink.\r\n * Various other cleanups and fixes.\r\n\r\n## Java\r\n * Dropped support for Java 6.\r\n * Added a UTF-8 decoder that uses Unsafe to directly decode a byte buffer.\r\n * Added deprecation annotations to generated code for deprecated oneof fields.\r\n * Fixed map field serialization in DynamicMessage.\r\n * Cleanup and documentation for Java Lite runtime.\r\n * Various other fixes and cleanups\r\n * Fixed unboxed arraylists to handle an edge case\r\n * Improved performance for copying between unboxed arraylists\r\n * Fixed lite protobuf to avoid Java compiler warnings\r\n * Improved test coverage for lite runtime\r\n * Performance improvements for lite runtime\r\n\r\n## Python\r\n * Fixed bytes/string map key incompatibility between C++ and pure-Python implementations (issue #4029)\r\n * Added `__init__.py` files to compiler and util subpackages\r\n * Use /MT for all Windows versions\r\n * Fixed an issue affecting the Python-C++ implementation when used with Cython (issue #2896)\r\n * Various text format fixes\r\n * Various fixes to resolve behavior differences between the pure-Python and Python-C++ implementations\r\n\r\n## PHP\r\n * Added php_metadata_namespace to control the file path of generated metadata file.\r\n * Changed generated classes of nested message/enum. E.g., Foo.Bar, which previously generates Foo_Bar, now generates Foo/Bar\r\n * Added array constructor. When creating a message, users can pass a php array whose content is field name to value pairs into constructor. The created message will be initialized according to the array. Note that message field should use a message value instead of a sub-array.\r\n * Various bug fixes.\r\n\r\n## Objective-C\r\n * We removed some helper class methods from GPBDictionary to shrink the size of the library, the functionary is still there, but you may need to do some specific +alloc / -init… methods instead.\r\n * Minor improvements in the performance of object field getters/setters by avoiding some memory management overhead.\r\n * Fix a memory leak during the raising of some errors.\r\n * Make header importing completely order independent.\r\n * Small code improvements for things the undefined behaviors compiler option was flagging.\r\n\r\n## Ruby\r\n * Added ruby_package file option to control the module of generated class.\r\n * Various bug fixes.\r\n\r\n## Javascript\r\n * Allow setting string to int64 field.\r\n\r\n## Csharp\r\n * Unknown fields are now parsed and then sent back on the wire. They can be discarded at parse time via a CodedInputStream option.\r\n * Movement towards working with .NET 3.5 and Unity\r\n * Expression trees are no longer used\r\n * AOT generics issues in Unity/il2cpp have a workaround (see commit 1b219a174c413af3b18a082a4295ce47932314c4 for details)\r\n * Floating point values are now compared bitwise (affects NaN value comparisons)\r\n * The default size limit when parsing is now 2GB rather than 64MB\r\n * MessageParser now supports parsing from a slice of a byte array\r\n * JSON list parsing now accepts null values where the underlying proto representation does" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8987160", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8987160/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/8987160/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.1", + "id": 8987160, + "node_id": "MDc6UmVsZWFzZTg5ODcxNjA=", + "tag_name": "v3.5.1", + "target_commitish": "3.5.x", + "name": "Protocol Buffers v3.5.1", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-12-20T23:07:13Z", + "published_at": "2017-12-20T23:16:09Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681213", + "id": 5681213, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTM=", + "name": "protobuf-all-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6662844, + "download_count": 101211, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681204", + "id": 5681204, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDQ=", + "name": "protobuf-all-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8644234, + "download_count": 37194, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681221", + "id": 5681221, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMjE=", + "name": "protobuf-cpp-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4272851, + "download_count": 80116, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:15:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-cpp-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681212", + "id": 5681212, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTI=", + "name": "protobuf-cpp-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5283316, + "download_count": 21121, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-cpp-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681220", + "id": 5681220, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMjA=", + "name": "protobuf-csharp-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4598804, + "download_count": 1164, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-csharp-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681211", + "id": 5681211, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTE=", + "name": "protobuf-csharp-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5779926, + "download_count": 5305, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-csharp-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681219", + "id": 5681219, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTk=", + "name": "protobuf-java-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4741940, + "download_count": 6286, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-java-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681210", + "id": 5681210, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTA=", + "name": "protobuf-java-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5979798, + "download_count": 11337, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-java-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681218", + "id": 5681218, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTg=", + "name": "protobuf-js-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4428997, + "download_count": 1150, + "created_at": "2017-12-20T23:14:56Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-js-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681209", + "id": 5681209, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDk=", + "name": "protobuf-js-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5538299, + "download_count": 3311, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-js-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681217", + "id": 5681217, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTc=", + "name": "protobuf-objectivec-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4720219, + "download_count": 6918, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-objectivec-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681208", + "id": 5681208, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDg=", + "name": "protobuf-objectivec-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5902164, + "download_count": 1323, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-objectivec-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681214", + "id": 5681214, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTQ=", + "name": "protobuf-php-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4617382, + "download_count": 1090, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-php-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681205", + "id": 5681205, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDU=", + "name": "protobuf-php-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5735533, + "download_count": 1123, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-php-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681216", + "id": 5681216, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTY=", + "name": "protobuf-python-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4564059, + "download_count": 34907, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-python-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681207", + "id": 5681207, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDc=", + "name": "protobuf-python-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5678860, + "download_count": 10496, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-python-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681215", + "id": 5681215, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMTU=", + "name": "protobuf-ruby-3.5.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4555313, + "download_count": 298, + "created_at": "2017-12-20T23:14:55Z", + "updated_at": "2017-12-20T23:14:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-ruby-3.5.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5681206", + "id": 5681206, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2ODEyMDY=", + "name": "protobuf-ruby-3.5.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5618462, + "download_count": 273, + "created_at": "2017-12-20T23:14:54Z", + "updated_at": "2017-12-20T23:14:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-ruby-3.5.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699542", + "id": 5699542, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDI=", + "name": "protoc-3.5.1-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1325630, + "download_count": 9600, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699544", + "id": 5699544, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDQ=", + "name": "protoc-3.5.1-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1335294, + "download_count": 2775, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699543", + "id": 5699543, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDM=", + "name": "protoc-3.5.1-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1379374, + "download_count": 1042099, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699546", + "id": 5699546, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDY=", + "name": "protoc-3.5.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1919580, + "download_count": 843, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699545", + "id": 5699545, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDU=", + "name": "protoc-3.5.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1868520, + "download_count": 95525, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5699547", + "id": 5699547, + "node_id": "MDEyOlJlbGVhc2VBc3NldDU2OTk1NDc=", + "name": "protoc-3.5.1-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1256726, + "download_count": 78076, + "created_at": "2017-12-22T19:22:09Z", + "updated_at": "2017-12-22T19:22:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protoc-3.5.1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.5.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.5.1", + "body": "## Planned Future Changes\r\n * Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.6.0 release, after unknown fields semantic changes are finished. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## protoc\r\n * Fixed a bug introduced in 3.5.0 and protoc in Windows now accepts non-ascii characters in paths again.\r\n\r\n## C++\r\n * Removed several usages of C++11 features in the code base.\r\n * Fixed some compiler warnings.\r\n\r\n## PHP\r\n * Fixed memory leak in C-extension implementation.\r\n * Added `discardUnknokwnFields` API.\r\n * Removed duplicatd typedef in C-extension headers.\r\n * Avoided calling private php methods (`timelib_update_ts`).\r\n * Fixed `Any.php` to use fully-qualified name for `DescriptorPool`.\r\n\r\n## Ruby\r\n * Added `Google_Protobuf_discard_unknown` for discarding unknown fields in\r\n messages.\r\n\r\n## C#\r\n * Unknown fields are now preserved by default.\r\n * Floating point values are now bitwise compared, affecting message equality check and `Contains()` API in map and repeated fields.\r\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8497769", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/8497769/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/8497769/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.0", + "id": 8497769, + "node_id": "MDc6UmVsZWFzZTg0OTc3Njk=", + "tag_name": "v3.5.0", + "target_commitish": "3.5.x", + "name": "Protocol Buffers v3.5.0", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-11-13T18:47:29Z", + "published_at": "2017-11-13T19:59:44Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5358507", + "id": 5358507, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNTg1MDc=", + "name": "protobuf-all-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 6643422, + "download_count": 17029, + "created_at": "2017-11-15T23:05:50Z", + "updated_at": "2017-11-15T23:05:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-all-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5358506", + "id": 5358506, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNTg1MDY=", + "name": "protobuf-all-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 8610000, + "download_count": 7903, + "created_at": "2017-11-15T23:05:50Z", + "updated_at": "2017-11-15T23:05:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-all-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334594", + "id": 5334594, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTQ=", + "name": "protobuf-cpp-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4269335, + "download_count": 20625, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334585", + "id": 5334585, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODU=", + "name": "protobuf-cpp-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5281431, + "download_count": 10713, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334593", + "id": 5334593, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTM=", + "name": "protobuf-csharp-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4582740, + "download_count": 344, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-csharp-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334584", + "id": 5334584, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODQ=", + "name": "protobuf-csharp-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5748525, + "download_count": 1532, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-csharp-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334592", + "id": 5334592, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTI=", + "name": "protobuf-java-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4739082, + "download_count": 1563, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-java-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334583", + "id": 5334583, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODM=", + "name": "protobuf-java-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5977909, + "download_count": 3017, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-java-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334591", + "id": 5334591, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTE=", + "name": "protobuf-js-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4426035, + "download_count": 332, + "created_at": "2017-11-13T19:54:07Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-js-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334582", + "id": 5334582, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODI=", + "name": "protobuf-js-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5536414, + "download_count": 587, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-js-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334590", + "id": 5334590, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1OTA=", + "name": "protobuf-objectivec-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4717355, + "download_count": 165, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-objectivec-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334581", + "id": 5334581, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODE=", + "name": "protobuf-objectivec-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5900276, + "download_count": 347, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-objectivec-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334586", + "id": 5334586, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODY=", + "name": "protobuf-php-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4613185, + "download_count": 401, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-php-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334578", + "id": 5334578, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1Nzg=", + "name": "protobuf-php-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5732176, + "download_count": 401, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-php-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334588", + "id": 5334588, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODg=", + "name": "protobuf-python-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4560124, + "download_count": 2736, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-python-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334580", + "id": 5334580, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODA=", + "name": "protobuf-python-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5676817, + "download_count": 2836, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-python-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334587", + "id": 5334587, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1ODc=", + "name": "protobuf-ruby-3.5.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4552961, + "download_count": 135, + "created_at": "2017-11-13T19:54:06Z", + "updated_at": "2017-11-13T19:54:09Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-ruby-3.5.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5334579", + "id": 5334579, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzMzQ1Nzk=", + "name": "protobuf-ruby-3.5.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5615381, + "download_count": 86, + "created_at": "2017-11-13T19:54:05Z", + "updated_at": "2017-11-13T19:54:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protobuf-ruby-3.5.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345337", + "id": 5345337, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzMzc=", + "name": "protoc-3.5.0-linux-aarch_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1324915, + "download_count": 639, + "created_at": "2017-11-14T18:46:56Z", + "updated_at": "2017-11-14T18:46:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-linux-aarch_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345340", + "id": 5345340, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDA=", + "name": "protoc-3.5.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1335046, + "download_count": 408, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345339", + "id": 5345339, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzMzk=", + "name": "protoc-3.5.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1379309, + "download_count": 399547, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345342", + "id": 5345342, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDI=", + "name": "protoc-3.5.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1920165, + "download_count": 217, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345341", + "id": 5345341, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDE=", + "name": "protoc-3.5.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1868368, + "download_count": 174647, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/5345343", + "id": 5345343, + "node_id": "MDEyOlJlbGVhc2VBc3NldDUzNDUzNDM=", + "name": "protoc-3.5.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1256007, + "download_count": 16244, + "created_at": "2017-11-14T18:46:57Z", + "updated_at": "2017-11-14T18:46:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.5.0/protoc-3.5.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.5.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.5.0", + "body": "## Planned Future Changes\r\n * Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.5.0 or 3.6.0 release, after unknown fields semantic changes are finished. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## General\r\n * Unknown fields are now preserved in proto3 for most of the language implementations for proto3 by default. See the per-language section for details.\r\n * reserve keyword are now supported in enums\r\n\r\n## C++\r\n * Proto3 messages are now preserving unknown fields by default. If you rely on unknowns fields being dropped. Please use DiscardUnknownFields() explicitly.\r\n * Deprecated the `unsafe_arena_release_*` and `unsafe_arena_add_allocated_*` methods for string fields.\r\n * Added move constructor and move assignment to RepeatedField, RepeatedPtrField and google::protobuf::Any.\r\n * Added perfect forwarding in Arena::CreateMessage\r\n * In-progress experimental support for implicit weak fields with lite protos. This feature allows the linker to strip out more unused messages and reduce binary size.\r\n * Various performance optimizations.\r\n\r\n## Java\r\n * Proto3 messages are now preserving unknown fields by default. If you’d like to drop unknown fields, please use the DiscardUnknownFieldsParser API. For example:\r\n```java\r\n Parser parser = DiscardUnknownFieldsParser.wrap(Foo.parser());\r\n Foo foo = parser.parseFrom(input);\r\n```\r\n * Added a new `CodedInputStream` decoder for `Iterable` with direct ByteBuffers.\r\n * `TextFormat` now prints unknown length-delimited fields as messages if possible.\r\n * `FieldMaskUtil.merge()` no longer creates unnecessary empty messages when a message field is unset in both source message and destination message.\r\n * Various performance optimizations.\r\n\r\n## Python\r\n * Proto3 messages are now preserving unknown fields by default. Use `message.DiscardUnknownFields()` to drop unknown fields.\r\n * Add FieldDescriptor.file in generated code.\r\n * Add descriptor pool `FindOneofByName` in pure python.\r\n * Change unknown enum values into unknown field set .\r\n * Add more Python dict/list compatibility for `Struct`/`ListValue`.\r\n * Add utf-8 support for `text_format.Merge()/Parse()`.\r\n * Support numeric unknown enum values for proto3 JSON format.\r\n * Add warning for Unexpected end-group tag in cpp extension.\r\n\r\n## PHP\r\n * Proto3 messages are now preserving unknown fields.\r\n * Provide well known type messages in runtime.\r\n * Add prefix ‘PB’ to generated class of reserved names.\r\n * Fixed all conformance tests for encode/decode json in php runtime. C extension needs more work.\r\n\r\n## Objective-C\r\n * Fixed some issues around copying of messages with unknown fields and then mutating the unknown fields in the copy.\r\n\r\n## C#\r\n * Added unknown field support in JsonParser.\r\n * Fixed oneof message field merge.\r\n * Simplify parsing messages from array slices.\r\n\r\n## Ruby\r\n * Unknown fields are now preserved by default.\r\n * Fixed several bugs for segment fault.\r\n\r\n## Javascript\r\n * Decoder can handle both paced and unpacked data no matter how the proto is defined.\r\n * Decoder now accept long varint for 32 bit integers." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7776142", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7776142/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/7776142/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.1", + "id": 7776142, + "node_id": "MDc6UmVsZWFzZTc3NzYxNDI=", + "tag_name": "v3.4.1", + "target_commitish": "master", + "name": "Protocol Buffers v3.4.1", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-09-14T19:24:28Z", + "published_at": "2017-09-15T22:32:03Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837110", + "id": 4837110, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMTA=", + "name": "protobuf-cpp-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4274863, + "download_count": 54743, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837101", + "id": 4837101, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDE=", + "name": "protobuf-cpp-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5282063, + "download_count": 17486, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837109", + "id": 4837109, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDk=", + "name": "protobuf-csharp-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4584979, + "download_count": 884, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-csharp-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837100", + "id": 4837100, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDA=", + "name": "protobuf-csharp-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5745337, + "download_count": 3219, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-csharp-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837108", + "id": 4837108, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDg=", + "name": "protobuf-java-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4740609, + "download_count": 3428, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-java-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837098", + "id": 4837098, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTg=", + "name": "protobuf-java-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5969759, + "download_count": 8315, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-java-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837107", + "id": 4837107, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDc=", + "name": "protobuf-javanano-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4344875, + "download_count": 319, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-javanano-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837099", + "id": 4837099, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTk=", + "name": "protobuf-javanano-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5393151, + "download_count": 452, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-javanano-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837106", + "id": 4837106, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDY=", + "name": "protobuf-js-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4432501, + "download_count": 601, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-js-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837095", + "id": 4837095, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTU=", + "name": "protobuf-js-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5536984, + "download_count": 1224, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-js-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837102", + "id": 4837102, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDI=", + "name": "protobuf-objectivec-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4721493, + "download_count": 435, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-objectivec-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837097", + "id": 4837097, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTc=", + "name": "protobuf-objectivec-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5898495, + "download_count": 798, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-objectivec-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837103", + "id": 4837103, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDM=", + "name": "protobuf-php-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4567499, + "download_count": 690, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-php-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837093", + "id": 4837093, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTM=", + "name": "protobuf-php-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5657205, + "download_count": 741, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-php-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837104", + "id": 4837104, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDQ=", + "name": "protobuf-python-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4559061, + "download_count": 6863, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-python-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837096", + "id": 4837096, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTY=", + "name": "protobuf-python-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5669755, + "download_count": 6574, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-python-3.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837105", + "id": 4837105, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcxMDU=", + "name": "protobuf-ruby-3.4.1.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4549873, + "download_count": 257, + "created_at": "2017-09-15T22:26:33Z", + "updated_at": "2017-09-15T22:26:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-ruby-3.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4837094", + "id": 4837094, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4MzcwOTQ=", + "name": "protobuf-ruby-3.4.1.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5607256, + "download_count": 417, + "created_at": "2017-09-15T22:26:32Z", + "updated_at": "2017-09-15T22:26:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.1/protobuf-ruby-3.4.1.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.4.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.4.1", + "body": "This is mostly a bug fix release on runtime packages. It is safe to use 3.4.0 protoc packages for this release.\r\n* Fixed the missing files in 3.4.0 tarballs, affecting windows and cmake users.\r\n* C#: Fixed dotnet target platform to be net45 again.\r\n* Ruby: Fixed a segmentation error when using maps in multi-threaded cases.\r\n* PHP: php_generic_service file level option tag number (in descriptor.proto) has been reassigned to avoid conflicts." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7354501", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/7354501/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/7354501/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.0", + "id": 7354501, + "node_id": "MDc6UmVsZWFzZTczNTQ1MDE=", + "tag_name": "v3.4.0", + "target_commitish": "3.4.x", + "name": "Protocol Buffers v3.4.0", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-08-15T23:39:12Z", + "published_at": "2017-08-15T23:57:38Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588492", + "id": 4588492, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0OTI=", + "name": "protobuf-cpp-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4268226, + "download_count": 44822, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-cpp-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588487", + "id": 4588487, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODc=", + "name": "protobuf-cpp-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5267370, + "download_count": 8427, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-cpp-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588491", + "id": 4588491, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0OTE=", + "name": "protobuf-csharp-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4577020, + "download_count": 629, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-csharp-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588483", + "id": 4588483, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODM=", + "name": "protobuf-csharp-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5730643, + "download_count": 1951, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-csharp-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588490", + "id": 4588490, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0OTA=", + "name": "protobuf-java-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4732134, + "download_count": 5399, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-java-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588478", + "id": 4588478, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0Nzg=", + "name": "protobuf-java-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5955061, + "download_count": 4115, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-java-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588489", + "id": 4588489, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODk=", + "name": "protobuf-js-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4425440, + "download_count": 469, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-js-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588480", + "id": 4588480, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODA=", + "name": "protobuf-js-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5522292, + "download_count": 790, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-js-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588488", + "id": 4588488, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODg=", + "name": "protobuf-objectivec-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4712330, + "download_count": 393, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-objectivec-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588482", + "id": 4588482, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODI=", + "name": "protobuf-objectivec-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5883799, + "download_count": 552, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-objectivec-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588486", + "id": 4588486, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODY=", + "name": "protobuf-php-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4558384, + "download_count": 655, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-php-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588481", + "id": 4588481, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODE=", + "name": "protobuf-php-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5641513, + "download_count": 606, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-php-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588484", + "id": 4588484, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODQ=", + "name": "protobuf-python-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4551285, + "download_count": 12329, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-python-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588477", + "id": 4588477, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0Nzc=", + "name": "protobuf-python-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5655059, + "download_count": 6915, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-python-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588485", + "id": 4588485, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0ODU=", + "name": "protobuf-ruby-3.4.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4541659, + "download_count": 251, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-ruby-3.4.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588479", + "id": 4588479, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODg0Nzk=", + "name": "protobuf-ruby-3.4.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5592549, + "download_count": 210, + "created_at": "2017-08-15T23:57:01Z", + "updated_at": "2017-08-15T23:57:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protobuf-ruby-3.4.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588205", + "id": 4588205, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDU=", + "name": "protoc-3.4.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1346738, + "download_count": 1621, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588201", + "id": 4588201, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDE=", + "name": "protoc-3.4.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1389600, + "download_count": 314379, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588202", + "id": 4588202, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDI=", + "name": "protoc-3.4.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1872491, + "download_count": 731, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588204", + "id": 4588204, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDQ=", + "name": "protoc-3.4.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1820351, + "download_count": 30606, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/4588203", + "id": 4588203, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ1ODgyMDM=", + "name": "protoc-3.4.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1245321, + "download_count": 64941, + "created_at": "2017-08-15T22:59:04Z", + "updated_at": "2017-08-15T22:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.4.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.4.0", + "body": "## Planned Future Changes\r\n * Preserve unknown fields in proto3: We are going to bring unknown fields back into proto3. In this release, some languages start to support preserving unknown fields in proto3, controlled by flags/options. Some languages also introduce explicit APIs to drop unknown fields for migration. Please read the change log sections by languages for details. See [general timeline and plan](https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view) and [issues and discussions](https://github.com/google/protobuf/issues/272)\r\n\r\n * Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.5.0 or 3.6.0 release, after unknown fields semantic changes are finished. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## General\r\n * Extension ranges now accept options and are customizable.\r\n * ```reserve``` keyword now supports ```max``` in field number ranges, e.g. ```reserve 1000 to max;```\r\n\r\n## C++\r\n * Proto3 messages are now able to preserve unknown fields. The default behavior is still to drop unknowns, which will be flipped in a future release. If you rely on unknowns fields being dropped. Please use ```Message::DiscardUnknownFields()``` explicitly.\r\n * Packable proto3 fields are now packed by default in serialization.\r\n * Following C++11 features are introduced when C++11 is available:\r\n - move-constructor and move-assignment are introduced to messages\r\n - Repeated fields constructor now takes ```std::initializer_list```\r\n - rvalue setters are introduced for string fields\r\n * Experimental Table-Driven parsing and serialization available to test. To enable it, pass in table_driven_parsing table_driven_serialization protoc generator flags for C++\r\n\r\n ```$ protoc --cpp_out=table_driven_parsing,table_driven_serialization:./ test.proto```\r\n\r\n * lite generator parameter supported by the generator. Once set, all generated files, use lite runtime regardless of the optimizer_for setting in the .proto file.\r\n * Various optimizations to make C++ code more performant on PowerPC platform\r\n * Fixed maps data corruption when the maps are modified by both reflection API and generated API.\r\n * Deterministic serialization on maps reflection now uses stable sort.\r\n * file() accessors are introduced to various *Descriptor classes to make writing template function easier.\r\n * ```ByteSize()``` and ```SpaceUsed()``` are deprecated.Use ```ByteSizeLong()``` and ```SpaceUsedLong()``` instead\r\n * Consistent hash function is used for maps in DEBUG and NDEBUG build.\r\n * \"using namespace std\" is removed from stubs/common.h\r\n * Various performance optimizations and bug fixes\r\n\r\n## Java\r\n * Introduced new parser API DiscardUnknownFieldsParser in preparation of proto3 unknown fields preservation change. Users who want to drop unknown fields should migrate to use this new parser API.\r\n For example:\r\n\r\n ```java\r\n Parser parser = DiscardUnknownFieldsParser.wrap(Foo.parser());\r\n Foo foo = parser.parseFrom(input);\r\n ```\r\n\r\n * Introduced new TextFormat API printUnicodeFieldValue() that prints field value without escaping unicode characters.\r\n * Added ```Durations.compare(Duration, Duration)``` and ```Timestamps.compare(Timestamp, Timestamp)```.\r\n * JsonFormat now accepts base64url encoded bytes fields.\r\n * Optimized CodedInputStream to do less copies when parsing large bytes fields.\r\n * Optimized TextFormat to allocate less memory when printing.\r\n\r\n## Python\r\n * SerializeToString API is changed to ```SerializeToString(self, **kwargs)```, deterministic parameter is accepted for deterministic serialization.\r\n * Added sort_keys parameter in json format to make the output deterministic.\r\n * Added indent parameter in json format.\r\n * Added extension support in json format.\r\n * Added ```__repr__``` support for repeated field in cpp implementation.\r\n * Added file in FieldDescriptor.\r\n * Added pretty-print filter to text format.\r\n * Services and method descriptors are always printed even if generic_service option is turned off.\r\n * Note: AppEngine 2.5 is deprecated on June 2017 that AppEngine 2.5 will never update protobuf runtime. Users who depend on AppEngine 2.5 should use old protoc.\r\n\r\n## PHP\r\n * Support PHP generic services. Specify file option ```php_generic_service=true``` to enable generating service interface.\r\n * Message, repeated and map fields setters take value instead of reference.\r\n * Added map iterator in c extension.\r\n * Support json  encode/decode.\r\n * Added more type info in getter/setter phpdoc\r\n * Fixed the problem that c extension and php implementation cannot be used together.\r\n * Added file option php_namespace to use custom php namespace instead of package.\r\n * Added fluent setter.\r\n * Added descriptor API in runtime for custom encode/decode.\r\n * Various bug fixes.\r\n\r\n## Objective-C\r\n * Fix for GPBExtensionRegistry copying and add tests.\r\n * Optimize GPBDictionary.m codegen to reduce size of overall library by 46K per architecture.\r\n * Fix some cases of reading of 64bit map values.\r\n * Properly error on a tag with field number zero.\r\n * Preserve unknown fields in proto3 syntax files.\r\n * Document the exceptions on some of the writing apis.\r\n\r\n## C#\r\n * Implemented ```IReadOnlyDictionary``` in ```MapField```\r\n * Added TryUnpack method for Any message in addition to Unpack.\r\n * Converted C# projects to MSBuild (csproj) format.\r\n\r\n## Ruby\r\n * Several bug fixes.\r\n\r\n## Javascript\r\n * Added support of field option js_type. Now one can specify the JS type of a 64-bit integer field to be string in the generated code by adding option ```[jstype = JS_STRING]``` on the field.\r\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/6229270", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/6229270/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/6229270/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.3.0", + "id": 6229270, + "node_id": "MDc6UmVsZWFzZTYyMjkyNzA=", + "tag_name": "v3.3.0", + "target_commitish": "master", + "name": "Protocol Buffers v3.3.0", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-04-29T00:23:19Z", + "published_at": "2017-05-04T22:49:52Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3804700", + "id": 3804700, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM4MDQ3MDA=", + "name": "protobuf-cpp-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4218377, + "download_count": 110789, + "created_at": "2017-05-04T22:49:46Z", + "updated_at": "2017-05-04T22:49:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3804701", + "id": 3804701, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM4MDQ3MDE=", + "name": "protobuf-cpp-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5209888, + "download_count": 17316, + "created_at": "2017-05-04T22:49:46Z", + "updated_at": "2017-05-04T22:49:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763180", + "id": 3763180, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODA=", + "name": "protobuf-csharp-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4527038, + "download_count": 1090, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-csharp-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763178", + "id": 3763178, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxNzg=", + "name": "protobuf-csharp-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5668485, + "download_count": 4652, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-csharp-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763176", + "id": 3763176, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxNzY=", + "name": "protobuf-java-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4673529, + "download_count": 6059, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:57Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-java-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763179", + "id": 3763179, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxNzk=", + "name": "protobuf-java-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5882236, + "download_count": 10381, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-java-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763182", + "id": 3763182, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODI=", + "name": "protobuf-js-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4304861, + "download_count": 2455, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-js-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763181", + "id": 3763181, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODE=", + "name": "protobuf-js-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5336404, + "download_count": 2252, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:31:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-js-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763183", + "id": 3763183, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODM=", + "name": "protobuf-objectivec-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4662054, + "download_count": 795, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-objectivec-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763184", + "id": 3763184, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODQ=", + "name": "protobuf-objectivec-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5817230, + "download_count": 1380, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-objectivec-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763185", + "id": 3763185, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODU=", + "name": "protobuf-php-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4485412, + "download_count": 1298, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-php-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763186", + "id": 3763186, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODY=", + "name": "protobuf-php-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5537794, + "download_count": 1352, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-php-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763189", + "id": 3763189, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODk=", + "name": "protobuf-python-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4492367, + "download_count": 22234, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-python-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763187", + "id": 3763187, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODc=", + "name": "protobuf-python-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5586094, + "download_count": 6054, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-python-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763188", + "id": 3763188, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxODg=", + "name": "protobuf-ruby-3.3.0.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4487580, + "download_count": 556, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-ruby-3.3.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3763190", + "id": 3763190, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjMxOTA=", + "name": "protobuf-ruby-3.3.0.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5529614, + "download_count": 387, + "created_at": "2017-04-29T00:31:56Z", + "updated_at": "2017-04-29T00:32:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protobuf-ruby-3.3.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764080", + "id": 3764080, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwODA=", + "name": "protoc-3.3.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1309442, + "download_count": 2608, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:00:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764079", + "id": 3764079, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwNzk=", + "name": "protoc-3.3.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1352576, + "download_count": 386355, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T05:59:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764078", + "id": 3764078, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwNzg=", + "name": "protoc-3.3.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1503324, + "download_count": 660, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:01:03Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764082", + "id": 3764082, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwODI=", + "name": "protoc-3.3.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1451625, + "download_count": 28352, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:03:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3764081", + "id": 3764081, + "node_id": "MDEyOlJlbGVhc2VBc3NldDM3NjQwODE=", + "name": "protoc-3.3.0-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1210198, + "download_count": 32447, + "created_at": "2017-04-29T05:59:02Z", + "updated_at": "2017-04-29T06:02:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.3.0/protoc-3.3.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.3.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.3.0", + "body": "## Planned Future Changes\r\n * There are some changes that are not included in this release but are planned for the near future:\r\n - Preserve unknown fields in proto3: please read this [doc](https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view) for the timeline and follow up this [github issue](https://github.com/google/protobuf/issues/272) for discussion.\r\n - Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.4.0 or 3.5.0 release. Please join this [github issue](https://github.com/google/protobuf/issues/2780) to provide your feedback.\r\n\r\n## C++\r\n * Fixed map fields serialization of DynamicMessage to correctly serialize both key and value regardless of their presence.\r\n * Parser now rejects field number 0 correctly.\r\n * New API Message::SpaceUsedLong() that’s equivalent to Message::SpaceUsed() but returns the value in size_t.\r\n * JSON support\r\n - New flag always_print_enums_as_ints in JsonPrintOptions.\r\n - New flag preserve_proto_field_names in JsonPrintOptions. It will instruct the JSON printer to use the original field name declared in the .proto file instead of converting them to lowerCamelCase when printing JSON.\r\n - JsonPrintOptions.always_print_primtive_fields now works for oneof message fields.\r\n - Fixed a bug that doesn’t allow different fields to set the same json_name value.\r\n - Fixed a performance bug that causes excessive memory copy when printing large messages.\r\n * Various performance optimizations.\r\n\r\n## Java\r\n * Map field setters eagerly validate inputs and throw NullPointerExceptions as appropriate.\r\n * Added ByteBuffer overloads to the generated parsing methods and the Parser interface.\r\n * proto3 enum's getNumber() method now throws on UNRECOGNIZED values.\r\n * Output of JsonFormat is now locale independent.\r\n\r\n## Python\r\n * Added FindServiceByName() in the pure-Python DescriptorPool. This works only for descriptors added with DescriptorPool.Add(). Generated descriptor_pool does not support this yet.\r\n * Added a descriptor_pool parameter for parsing Any in text_format.Parse().\r\n * descriptor_pool.FindFileContainingSymbol() now is able to find nested extensions.\r\n * Extending empty [] to repeated field now sets parent message presence.\r\n\r\n## PHP\r\n * Added file option php_class_prefix. The prefix will be prepended to all generated classes defined in the file.\r\n * When encoding, negative int32 values are sign-extended to int64.\r\n * Repeated/Map field setter accepts a regular PHP array. Type checking is done on the array elements.\r\n * encode/decode are renamed to serializeToString/mergeFromString.\r\n * Added mergeFrom, clear method on Message.\r\n * Fixed a bug that oneof accessor didn’t return the field name that is actually set.\r\n * C extension now works with php7.\r\n * This is the first GA release of PHP. We guarantee that old generated code can always work with new runtime and new generated code.\r\n\r\n## Objective-C\r\n * Fixed help for GPBTimestamp for dates before the epoch that contain fractional seconds.\r\n * Added GPBMessageDropUnknownFieldsRecursively() to remove unknowns from a message and any sub messages.\r\n * Addressed a threading race in extension registration/lookup.\r\n * Increased the max message parsing depth to 100 to match the other languages.\r\n * Removed some use of dispatch_once in favor of atomic compare/set since it needs to be heap based.\r\n * Fixes for new Xcode 8.3 warnings.\r\n\r\n## C#\r\n * Fixed MapField.Values.CopyTo, which would throw an exception unnecessarily if provided exactly the right size of array to copy to.\r\n * Fixed enum JSON formatting when multiple names mapped to the same numeric value.\r\n * Added JSON formatting option to format enums as integers.\r\n * Modified RepeatedField to implement IReadOnlyList.\r\n * Introduced the start of custom option handling; it's not as pleasant as it might be, but the information is at least present. We expect to extend code generation to improve this in the future.\r\n * Introduced ByteString.FromStream and ByteString.FromStreamAsync to efficiently create a ByteString from a stream.\r\n * Added whole-message deprecation, which decorates the class with [Obsolete].\r\n\r\n## Ruby\r\n * Fixed Message#to_h for messages with map fields.\r\n * Fixed memcpy() in binary gems to work for old glibc, without breaking the build for non-glibc libc’s like musl.\r\n\r\n## Javascript\r\n * Added compatibility tests for version 3.0.0.\r\n * Added conformance tests.\r\n * Fixed serialization of extensions: we need to emit a value even if it is falsy (like the number 0).\r\n * Use closurebuilder.py in favor of calcdeps.py for compiling JavaScript." + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5291438", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5291438/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/5291438/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.2.0", + "id": 5291438, + "node_id": "MDc6UmVsZWFzZTUyOTE0Mzg=", + "tag_name": "v3.2.0", + "target_commitish": "master", + "name": "Protocol Buffers v3.2.0", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2017-01-27T23:03:40Z", + "published_at": "2017-02-17T19:53:08Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075410", + "id": 3075410, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTA=", + "name": "protobuf-cpp-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4148324, + "download_count": 32055, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-cpp-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075411", + "id": 3075411, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTE=", + "name": "protobuf-cpp-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5139444, + "download_count": 13605, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-cpp-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075412", + "id": 3075412, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTI=", + "name": "protobuf-csharp-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4440220, + "download_count": 736, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-csharp-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075413", + "id": 3075413, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTM=", + "name": "protobuf-csharp-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5575195, + "download_count": 3370, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-csharp-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075414", + "id": 3075414, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTQ=", + "name": "protobuf-java-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4599172, + "download_count": 4183, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-java-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075415", + "id": 3075415, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTU=", + "name": "protobuf-java-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5811811, + "download_count": 6630, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-java-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075418", + "id": 3075418, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTg=", + "name": "protobuf-js-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4237559, + "download_count": 2149, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-js-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075419", + "id": 3075419, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MTk=", + "name": "protobuf-js-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5270870, + "download_count": 1808, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-js-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075420", + "id": 3075420, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjA=", + "name": "protobuf-objectivec-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4585356, + "download_count": 903, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-objectivec-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075421", + "id": 3075421, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjE=", + "name": "protobuf-objectivec-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5747803, + "download_count": 1161, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-objectivec-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075422", + "id": 3075422, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjI=", + "name": "protobuf-php-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4399867, + "download_count": 1019, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-php-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075423", + "id": 3075423, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjM=", + "name": "protobuf-php-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5451037, + "download_count": 885, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-php-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075424", + "id": 3075424, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjQ=", + "name": "protobuf-python-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4422343, + "download_count": 9672, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-python-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075425", + "id": 3075425, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjU=", + "name": "protobuf-python-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5517969, + "download_count": 9190, + "created_at": "2017-01-28T02:28:31Z", + "updated_at": "2017-01-28T02:28:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-python-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075426", + "id": 3075426, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0MjY=", + "name": "protobuf-ruby-3.2.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4411454, + "download_count": 273, + "created_at": "2017-01-28T02:28:32Z", + "updated_at": "2017-01-28T02:28:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-ruby-3.2.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3075427", + "id": 3075427, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwNzU0Mjc=", + "name": "protobuf-ruby-3.2.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5448090, + "download_count": 278, + "created_at": "2017-01-28T02:28:32Z", + "updated_at": "2017-01-28T02:28:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protobuf-ruby-3.2.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089849", + "id": 3089849, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NDk=", + "name": "protoc-3.2.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1289753, + "download_count": 1252, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089850", + "id": 3089850, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTA=", + "name": "protoc-3.2.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1330859, + "download_count": 781697, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089851", + "id": 3089851, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTE=", + "name": "protoc-3.2.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1475588, + "download_count": 515, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089852", + "id": 3089852, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTI=", + "name": "protoc-3.2.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1425967, + "download_count": 88079, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3089853", + "id": 3089853, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwODk4NTM=", + "name": "protoc-3.2.0-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1193879, + "download_count": 51344, + "created_at": "2017-01-30T18:32:24Z", + "updated_at": "2017-01-30T18:32:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0/protoc-3.2.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.2.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.2.0", + "body": "## General\n- Added protoc version number to protoc plugin protocol. It can be used by\n protoc plugin to detect which version of protoc is used with the plugin and\n mitigate known problems in certain version of protoc.\n\n## C++\n- The default parsing byte size limit has been raised from 64MB to 2GB.\n- Added rvalue setters for non-arena string fields.\n- Enabled debug logging for Android.\n- Fixed a double-free problem when using Reflection::SetAllocatedMessage()\n with extension fields.\n- Fixed several deterministic serialization bugs:\n- MessageLite::SerializeAsString() now respects the global deterministic\n serialization flag.\n- Extension fields are serialized deterministically as well. Fixed protocol\n compiler to correctly report importing-self as an error.\n- Fixed FileDescriptor::DebugString() to print custom options correctly.\n- Various performance/codesize optimizations and cleanups.\n\n## Java\n- The default parsing byte size limit has been raised from 64MB to 2GB.\n- Added recursion limit when parsing JSON.\n- Fixed a bug that enumType.getDescriptor().getOptions() doesn't have custom\n options.\n- Fixed generated code to support field numbers up to 2^29-1.\n\n## Python\n- You can now assign NumPy scalars/arrays (np.int32, np.int64) to protobuf\n fields, and assigning other numeric types has been optimized for\n performance.\n- Pure-Python: message types are now garbage-collectable.\n- Python/C++: a lot of internal cleanup/refactoring.\n\n## PHP (Alpha)\n- For 64-bit integers type (int64/uint64/sfixed64/fixed64/sint64), use PHP\n integer on 64-bit environment and PHP string on 32-bit environment.\n- PHP generated code also conforms to PSR-4 now.\n- Fixed ZTS build for c extension.\n- Fixed c extension build on Mac.\n- Fixed c extension build on 32-bit linux.\n- Fixed the bug that message without namespace is not found in the descriptor\n pool. (#2240)\n- Fixed the bug that repeated field is not iterable in c extension.\n- Message names Empty will be converted to GPBEmpty in generated code.\n- Added phpdoc in generated files.\n- The released API is almost stable. Unless there is large problem, we won't\n change it. See\n https://developers.google.com/protocol-buffers/docs/reference/php-generated\n for more details.\n\n## Objective-C\n- Added support for push/pop of the stream limit on CodedInputStream for\n anyone doing manual parsing.\n\n## C#\n- No changes.\n\n## Ruby\n- Message objects now support #respond_to? for field getters/setters.\n- You can now compare “message == non_message_object” and it will return false\n instead of throwing an exception.\n- JRuby: fixed #hashCode to properly reflect the values in the message.\n\n## Javascript\n- Deserialization of repeated fields no longer has quadratic performance\n behavior.\n- UTF-8 encoding/decoding now properly supports high codepoints.\n- Added convenience methods for some well-known types: Any, Struct, and\n Timestamp. These make it easier to convert data between native JavaScript\n types and the well-known protobuf types.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5200729", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/5200729/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/5200729/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.2.0rc2", + "id": 5200729, + "node_id": "MDc6UmVsZWFzZTUyMDA3Mjk=", + "tag_name": "v3.2.0rc2", + "target_commitish": "master", + "name": "Protocol Buffers v3.2.0rc2", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2017-01-18T23:14:38Z", + "published_at": "2017-01-19T01:25:37Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016879", + "id": 3016879, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4Nzk=", + "name": "protobuf-cpp-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4147791, + "download_count": 1500, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-cpp-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016880", + "id": 3016880, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODA=", + "name": "protobuf-cpp-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5144659, + "download_count": 1424, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-cpp-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016881", + "id": 3016881, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODE=", + "name": "protobuf-csharp-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4440148, + "download_count": 252, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-csharp-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016882", + "id": 3016882, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODI=", + "name": "protobuf-csharp-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5581363, + "download_count": 478, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-csharp-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016883", + "id": 3016883, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODM=", + "name": "protobuf-java-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4598801, + "download_count": 431, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:32Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-java-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016884", + "id": 3016884, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODQ=", + "name": "protobuf-java-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5818304, + "download_count": 776, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-java-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016885", + "id": 3016885, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODU=", + "name": "protobuf-javanano-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4217007, + "download_count": 166, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-javanano-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016886", + "id": 3016886, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODY=", + "name": "protobuf-javanano-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5256002, + "download_count": 180, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-javanano-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016887", + "id": 3016887, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODc=", + "name": "protobuf-js-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4237496, + "download_count": 187, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-js-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016888", + "id": 3016888, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODg=", + "name": "protobuf-js-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5276389, + "download_count": 260, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-js-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016889", + "id": 3016889, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4ODk=", + "name": "protobuf-objectivec-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4585081, + "download_count": 173, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-objectivec-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016890", + "id": 3016890, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTA=", + "name": "protobuf-objectivec-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5754275, + "download_count": 195, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:35Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-objectivec-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016891", + "id": 3016891, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTE=", + "name": "protobuf-php-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4399466, + "download_count": 213, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-php-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016892", + "id": 3016892, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTI=", + "name": "protobuf-php-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5456855, + "download_count": 228, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-php-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016893", + "id": 3016893, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTM=", + "name": "protobuf-python-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4422603, + "download_count": 1215, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-python-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016894", + "id": 3016894, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTQ=", + "name": "protobuf-python-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5523810, + "download_count": 1157, + "created_at": "2017-01-19T00:52:28Z", + "updated_at": "2017-01-19T00:52:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-python-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016895", + "id": 3016895, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTU=", + "name": "protobuf-ruby-3.2.0rc2.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4402385, + "download_count": 152, + "created_at": "2017-01-19T00:52:29Z", + "updated_at": "2017-01-19T00:52:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-ruby-3.2.0rc2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3016896", + "id": 3016896, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTY4OTY=", + "name": "protobuf-ruby-3.2.0rc2.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5444899, + "download_count": 148, + "created_at": "2017-01-19T00:52:29Z", + "updated_at": "2017-01-19T00:52:38Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protobuf-ruby-3.2.0rc2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017023", + "id": 3017023, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjM=", + "name": "protoc-3.2.0rc2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1289753, + "download_count": 218, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017024", + "id": 3017024, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjQ=", + "name": "protoc-3.2.0rc2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1330859, + "download_count": 7421, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017025", + "id": 3017025, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjU=", + "name": "protoc-3.2.0rc2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1475588, + "download_count": 170, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017026", + "id": 3017026, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjY=", + "name": "protoc-3.2.0rc2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1425967, + "download_count": 843, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/3017027", + "id": 3017027, + "node_id": "MDEyOlJlbGVhc2VBc3NldDMwMTcwMjc=", + "name": "protoc-3.2.0rc2-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1193876, + "download_count": 2175, + "created_at": "2017-01-19T01:25:24Z", + "updated_at": "2017-01-19T01:25:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.2.0rc2/protoc-3.2.0rc2-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.2.0rc2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.2.0rc2", + "body": "Release candidate for v3.2.0.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4219533", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4219533/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/4219533/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.1.0", + "id": 4219533, + "node_id": "MDc6UmVsZWFzZTQyMTk1MzM=", + "tag_name": "v3.1.0", + "target_commitish": "3.1.x", + "name": "Protocol Buffers v3.1.0", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2016-09-24T02:12:45Z", + "published_at": "2016-09-24T02:39:45Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368385", + "id": 2368385, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODU=", + "name": "protobuf-cpp-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4109863, + "download_count": 354545, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-cpp-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368388", + "id": 2368388, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODg=", + "name": "protobuf-cpp-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5089433, + "download_count": 18638, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-cpp-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368384", + "id": 2368384, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODQ=", + "name": "protobuf-csharp-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4400099, + "download_count": 1561, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-csharp-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368389", + "id": 2368389, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODk=", + "name": "protobuf-csharp-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5521752, + "download_count": 3121, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-csharp-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368386", + "id": 2368386, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODY=", + "name": "protobuf-java-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4557846, + "download_count": 4488, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-java-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368387", + "id": 2368387, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzODc=", + "name": "protobuf-java-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5758590, + "download_count": 7661, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-java-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368393", + "id": 2368393, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTM=", + "name": "protobuf-javanano-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4178575, + "download_count": 1078, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:12Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-javanano-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368394", + "id": 2368394, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTQ=", + "name": "protobuf-javanano-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5200448, + "download_count": 889, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:13Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-javanano-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368390", + "id": 2368390, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTA=", + "name": "protobuf-js-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4195734, + "download_count": 1923, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-js-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368391", + "id": 2368391, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTE=", + "name": "protobuf-js-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5215181, + "download_count": 1963, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-js-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368392", + "id": 2368392, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTI=", + "name": "protobuf-objectivec-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4542396, + "download_count": 776, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:12Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-objectivec-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368395", + "id": 2368395, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTU=", + "name": "protobuf-objectivec-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5690237, + "download_count": 1542, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:14Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-objectivec-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368396", + "id": 2368396, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTY=", + "name": "protobuf-php-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4344388, + "download_count": 899, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:14Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-php-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368400", + "id": 2368400, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjg0MDA=", + "name": "protobuf-php-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5365714, + "download_count": 934, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-php-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368397", + "id": 2368397, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTc=", + "name": "protobuf-python-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4377622, + "download_count": 20873, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:15Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-python-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368399", + "id": 2368399, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTk=", + "name": "protobuf-python-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5461413, + "download_count": 5235, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:15Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-python-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368398", + "id": 2368398, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjgzOTg=", + "name": "protobuf-ruby-3.1.0.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4364631, + "download_count": 429, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:14Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-ruby-3.1.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2368401", + "id": 2368401, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzNjg0MDE=", + "name": "protobuf-ruby-3.1.0.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5389485, + "download_count": 354, + "created_at": "2016-09-24T02:30:05Z", + "updated_at": "2016-09-24T02:30:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protobuf-ruby-3.1.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380449", + "id": 2380449, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NDk=", + "name": "protoc-3.1.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1246949, + "download_count": 1172, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380453", + "id": 2380453, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTM=", + "name": "protoc-3.1.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1287347, + "download_count": 836096, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380452", + "id": 2380452, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTI=", + "name": "protoc-3.1.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1458268, + "download_count": 545, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380450", + "id": 2380450, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTA=", + "name": "protoc-3.1.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1405142, + "download_count": 18036, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2380451", + "id": 2380451, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIzODA0NTE=", + "name": "protoc-3.1.0-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1188785, + "download_count": 22310, + "created_at": "2016-09-27T00:17:03Z", + "updated_at": "2016-09-27T00:17:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.1.0/protoc-3.1.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.1.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.1.0", + "body": "## General\n- Proto3 support in PHP (alpha).\n- Various bug fixes.\n\n## C++\n- Added MessageLite::ByteSizeLong() that’s equivalent to\n MessageLite::ByteSize() but returns the value in size_t. Useful to check\n whether a message is over the 2G size limit that protobuf can support.\n- Moved default_instances to global variables. This allows default_instance\n addresses to be known at compile time.\n- Adding missing generic gcc 64-bit atomicops.\n- Restore New*Callback into google::protobuf namespace since these are used\n by the service stubs code\n- JSON support.\n - Fixed some conformance issues.\n- Fixed a JSON serialization bug for bytes fields.\n\n## Java\n- Fixed a bug in TextFormat that doesn’t accept empty repeated fields (i.e.,\n “field: [ ]”).\n- JSON support\n - Fixed JsonFormat to do correct snake_case-to-camelCase conversion for\n non-style-conforming field names.\n - Fixed JsonFormat to parse empty Any message correctly.\n - Added an option to JsonFormat.Parser to ignore unknown fields.\n- Experimental API\n - Added UnsafeByteOperations.unsafeWrap(byte[]) to wrap a byte array into\n ByteString without copy.\n\n## Python\n- JSON support\n - Fixed some conformance issues.\n\n## PHP (Alpha)\n- We have added the proto3 support for PHP via both a pure PHP package and a\n native c extension. The pure PHP package is intended to provide usability\n to wider range of PHP platforms, while the c extension is intended to\n provide higher performance. Both implementations provide the same runtime\n APIs and share the same generated code. Users don’t need to re-generate\n code for the same proto definition when they want to switch the\n implementation later. The pure PHP package is included in the php/src\n directory, and the c extension is included in the php/ext directory. \n \n Both implementations provide idiomatic PHP APIs:\n - All messages and enums are defined as PHP classes.\n - All message fields can only be accessed via getter/setter.\n - Both repeated field elements and map elements are stored in containers\n that act like a normal PHP array.\n \n Unlike several existing third-party PHP implementations for protobuf, our\n implementations are built on a \"strongly-typed\" philosophy: message fields\n and array/map containers will throw exceptions eagerly when values of the\n incorrect type (not including those that can be type converted, e.g.,\n double <-> integer <-> numeric string) are inserted.\n \n Currently, pure PHP runtime supports php5.5, 5.6 and 7 on linux. C\n extension runtime supports php5.5 and 5.6 on linux.\n \n See php/README.md for more details about installment. See\n https://developers.google.com/protocol-buffers/docs/phptutorial for more\n details about APIs.\n\n## Objective-C\n- Helpers are now provided for working the the Any well known type (see\n GPBWellKnownTypes.h for the api additions).\n- Some improvements in startup code (especially when extensions aren’t used).\n\n## Javascript\n- Fixed missing import of jspb.Map\n- Fixed valueWriterFn variable name\n\n## Ruby\n- Fixed hash computation for JRuby's RubyMessage\n- Make sure map parsing frames are GC-rooted.\n- Added API support for well-known types.\n\n## C#\n- Removed check on dependency in the C# reflection API.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4065428", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/4065428/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/4065428/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.2", + "id": 4065428, + "node_id": "MDc6UmVsZWFzZTQwNjU0Mjg=", + "tag_name": "v3.0.2", + "target_commitish": "3.0.x", + "name": "Protocol Buffers v3.0.2", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2016-09-06T22:40:51Z", + "published_at": "2016-09-06T22:54:42Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267854", + "id": 2267854, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTQ=", + "name": "protobuf-cpp-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4077714, + "download_count": 12606, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-cpp-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267847", + "id": 2267847, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDc=", + "name": "protobuf-cpp-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5041514, + "download_count": 2742, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-cpp-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267853", + "id": 2267853, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTM=", + "name": "protobuf-csharp-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4364571, + "download_count": 341, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-csharp-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267842", + "id": 2267842, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDI=", + "name": "protobuf-csharp-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5472818, + "download_count": 881, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-csharp-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267852", + "id": 2267852, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTI=", + "name": "protobuf-java-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4519235, + "download_count": 1105, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-java-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267841", + "id": 2267841, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDE=", + "name": "protobuf-java-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5700286, + "download_count": 1718, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-java-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267848", + "id": 2267848, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDg=", + "name": "protobuf-js-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4160840, + "download_count": 582, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-js-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267845", + "id": 2267845, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDU=", + "name": "protobuf-js-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5163086, + "download_count": 470, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-js-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267849", + "id": 2267849, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDk=", + "name": "protobuf-objectivec-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4504414, + "download_count": 287, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-objectivec-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267844", + "id": 2267844, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDQ=", + "name": "protobuf-objectivec-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5625211, + "download_count": 380, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-objectivec-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267851", + "id": 2267851, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTE=", + "name": "protobuf-python-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4341362, + "download_count": 3850, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-python-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267846", + "id": 2267846, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDY=", + "name": "protobuf-python-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5404825, + "download_count": 11089, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-python-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267850", + "id": 2267850, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NTA=", + "name": "protobuf-ruby-3.0.2.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4330600, + "download_count": 200, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-ruby-3.0.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2267843", + "id": 2267843, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNjc4NDM=", + "name": "protobuf-ruby-3.0.2.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5338051, + "download_count": 170, + "created_at": "2016-09-06T22:54:21Z", + "updated_at": "2016-09-06T22:54:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protobuf-ruby-3.0.2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272522", + "id": 2272522, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjI=", + "name": "protoc-3.0.2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1258450, + "download_count": 406, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272521", + "id": 2272521, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjE=", + "name": "protoc-3.0.2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1297257, + "download_count": 122955, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272524", + "id": 2272524, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjQ=", + "name": "protoc-3.0.2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1422393, + "download_count": 218, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272525", + "id": 2272525, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjU=", + "name": "protoc-3.0.2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1369223, + "download_count": 10234, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:08Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2272523", + "id": 2272523, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIyNzI1MjM=", + "name": "protoc-3.0.2-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1166025, + "download_count": 6358, + "created_at": "2016-09-07T17:05:57Z", + "updated_at": "2016-09-07T17:06:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.2/protoc-3.0.2-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.2", + "body": "## General\n- Various bug fixes.\n\n## Objective C\n- Fix for oneofs in proto3 syntax files where fields were set to the zero\n value.\n- Fix for embedded null character in strings.\n- CocoaDocs support\n\n## Ruby\n- Fixed memory corruption bug in parsing that could occur under GC pressure.\n\n## Javascript\n- jspb.Map is now properly exported to CommonJS modules.\n\n## C#\n- Removed legacy_enum_values flag.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3757284", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3757284/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3757284/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0", + "id": 3757284, + "node_id": "MDc6UmVsZWFzZTM3NTcyODQ=", + "tag_name": "v3.0.0", + "target_commitish": "3.0.0-GA", + "name": "Protocol Buffers v3.0.0", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2016-07-27T21:40:30Z", + "published_at": "2016-07-28T05:03:44Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058282", + "id": 2058282, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyODI=", + "name": "protobuf-cpp-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4075839, + "download_count": 77247, + "created_at": "2016-07-28T05:03:15Z", + "updated_at": "2016-07-28T05:03:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-cpp-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058275", + "id": 2058275, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzU=", + "name": "protobuf-cpp-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5038816, + "download_count": 18638, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-cpp-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058283", + "id": 2058283, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyODM=", + "name": "protobuf-csharp-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4362759, + "download_count": 1519, + "created_at": "2016-07-28T05:03:15Z", + "updated_at": "2016-07-28T05:03:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-csharp-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058274", + "id": 2058274, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzQ=", + "name": "protobuf-csharp-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5470033, + "download_count": 5642, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-csharp-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058280", + "id": 2058280, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyODA=", + "name": "protobuf-java-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4517208, + "download_count": 6973, + "created_at": "2016-07-28T05:03:15Z", + "updated_at": "2016-07-28T05:03:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-java-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058271", + "id": 2058271, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzE=", + "name": "protobuf-java-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5697581, + "download_count": 13342, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-java-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058279", + "id": 2058279, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzk=", + "name": "protobuf-js-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4158764, + "download_count": 1268, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-js-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058268", + "id": 2058268, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNjg=", + "name": "protobuf-js-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5160378, + "download_count": 2282, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:16Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-js-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067174", + "id": 2067174, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzQ=", + "name": "protobuf-lite-3.0.1-sources.jar", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-java-archive", + "state": "uploaded", + "size": 500270, + "download_count": 783, + "created_at": "2016-07-29T16:59:04Z", + "updated_at": "2016-07-29T16:59:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-lite-3.0.1-sources.jar" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058277", + "id": 2058277, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzc=", + "name": "protobuf-objectivec-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4487992, + "download_count": 866, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:23Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-objectivec-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058273", + "id": 2058273, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzM=", + "name": "protobuf-objectivec-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5608546, + "download_count": 1384, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-objectivec-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058276", + "id": 2058276, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzY=", + "name": "protobuf-python-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4339278, + "download_count": 161947, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-python-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058272", + "id": 2058272, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzI=", + "name": "protobuf-python-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5401909, + "download_count": 10434, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:17Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-python-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058278", + "id": 2058278, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNzg=", + "name": "protobuf-ruby-3.0.0.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4328117, + "download_count": 624, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:24Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-ruby-3.0.0.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2058269", + "id": 2058269, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNTgyNjk=", + "name": "protobuf-ruby-3.0.0.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5334911, + "download_count": 541, + "created_at": "2016-07-28T05:03:14Z", + "updated_at": "2016-07-28T05:03:17Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protobuf-ruby-3.0.0.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062561", + "id": 2062561, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NjE=", + "name": "protoc-3.0.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1257713, + "download_count": 2104, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062560", + "id": 2062560, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NjA=", + "name": "protoc-3.0.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1296281, + "download_count": 208190, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062562", + "id": 2062562, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NjI=", + "name": "protoc-3.0.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1421215, + "download_count": 756, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2062559", + "id": 2062559, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjI1NTk=", + "name": "protoc-3.0.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1369203, + "download_count": 16456, + "created_at": "2016-07-28T20:54:17Z", + "updated_at": "2016-07-28T20:54:18Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067374", + "id": 2067374, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjczNzQ=", + "name": "protoc-3.0.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1165663, + "download_count": 28990, + "created_at": "2016-07-29T17:52:52Z", + "updated_at": "2016-07-29T17:52:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-3.0.0-win32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067178", + "id": 2067178, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzg=", + "name": "protoc-gen-javalite-3.0.0-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 823037, + "download_count": 341, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067175", + "id": 2067175, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzU=", + "name": "protoc-gen-javalite-3.0.0-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 843176, + "download_count": 878, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067179", + "id": 2067179, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzk=", + "name": "protoc-gen-javalite-3.0.0-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 841851, + "download_count": 329, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067177", + "id": 2067177, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjcxNzc=", + "name": "protoc-gen-javalite-3.0.0-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 816051, + "download_count": 940, + "created_at": "2016-07-29T16:59:30Z", + "updated_at": "2016-07-29T16:59:31Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2067376", + "id": 2067376, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwNjczNzY=", + "name": "protoc-gen-javalite-3.0.0-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 766116, + "download_count": 2366, + "created_at": "2016-07-29T17:53:51Z", + "updated_at": "2016-07-29T17:53:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0/protoc-gen-javalite-3.0.0-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0", + "body": "# Version 3.0.0\n\nThis change log summarizes all the changes since the last stable release\n(v2.6.1). See the last section about changes since v3.0.0-beta-4.\n\n## Proto3\n- Introduced Protocol Buffers language version 3 (aka proto3).\n \n When protocol buffers was initially open sourced it implemented Protocol\n Buffers language version 2 (aka proto2), which is why the version number\n started from v2.0.0. From v3.0.0, a new language version (proto3) is\n introduced while the old version (proto2) will continue to be supported.\n \n The main intent of introducing proto3 is to clean up protobuf before pushing\n the language as the foundation of Google's new API platform. In proto3, the\n language is simplified, both for ease of use and to make it available in a\n wider range of programming languages. At the same time a few features are\n added to better support common idioms found in APIs.\n \n The following are the main new features in language version 3:\n 1. Removal of field presence logic for primitive value fields, removal of\n required fields, and removal of default values. This makes proto3\n significantly easier to implement with open struct representations, as\n in languages like Android Java, Objective C, or Go.\n 2. Removal of unknown fields.\n 3. Removal of extensions, which are instead replaced by a new standard\n type called Any.\n 4. Fix semantics for unknown enum values.\n 5. Addition of maps (back-ported to proto2)\n 6. Addition of a small set of standard types for representation of time,\n dynamic data, etc (back-ported to proto2)\n 7. A well-defined encoding in JSON as an alternative to binary proto\n encoding.\n \n A new notion \"syntax\" is introduced to specify whether a .proto file\n uses proto2 or proto3:\n \n ```\n // foo.proto\n syntax = \"proto3\";\n message Bar {...}\n ```\n \n If omitted, the protocol buffer compiler generates a warning and \"proto2\" is\n used as the default. This warning will be turned into an error in a future\n release.\n \n We recommend that new Protocol Buffers users use proto3. However, we do not\n generally recommend that existing users migrate from proto2 from proto3 due\n to API incompatibility, and we will continue to support proto2 for a long\n time.\n \n Other significant changes in proto3.\n- Explicit \"optional\" keyword are disallowed in proto3 syntax, as fields are\n optional by default; required fields are no longer supported.\n- Removed non-zero default values and field presence logic for non-message\n fields. e.g. has_xxx() methods are removed; primitive fields set to default\n values (0 for numeric fields, empty for string/bytes fields) will be skipped\n during serialization.\n- Group fields are no longer supported in proto3 syntax.\n- Changed repeated primitive fields to use packed serialization by default in\n proto3 (implemented for C++, Java, Python in this release). The user can\n still disable packed serialization by setting packed to false for now.\n- Added well-known type protos (any.proto, empty.proto, timestamp.proto,\n duration.proto, etc.). Users can import and use these protos just like\n regular proto files. Additional runtime support are available for each\n language.\n- Proto3 JSON is supported in several languages (fully supported in C++, Java,\n Python and C# partially supported in Ruby). The JSON spec is defined in the\n proto3 language guide:\n \n https://developers.google.com/protocol-buffers/docs/proto3#json\n \n We will publish a more detailed spec to define the exact behavior of\n proto3-conformant JSON serializers and parsers. Until then, do not rely\n on specific behaviors of the implementation if it’s not documented in\n the above spec.\n- Proto3 enforces strict UTF-8 checking. Parsing will fail if a string\n field contains non UTF-8 data.\n\n## General\n- Introduced new language implementations (C#, JavaScript, Ruby, Objective-C)\n to proto3.\n- Added support for map fields (implemented in both proto2 and proto3).\n Map fields can be declared using the following syntax:\n \n ```\n message Foo {\n map values = 1;\n }\n ```\n \n The data of a map field is stored in memory as an unordered map and\n can be accessed through generated accessors.\n- Added a \"reserved\" keyword in both proto2 and proto3 syntax. Users can use\n this keyword to declare reserved field numbers and names to prevent them\n from being reused by other fields in the same message.\n \n To reserve field numbers, add a reserved declaration in your message:\n \n ```\n message TestMessage {\n reserved 2, 15, 9 to 11, 3;\n }\n ```\n \n This reserves field numbers 2, 3, 9, 10, 11 and 15. If a user uses any of\n these as field numbers, the protocol buffer compiler will report an error.\n \n Field names can also be reserved:\n \n ```\n message TestMessage {\n reserved \"foo\", \"bar\";\n }\n ```\n- Added a deterministic serialization API (currently available in C++). The\n deterministic serialization guarantees that given a binary, equal messages\n will be serialized to the same bytes. This allows applications like\n MapReduce to group equal messages based on the serialized bytes. The\n deterministic serialization is, however, NOT canonical across languages; it\n is also unstable across different builds with schema changes due to unknown\n fields. Users who need canonical serialization, e.g. persistent storage in\n a canonical form, fingerprinting, etc, should define their own\n canonicalization specification and implement the serializer using reflection\n APIs rather than relying on this API.\n- Added a new field option \"json_name\". By default proto field names are\n converted to \"lowerCamelCase\" in proto3 JSON format. This option can be\n used to override this behavior and specify a different JSON name for the\n field.\n- Added conformance tests to ensure implementations are following proto3 JSON\n specification.\n\n## C++\n- Added arena allocation support (for both proto2 and proto3).\n \n Profiling shows memory allocation and deallocation constitutes a significant\n fraction of CPU-time spent in protobuf code and arena allocation is a\n technique introduced to reduce this cost. With arena allocation, new\n objects are allocated from a large piece of preallocated memory and\n deallocation of these objects is almost free. Early adoption shows 20% to\n 50% improvement in some Google binaries.\n \n To enable arena support, add the following option to your .proto file:\n \n ```\n option cc_enable_arenas = true;\n ```\n \n The protocol buffer compiler will generate additional code to make the generated\n message classes work with arenas. This does not change the existing API\n of protobuf messages and does not affect wire format. Your existing code\n should continue to work after adding this option. In the future we will\n make this option enabled by default.\n \n To actually take advantage of arena allocation, you need to use the arena\n APIs when creating messages. A quick example of using the arena API:\n \n ```\n {\n google::protobuf::Arena arena;\n // Allocate a protobuf message in the arena.\n MyMessage* message = Arena::CreateMessage(&arena);\n // All submessages will be allocated in the same arena.\n if (!message->ParseFromString(data)) {\n // Deal with malformed input data.\n }\n // Must not delete the message here. It will be deleted automatically\n // when the arena is destroyed.\n }\n ```\n \n Currently arena allocation does not work with map fields. Enabling arenas in a .proto\n file containing map fields will result in compile errors in the generated\n code. This will be addressed in a future release.\n- Added runtime support for the Any type. To use Any in your proto file, first\n import the definition of Any:\n \n ```\n // foo.proto\n import \"google/protobuf/any.proto\";\n message Foo {\n google.protobuf.Any any_field = 1;\n }\n message Bar {\n int32 value = 1;\n }\n ```\n \n Then in C++ you can access the Any field using PackFrom()/UnpackTo()\n methods:\n \n ```\n Foo foo;\n Bar bar = ...;\n foo.mutable_any_field()->PackFrom(bar);\n ...\n if (foo.any_field().IsType()) {\n foo.any_field().UnpackTo(&bar);\n ...\n }\n ```\n- In text format, the entries of a map field will be sorted by key.\n- Introduced new utility functions/classes in the google/protobuf/util\n directory:\n - MessageDifferencer: compare two proto messages and report their\n differences.\n - JsonUtil: support converting protobuf binary format to/from JSON.\n - TimeUtil: utility functions to work with well-known types Timestamp\n and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- Introduced a deterministic serialization API in\n CodedOutputStream::SetSerializationDeterministic(bool). See the notes about\n deterministic serialization in the General section.\n\n## Java\n- Introduced a new util package that will be distributed as a separate\n artifact in maven. It contains:\n - JsonFormat: convert proto messages to/from JSON.\n - Timestamps/Durations: utility functions to work with Timestamp and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- Introduced an ExperimentalApi annotation. Annotated APIs are experimental\n and are subject to change in a backward incompatible way in future releases.\n- Introduced zero-copy serialization as an ExperimentalApi\n - Introduction of the `ByteOutput` interface. This is similar to\n `OutputStream` but provides semantics for lazy writing (i.e. no\n immediate copy required) of fields that are considered to be immutable.\n - `ByteString` now supports writing to a `ByteOutput`, which will directly\n expose the internals of the `ByteString` (i.e. `byte[]` or `ByteBuffer`)\n to the `ByteOutput` without copying.\n - `CodedOutputStream` now supports writing to a `ByteOutput`. `ByteString`\n instances that are too large to fit in the internal buffer will be\n (lazily) written to the `ByteOutput` directly.\n - This allows applications using large `ByteString` fields to avoid\n duplication of these fields entirely. Such an application can supply a\n `ByteOutput` that chains together the chunks received from\n `CodedOutputStream` before forwarding them onto the IO system.\n- Other related changes to `CodedOutputStream`\n - Additional use of `sun.misc.Unsafe` where possible to perform fast\n access to `byte[]` and `ByteBuffer` values and avoiding unnecessary\n range checking.\n - `ByteBuffer`-backed `CodedOutputStream` now writes directly to the\n `ByteBuffer` rather than to an intermediate array.\n- Performance optimizations for String fields serialization.\n- The static PARSER in each generated message is deprecated, and it will\n be removed in a future release. A static parser() getter is generated\n for each message type instead.\n- File option \"java_generate_equals_and_hash\" is now deprecated. equals() and\n hashCode() methods are generated by default.\n\n## Python\n- Python has received several updates, most notably support for proto3\n semantics in any .proto file that declares syntax=\"proto3\".\n Messages declared in proto3 files no longer represent field presence\n for scalar fields (number, enums, booleans, or strings). You can\n no longer call HasField() for such fields, and they are serialized\n based on whether they have a non-zero/empty/false value.\n- One other notable change is in the C++-accelerated implementation.\n Descriptor objects (which describe the protobuf schema and allow\n reflection over it) are no longer duplicated between the Python\n and C++ layers. The Python descriptors are now simple wrappers\n around the C++ descriptors. This change should significantly\n reduce the memory usage of programs that use a lot of message\n types.\n- Added map support.\n - maps now have a dict-like interface (msg.map_field[key] = value)\n - existing code that modifies maps via the repeated field interface\n will need to be updated.\n- Added proto3 JSON format utility. It includes support for all field types and a few well-known types.\n- Added runtime support for Any, Timestamp, Duration and FieldMask.\n- \"[ ]\" is now accepted for repeated scalar fields in text format parser.\n- Removed legacy Python 2.5 support.\n- Moved to a single Python 2.x/3.x-compatible codebase\n\n## Ruby\n- We have added proto3 support for Ruby via a native C/JRuby extension.\n \n For the moment we only support proto3. Proto2 support is planned, but not\n yet implemented. Proto3 JSON is supported, but the special JSON mappings\n for the well-known types are not yet implemented.\n \n The Ruby extension itself is included in the ruby/ directory, and details on\n building and installing the extension are in ruby/README.md. The extension\n is also be published as a Ruby gem. Code generator support is included as\n part of `protoc` with the `--ruby_out` flag.\n \n The Ruby extension implements a user-friendly DSL to define message types\n (also generated by the code generator from `.proto` files). Once a message\n type is defined, the user may create instances of the message that behave in\n ways idiomatic to Ruby. For example:\n - Message fields are present as ordinary Ruby properties (getter method\n `foo` and setter method `foo=`).\n - Repeated field elements are stored in a container that acts like a native\n Ruby array, and map elements are stored in a container that acts like a\n native Ruby hashmap.\n - The usual well-known methods, such as `#to_s`, `#dup`, and the like, are\n present.\n \n Unlike several existing third-party Ruby extensions for protobuf, this\n extension is built on a \"strongly-typed\" philosophy: message fields and\n array/map containers will throw exceptions eagerly when values of the\n incorrect type are inserted.\n \n See ruby/README.md for details.\n\n## Objective-C\n- Objective-C includes a code generator and a native objective-c runtime\n library. By adding “--objc_out” to protoc, the code generator will generate\n a header(_.pbobjc.h) and an implementation file(_.pbobjc.m) for each proto\n file.\n \n In this first release, the generated interface provides: enums, messages,\n field support(single, repeated, map, oneof), proto2 and proto3 syntax\n support, parsing and serialization. It’s compatible with ARC and non-ARC\n usage. In addition, users can access it via the swift bridging header.\n\n## C#\n- C# support is derived from the project at\n https://github.com/jskeet/protobuf-csharp-port, which is now in maintenance mode.\n- The primary differences between the previous project and the proto3 version are that\n message types are now mutable, and the codegen is integrated in protoc\n- There are two NuGet packages: Google.Protobuf (the support library) and\n Google.Protobuf.Tools (containing protoc)\n- Target platforms now .NET 4.5, selected portable subsets and .NET Core.\n- Null values are used to represent \"no value\" for message type fields, and for wrapper\n types such as Int32Value which map to C# nullable value types.\n- Proto3 semantics supported; proto2 files are prohibited for C# codegen.\n- Enum values are PascalCased, and if there's a prefix which matches the\n name of the enum, that is removed (so an enum `COLOR` with a value\n `COLOR_LIGHT_GRAY` would generate a value of just `LightGray`).\n\n## JavaScript\n- Added proto2/proto3 support for JavaScript. The runtime is written in pure\n JavaScript and works in browsers and in Node.js. To generate JavaScript\n code for your proto, invoke protoc with \"--js_out\". See js/README.md\n for more build instructions.\n- JavaScript has support for binary protobuf format, but not proto3 JSON.\n There is also no support for reflection, since the code size impacts from this\n are often not the right choice for the browser.\n- There is support for both CommonJS imports and Closure `goog.require()`.\n\n## Lite\n- Supported Proto3 lite-runtime in Java for mobile platforms.\n A new \"lite\" generator parameter was introduced in the protoc for C++ for\n Proto3 syntax messages. Example usage:\n \n ```\n ./protoc --cpp_out=lite:$OUTPUT_PATH foo.proto\n ```\n \n The protoc will treat the current input and all the transitive dependencies\n as LITE. The same generator parameter must be used to generate the\n dependencies.\n \n In Proto3 syntax files, \"optimized_for=LITE_RUNTIME\" is no longer supported.\n \n For Java, --javalite_out code generator is supported as a separate compiler\n plugin in a separate branch.\n- Performance optimizations for Java Lite runtime on Android:\n - Reduced allocations\n - Reduced method overhead after ProGuarding\n - Reduced code size after ProGuarding\n- Java Lite protos now implement deep equals/hashCode/toString\n\n## Compatibility Notice\n- v3.0.0 is the first API stable release of the v3.x series. We do not expect\n any future API breaking changes.\n- For C++, Java Lite and Objective-C, source level compatibility is\n guaranteed. Upgrading from v3.0.0 to newer minor version releases will be\n source compatible. For example, if your code compiles against protobuf\n v3.0.0, it will continue to compile after you upgrade protobuf library to\n v3.1.0.\n- For other languages, both source level compatibility and binary level\n compatibility are guaranteed. For example, if you have a Java binary built\n against protobuf v3.0.0. After switching the protobuf runtime binary to\n v3.1.0, your built binary should continue to work.\n- Compatibility is only guaranteed for documented API and documented\n behaviors. If you are using undocumented API (e.g., use anything in the C++\n internal namespace), it can be broken by minor version releases in an\n undetermined manner.\n\n## Changes since v3.0.0-beta-4\n\n### Ruby\n- When you assign a string field `a.string_field = “X”`, we now call\n #encode(UTF-8) on the string and freeze the copy. This saves you from\n needing to ensure the string is already encoded as UTF-8. It also prevents\n you from mutating the string after it has been assigned (this is how we\n ensure it stays valid UTF-8).\n- The generated file for `foo.proto` is now `foo_pb.rb` instead of just\n `foo.rb`. This makes it easier to see which imports/requires are from\n protobuf generated code, and also prevents conflicts with any `foo.rb` file\n you might have written directly in Ruby. It is a backward-incompatible\n change: you will need to update all of your `require` statements.\n- For package names like `foo_bar`, we now translate this to the Ruby module\n `FooBar`. This is more idiomatic Ruby than what we used to do (`Foo_bar`).\n\n### JavaScript\n- Scalar fields like numbers and boolean now return defaults instead of\n `undefined` or `null` when they are unset. You can test for presence\n explicitly by calling `hasFoo()`, which we now generate for scalar fields in\n proto2.\n\n### Java Lite\n- Java Lite is now implemented as a separate plugin, maintained in the\n `javalite` branch. Both lite runtime and protoc artifacts will be available\n in Maven.\n\n### C#\n- Target platforms now .NET 4.5, selected portable subsets and .NET Core.\n- legacy_enum_values option is no longer supported.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3685225", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3685225/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3685225/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-4", + "id": 3685225, + "node_id": "MDc6UmVsZWFzZTM2ODUyMjU=", + "tag_name": "v3.0.0-beta-4", + "target_commitish": "master", + "name": "Protocol Buffers v3.0.0-beta-4", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2016-07-18T21:46:05Z", + "published_at": "2016-07-20T00:40:38Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009152", + "id": 2009152, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxNTI=", + "name": "protobuf-cpp-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4064930, + "download_count": 1755, + "created_at": "2016-07-18T21:51:17Z", + "updated_at": "2016-07-18T21:51:19Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-cpp-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009155", + "id": 2009155, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxNTU=", + "name": "protobuf-cpp-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5039995, + "download_count": 1713, + "created_at": "2016-07-18T21:51:17Z", + "updated_at": "2016-07-18T21:51:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-cpp-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016612", + "id": 2016612, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTI=", + "name": "protobuf-csharp-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4361267, + "download_count": 238, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-csharp-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016610", + "id": 2016610, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTA=", + "name": "protobuf-csharp-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5481933, + "download_count": 694, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-csharp-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016608", + "id": 2016608, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MDg=", + "name": "protobuf-java-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4499651, + "download_count": 452, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:48Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-java-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016613", + "id": 2016613, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTM=", + "name": "protobuf-java-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5699557, + "download_count": 818, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:49Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-java-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016616", + "id": 2016616, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTY=", + "name": "protobuf-javanano-3.0.0-alpha-7.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4141470, + "download_count": 233, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-javanano-3.0.0-alpha-7.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016617", + "id": 2016617, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTc=", + "name": "protobuf-javanano-3.0.0-alpha-7.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5162387, + "download_count": 327, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-javanano-3.0.0-alpha-7.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016618", + "id": 2016618, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTg=", + "name": "protobuf-js-3.0.0-alpha-7.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4154790, + "download_count": 225, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-js-3.0.0-alpha-7.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016620", + "id": 2016620, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MjA=", + "name": "protobuf-js-3.0.0-alpha-7.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5173182, + "download_count": 331, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-js-3.0.0-alpha-7.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016611", + "id": 2016611, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTE=", + "name": "protobuf-objectivec-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4487226, + "download_count": 199, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-objectivec-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016609", + "id": 2016609, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MDk=", + "name": "protobuf-objectivec-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5621031, + "download_count": 335, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-objectivec-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016614", + "id": 2016614, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTQ=", + "name": "protobuf-python-3.0.0-beta-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4336363, + "download_count": 1097, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-python-3.0.0-beta-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016615", + "id": 2016615, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTU=", + "name": "protobuf-python-3.0.0-beta-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5413005, + "download_count": 1337, + "created_at": "2016-07-20T00:39:46Z", + "updated_at": "2016-07-20T00:39:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-python-3.0.0-beta-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016619", + "id": 2016619, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MTk=", + "name": "protobuf-ruby-3.0.0-alpha-7.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4321880, + "download_count": 194, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-ruby-3.0.0-alpha-7.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2016621", + "id": 2016621, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTY2MjE=", + "name": "protobuf-ruby-3.0.0-alpha-7.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5346945, + "download_count": 196, + "created_at": "2016-07-20T00:39:59Z", + "updated_at": "2016-07-20T00:40:02Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protobuf-ruby-3.0.0-alpha-7.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009106", + "id": 2009106, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxMDY=", + "name": "protoc-3.0.0-beta-4-linux-x86-32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1254614, + "download_count": 261, + "created_at": "2016-07-18T21:39:58Z", + "updated_at": "2016-07-18T21:39:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-linux-x86-32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009105", + "id": 2009105, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxMDU=", + "name": "protoc-3.0.0-beta-4-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1294788, + "download_count": 9354, + "created_at": "2016-07-18T21:39:58Z", + "updated_at": "2016-07-18T21:39:59Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2014997", + "id": 2014997, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTQ5OTc=", + "name": "protoc-3.0.0-beta-4-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1642210, + "download_count": 198, + "created_at": "2016-07-19T19:06:28Z", + "updated_at": "2016-07-19T19:06:30Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2015017", + "id": 2015017, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMTUwMTc=", + "name": "protoc-3.0.0-beta-4-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1595153, + "download_count": 1508, + "created_at": "2016-07-19T19:10:45Z", + "updated_at": "2016-07-19T19:10:46Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/2009109", + "id": 2009109, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDkxMDk=", + "name": "protoc-3.0.0-beta-4-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2721435, + "download_count": 24840, + "created_at": "2016-07-18T21:39:58Z", + "updated_at": "2016-07-18T21:40:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-4/protoc-3.0.0-beta-4-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-4", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-4", + "body": "# Version 3.0.0-beta-4\n\n## General\n- Added a deterministic serialization API for C++. The deterministic\n serialization guarantees that given a binary, equal messages will be\n serialized to the same bytes. This allows applications like MapReduce to\n group equal messages based on the serialized bytes. The deterministic\n serialization is, however, NOT canonical across languages; it is also\n unstable across different builds with schema changes due to unknown fields.\n Users who need canonical serialization, e.g. persistent storage in a\n canonical form, fingerprinting, etc, should define their own\n canonicalization specification and implement the serializer using reflection\n APIs rather than relying on this API.\n- Added OneofOptions. You can now define custom options for oneof groups.\n \n ```\n import \"google/protobuf/descriptor.proto\";\n extend google.protobuf.OneofOptions {\n optional int32 my_oneof_extension = 12345;\n }\n message Foo {\n oneof oneof_group {\n (my_oneof_extension) = 54321;\n ...\n }\n }\n ```\n\n## C++ (beta)\n- Introduced a deterministic serialization API in\n CodedOutputStream::SetSerializationDeterministic(bool). See the notes about\n deterministic serialization in the General section.\n- Added google::protobuf::Map::swap() to swap two map fields.\n- Fixed a memory leak when calling Reflection::ReleaseMessage() on a message\n allocated on arena.\n- Improved error reporting when parsing text format protos.\n- JSON\n - Added a new parser option to ignore unknown fields when parsing JSON.\n - Added convenient methods for message to/from JSON conversion.\n- Various performance optimizations.\n\n## Java (beta)\n- File option \"java_generate_equals_and_hash\" is now deprecated. equals() and\n hashCode() methods are generated by default.\n- Added a new JSON printer option \"omittingInsignificantWhitespace\" to produce\n a more compact JSON output. The printer will pretty-print by default.\n- Updated Java runtime to be compatible with 2.5.0/2.6.1 generated protos.\n\n## Python (beta)\n- Added support to pretty print Any messages in text format.\n- Added a flag to ignore unknown fields when parsing JSON.\n- Bugfix: \"@type\" field of a JSON Any message is now correctly put before\n other fields.\n\n## Objective-C (beta)\n- Updated the code to support compiling with more compiler warnings\n enabled. (Issue 1616)\n- Exposing more detailed errors for parsing failures. (PR 1623)\n- Small (breaking) change to the naming of some methods on the support classes\n for map<>. There were collisions with the system provided KVO support, so\n the names were changed to avoid those issues. (PR 1699)\n- Fixed for proper Swift bridging of error handling during parsing. (PR 1712)\n- Complete support for generating sources that will go into a Framework and\n depend on generated sources from other Frameworks. (Issue 1457)\n\n## C# (beta)\n- RepeatedField optimizations.\n- Support for .NET Core.\n- Minor bug fixes.\n- Ability to format a single value in JsonFormatter (advanced usage only).\n- Modifications to attributes applied to generated code.\n\n## Javascript (alpha)\n- Maps now have a real map API instead of being treated as repeated fields.\n- Well-known types are now provided in the google-protobuf package, and the\n code generator knows to require() them from that package.\n- Bugfix: non-canonical varints are correctly decoded.\n\n## Ruby (alpha)\n- Accessors for oneof fields now return default values instead of nil.\n\n## Java Lite\n- Java lite support is removed from protocol compiler. It will be supported\n as a protocol compiler plugin in a separate code branch.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3443087", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3443087/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3443087/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-3.1", + "id": 3443087, + "node_id": "MDc6UmVsZWFzZTM0NDMwODc=", + "tag_name": "v3.0.0-beta-3.1", + "target_commitish": "objc-framework-fix", + "name": "Protocol Buffers v3.0.0-beta-3.1", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2016-06-14T00:02:01Z", + "published_at": "2016-06-14T18:42:06Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1907911", + "id": 1907911, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE5MDc5MTE=", + "name": "protoc-3.0.0-beta-3.1-osx-fat.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3127935, + "download_count": 830, + "created_at": "2016-06-27T20:11:20Z", + "updated_at": "2016-06-27T20:11:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3.1/protoc-3.0.0-beta-3.1-osx-fat.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1848036", + "id": 1848036, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE4NDgwMzY=", + "name": "protoc-3.0.0-beta-3.1-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1606235, + "download_count": 759, + "created_at": "2016-06-14T18:36:56Z", + "updated_at": "2016-06-14T18:36:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3.1/protoc-3.0.0-beta-3.1-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1848047", + "id": 1848047, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE4NDgwNDc=", + "name": "protoc-3.0.0-beta-3.1-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1562139, + "download_count": 4989, + "created_at": "2016-06-14T18:41:19Z", + "updated_at": "2016-06-14T18:41:20Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3.1/protoc-3.0.0-beta-3.1-osx-x86_64.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-3.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-3.1", + "body": "Fix iOS framework.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3236555", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/3236555/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/3236555/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-3", + "id": 3236555, + "node_id": "MDc6UmVsZWFzZTMyMzY1NTU=", + "tag_name": "v3.0.0-beta-3", + "target_commitish": "beta-3", + "name": "Protocol Buffers v3.0.0-beta-3", + "draft": false, + "author": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2016-05-16T18:34:04Z", + "published_at": "2016-05-16T20:32:35Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692215", + "id": 1692215, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTU=", + "name": "protobuf-cpp-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4030692, + "download_count": 4247, + "created_at": "2016-05-16T20:28:24Z", + "updated_at": "2016-05-16T20:28:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-cpp-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692216", + "id": 1692216, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTY=", + "name": "protobuf-cpp-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5005561, + "download_count": 148161, + "created_at": "2016-05-16T20:28:24Z", + "updated_at": "2016-05-16T20:28:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-cpp-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692217", + "id": 1692217, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTc=", + "name": "protobuf-csharp-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4314255, + "download_count": 346, + "created_at": "2016-05-16T20:28:58Z", + "updated_at": "2016-05-16T20:29:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-csharp-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692218", + "id": 1692218, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTg=", + "name": "protobuf-csharp-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5434342, + "download_count": 1365, + "created_at": "2016-05-16T20:28:58Z", + "updated_at": "2016-05-16T20:29:01Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-csharp-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692219", + "id": 1692219, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMTk=", + "name": "protobuf-java-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4430590, + "download_count": 1066, + "created_at": "2016-05-16T20:29:09Z", + "updated_at": "2016-05-16T20:29:10Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-java-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692220", + "id": 1692220, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjA=", + "name": "protobuf-java-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5610383, + "download_count": 2173, + "created_at": "2016-05-16T20:29:09Z", + "updated_at": "2016-05-16T20:29:11Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-java-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692226", + "id": 1692226, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjY=", + "name": "protobuf-javanano-3.0.0-alpha-6.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4099533, + "download_count": 209, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-javanano-3.0.0-alpha-6.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692225", + "id": 1692225, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjU=", + "name": "protobuf-javanano-3.0.0-alpha-6.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5119405, + "download_count": 278, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-javanano-3.0.0-alpha-6.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692230", + "id": 1692230, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMzA=", + "name": "protobuf-js-3.0.0-alpha-6.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4104965, + "download_count": 264, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-js-3.0.0-alpha-6.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692228", + "id": 1692228, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjg=", + "name": "protobuf-js-3.0.0-alpha-6.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5112119, + "download_count": 430, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:54Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-js-3.0.0-alpha-6.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692222", + "id": 1692222, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjI=", + "name": "protobuf-objectivec-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4414606, + "download_count": 277, + "created_at": "2016-05-16T20:29:27Z", + "updated_at": "2016-05-16T20:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-objectivec-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692221", + "id": 1692221, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjE=", + "name": "protobuf-objectivec-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5524534, + "download_count": 506, + "created_at": "2016-05-16T20:29:27Z", + "updated_at": "2016-05-16T20:29:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-objectivec-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692223", + "id": 1692223, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjM=", + "name": "protobuf-python-3.0.0-beta-3.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4287166, + "download_count": 42463, + "created_at": "2016-05-16T20:29:45Z", + "updated_at": "2016-05-16T20:29:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-python-3.0.0-beta-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692224", + "id": 1692224, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjQ=", + "name": "protobuf-python-3.0.0-beta-3.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5361795, + "download_count": 1147, + "created_at": "2016-05-16T20:29:45Z", + "updated_at": "2016-05-16T20:29:47Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-python-3.0.0-beta-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692229", + "id": 1692229, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjk=", + "name": "protobuf-ruby-3.0.0-alpha-6.tar.gz", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4282057, + "download_count": 188, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-ruby-3.0.0-alpha-6.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1692227", + "id": 1692227, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2OTIyMjc=", + "name": "protobuf-ruby-3.0.0-alpha-6.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5303675, + "download_count": 182, + "created_at": "2016-05-16T20:30:49Z", + "updated_at": "2016-05-16T20:30:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protobuf-ruby-3.0.0-alpha-6.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704771", + "id": 1704771, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzE=", + "name": "protoc-3.0.0-beta-3-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1232898, + "download_count": 373, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704769", + "id": 1704769, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3Njk=", + "name": "protoc-3.0.0-beta-3-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1271885, + "download_count": 35048, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:04Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704770", + "id": 1704770, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzA=", + "name": "protoc-3.0.0-beta-3-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1604259, + "download_count": 222, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704772", + "id": 1704772, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzI=", + "name": "protoc-3.0.0-beta-3-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1553242, + "download_count": 1841, + "created_at": "2016-05-18T18:39:03Z", + "updated_at": "2016-05-18T18:39:05Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1704773", + "id": 1704773, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE3MDQ3NzM=", + "name": "protoc-3.0.0-beta-3-win32.zip", + "label": null, + "uploader": { + "login": "liujisi", + "id": 315593, + "node_id": "MDQ6VXNlcjMxNTU5Mw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/315593?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/liujisi", + "html_url": "https://github.com/liujisi", + "followers_url": "https://api.github.com/users/liujisi/followers", + "following_url": "https://api.github.com/users/liujisi/following{/other_user}", + "gists_url": "https://api.github.com/users/liujisi/gists{/gist_id}", + "starred_url": "https://api.github.com/users/liujisi/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/liujisi/subscriptions", + "organizations_url": "https://api.github.com/users/liujisi/orgs", + "repos_url": "https://api.github.com/users/liujisi/repos", + "events_url": "https://api.github.com/users/liujisi/events{/privacy}", + "received_events_url": "https://api.github.com/users/liujisi/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1142516, + "download_count": 5467, + "created_at": "2016-05-18T18:39:14Z", + "updated_at": "2016-05-18T18:39:15Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-3/protoc-3.0.0-beta-3-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-3", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-3", + "body": "# Version 3.0.0-beta-3\n\n## General\n- Supported Proto3 lite-runtime in C++/Java for mobile platforms.\n- Any type now supports APIs to specify prefixes other than\n type.googleapis.com\n- Removed javanano_use_deprecated_package option; Nano will always has its own\n \".nano\" package.\n\n## C++ (Beta)\n- Improved hash maps.\n - Improved hash maps comments. In particular, please note that equal hash\n maps will not necessarily have the same iteration order and\n serialization.\n - Added a new hash maps implementation that will become the default in a\n later release.\n- Arenas\n - Several inlined methods in Arena were moved to out-of-line to improve\n build performance and code size.\n - Added SpaceAllocatedAndUsed() to report both space used and allocated\n - Added convenient class UnsafeArenaAllocatedRepeatedPtrFieldBackInserter\n- Any\n - Allow custom type URL prefixes in Any packing.\n - TextFormat now expand the Any type rather than printing bytes.\n- Performance optimizations and various bug fixes.\n\n## Java (Beta)\n- Introduced an ExperimentalApi annotation. Annotated APIs are experimental\n and are subject to change in a backward incompatible way in future releases.\n- Introduced zero-copy serialization as an ExperimentalApi\n - Introduction of the `ByteOutput` interface. This is similar to\n `OutputStream` but provides semantics for lazy writing (i.e. no\n immediate copy required) of fields that are considered to be immutable.\n - `ByteString` now supports writing to a `ByteOutput`, which will directly\n expose the internals of the `ByteString` (i.e. `byte[]` or `ByteBuffer`)\n to the `ByteOutput` without copying.\n - `CodedOutputStream` now supports writing to a `ByteOutput`. `ByteString`\n instances that are too large to fit in the internal buffer will be\n (lazily) written to the `ByteOutput` directly.\n - This allows applications using large `ByteString` fields to avoid\n duplication of these fields entirely. Such an application can supply a\n `ByteOutput` that chains together the chunks received from\n `CodedOutputStream` before forwarding them onto the IO system.\n- Other related changes to `CodedOutputStream`\n - Additional use of `sun.misc.Unsafe` where possible to perform fast\n access to `byte[]` and `ByteBuffer` values and avoiding unnecessary\n range checking.\n - `ByteBuffer`-backed `CodedOutputStream` now writes directly to the\n `ByteBuffer` rather than to an intermediate array.\n- Improved lite-runtime.\n - Lite protos now implement deep equals/hashCode/toString\n - Significantly improved the performance of Builder#mergeFrom() and\n Builder#mergeDelimitedFrom()\n- Various bug fixes and small feature enhancement.\n - Fixed stack overflow when in hashCode() for infinite recursive oneofs.\n - Fixed the lazy field parsing in lite to merge rather than overwrite.\n - TextFormat now supports reporting line/column numbers on errors.\n - Updated to add appropriate @Override for better compiler errors.\n\n## Python (Beta)\n- Added JSON format for Any, Struct, Value and ListValue\n- \"[ ]\" is now accepted for both repeated scalar fields and repeated message\n fields in text format parser.\n- Numerical field name is now supported in text format.\n- Added DiscardUnknownFields API for python protobuf message.\n\n## Objective-C (Beta)\n- Proto comments now come over as HeaderDoc comments in the generated sources\n so Xcode can pick them up and display them.\n- The library headers have been updated to use HeaderDoc comments so Xcode can\n pick them up and display them.\n- The per message and per field overhead in both generated code and runtime\n object sizes was reduced.\n- Generated code now include deprecated annotations when the proto file\n included them.\n\n## C# (Beta)\n\n In general: some changes are breaking, which require regenerating messages.\n Most user-written code will not be impacted _except_ for the renaming of enum\n values.\n- Allow custom type URL prefixes in `Any` packing, and ignore them when\n unpacking\n- `protoc` is now in a separate NuGet package (Google.Protobuf.Tools)\n- New option: `internal_access` to generate internal classes\n- Enum values are now PascalCased, and if there's a prefix which matches the\n name of the enum, that is removed (so an enum `COLOR` with a value\n `COLOR_BLUE` would generate a value of just `Blue`). An option\n (`legacy_enum_values`) is temporarily available to disable this, but the\n option will be removed for GA.\n- `json_name` option is now honored\n- If group tags are encountered when parsing, they are validated more\n thoroughly (although we don't support actual groups)\n- NuGet dependencies are better specified\n- Breaking: `Preconditions` is renamed to `ProtoPreconditions`\n- Breaking: `GeneratedCodeInfo` is renamed to `GeneratedClrTypeInfo`\n- `JsonFormatter` now allows writing to a `TextWriter`\n- New interface, `ICustomDiagnosticMessage` to allow more compact\n representations from `ToString`\n- `CodedInputStream` and `CodedOutputStream` now implement `IDisposable`,\n which simply disposes of the streams they were constructed with\n- Map fields no longer support null values (in line with other languages)\n- Improvements in JSON formatting and parsing\n\n## Javascript (Alpha)\n- Better support for \"bytes\" fields: bytes fields can be read as either a\n base64 string or UInt8Array (in environments where TypedArray is supported).\n- New support for CommonJS imports. This should make it easier to use the\n JavaScript support in Node.js and tools like WebPack. See js/README.md for\n more information.\n- Some significant internal refactoring to simplify and modularize the code.\n\n## Ruby (Alpha)\n- JSON serialization now properly uses camelCased names, with a runtime option\n that will preserve original names from .proto files instead.\n- Well-known types are now included in the distribution.\n- Release now includes binary gems for Windows, Mac, and Linux instead of just\n source gems.\n- Bugfix for serializing oneofs.\n\n## C++/Java Lite (Alpha)\n\nA new \"lite\" generator parameter was introduced in the protoc for C++ and\nJava for Proto3 syntax messages. Example usage:\n\n```\n ./protoc --cpp_out=lite:$OUTPUT_PATH foo.proto\n```\n\nThe protoc will treat the current input and all the transitive dependencies\nas LITE. The same generator parameter must be used to generate the\ndependencies.\n\nIn Proto3 syntax files, \"optimized_for=LITE_RUNTIME\" is no longer supported.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/2348523", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/2348523/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/2348523/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-2", + "id": 2348523, + "node_id": "MDc6UmVsZWFzZTIzNDg1MjM=", + "tag_name": "v3.0.0-beta-2", + "target_commitish": "v3.0.0-beta-2", + "name": "Protocol Buffers v3.0.0-beta-2", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2015-12-30T21:35:10Z", + "published_at": "2015-12-30T21:36:30Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166411", + "id": 1166411, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTE=", + "name": "protobuf-cpp-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3962352, + "download_count": 14400, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-cpp-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166407", + "id": 1166407, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDc=", + "name": "protobuf-cpp-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 4921103, + "download_count": 9298, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-cpp-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166408", + "id": 1166408, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDg=", + "name": "protobuf-csharp-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4228543, + "download_count": 825, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-csharp-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166409", + "id": 1166409, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDk=", + "name": "protobuf-csharp-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5330247, + "download_count": 2833, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-csharp-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166410", + "id": 1166410, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTA=", + "name": "protobuf-java-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4328686, + "download_count": 2698, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:52Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-java-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166406", + "id": 1166406, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MDY=", + "name": "protobuf-java-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5477505, + "download_count": 5183, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:50Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-java-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166418", + "id": 1166418, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTg=", + "name": "protobuf-javanano-3.0.0-alpha-5.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4031642, + "download_count": 334, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-javanano-3.0.0-alpha-5.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166420", + "id": 1166420, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjA=", + "name": "protobuf-javanano-3.0.0-alpha-5.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5034923, + "download_count": 430, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-javanano-3.0.0-alpha-5.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166419", + "id": 1166419, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTk=", + "name": "protobuf-js-3.0.0-alpha-5.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4032391, + "download_count": 706, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:33Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-js-3.0.0-alpha-5.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166421", + "id": 1166421, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjE=", + "name": "protobuf-js-3.0.0-alpha-5.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5024582, + "download_count": 1125, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-js-3.0.0-alpha-5.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166413", + "id": 1166413, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTM=", + "name": "protobuf-objectivec-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4359689, + "download_count": 543, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:55Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-objectivec-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166414", + "id": 1166414, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTQ=", + "name": "protobuf-objectivec-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5449070, + "download_count": 803, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-objectivec-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166415", + "id": 1166415, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTU=", + "name": "protobuf-python-3.0.0-beta-2.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4211281, + "download_count": 10343, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:56Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-python-3.0.0-beta-2.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166412", + "id": 1166412, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MTI=", + "name": "protobuf-python-3.0.0-beta-2.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5268501, + "download_count": 8409, + "created_at": "2015-12-30T21:27:48Z", + "updated_at": "2015-12-30T21:27:54Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-python-3.0.0-beta-2.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166423", + "id": 1166423, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjM=", + "name": "protobuf-ruby-3.0.0-alpha-5.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4204014, + "download_count": 244, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-ruby-3.0.0-alpha-5.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166422", + "id": 1166422, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjY0MjI=", + "name": "protobuf-ruby-3.0.0-alpha-5.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5211211, + "download_count": 256, + "created_at": "2015-12-30T21:30:31Z", + "updated_at": "2015-12-30T21:30:34Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protobuf-ruby-3.0.0-alpha-5.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215864", + "id": 1215864, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4NjQ=", + "name": "protoc-3.0.0-beta-2-linux-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1198994, + "download_count": 611, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-linux-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215865", + "id": 1215865, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4NjU=", + "name": "protoc-3.0.0-beta-2-linux-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1235538, + "download_count": 272732, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:25Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-linux-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215866", + "id": 1215866, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4NjY=", + "name": "protoc-3.0.0-beta-2-osx-x86_32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1553529, + "download_count": 329, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-osx-x86_32.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1215867", + "id": 1215867, + "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMTU4Njc=", + "name": "protoc-3.0.0-beta-2-osx-x86_64.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1499581, + "download_count": 3615, + "created_at": "2016-01-15T22:58:24Z", + "updated_at": "2016-01-15T22:58:26Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-osx-x86_64.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/1166397", + "id": 1166397, + "node_id": "MDEyOlJlbGVhc2VBc3NldDExNjYzOTc=", + "name": "protoc-3.0.0-beta-2-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1130790, + "download_count": 10501, + "created_at": "2015-12-30T21:20:36Z", + "updated_at": "2015-12-30T21:20:37Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-2/protoc-3.0.0-beta-2-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-2", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-2", + "body": "# Version 3.0.0-beta-2\n\n## General\n- Introduced a new language implementation: JavaScript.\n- Added a new field option \"json_name\". By default proto field names are\n converted to \"lowerCamelCase\" in proto3 JSON format. This option can be\n used to override this behavior and specify a different JSON name for the\n field.\n- Added conformance tests to ensure implementations are following proto3 JSON\n specification.\n\n## C++ (Beta)\n- Various bug fixes and improvements to the JSON support utility:\n - Duplicate map keys in JSON are now rejected (i.e., translation will\n fail).\n - Fixed wire-format for google.protobuf.Value/ListValue.\n - Fixed precision loss when converting google.protobuf.Timestamp.\n - Fixed a bug when parsing invalid UTF-8 code points.\n - Fixed a memory leak.\n - Reduced call stack usage.\n\n## Java (Beta)\n- Cleaned up some unused methods on CodedOutputStream.\n- Presized lists for packed fields during parsing in the lite runtime to\n reduce allocations and improve performance.\n- Improved the performance of unknown fields in the lite runtime.\n- Introduced UnsafeByteStrings to support zero-copy ByteString creation.\n- Various bug fixes and improvements to the JSON support utility:\n - Fixed a thread-safety bug.\n - Added a new option “preservingProtoFieldNames” to JsonFormat.\n - Added a new option “includingDefaultValueFields” to JsonFormat.\n - Updated the JSON utility to comply with proto3 JSON specification.\n\n## Python (Beta)\n- Added proto3 JSON format utility. It includes support for all field types\n and a few well-known types except for Any and Struct.\n- Added runtime support for Any, Timestamp, Duration and FieldMask.\n- \"[ ]\" is now accepted for repeated scalar fields in text format parser.\n\n## Objective-C (Beta)\n- Various bug-fixes and code tweaks to pass more strict compiler warnings.\n- Now has conformance test coverage and is passing all tests.\n\n## C# (Beta)\n- Various bug-fixes.\n- Code generation: Files generated in directories based on namespace.\n- Code generation: Include comments from .proto files in XML doc\n comments (naively)\n- Code generation: Change organization/naming of \"reflection class\" (access\n to file descriptor)\n- Code generation and library: Add Parser property to MessageDescriptor,\n and introduce a non-generic parser type.\n- Library: Added TypeRegistry to support JSON parsing/formatting of Any.\n- Library: Added Any.Pack/Unpack support.\n- Library: Implemented JSON parsing.\n\n## Javascript (Alpha)\n- Added proto3 support for JavaScript. The runtime is written in pure\n JavaScript and works in browsers and in Node.js. To generate JavaScript\n code for your proto, invoke protoc with \"--js_out\". See js/README.md\n for more build instructions.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1728131", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1728131/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/1728131/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-beta-1", + "id": 1728131, + "node_id": "MDc6UmVsZWFzZTE3MjgxMzE=", + "tag_name": "v3.0.0-beta-1", + "target_commitish": "beta-1", + "name": "Protocol Buffers v3.0.0-beta-1", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2015-08-27T07:02:06Z", + "published_at": "2015-08-27T07:09:35Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820816", + "id": 820816, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxNg==", + "name": "protobuf-cpp-3.0.0-beta-1.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3980108, + "download_count": 9056, + "created_at": "2015-08-27T07:07:19Z", + "updated_at": "2015-08-27T07:07:22Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-cpp-3.0.0-beta-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820815", + "id": 820815, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxNQ==", + "name": "protobuf-cpp-3.0.0-beta-1.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 4937540, + "download_count": 3508, + "created_at": "2015-08-27T07:07:19Z", + "updated_at": "2015-08-27T07:07:21Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-cpp-3.0.0-beta-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820826", + "id": 820826, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNg==", + "name": "protobuf-csharp-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4189177, + "download_count": 498, + "created_at": "2015-08-27T07:07:56Z", + "updated_at": "2015-08-27T07:08:00Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-csharp-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820825", + "id": 820825, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNQ==", + "name": "protobuf-csharp-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5275951, + "download_count": 1210, + "created_at": "2015-08-27T07:07:56Z", + "updated_at": "2015-08-27T07:07:58Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-csharp-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820818", + "id": 820818, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxOA==", + "name": "protobuf-java-3.0.0-beta-1.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4335955, + "download_count": 1258, + "created_at": "2015-08-27T07:07:26Z", + "updated_at": "2015-08-27T07:07:29Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-java-3.0.0-beta-1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820817", + "id": 820817, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxNw==", + "name": "protobuf-java-3.0.0-beta-1.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5478475, + "download_count": 2165, + "created_at": "2015-08-27T07:07:26Z", + "updated_at": "2015-08-27T07:07:27Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-java-3.0.0-beta-1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820824", + "id": 820824, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNA==", + "name": "protobuf-javanano-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4048907, + "download_count": 291, + "created_at": "2015-08-27T07:07:50Z", + "updated_at": "2015-08-27T07:07:53Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-javanano-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820823", + "id": 820823, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMw==", + "name": "protobuf-javanano-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5051351, + "download_count": 370, + "created_at": "2015-08-27T07:07:50Z", + "updated_at": "2015-08-27T07:07:51Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-javanano-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820828", + "id": 820828, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyOA==", + "name": "protobuf-objectivec-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4377629, + "download_count": 936, + "created_at": "2015-08-27T07:08:05Z", + "updated_at": "2015-08-27T07:08:07Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-objectivec-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820827", + "id": 820827, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyNw==", + "name": "protobuf-objectivec-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5469745, + "download_count": 477, + "created_at": "2015-08-27T07:08:05Z", + "updated_at": "2015-08-27T07:08:06Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-objectivec-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820819", + "id": 820819, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgxOQ==", + "name": "protobuf-python-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4202350, + "download_count": 3299, + "created_at": "2015-08-27T07:07:37Z", + "updated_at": "2015-08-27T07:07:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-python-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820820", + "id": 820820, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMA==", + "name": "protobuf-python-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5258478, + "download_count": 803, + "created_at": "2015-08-27T07:07:37Z", + "updated_at": "2015-08-27T07:07:39Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-python-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820821", + "id": 820821, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMQ==", + "name": "protobuf-ruby-3.0.0-alpha-4.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 4221516, + "download_count": 547, + "created_at": "2015-08-27T07:07:43Z", + "updated_at": "2015-08-27T07:07:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-ruby-3.0.0-alpha-4.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/820822", + "id": 820822, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMDgyMg==", + "name": "protobuf-ruby-3.0.0-alpha-4.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5227546, + "download_count": 251, + "created_at": "2015-08-27T07:07:43Z", + "updated_at": "2015-08-27T07:07:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protobuf-ruby-3.0.0-alpha-4.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/822313", + "id": 822313, + "node_id": "MDEyOlJlbGVhc2VBc3NldDgyMjMxMw==", + "name": "protoc-3.0.0-beta-1-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-zip-compressed", + "state": "uploaded", + "size": 1071236, + "download_count": 3340, + "created_at": "2015-08-27T17:36:25Z", + "updated_at": "2015-08-27T17:36:28Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-beta-1/protoc-3.0.0-beta-1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-beta-1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-beta-1", + "body": "# Version 3.0.0-beta-1\n\n## Supported languages\n- C++/Java/Python/Ruby/Nano/Objective-C/C#\n\n## About Beta\n- This is the first beta release of protobuf v3.0.0. Not all languages\n have reached beta stage. Languages not marked as beta are still in\n alpha (i.e., be prepared for API breaking changes).\n\n## General\n- Proto3 JSON is supported in several languages (fully supported in C++\n and Java, partially supported in Ruby/C#). The JSON spec is defined in\n the proto3 language guide:\n \n https://developers.google.com/protocol-buffers/docs/proto3#json\n \n We will publish a more detailed spec to define the exact behavior of\n proto3-conformant JSON serializers and parsers. Until then, do not rely\n on specific behaviors of the implementation if it’s not documented in\n the above spec. More specifically, the behavior is not yet finalized for\n the following:\n - Parsing invalid JSON input (e.g., input with trailing commas).\n - Non-camelCase names in JSON input.\n - The same field appears multiple times in JSON input.\n - JSON arrays contain “null” values.\n - The message has unknown fields.\n- Proto3 now enforces strict UTF-8 checking. Parsing will fail if a string\n field contains non UTF-8 data.\n\n## C++ (Beta)\n- Introduced new utility functions/classes in the google/protobuf/util\n directory:\n - MessageDifferencer: compare two proto messages and report their\n differences.\n - JsonUtil: support converting protobuf binary format to/from JSON.\n - TimeUtil: utility functions to work with well-known types Timestamp\n and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- Performance optimization of arena construction and destruction.\n- Bug fixes for arena and maps support.\n- Changed to use cmake for Windows Visual Studio builds.\n- Added Bazel support.\n\n## Java (Beta)\n- Introduced a new util package that will be distributed as a separate\n artifact in maven. It contains:\n - JsonFormat: convert proto messages to/from JSON.\n - TimeUtil: utility functions to work with Timestamp and Duration.\n - FieldMaskUtil: utility functions to work with FieldMask.\n- The static PARSER in each generated message is deprecated, and it will\n be removed in a future release. A static parser() getter is generated\n for each message type instead.\n- Performance optimizations for String fields serialization.\n- Performance optimizations for Lite runtime on Android:\n - Reduced allocations\n - Reduced method overhead after ProGuarding\n - Reduced code size after ProGuarding\n\n## Python (Alpha)\n- Removed legacy Python 2.5 support.\n- Moved to a single Python 2.x/3.x-compatible codebase, instead of using 2to3.\n- Fixed build/tests on Python 2.6, 2.7, 3.3, and 3.4.\n - Pure-Python works on all four.\n - Python/C++ implementation works on all but 3.4, due to changes in the\n Python/C++ API in 3.4.\n- Some preliminary work has been done to allow for multiple DescriptorPools\n with Python/C++.\n\n## Ruby (Alpha)\n- Many bugfixes:\n - fixed parsing/serialization of bytes, sint, sfixed types\n - other parser bugfixes\n - fixed memory leak affecting Ruby 2.2\n\n## JavaNano (Alpha)\n- JavaNano generated code now will be put in a nano package by default to\n avoid conflicts with Java generated code.\n\n## Objective-C (Alpha)\n- Added non-null markup to ObjC library. Requires SDK 8.4+ to build.\n- Many bugfixes:\n - Removed the class/enum filter.\n - Renamed some internal types to avoid conflicts with the well-known types\n protos.\n - Added missing support for parsing repeated primitive fields in packed or\n unpacked forms.\n - Added *Count for repeated and map<> fields to avoid auto-create when\n checking for them being set.\n\n## C# (Alpha)\n- Namespace changed to Google.Protobuf (and NuGet package will be named\n correspondingly).\n- Target platforms now .NET 4.5 and selected portable subsets only.\n- Removed lite runtime.\n- Reimplementation to use mutable message types.\n- Null references used to represent \"no value\" for message type fields.\n- Proto3 semantics supported; proto2 files are prohibited for C# codegen.\n Most proto3 features supported:\n - JSON formatting (a.k.a. serialization to JSON), including well-known\n types (except for Any).\n - Wrapper types mapped to nullable value types (or string/ByteString\n allowing nullability). JSON parsing is not supported yet.\n - maps\n - oneof\n - enum unknown value preservation\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1331430", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1331430/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/1331430/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v3.0.0-alpha-3", + "id": 1331430, + "node_id": "MDc6UmVsZWFzZTEzMzE0MzA=", + "tag_name": "v3.0.0-alpha-3", + "target_commitish": "3.0.0-alpha-3", + "name": "Protocol Buffers v3.0.0-alpha-3", + "draft": false, + "author": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2015-05-28T21:52:44Z", + "published_at": "2015-05-29T17:43:59Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607114", + "id": 607114, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNA==", + "name": "protobuf-cpp-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2663408, + "download_count": 4048, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-cpp-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607112", + "id": 607112, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMg==", + "name": "protobuf-cpp-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3404082, + "download_count": 3116, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-cpp-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607109", + "id": 607109, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEwOQ==", + "name": "protobuf-csharp-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3703019, + "download_count": 669, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-csharp-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607113", + "id": 607113, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMw==", + "name": "protobuf-csharp-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 4688302, + "download_count": 1023, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-csharp-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607111", + "id": 607111, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMQ==", + "name": "protobuf-java-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2976571, + "download_count": 1110, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:40Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-java-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607110", + "id": 607110, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExMA==", + "name": "protobuf-java-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3893606, + "download_count": 1683, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:41Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-java-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607115", + "id": 607115, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNQ==", + "name": "protobuf-javanano-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2731791, + "download_count": 310, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-javanano-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607117", + "id": 607117, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNw==", + "name": "protobuf-javanano-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3515888, + "download_count": 428, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-javanano-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607118", + "id": 607118, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExOA==", + "name": "protobuf-objectivec-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 3051861, + "download_count": 386, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-objectivec-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607116", + "id": 607116, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExNg==", + "name": "protobuf-objectivec-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3934883, + "download_count": 452, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:42Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-objectivec-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607119", + "id": 607119, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzExOQ==", + "name": "protobuf-python-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2887753, + "download_count": 2757, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-python-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607120", + "id": 607120, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEyMA==", + "name": "protobuf-python-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3721372, + "download_count": 780, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-python-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607121", + "id": 607121, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEyMQ==", + "name": "protobuf-ruby-3.0.0-alpha-3.tar.gz", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 2902837, + "download_count": 238, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:43Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-ruby-3.0.0-alpha-3.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/607122", + "id": 607122, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwNzEyMg==", + "name": "protobuf-ruby-3.0.0-alpha-3.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3688422, + "download_count": 256, + "created_at": "2015-05-28T22:09:39Z", + "updated_at": "2015-05-28T22:09:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protobuf-ruby-3.0.0-alpha-3.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/603320", + "id": 603320, + "node_id": "MDEyOlJlbGVhc2VBc3NldDYwMzMyMA==", + "name": "protoc-3.0.0-alpha-3-win32.zip", + "label": null, + "uploader": { + "login": "TeBoring", + "id": 5195749, + "node_id": "MDQ6VXNlcjUxOTU3NDk=", + "avatar_url": "https://avatars1.githubusercontent.com/u/5195749?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/TeBoring", + "html_url": "https://github.com/TeBoring", + "followers_url": "https://api.github.com/users/TeBoring/followers", + "following_url": "https://api.github.com/users/TeBoring/following{/other_user}", + "gists_url": "https://api.github.com/users/TeBoring/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TeBoring/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TeBoring/subscriptions", + "organizations_url": "https://api.github.com/users/TeBoring/orgs", + "repos_url": "https://api.github.com/users/TeBoring/repos", + "events_url": "https://api.github.com/users/TeBoring/events{/privacy}", + "received_events_url": "https://api.github.com/users/TeBoring/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-zip-compressed", + "state": "uploaded", + "size": 1018078, + "download_count": 6235, + "created_at": "2015-05-27T05:20:43Z", + "updated_at": "2015-05-27T05:20:44Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.0.0-alpha-3/protoc-3.0.0-alpha-3-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v3.0.0-alpha-3", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v3.0.0-alpha-3", + "body": "# Version 3.0.0-alpha-3 (C++/Java/Python/Ruby/JavaNano/Objective-C/C#)\n\n## General\n- Introduced two new language implementations (Objective-C, C#) to proto3.\n- Explicit \"optional\" keyword are disallowed in proto3 syntax, as fields are\n optional by default.\n- Group fields are no longer supported in proto3 syntax.\n- Changed repeated primitive fields to use packed serialization by default in\n proto3 (implemented for C++, Java, Python in this release). The user can\n still disable packed serialization by setting packed to false for now.\n- Added well-known type protos (any.proto, empty.proto, timestamp.proto,\n duration.proto, etc.). Users can import and use these protos just like\n regular proto files. Addtional runtime support will be added for them in\n future releases (in the form of utility helper functions, or having them\n replaced by language specific types in generated code).\n- Added a \"reserved\" keyword in both proto2 and proto3 syntax. User can use\n this keyword to declare reserved field numbers and names to prevent them\n from being reused by other fields in the same message.\n \n To reserve field numbers, add a reserved declaration in your message:\n \n ```\n message TestMessage {\n reserved 2, 15, 9 to 11, 3;\n }\n ```\n \n This reserves field numbers 2, 3, 9, 10, 11 and 15. If a user uses any of\n these as field numbers, the protocol buffer compiler will report an error.\n \n Field names can also be reserved:\n \n ```\n message TestMessage {\n reserved \"foo\", \"bar\";\n }\n ```\n- Various bug fixes since 3.0.0-alpha-2\n\n## Objective-C\n- Objective-C includes a code generator and a native objective-c runtime\n library. By adding “--objc_out” to protoc, the code generator will generate\n a header(_.pbobjc.h) and an implementation file(_.pbobjc.m) for each proto\n file.\n \n In this first release, the generated interface provides: enums, messages,\n field support(single, repeated, map, oneof), proto2 and proto3 syntax\n support, parsing and serialization. It’s compatible with ARC and non-ARC\n usage. Besides, user can also access it via the swift bridging header.\n \n See objectivec/README.md for details.\n\n## C#\n- C# protobufs are based on project\n https://github.com/jskeet/protobuf-csharp-port. The original project was\n frozen and all the new development will happen here.\n- Codegen plugin for C# was completely rewritten to C++ and is now an\n intergral part of protoc.\n- Some refactorings and cleanup has been applied to the C# runtime library.\n- Only proto2 is supported in C# at the moment, proto3 support is in\n progress and will likely bring significant breaking changes to the API.\n \n See csharp/README.md for details.\n\n## C++\n- Added runtime support for Any type. To use Any in your proto file, first\n import the definition of Any:\n \n ```\n // foo.proto\n import \"google/protobuf/any.proto\";\n message Foo {\n google.protobuf.Any any_field = 1;\n }\n message Bar {\n int32 value = 1;\n }\n ```\n \n Then in C++ you can access the Any field using PackFrom()/UnpackTo()\n methods:\n \n ```\n Foo foo;\n Bar bar = ...;\n foo.mutable_any_field()->PackFrom(bar);\n ...\n if (foo.any_field().IsType()) {\n foo.any_field().UnpackTo(&bar);\n ...\n }\n ```\n- In text format, entries of a map field will be sorted by key.\n\n## Java\n- Continued optimizations on the lite runtime to improve performance for\n Android.\n\n## Python\n- Added map support.\n - maps now have a dict-like interface (msg.map_field[key] = value)\n - existing code that modifies maps via the repeated field interface\n will need to be updated.\n\n## Ruby\n- Improvements to RepeatedField's emulation of the Ruby Array API.\n- Various speedups and internal cleanups.\n" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1087370", + "assets_url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/1087370/assets", + "upload_url": "https://uploads.github.com/repos/protocolbuffers/protobuf/releases/1087370/assets{?name,label}", + "html_url": "https://github.com/protocolbuffers/protobuf/releases/tag/v2.4.1", + "id": 1087370, + "node_id": "MDc6UmVsZWFzZTEwODczNzA=", + "tag_name": "v2.4.1", + "target_commitish": "master", + "name": "Protocol Buffers v2.4.1", + "draft": false, + "author": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2011-04-30T15:29:10Z", + "published_at": "2015-03-25T00:49:41Z", + "assets": [ + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489121", + "id": 489121, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTEyMQ==", + "name": "protobuf-2.4.1.tar.bz2", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-bzip", + "state": "uploaded", + "size": 1440188, + "download_count": 12890, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.bz2" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489122", + "id": 489122, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTEyMg==", + "name": "protobuf-2.4.1.tar.gz", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 1935301, + "download_count": 41827, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protobuf-2.4.1.tar.gz" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489120", + "id": 489120, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTEyMA==", + "name": "protobuf-2.4.1.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 2510666, + "download_count": 7474, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protobuf-2.4.1.zip" + }, + { + "url": "https://api.github.com/repos/protocolbuffers/protobuf/releases/assets/489119", + "id": 489119, + "node_id": "MDEyOlJlbGVhc2VBc3NldDQ4OTExOQ==", + "name": "protoc-2.4.1-win32.zip", + "label": null, + "uploader": { + "login": "xfxyjwf", + "id": 8551050, + "node_id": "MDQ6VXNlcjg1NTEwNTA=", + "avatar_url": "https://avatars0.githubusercontent.com/u/8551050?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/xfxyjwf", + "html_url": "https://github.com/xfxyjwf", + "followers_url": "https://api.github.com/users/xfxyjwf/followers", + "following_url": "https://api.github.com/users/xfxyjwf/following{/other_user}", + "gists_url": "https://api.github.com/users/xfxyjwf/gists{/gist_id}", + "starred_url": "https://api.github.com/users/xfxyjwf/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/xfxyjwf/subscriptions", + "organizations_url": "https://api.github.com/users/xfxyjwf/orgs", + "repos_url": "https://api.github.com/users/xfxyjwf/repos", + "events_url": "https://api.github.com/users/xfxyjwf/events{/privacy}", + "received_events_url": "https://api.github.com/users/xfxyjwf/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 642756, + "download_count": 6470, + "created_at": "2015-03-25T00:49:35Z", + "updated_at": "2015-03-25T00:49:36Z", + "browser_download_url": "https://github.com/protocolbuffers/protobuf/releases/download/v2.4.1/protoc-2.4.1-win32.zip" + } + ], + "tarball_url": "https://api.github.com/repos/protocolbuffers/protobuf/tarball/v2.4.1", + "zipball_url": "https://api.github.com/repos/protocolbuffers/protobuf/zipball/v2.4.1", + "body": "# Version 2.4.1\n\n## C++\n- Fixed the frendship problem for old compilers to make the library now gcc 3\n compatible again.\n- Fixed vcprojects/extract_includes.bat to extract compiler/plugin.h.\n\n## Java\n- Removed usages of JDK 1.6 only features to make the library now JDK 1.5\n compatible again.\n- Fixed a bug about negative enum values.\n- serialVersionUID is now defined in generated messages for java serializing.\n- Fixed protoc to use java.lang.Object, which makes \"Object\" now a valid\n message name again.\n\n## Python\n- Experimental C++ implementation now requires C++ protobuf library installed.\n See the README.txt in the python directory for details.\n" + } +] diff --git a/action.yml b/action.yml new file mode 100644 index 00000000..00b98f94 --- /dev/null +++ b/action.yml @@ -0,0 +1,16 @@ +name: 'Setup protoc' +description: 'Download protoc compiler and add it to the PATH' +author: 'Arduino' +inputs: + version: + description: 'Version to use. Example: 3.9.1' + default: '3.x' + include-pre-releases: + description: 'Include github pre-releases in latest version calculation' + default: 'false' +runs: + using: 'node12' + main: 'lib/main.js' +branding: + icon: 'box' + color: 'green' \ No newline at end of file diff --git a/docs/contributors.md b/docs/contributors.md new file mode 100644 index 00000000..fece2ea2 --- /dev/null +++ b/docs/contributors.md @@ -0,0 +1,22 @@ +# Contributors + +### Checkin + +- Do checkin source (src) +- Do checkin build output (lib) +- Do checkin runtime node_modules +- Do not checkin devDependency node_modules (husky can help see below) + +### devDependencies + +In order to handle correctly checking in node_modules without devDependencies, we run [Husky](https://github.com/typicode/husky) before each commit. +This step ensures that formatting and checkin rules are followed and that devDependencies are excluded. To make sure Husky runs correctly, please use the following workflow: + +``` +npm install # installs all devDependencies including Husky +git add abc.ext # Add the files you've changed. This should include files in src, lib, and node_modules (see above) +git commit -m "Informative commit message" # Commit. This will run Husky +``` + +During the commit step, Husky will take care of formatting all files with [Prettier](https://github.com/prettier/prettier) as well as pruning out devDependencies using `npm prune --production`. +It will also make sure these changes are appropriately included in your commit (no further work is needed) \ No newline at end of file diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..563d4ccb --- /dev/null +++ b/jest.config.js @@ -0,0 +1,11 @@ +module.exports = { + clearMocks: true, + moduleFileExtensions: ['js', 'ts'], + testEnvironment: 'node', + testMatch: ['**/*.test.ts'], + testRunner: 'jest-circus/runner', + transform: { + '^.+\\.ts$': 'ts-jest' + }, + verbose: true +} \ No newline at end of file diff --git a/lib/installer.js b/lib/installer.js new file mode 100644 index 00000000..412c1003 --- /dev/null +++ b/lib/installer.js @@ -0,0 +1,204 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +// Load tempDirectory before it gets wiped by tool-cache +let tempDirectory = process.env["RUNNER_TEMP"] || ""; +const os = __importStar(require("os")); +const path = __importStar(require("path")); +const util = __importStar(require("util")); +const restm = __importStar(require("typed-rest-client/RestClient")); +const semver = __importStar(require("semver")); +if (!tempDirectory) { + let baseLocation; + if (process.platform === "win32") { + // On windows use the USERPROFILE env variable + baseLocation = process.env["USERPROFILE"] || "C:\\"; + } + else { + if (process.platform === "darwin") { + baseLocation = "/Users"; + } + else { + baseLocation = "/home"; + } + } + tempDirectory = path.join(baseLocation, "actions", "temp"); +} +const core = __importStar(require("@actions/core")); +const tc = __importStar(require("@actions/tool-cache")); +const exc = __importStar(require("@actions/exec")); +const io = __importStar(require("@actions/io")); +let osPlat = os.platform(); +let osArch = os.arch(); +function getProtoc(version, includePreReleases) { + return __awaiter(this, void 0, void 0, function* () { + // resolve the version number + const targetVersion = yield computeVersion(version, includePreReleases); + if (targetVersion) { + version = targetVersion; + } + // look if the binary is cached + let toolPath; + toolPath = tc.find("protoc", version); + // if not: download, extract and cache + if (!toolPath) { + toolPath = yield downloadRelease(version); + core.debug("Protoc cached under " + toolPath); + } + // add the bin folder to the PATH + toolPath = path.join(toolPath, "bin"); + core.addPath(toolPath); + // make available Go-specific compiler to the PATH, + // this is needed because of https://github.com/actions/setup-go/issues/14 + const goBin = yield io.which("go", false); + if (goBin) { + // Go is installed, add $GOPATH/bin to the $PATH because setup-go + // doesn't do it for us. + let stdOut = ""; + let options = { + listeners: { + stdout: (data) => { + stdOut += data.toString(); + } + } + }; + yield exc.exec("go", ["env", "GOPATH"], options); + const goPath = stdOut.trim(); + core.debug("GOPATH: " + goPath); + core.addPath(path.join(goPath, "bin")); + } + }); +} +exports.getProtoc = getProtoc; +function downloadRelease(version) { + return __awaiter(this, void 0, void 0, function* () { + // Download + let fileName = getFileName(version); + let downloadUrl = util.format("https://github.com/protocolbuffers/protobuf/releases/download/%s/%s", version, fileName); + let downloadPath = null; + try { + downloadPath = yield tc.downloadTool(downloadUrl); + } + catch (error) { + core.debug(error); + throw `Failed to download version ${version}: ${error}`; + } + // Extract + let extPath = yield tc.extractZip(downloadPath); + // Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded + return yield tc.cacheDir(extPath, "protoc", version); + }); +} +function getFileName(version) { + // to compose the file name, strip the leading `v` char + if (version.startsWith("v")) { + version = version.slice(1, version.length); + } + // The name of the Windows package has a different naming pattern + if (osPlat == "win32") { + const arch = osArch == "x64" ? "64" : "32"; + return util.format("protoc-%s-win%s.zip", version, arch); + } + const arch = osArch == "x64" ? "x86_64" : "x86_32"; + const filename = util.format("protoc-%s-linux-%s.zip", version, arch); + return filename; +} +// Retrieve a list of versions scraping tags from the Github API +function fetchVersions(includePreReleases) { + return __awaiter(this, void 0, void 0, function* () { + let rest = new restm.RestClient("setup-protoc"); + let tags = (yield rest.get("https://api.github.com/repos/protocolbuffers/protobuf/releases")).result || []; + return tags + .filter(tag => tag.tag_name.match(/v\d+\.[\w\.]+/g)) + .filter(tag => includePrerelease(tag.prerelease, includePreReleases)) + .map(tag => tag.tag_name.replace("v", "")); + }); +} +// Compute an actual version starting from the `version` configuration param. +function computeVersion(version, includePreReleases) { + return __awaiter(this, void 0, void 0, function* () { + // strip leading `v` char (will be re-added later) + if (version.startsWith("v")) { + version = version.slice(1, version.length); + } + // strip trailing .x chars + if (version.endsWith(".x")) { + version = version.slice(0, version.length - 2); + } + const allVersions = yield fetchVersions(includePreReleases); + const validVersions = allVersions.filter(v => semver.valid(v)); + const possibleVersions = validVersions.filter(v => v.startsWith(version)); + const versionMap = new Map(); + possibleVersions.forEach(v => versionMap.set(normalizeVersion(v), v)); + const versions = Array.from(versionMap.keys()) + .sort(semver.rcompare) + .map(v => versionMap.get(v)); + core.debug(`evaluating ${versions.length} versions`); + if (versions.length === 0) { + throw new Error("unable to get latest version"); + } + core.debug(`matched: ${versions[0]}`); + return "v" + versions[0]; + }); +} +// Make partial versions semver compliant. +function normalizeVersion(version) { + const preStrings = ["beta", "rc", "preview"]; + const versionPart = version.split("."); + // drop invalid + if (versionPart[1] == null) { + //append minor and patch version if not available + // e.g. 2 -> 2.0.0 + return version.concat(".0.0"); + } + else { + // handle beta and rc + // e.g. 1.10beta1 -? 1.10.0-beta1, 1.10rc1 -> 1.10.0-rc1 + if (preStrings.some(el => versionPart[1].includes(el))) { + versionPart[1] = versionPart[1] + .replace("beta", ".0-beta") + .replace("rc", ".0-rc") + .replace("preview", ".0-preview"); + return versionPart.join("."); + } + } + if (versionPart[2] == null) { + //append patch version if not available + // e.g. 2.1 -> 2.1.0 + return version.concat(".0"); + } + else { + // handle beta and rc + // e.g. 1.8.5beta1 -> 1.8.5-beta1, 1.8.5rc1 -> 1.8.5-rc1 + if (preStrings.some(el => versionPart[2].includes(el))) { + versionPart[2] = versionPart[2] + .replace("beta", "-beta") + .replace("rc", "-rc") + .replace("preview", "-preview"); + return versionPart.join("."); + } + } + return version; +} +function includePrerelease(isPrerelease, includePrereleases) { + if (!includePrereleases) { + if (isPrerelease) { + return false; + } + } + return true; +} diff --git a/lib/main.js b/lib/main.js new file mode 100644 index 00000000..5b7c5472 --- /dev/null +++ b/lib/main.js @@ -0,0 +1,40 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const core = __importStar(require("@actions/core")); +const installer = __importStar(require("./installer")); +function run() { + return __awaiter(this, void 0, void 0, function* () { + try { + let version = core.getInput("version"); + let includePreReleases = convertToBoolean(core.getInput("include-pre-releases")); + yield installer.getProtoc(version, includePreReleases); + } + catch (error) { + core.setFailed(error.message); + } + }); +} +run(); +function convertToBoolean(input) { + try { + return JSON.parse(input); + } + catch (e) { + return false; + } +} diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver new file mode 120000 index 00000000..5aaadf42 --- /dev/null +++ b/node_modules/.bin/semver @@ -0,0 +1 @@ +../semver/bin/semver.js \ No newline at end of file diff --git a/node_modules/.bin/uuid b/node_modules/.bin/uuid new file mode 120000 index 00000000..b3e45bc5 --- /dev/null +++ b/node_modules/.bin/uuid @@ -0,0 +1 @@ +../uuid/bin/uuid \ No newline at end of file diff --git a/node_modules/@actions/core/LICENSE.md b/node_modules/@actions/core/LICENSE.md new file mode 100644 index 00000000..5b674fe8 --- /dev/null +++ b/node_modules/@actions/core/LICENSE.md @@ -0,0 +1,7 @@ +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/core/README.md b/node_modules/@actions/core/README.md new file mode 100644 index 00000000..04ef3c26 --- /dev/null +++ b/node_modules/@actions/core/README.md @@ -0,0 +1,81 @@ +# `@actions/core` + +> Core functions for setting results, logging, registering secrets and exporting variables across actions + +## Usage + +#### Inputs/Outputs + +You can use this library to get inputs or set outputs: + +``` +const core = require('@actions/core'); + +const myInput = core.getInput('inputName', { required: true }); + +// Do stuff + +core.setOutput('outputKey', 'outputVal'); +``` + +#### Exporting variables/secrets + +You can also export variables and secrets for future steps. Variables get set in the environment automatically, while secrets must be scoped into the environment from a workflow using `{{ secret.FOO }}`. Secrets will also be masked from the logs: + +``` +const core = require('@actions/core'); + +// Do stuff + +core.exportVariable('envVar', 'Val'); +core.exportSecret('secretVar', variableWithSecretValue); +``` + +#### PATH Manipulation + +You can explicitly add items to the path for all remaining steps in a workflow: + +``` +const core = require('@actions/core'); + +core.addPath('pathToTool'); +``` + +#### Exit codes + +You should use this library to set the failing exit code for your action: + +``` +const core = require('@actions/core'); + +try { + // Do stuff +} +catch (err) { + // setFailed logs the message and sets a failing exit code + core.setFailed(`Action failed with error ${err}`); +} + +``` + +#### Logging + +Finally, this library provides some utilities for logging: + +``` +const core = require('@actions/core'); + +const myInput = core.getInput('input'); +try { + core.debug('Inside try block'); + + if (!myInput) { + core.warning('myInput wasnt set'); + } + + // Do stuff +} +catch (err) { + core.error('Error ${err}, action may still succeed though'); +} +``` diff --git a/node_modules/@actions/core/lib/command.d.ts b/node_modules/@actions/core/lib/command.d.ts new file mode 100644 index 00000000..c06fcff7 --- /dev/null +++ b/node_modules/@actions/core/lib/command.d.ts @@ -0,0 +1,16 @@ +interface CommandProperties { + [key: string]: string; +} +/** + * Commands + * + * Command Format: + * ##[name key=value;key=value]message + * + * Examples: + * ##[warning]This is the user warning message + * ##[set-secret name=mypassword]definatelyNotAPassword! + */ +export declare function issueCommand(command: string, properties: CommandProperties, message: string): void; +export declare function issue(name: string, message: string): void; +export {}; diff --git a/node_modules/@actions/core/lib/command.js b/node_modules/@actions/core/lib/command.js new file mode 100644 index 00000000..707660ca --- /dev/null +++ b/node_modules/@actions/core/lib/command.js @@ -0,0 +1,66 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const os = require("os"); +/** + * Commands + * + * Command Format: + * ##[name key=value;key=value]message + * + * Examples: + * ##[warning]This is the user warning message + * ##[set-secret name=mypassword]definatelyNotAPassword! + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message) { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_PREFIX = '##['; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_PREFIX + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + // safely append the val - avoid blowing up when attempting to + // call .replace() if message is not a string for some reason + cmdStr += `${key}=${escape(`${val || ''}`)};`; + } + } + } + } + cmdStr += ']'; + // safely append the message - avoid blowing up when attempting to + // call .replace() if message is not a string for some reason + const message = `${this.message || ''}`; + cmdStr += escapeData(message); + return cmdStr; + } +} +function escapeData(s) { + return s.replace(/\r/g, '%0D').replace(/\n/g, '%0A'); +} +function escape(s) { + return s + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/]/g, '%5D') + .replace(/;/g, '%3B'); +} +//# sourceMappingURL=command.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/command.js.map b/node_modules/@actions/core/lib/command.js.map new file mode 100644 index 00000000..28ea330b --- /dev/null +++ b/node_modules/@actions/core/lib/command.js.map @@ -0,0 +1 @@ +{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;AAAA,yBAAwB;AAQxB;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,OAAe;IACjD,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,KAAK,CAAA;AAExB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,8DAA8D;wBAC9D,6DAA6D;wBAC7D,MAAM,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,CAAA;qBAC9C;iBACF;aACF;SACF;QAED,MAAM,IAAI,GAAG,CAAA;QAEb,kEAAkE;QAClE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;QACvC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC;SACL,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"} \ No newline at end of file diff --git a/node_modules/@actions/core/lib/core.d.ts b/node_modules/@actions/core/lib/core.d.ts new file mode 100644 index 00000000..706e368f --- /dev/null +++ b/node_modules/@actions/core/lib/core.d.ts @@ -0,0 +1,73 @@ +/** + * Interface for getInput options + */ +export interface InputOptions { + /** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */ + required?: boolean; +} +/** + * The code to exit an action + */ +export declare enum ExitCode { + /** + * A code indicating that the action was successful + */ + Success = 0, + /** + * A code indicating that the action was a failure + */ + Failure = 1 +} +/** + * sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable + */ +export declare function exportVariable(name: string, val: string): void; +/** + * exports the variable and registers a secret which will get masked from logs + * @param name the name of the variable to set + * @param val value of the secret + */ +export declare function exportSecret(name: string, val: string): void; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +export declare function addPath(inputPath: string): void; +/** + * Gets the value of an input. The value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +export declare function getInput(name: string, options?: InputOptions): string; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store + */ +export declare function setOutput(name: string, value: string): void; +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +export declare function setFailed(message: string): void; +/** + * Writes debug message to user log + * @param message debug message + */ +export declare function debug(message: string): void; +/** + * Adds an error issue + * @param message error issue message + */ +export declare function error(message: string): void; +/** + * Adds an warning issue + * @param message warning issue message + */ +export declare function warning(message: string): void; diff --git a/node_modules/@actions/core/lib/core.js b/node_modules/@actions/core/lib/core.js new file mode 100644 index 00000000..90d64ab1 --- /dev/null +++ b/node_modules/@actions/core/lib/core.js @@ -0,0 +1,116 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const command_1 = require("./command"); +const path = require("path"); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable + */ +function exportVariable(name, val) { + process.env[name] = val; + command_1.issueCommand('set-env', { name }, val); +} +exports.exportVariable = exportVariable; +/** + * exports the variable and registers a secret which will get masked from logs + * @param name the name of the variable to set + * @param val value of the secret + */ +function exportSecret(name, val) { + exportVariable(name, val); + command_1.issueCommand('set-secret', {}, val); +} +exports.exportSecret = exportSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + command_1.issueCommand('add-path', {}, inputPath); + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. The value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(' ', '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store + */ +function setOutput(name, value) { + command_1.issueCommand('set-output', { name }, value); +} +exports.setOutput = setOutput; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message + */ +function error(message) { + command_1.issue('error', message); +} +exports.error = error; +/** + * Adds an warning issue + * @param message warning issue message + */ +function warning(message) { + command_1.issue('warning', message); +} +exports.warning = warning; +//# sourceMappingURL=core.js.map \ No newline at end of file diff --git a/node_modules/@actions/core/lib/core.js.map b/node_modules/@actions/core/lib/core.js.map new file mode 100644 index 00000000..7e3c84fa --- /dev/null +++ b/node_modules/@actions/core/lib/core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;AAAA,uCAA6C;AAE7C,6BAA4B;AAU5B;;GAEG;AACH,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB;;OAEG;IACH,6CAAW,CAAA;IAEX;;OAEG;IACH,6CAAW,CAAA;AACb,CAAC,EAVW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAUnB;AAED,yEAAyE;AACzE,YAAY;AACZ,yEAAyE;AAEzE;;;;GAIG;AACH,SAAgB,cAAc,CAAC,IAAY,EAAE,GAAW;IACtD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;IACvB,sBAAY,CAAC,SAAS,EAAE,EAAC,IAAI,EAAC,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC;AAHD,wCAGC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,IAAY,EAAE,GAAW;IACpD,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACzB,sBAAY,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;AACrC,CAAC;AAHD,oCAGC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,SAAiB;IACvC,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;AAC7E,CAAC;AAHD,0BAGC;AAED;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAsB;IAC3D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IACpE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAA;KAC5D;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;AACnB,CAAC;AARD,4BAQC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAFD,8BAEC;AAED,yEAAyE;AACzE,UAAU;AACV,yEAAyE;AAEzE;;;;GAIG;AACH,SAAgB,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAA;IACnC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChB,CAAC;AAHD,8BAGC;AAED,yEAAyE;AACzE,mBAAmB;AACnB,yEAAyE;AAEzE;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAe;IACnC,sBAAY,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAe;IACnC,eAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACzB,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,OAAe;IACrC,eAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC3B,CAAC;AAFD,0BAEC"} \ No newline at end of file diff --git a/node_modules/@actions/core/package.json b/node_modules/@actions/core/package.json new file mode 100644 index 00000000..9d66b5bd --- /dev/null +++ b/node_modules/@actions/core/package.json @@ -0,0 +1,67 @@ +{ + "_args": [ + [ + "@actions/core@1.0.0", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "@actions/core@1.0.0", + "_id": "@actions/core@1.0.0", + "_inBundle": false, + "_integrity": "sha512-aMIlkx96XH4E/2YZtEOeyrYQfhlas9jIRkfGPqMwXD095Rdkzo4lB6ZmbxPQSzD+e1M+Xsm98ZhuSMYGv/AlqA==", + "_location": "/@actions/core", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "@actions/core@1.0.0", + "name": "@actions/core", + "escapedName": "@actions%2fcore", + "scope": "@actions", + "rawSpec": "1.0.0", + "saveSpec": null, + "fetchSpec": "1.0.0" + }, + "_requiredBy": [ + "/", + "/@actions/tool-cache" + ], + "_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.0.0.tgz", + "_spec": "1.0.0", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "description": "Actions core lib", + "devDependencies": { + "@types/node": "^12.0.2" + }, + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib" + ], + "gitHead": "a40bce7c8d382aa3dbadaa327acbc696e9390e55", + "homepage": "https://github.com/actions/toolkit/tree/master/packages/core", + "keywords": [ + "core", + "actions" + ], + "license": "MIT", + "main": "lib/core.js", + "name": "@actions/core", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1", + "tsc": "tsc" + }, + "version": "1.0.0" +} diff --git a/node_modules/@actions/exec/LICENSE.md b/node_modules/@actions/exec/LICENSE.md new file mode 100644 index 00000000..5b674fe8 --- /dev/null +++ b/node_modules/@actions/exec/LICENSE.md @@ -0,0 +1,7 @@ +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/exec/README.md b/node_modules/@actions/exec/README.md new file mode 100644 index 00000000..a3b5a8c8 --- /dev/null +++ b/node_modules/@actions/exec/README.md @@ -0,0 +1,60 @@ +# `@actions/exec` + +## Usage + +#### Basic + +You can use this package to execute your tools on the command line in a cross platform way: + +``` +const exec = require('@actions/exec'); + +await exec.exec('node index.js'); +``` + +#### Args + +You can also pass in arg arrays: + +``` +const exec = require('@actions/exec'); + +await exec.exec('node', ['index.js', 'foo=bar']); +``` + +#### Output/options + +Capture output or specify [other options](https://github.com/actions/toolkit/blob/d9347d4ab99fd507c0b9104b2cf79fb44fcc827d/packages/exec/src/interfaces.ts#L5): + +``` +const exec = require('@actions/exec'); + +const myOutput = ''; +const myError = ''; + +const options = {}; +options.listeners = { + stdout: (data: Buffer) => { + myOutput += data.toString(); + }, + stderr: (data: Buffer) => { + myError += data.toString(); + } +}; +options.cwd = './lib'; + +await exec.exec('node', ['index.js', 'foo=bar'], options); +``` + +#### Exec tools not in the PATH + +You can use it in conjunction with the `which` function from `@actions/io` to execute tools that are not in the PATH: + +``` +const exec = require('@actions/exec'); +const io = require('@actions/io'); + +const pythonPath: string = await io.which('python', true) + +await exec.exec(`"${pythonPath}"`, ['main.py']); +``` diff --git a/node_modules/@actions/exec/lib/exec.d.ts b/node_modules/@actions/exec/lib/exec.d.ts new file mode 100644 index 00000000..5c8f3b3e --- /dev/null +++ b/node_modules/@actions/exec/lib/exec.d.ts @@ -0,0 +1,12 @@ +import * as im from './interfaces'; +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code + */ +export declare function exec(commandLine: string, args?: string[], options?: im.ExecOptions): Promise; diff --git a/node_modules/@actions/exec/lib/exec.js b/node_modules/@actions/exec/lib/exec.js new file mode 100644 index 00000000..e4679276 --- /dev/null +++ b/node_modules/@actions/exec/lib/exec.js @@ -0,0 +1,36 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const tr = require("./toolrunner"); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; +//# sourceMappingURL=exec.js.map \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/exec.js.map b/node_modules/@actions/exec/lib/exec.js.map new file mode 100644 index 00000000..155287e0 --- /dev/null +++ b/node_modules/@actions/exec/lib/exec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":";;;;;;;;;;AACA,mCAAkC;AAElC;;;;;;;;;GASG;AACH,SAAsB,IAAI,CACxB,WAAmB,EACnB,IAAe,EACf,OAAwB;;QAExB,MAAM,WAAW,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;QACpD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;SACpE;QACD,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAkB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACxE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC;CAAA;AAdD,oBAcC"} \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/interfaces.d.ts b/node_modules/@actions/exec/lib/interfaces.d.ts new file mode 100644 index 00000000..0d7202af --- /dev/null +++ b/node_modules/@actions/exec/lib/interfaces.d.ts @@ -0,0 +1,35 @@ +/// +import * as stream from 'stream'; +/** + * Interface for exec options + */ +export interface ExecOptions { + /** optional working directory. defaults to current */ + cwd?: string; + /** optional envvar dictionary. defaults to current process's env */ + env?: { + [key: string]: string; + }; + /** optional. defaults to false */ + silent?: boolean; + /** optional out stream to use. Defaults to process.stdout */ + outStream?: stream.Writable; + /** optional err stream to use. Defaults to process.stderr */ + errStream?: stream.Writable; + /** optional. whether to skip quoting/escaping arguments if needed. defaults to false. */ + windowsVerbatimArguments?: boolean; + /** optional. whether to fail if output to stderr. defaults to false */ + failOnStdErr?: boolean; + /** optional. defaults to failing on non zero. ignore will not fail leaving it up to the caller */ + ignoreReturnCode?: boolean; + /** optional. How long in ms to wait for STDIO streams to close after the exit event of the process before terminating. defaults to 10000 */ + delay?: number; + /** optional. Listeners for output. Callback functions that will be called on these events */ + listeners?: { + stdout?: (data: Buffer) => void; + stderr?: (data: Buffer) => void; + stdline?: (data: string) => void; + errline?: (data: string) => void; + debug?: (data: string) => void; + }; +} diff --git a/node_modules/@actions/exec/lib/interfaces.js b/node_modules/@actions/exec/lib/interfaces.js new file mode 100644 index 00000000..e979780f --- /dev/null +++ b/node_modules/@actions/exec/lib/interfaces.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=interfaces.js.map \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/interfaces.js.map b/node_modules/@actions/exec/lib/interfaces.js.map new file mode 100644 index 00000000..8fb5f7d1 --- /dev/null +++ b/node_modules/@actions/exec/lib/interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/toolrunner.d.ts b/node_modules/@actions/exec/lib/toolrunner.d.ts new file mode 100644 index 00000000..71198dac --- /dev/null +++ b/node_modules/@actions/exec/lib/toolrunner.d.ts @@ -0,0 +1,37 @@ +/// +import * as events from 'events'; +import * as im from './interfaces'; +export declare class ToolRunner extends events.EventEmitter { + constructor(toolPath: string, args?: string[], options?: im.ExecOptions); + private toolPath; + private args; + private options; + private _debug; + private _getCommandString; + private _processLineBuffer; + private _getSpawnFileName; + private _getSpawnArgs; + private _endsWith; + private _isCmdFile; + private _windowsQuoteCmdArg; + private _uvQuoteCmdArg; + private _cloneExecOptions; + private _getSpawnOptions; + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec(): Promise; +} +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +export declare function argStringToArray(argString: string): string[]; diff --git a/node_modules/@actions/exec/lib/toolrunner.js b/node_modules/@actions/exec/lib/toolrunner.js new file mode 100644 index 00000000..6ed5a52a --- /dev/null +++ b/node_modules/@actions/exec/lib/toolrunner.js @@ -0,0 +1,573 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const os = require("os"); +const events = require("events"); +const child = require("child_process"); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + strBuffer = s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return (this._endsWith(upperToolPath, '.CMD') || + this._endsWith(upperToolPath, '.BAT')); + } + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that preceed a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + const stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + const errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + }); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} +//# sourceMappingURL=toolrunner.js.map \ No newline at end of file diff --git a/node_modules/@actions/exec/lib/toolrunner.js.map b/node_modules/@actions/exec/lib/toolrunner.js.map new file mode 100644 index 00000000..724b15ae --- /dev/null +++ b/node_modules/@actions/exec/lib/toolrunner.js.map @@ -0,0 +1 @@ +{"version":3,"file":"toolrunner.js","sourceRoot":"","sources":["../src/toolrunner.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,yBAAwB;AACxB,iCAAgC;AAChC,uCAAsC;AAItC,sDAAsD;AAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAE/C;;GAEG;AACH,MAAa,UAAW,SAAQ,MAAM,CAAC,YAAY;IACjD,YAAY,QAAgB,EAAE,IAAe,EAAE,OAAwB;QACrE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;IAC9B,CAAC;IAMO,MAAM,CAAC,OAAe;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;YAC1D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SACtC;IACH,CAAC;IAEO,iBAAiB,CACvB,OAAuB,EACvB,QAAkB;QAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAA,CAAC,0CAA0C;QAChF,IAAI,UAAU,EAAE;YACd,qBAAqB;YACrB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,GAAG,IAAI,QAAQ,CAAA;gBACf,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;iBACf;aACF;YACD,qBAAqB;iBAChB,IAAI,OAAO,CAAC,wBAAwB,EAAE;gBACzC,GAAG,IAAI,IAAI,QAAQ,GAAG,CAAA;gBACtB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;iBACf;aACF;YACD,oBAAoB;iBACf;gBACH,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;gBACzC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,GAAG,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;iBACzC;aACF;SACF;aAAM;YACL,qEAAqE;YACrE,sEAAsE;YACtE,wCAAwC;YACxC,GAAG,IAAI,QAAQ,CAAA;YACf,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;gBACpB,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;aACf;SACF;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAEO,kBAAkB,CACxB,IAAY,EACZ,SAAiB,EACjB,MAA8B;QAE9B,IAAI;YACF,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YACnC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;YAEzB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;gBACb,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC9B,MAAM,CAAC,IAAI,CAAC,CAAA;gBAEZ,6BAA6B;gBAC7B,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAClC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;aACtB;YAED,SAAS,GAAG,CAAC,CAAA;SACd;QAAC,OAAO,GAAG,EAAE;YACZ,kEAAkE;YAClE,IAAI,CAAC,MAAM,CAAC,4CAA4C,GAAG,EAAE,CAAC,CAAA;SAC/D;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAA;aAC3C;SACF;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEO,aAAa,CAAC,OAAuB;QAC3C,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,OAAO,GAAG,aAAa,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;gBACpE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;oBACzB,OAAO,IAAI,GAAG,CAAA;oBACd,OAAO,IAAI,OAAO,CAAC,wBAAwB;wBACzC,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;iBAChC;gBAED,OAAO,IAAI,GAAG,CAAA;gBACd,OAAO,CAAC,OAAO,CAAC,CAAA;aACjB;SACF;QAED,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEO,SAAS,CAAC,GAAW,EAAE,GAAW;QACxC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAEO,UAAU;QAChB,MAAM,aAAa,GAAW,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QACzD,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CACtC,CAAA;IACH,CAAC;IAEO,mBAAmB,CAAC,GAAW;QACrC,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;SAChC;QAED,6EAA6E;QAC7E,4EAA4E;QAC5E,uBAAuB;QACvB,EAAE;QACF,0EAA0E;QAC1E,4HAA4H;QAE5H,4BAA4B;QAC5B,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,IAAI,CAAA;SACZ;QAED,+CAA+C;QAC/C,MAAM,eAAe,GAAG;YACtB,GAAG;YACH,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACJ,CAAA;QACD,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBACzC,WAAW,GAAG,IAAI,CAAA;gBAClB,MAAK;aACN;SACF;QAED,qCAAqC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,GAAG,CAAA;SACX;QAED,mFAAmF;QACnF,EAAE;QACF,+BAA+B;QAC/B,EAAE;QACF,qCAAqC;QACrC,EAAE;QACF,mGAAmG;QACnG,oDAAoD;QACpD,EAAE;QACF,sGAAsG;QACtG,oCAAoC;QACpC,sCAAsC;QACtC,wDAAwD;QACxD,kCAAkC;QAClC,yFAAyF;QACzF,4DAA4D;QAC5D,sCAAsC;QACtC,EAAE;QACF,6CAA6C;QAC7C,6CAA6C;QAC7C,+CAA+C;QAC/C,iDAAiD;QACjD,8CAA8C;QAC9C,EAAE;QACF,gGAAgG;QAChG,gEAAgE;QAChE,EAAE;QACF,iGAAiG;QACjG,kGAAkG;QAClG,EAAE;QACF,6FAA6F;QAC7F,wDAAwD;QACxD,EAAE;QACF,oGAAoG;QACpG,mGAAmG;QACnG,eAAe;QACf,EAAE;QACF,sGAAsG;QACtG,sGAAsG;QACtG,EAAE;QACF,gGAAgG;QAChG,kGAAkG;QAClG,oGAAoG;QACpG,0BAA0B;QAC1B,EAAE;QACF,iGAAiG;QACjG,uCAAuC;QACvC,IAAI,OAAO,GAAG,GAAG,CAAA;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,6BAA6B;YAC7B,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACrB,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;gBACnC,OAAO,IAAI,IAAI,CAAA,CAAC,mBAAmB;aACpC;iBAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7B,QAAQ,GAAG,IAAI,CAAA;gBACf,OAAO,IAAI,GAAG,CAAA,CAAC,mBAAmB;aACnC;iBAAM;gBACL,QAAQ,GAAG,KAAK,CAAA;aACjB;SACF;QAED,OAAO,IAAI,GAAG,CAAA;QACd,OAAO,OAAO;aACX,KAAK,CAAC,EAAE,CAAC;aACT,OAAO,EAAE;aACT,IAAI,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;IAEO,cAAc,CAAC,GAAW;QAChC,iFAAiF;QACjF,qFAAqF;QACrF,WAAW;QACX,EAAE;QACF,qFAAqF;QACrF,uFAAuF;QACvF,2DAA2D;QAC3D,EAAE;QACF,gFAAgF;QAChF,EAAE;QACF,oFAAoF;QACpF,gFAAgF;QAChF,kFAAkF;QAClF,mFAAmF;QACnF,kFAAkF;QAClF,gEAAgE;QAChE,EAAE;QACF,kFAAkF;QAClF,2DAA2D;QAC3D,EAAE;QACF,kFAAkF;QAClF,gFAAgF;QAChF,mFAAmF;QACnF,8EAA8E;QAC9E,+EAA+E;QAC/E,oFAAoF;QACpF,wBAAwB;QAExB,IAAI,CAAC,GAAG,EAAE;YACR,2CAA2C;YAC3C,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnE,sBAAsB;YACtB,OAAO,GAAG,CAAA;SACX;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC7C,+DAA+D;YAC/D,sCAAsC;YACtC,OAAO,IAAI,GAAG,GAAG,CAAA;SAClB;QAED,yBAAyB;QACzB,wBAAwB;QACxB,2BAA2B;QAC3B,yBAAyB;QACzB,6BAA6B;QAC7B,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,6BAA6B;QAC7B,0BAA0B;QAC1B,+BAA+B;QAC/B,yBAAyB;QACzB,sFAAsF;QACtF,gGAAgG;QAChG,IAAI,OAAO,GAAG,GAAG,CAAA;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,6BAA6B;YAC7B,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACrB,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;gBACnC,OAAO,IAAI,IAAI,CAAA;aAChB;iBAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7B,QAAQ,GAAG,IAAI,CAAA;gBACf,OAAO,IAAI,IAAI,CAAA;aAChB;iBAAM;gBACL,QAAQ,GAAG,KAAK,CAAA;aACjB;SACF;QAED,OAAO,IAAI,GAAG,CAAA;QACd,OAAO,OAAO;aACX,KAAK,CAAC,EAAE,CAAC;aACT,OAAO,EAAE;aACT,IAAI,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;IAEO,iBAAiB,CAAC,OAAwB;QAChD,OAAO,GAAG,OAAO,IAAoB,EAAE,CAAA;QACvC,MAAM,MAAM,GAAmC;YAC7C,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;YAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,IAAI,KAAK;YACnE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK;YAC3C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;YACnD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;SAC9B,CAAA;QACD,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAqB,OAAO,CAAC,MAAM,CAAA;QACvE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAqB,OAAO,CAAC,MAAM,CAAA;QACvE,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,gBAAgB,CACtB,OAAuB,EACvB,QAAgB;QAEhB,OAAO,GAAG,OAAO,IAAoB,EAAE,CAAA;QACvC,MAAM,MAAM,GAAuB,EAAE,CAAA;QACrC,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACxB,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACxB,MAAM,CAAC,0BAA0B,CAAC;YAChC,OAAO,CAAC,wBAAwB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;QACvD,IAAI,OAAO,CAAC,wBAAwB,EAAE;YACpC,MAAM,CAAC,KAAK,GAAG,IAAI,QAAQ,GAAG,CAAA;SAC/B;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACG,IAAI;;YACR,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC1C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;gBACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;iBACzB;gBAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC3D,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE;oBACtD,cAAc,CAAC,SAAS,CAAC,KAAK,CAC5B,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAChD,CAAA;iBACF;gBAED,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC1D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;oBACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBACtB,CAAC,CAAC,CAAA;gBAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACzC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CACpB,QAAQ,EACR,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC9C,CAAA;gBAED,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,IAAI,EAAE,CAAC,MAAM,EAAE;oBACb,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBACpC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;4BAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;yBACpC;wBAED,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE;4BACtD,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;yBACrC;wBAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;4BACxD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;gCAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;6BACrC;wBACH,CAAC,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;iBACH;gBAED,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,IAAI,EAAE,CAAC,MAAM,EAAE;oBACb,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBACpC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;wBAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;4BAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;yBACpC;wBAED,IACE,CAAC,cAAc,CAAC,MAAM;4BACtB,cAAc,CAAC,SAAS;4BACxB,cAAc,CAAC,SAAS,EACxB;4BACA,MAAM,CAAC,GAAG,cAAc,CAAC,YAAY;gCACnC,CAAC,CAAC,cAAc,CAAC,SAAS;gCAC1B,CAAC,CAAC,cAAc,CAAC,SAAS,CAAA;4BAC5B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;yBACd;wBAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;4BACxD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;gCAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;6BACrC;wBACH,CAAC,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;iBACH;gBAED,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;oBAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAA;oBAChC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,aAAa,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;oBAC7B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAA;oBAC5B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,wBAAwB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACtE,KAAK,CAAC,aAAa,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;oBAC9B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAA;oBAC5B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,IAAI,CAAC,MAAM,CAAC,uCAAuC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACpE,KAAK,CAAC,aAAa,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAY,EAAE,QAAgB,EAAE,EAAE;oBAClD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;qBAChC;oBAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;qBAChC;oBAED,EAAE,CAAC,kBAAkB,EAAE,CAAA;oBAEvB,IAAI,KAAK,EAAE;wBACT,MAAM,CAAC,KAAK,CAAC,CAAA;qBACd;yBAAM;wBACL,OAAO,CAAC,QAAQ,CAAC,CAAA;qBAClB;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AA9eD,gCA8eC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,SAAiB;IAChD,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,SAAS,MAAM,CAAC,CAAS;QACvB,gCAAgC;QAChC,IAAI,OAAO,IAAI,CAAC,KAAK,GAAG,EAAE;YACxB,GAAG,IAAI,IAAI,CAAA;SACZ;QAED,GAAG,IAAI,CAAC,CAAA;QACR,OAAO,GAAG,KAAK,CAAA;IACjB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAE7B,IAAI,CAAC,KAAK,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,EAAE;gBACZ,QAAQ,GAAG,CAAC,QAAQ,CAAA;aACrB;iBAAM;gBACL,MAAM,CAAC,CAAC,CAAC,CAAA;aACV;YACD,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,EAAE;YACzB,MAAM,CAAC,CAAC,CAAC,CAAA;YACT,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,QAAQ,EAAE;YAC1B,OAAO,GAAG,IAAI,CAAA;YACd,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;aACT;YACD,SAAQ;SACT;QAED,MAAM,CAAC,CAAC,CAAC,CAAA;KACV;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;KACtB;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAvDD,4CAuDC;AAED,MAAM,SAAU,SAAQ,MAAM,CAAC,YAAY;IACzC,YAAY,OAAuB,EAAE,QAAgB;QACnD,KAAK,EAAE,CAAA;QAaT,kBAAa,GAAY,KAAK,CAAA,CAAC,4DAA4D;QAC3F,iBAAY,GAAW,EAAE,CAAA;QACzB,oBAAe,GAAW,CAAC,CAAA;QAC3B,kBAAa,GAAY,KAAK,CAAA,CAAC,wCAAwC;QACvE,kBAAa,GAAY,KAAK,CAAA,CAAC,uCAAuC;QAC9D,UAAK,GAAG,KAAK,CAAA,CAAC,aAAa;QAC3B,SAAI,GAAY,KAAK,CAAA;QAErB,YAAO,GAAwB,IAAI,CAAA;QAnBzC,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC9C;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;SAC3B;IACH,CAAC;IAaD,aAAa;QACX,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAM;SACP;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE,CAAA;SAClB;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;SACrE;IACH,CAAC;IAEO,MAAM,CAAC,OAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC7B,CAAC;IAEO,UAAU;QAChB,sCAAsC;QACtC,IAAI,KAAwB,CAAA;QAC5B,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,KAAK,GAAG,IAAI,KAAK,CACf,8DACE,IAAI,CAAC,QACP,4DACE,IAAI,CAAC,YACP,EAAE,CACH,CAAA;aACF;iBAAM,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACvE,KAAK,GAAG,IAAI,KAAK,CACf,gBAAgB,IAAI,CAAC,QAAQ,2BAC3B,IAAI,CAAC,eACP,EAAE,CACH,CAAA;aACF;iBAAM,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAC1D,KAAK,GAAG,IAAI,KAAK,CACf,gBACE,IAAI,CAAC,QACP,sEAAsE,CACvE,CAAA;aACF;SACF;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;SACpB;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IAChD,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAgB;QAC3C,IAAI,KAAK,CAAC,IAAI,EAAE;YACd,OAAM;SACP;QAED,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,EAAE;YAC/C,MAAM,OAAO,GAAG,0CAA0C,KAAK,CAAC,KAAK;gBACnE,IAAI,4CACJ,KAAK,CAAC,QACR,0FAA0F,CAAA;YAC1F,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;SACtB;QAED,KAAK,CAAC,UAAU,EAAE,CAAA;IACpB,CAAC;CACF"} \ No newline at end of file diff --git a/node_modules/@actions/exec/package.json b/node_modules/@actions/exec/package.json new file mode 100644 index 00000000..1ce39e38 --- /dev/null +++ b/node_modules/@actions/exec/package.json @@ -0,0 +1,67 @@ +{ + "_args": [ + [ + "@actions/exec@1.0.0", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "@actions/exec@1.0.0", + "_id": "@actions/exec@1.0.0", + "_inBundle": false, + "_integrity": "sha512-nquH0+XKng+Ll7rZfCojN7NWSbnGh+ltwUJhzfbLkmOJgxocGX2/yXcZLMyT9fa7+tByEow/NSTrBExNlEj9fw==", + "_location": "/@actions/exec", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "@actions/exec@1.0.0", + "name": "@actions/exec", + "escapedName": "@actions%2fexec", + "scope": "@actions", + "rawSpec": "1.0.0", + "saveSpec": null, + "fetchSpec": "1.0.0" + }, + "_requiredBy": [ + "/", + "/@actions/tool-cache" + ], + "_resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.0.tgz", + "_spec": "1.0.0", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "description": "Actions exec lib", + "devDependencies": { + "@actions/io": "^1.0.0" + }, + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib" + ], + "gitHead": "a40bce7c8d382aa3dbadaa327acbc696e9390e55", + "homepage": "https://github.com/actions/toolkit/tree/master/packages/exec", + "keywords": [ + "exec", + "actions" + ], + "license": "MIT", + "main": "lib/exec.js", + "name": "@actions/exec", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1", + "tsc": "tsc" + }, + "version": "1.0.0" +} diff --git a/node_modules/@actions/io/LICENSE.md b/node_modules/@actions/io/LICENSE.md new file mode 100644 index 00000000..5b674fe8 --- /dev/null +++ b/node_modules/@actions/io/LICENSE.md @@ -0,0 +1,7 @@ +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/@actions/io/README.md b/node_modules/@actions/io/README.md new file mode 100644 index 00000000..65978c46 --- /dev/null +++ b/node_modules/@actions/io/README.md @@ -0,0 +1,53 @@ +# `@actions/io` + +> Core functions for cli filesystem scenarios + +## Usage + +#### mkdir -p + +Recursively make a directory. Follows rules specified in [man mkdir](https://linux.die.net/man/1/mkdir) with the `-p` option specified: + +``` +const io = require('@actions/io'); + +await io.mkdirP('path/to/make'); +``` + +#### cp/mv + +Copy or move files or folders. Follows rules specified in [man cp](https://linux.die.net/man/1/cp) and [man mv](https://linux.die.net/man/1/mv): + +``` +const io = require('@actions/io'); + +// Recursive must be true for directories +const options = { recursive: true, force: false } + +await io.cp('path/to/directory', 'path/to/dest', options); +await io.mv('path/to/file', 'path/to/dest'); +``` + +#### rm -rf + +Remove a file or folder recursively. Follows rules specified in [man rm](https://linux.die.net/man/1/rm) with the `-r` and `-f` rules specified. + +``` +const io = require('@actions/io'); + +await io.rmRF('path/to/directory'); +await io.rmRF('path/to/file'); +``` + +#### which + +Get the path to a tool and resolves via paths. Follows the rules specified in [man which](https://linux.die.net/man/1/which). + +``` +const exec = require('@actions/exec'); +const io = require('@actions/io'); + +const pythonPath: string = await io.which('python', true) + +await exec.exec(`"${pythonPath}"`, ['main.py']); +``` diff --git a/node_modules/@actions/io/lib/io-util.d.ts b/node_modules/@actions/io/lib/io-util.d.ts new file mode 100644 index 00000000..e5dcd051 --- /dev/null +++ b/node_modules/@actions/io/lib/io-util.d.ts @@ -0,0 +1,29 @@ +/// +import * as fs from 'fs'; +export declare const chmod: typeof fs.promises.chmod, copyFile: typeof fs.promises.copyFile, lstat: typeof fs.promises.lstat, mkdir: typeof fs.promises.mkdir, readdir: typeof fs.promises.readdir, readlink: typeof fs.promises.readlink, rename: typeof fs.promises.rename, rmdir: typeof fs.promises.rmdir, stat: typeof fs.promises.stat, symlink: typeof fs.promises.symlink, unlink: typeof fs.promises.unlink; +export declare const IS_WINDOWS: boolean; +export declare function exists(fsPath: string): Promise; +export declare function isDirectory(fsPath: string, useStat?: boolean): Promise; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +export declare function isRooted(p: string): boolean; +/** + * Recursively create a directory at `fsPath`. + * + * This implementation is optimistic, meaning it attempts to create the full + * path first, and backs up the path stack from there. + * + * @param fsPath The path to create + * @param maxDepth The maximum recursion depth + * @param depth The current recursion depth + */ +export declare function mkdirP(fsPath: string, maxDepth?: number, depth?: number): Promise; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +export declare function tryGetExecutablePath(filePath: string, extensions: string[]): Promise; diff --git a/node_modules/@actions/io/lib/io-util.js b/node_modules/@actions/io/lib/io-util.js new file mode 100644 index 00000000..b5757cbf --- /dev/null +++ b/node_modules/@actions/io/lib/io-util.js @@ -0,0 +1,194 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("assert"); +const fs = require("fs"); +const path = require("path"); +_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +exports.IS_WINDOWS = process.platform === 'win32'; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); +} +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello + } + return p.startsWith('/'); +} +exports.isRooted = isRooted; +/** + * Recursively create a directory at `fsPath`. + * + * This implementation is optimistic, meaning it attempts to create the full + * path first, and backs up the path stack from there. + * + * @param fsPath The path to create + * @param maxDepth The maximum recursion depth + * @param depth The current recursion depth + */ +function mkdirP(fsPath, maxDepth = 1000, depth = 1) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + fsPath = path.resolve(fsPath); + if (depth >= maxDepth) + return exports.mkdir(fsPath); + try { + yield exports.mkdir(fsPath); + return; + } + catch (err) { + switch (err.code) { + case 'ENOENT': { + yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1); + yield exports.mkdir(fsPath); + return; + } + default: { + let stats; + try { + stats = yield exports.stat(fsPath); + } + catch (err2) { + throw err; + } + if (!stats.isDirectory()) + throw err; + } + } + } + }); +} +exports.mkdirP = mkdirP; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); + } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); +} +//# sourceMappingURL=io-util.js.map \ No newline at end of file diff --git a/node_modules/@actions/io/lib/io-util.js.map b/node_modules/@actions/io/lib/io-util.js.map new file mode 100644 index 00000000..95283d26 --- /dev/null +++ b/node_modules/@actions/io/lib/io-util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"io-util.js","sourceRoot":"","sources":["../src/io-util.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAyB;AACzB,yBAAwB;AACxB,6BAA4B;AAEf,gBAYE,qTAAA;AAEF,QAAA,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAEtD,SAAsB,MAAM,CAAC,MAAc;;QACzC,IAAI;YACF,MAAM,YAAI,CAAC,MAAM,CAAC,CAAA;SACnB;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzB,OAAO,KAAK,CAAA;aACb;YAED,MAAM,GAAG,CAAA;SACV;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAZD,wBAYC;AAED,SAAsB,WAAW,CAC/B,MAAc,EACd,UAAmB,KAAK;;QAExB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,YAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,aAAK,CAAC,MAAM,CAAC,CAAA;QAChE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC;CAAA;AAND,kCAMC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,CAAS;IAChC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,CAAC,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;IAED,IAAI,kBAAU,EAAE;QACd,OAAO,CACL,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,8BAA8B;SACxE,CAAA,CAAC,sBAAsB;KACzB;IAED,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAbD,4BAaC;AAED;;;;;;;;;GASG;AACH,SAAsB,MAAM,CAC1B,MAAc,EACd,WAAmB,IAAI,EACvB,QAAgB,CAAC;;QAEjB,WAAE,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAA;QAE9C,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAE7B,IAAI,KAAK,IAAI,QAAQ;YAAE,OAAO,aAAK,CAAC,MAAM,CAAC,CAAA;QAE3C,IAAI;YACF,MAAM,aAAK,CAAC,MAAM,CAAC,CAAA;YACnB,OAAM;SACP;QAAC,OAAO,GAAG,EAAE;YACZ,QAAQ,GAAG,CAAC,IAAI,EAAE;gBAChB,KAAK,QAAQ,CAAC,CAAC;oBACb,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBACvD,MAAM,aAAK,CAAC,MAAM,CAAC,CAAA;oBACnB,OAAM;iBACP;gBACD,OAAO,CAAC,CAAC;oBACP,IAAI,KAAe,CAAA;oBAEnB,IAAI;wBACF,KAAK,GAAG,MAAM,YAAI,CAAC,MAAM,CAAC,CAAA;qBAC3B;oBAAC,OAAO,IAAI,EAAE;wBACb,MAAM,GAAG,CAAA;qBACV;oBAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;wBAAE,MAAM,GAAG,CAAA;iBACpC;aACF;SACF;IACH,CAAC;CAAA;AAlCD,wBAkCC;AAED;;;;;GAKG;AACH,SAAsB,oBAAoB,CACxC,QAAgB,EAChB,UAAoB;;QAEpB,IAAI,KAAK,GAAyB,SAAS,CAAA;QAC3C,IAAI;YACF,mBAAmB;YACnB,KAAK,GAAG,MAAM,YAAI,CAAC,QAAQ,CAAC,CAAA;SAC7B;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzB,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CACT,uEAAuE,QAAQ,MAAM,GAAG,EAAE,CAC3F,CAAA;aACF;SACF;QACD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;YAC3B,IAAI,kBAAU,EAAE;gBACd,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;gBACrD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;oBACpE,OAAO,QAAQ,CAAA;iBAChB;aACF;iBAAM;gBACL,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;oBAC3B,OAAO,QAAQ,CAAA;iBAChB;aACF;SACF;QAED,qBAAqB;QACrB,MAAM,gBAAgB,GAAG,QAAQ,CAAA;QACjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAAA;YAEvC,KAAK,GAAG,SAAS,CAAA;YACjB,IAAI;gBACF,KAAK,GAAG,MAAM,YAAI,CAAC,QAAQ,CAAC,CAAA;aAC7B;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACzB,sCAAsC;oBACtC,OAAO,CAAC,GAAG,CACT,uEAAuE,QAAQ,MAAM,GAAG,EAAE,CAC3F,CAAA;iBACF;aACF;YAED,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;gBAC3B,IAAI,kBAAU,EAAE;oBACd,yEAAyE;oBACzE,IAAI;wBACF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;wBACxC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;wBACvD,KAAK,MAAM,UAAU,IAAI,MAAM,eAAO,CAAC,SAAS,CAAC,EAAE;4BACjD,IAAI,SAAS,KAAK,UAAU,CAAC,WAAW,EAAE,EAAE;gCAC1C,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;gCAC3C,MAAK;6BACN;yBACF;qBACF;oBAAC,OAAO,GAAG,EAAE;wBACZ,sCAAsC;wBACtC,OAAO,CAAC,GAAG,CACT,yEAAyE,QAAQ,MAAM,GAAG,EAAE,CAC7F,CAAA;qBACF;oBAED,OAAO,QAAQ,CAAA;iBAChB;qBAAM;oBACL,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;wBAC3B,OAAO,QAAQ,CAAA;qBAChB;iBACF;aACF;SACF;QAED,OAAO,EAAE,CAAA;IACX,CAAC;CAAA;AA5ED,oDA4EC;AAED,SAAS,mBAAmB,CAAC,CAAS;IACpC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACX,IAAI,kBAAU,EAAE;QACd,6BAA6B;QAC7B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAE1B,2BAA2B;QAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;KACjC;IAED,2BAA2B;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED,qCAAqC;AACrC,6BAA6B;AAC7B,6BAA6B;AAC7B,SAAS,gBAAgB,CAAC,KAAe;IACvC,OAAO,CACL,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACxD,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAC1D,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/node_modules/@actions/io/lib/io.d.ts b/node_modules/@actions/io/lib/io.d.ts new file mode 100644 index 00000000..cbea8d8b --- /dev/null +++ b/node_modules/@actions/io/lib/io.d.ts @@ -0,0 +1,56 @@ +/** + * Interface for cp/mv options + */ +export interface CopyOptions { + /** Optional. Whether to recursively copy all subdirectories. Defaults to false */ + recursive?: boolean; + /** Optional. Whether to overwrite existing files in the destination. Defaults to true */ + force?: boolean; +} +/** + * Interface for cp/mv options + */ +export interface MoveOptions { + /** Optional. Whether to overwrite existing files in the destination. Defaults to true */ + force?: boolean; +} +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +export declare function cp(source: string, dest: string, options?: CopyOptions): Promise; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +export declare function mv(source: string, dest: string, options?: MoveOptions): Promise; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +export declare function rmRF(inputPath: string): Promise; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise + */ +export declare function mkdirP(fsPath: string): Promise; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise path to tool + */ +export declare function which(tool: string, check?: boolean): Promise; diff --git a/node_modules/@actions/io/lib/io.js b/node_modules/@actions/io/lib/io.js new file mode 100644 index 00000000..da73b3c6 --- /dev/null +++ b/node_modules/@actions/io/lib/io.js @@ -0,0 +1,289 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const childProcess = require("child_process"); +const path = require("path"); +const util_1 = require("util"); +const ioUtil = require("./io-util"); +const exec = util_1.promisify(childProcess.exec); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; + } + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } + else { + yield cpDirRecursive(source, newDest, 0, force); + } + } + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another + // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del. + try { + if (yield ioUtil.isDirectory(inputPath, true)) { + yield exec(`rd /s /q "${inputPath}"`); + } + else { + yield exec(`del /f /a "${inputPath}"`); + } + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + } + // Shelling out fails to remove a symlink folder with missing source, this unlink catches that + try { + yield ioUtil.unlink(inputPath); + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + } + } + else { + let isDir = false; + try { + isDir = yield ioUtil.isDirectory(inputPath); + } + catch (err) { + // if you try to delete a file that doesn't exist, desired result is achieved + // other errors are valid + if (err.code !== 'ENOENT') + throw err; + return; + } + if (isDir) { + yield exec(`rm -rf "${inputPath}"`); + } + else { + yield ioUtil.unlink(inputPath); + } + } + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + yield ioUtil.mkdirP(fsPath); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + } + try { + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env.PATHEXT) { + for (const extension of process.env.PATHEXT.split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return filePath; + } + return ''; + } + // if any path separators, return empty + if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) { + return ''; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a task lib perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the task lib should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // return the first match + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions); + if (filePath) { + return filePath; + } + } + return ''; + } + catch (err) { + throw new Error(`which failed with message ${err.message}`); + } + }); +} +exports.which = which; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + return { force, recursive }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } + else { + yield copyFile(srcFile, destFile, force); + } + } + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); +} +//# sourceMappingURL=io.js.map \ No newline at end of file diff --git a/node_modules/@actions/io/lib/io.js.map b/node_modules/@actions/io/lib/io.js.map new file mode 100644 index 00000000..e52fe057 --- /dev/null +++ b/node_modules/@actions/io/lib/io.js.map @@ -0,0 +1 @@ +{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,8CAA6C;AAC7C,6BAA4B;AAC5B,+BAA8B;AAC9B,oCAAmC;AAEnC,MAAM,IAAI,GAAG,gBAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;AAoBzC;;;;;;;GAOG;AACH,SAAsB,EAAE,CACtB,MAAc,EACd,IAAY,EACZ,UAAuB,EAAE;;QAEzB,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QAEnD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7E,4CAA4C;QAC5C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;YAC3C,OAAM;SACP;QAED,wDAAwD;QACxD,MAAM,OAAO,GACX,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;YAChC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC,CAAC,IAAI,CAAA;QAEV,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAA;SACxD;QACD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5C,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE;YAC5B,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,4DAA4D,CACtF,CAAA;aACF;iBAAM;gBACL,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;aAChD;SACF;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;gBACzC,oCAAoC;gBACpC,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,UAAU,MAAM,qBAAqB,CAAC,CAAA;aAClE;YAED,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;SACvC;IACH,CAAC;CAAA;AAxCD,gBAwCC;AAED;;;;;;GAMG;AACH,SAAsB,EAAE,CACtB,MAAc,EACd,IAAY,EACZ,UAAuB,EAAE;;QAEzB,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,UAAU,GAAG,IAAI,CAAA;YACrB,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBAClC,0CAA0C;gBAC1C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC7C,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;aACvC;YAED,IAAI,UAAU,EAAE;gBACd,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;oBAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;iBACjB;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;iBAC9C;aACF;SACF;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAChC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;CAAA;AAvBD,gBAuBC;AAED;;;;GAIG;AACH,SAAsB,IAAI,CAAC,SAAiB;;QAC1C,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,yHAAyH;YACzH,mGAAmG;YACnG,IAAI;gBACF,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;oBAC7C,MAAM,IAAI,CAAC,aAAa,SAAS,GAAG,CAAC,CAAA;iBACtC;qBAAM;oBACL,MAAM,IAAI,CAAC,cAAc,SAAS,GAAG,CAAC,CAAA;iBACvC;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,6EAA6E;gBAC7E,yBAAyB;gBACzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAA;aACrC;YAED,8FAA8F;YAC9F,IAAI;gBACF,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;aAC/B;YAAC,OAAO,GAAG,EAAE;gBACZ,6EAA6E;gBAC7E,yBAAyB;gBACzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAA;aACrC;SACF;aAAM;YACL,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI;gBACF,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;aAC5C;YAAC,OAAO,GAAG,EAAE;gBACZ,6EAA6E;gBAC7E,yBAAyB;gBACzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAA;gBACpC,OAAM;aACP;YAED,IAAI,KAAK,EAAE;gBACT,MAAM,IAAI,CAAC,WAAW,SAAS,GAAG,CAAC,CAAA;aACpC;iBAAM;gBACL,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;aAC/B;SACF;IACH,CAAC;CAAA;AAzCD,oBAyCC;AAED;;;;;;GAMG;AACH,SAAsB,MAAM,CAAC,MAAc;;QACzC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;CAAA;AAFD,wBAEC;AAED;;;;;;;GAOG;AACH,SAAsB,KAAK,CAAC,IAAY,EAAE,KAAe;;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,4BAA4B;QAC5B,IAAI,KAAK,EAAE;YACT,MAAM,MAAM,GAAW,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE/C,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,MAAM,CAAC,UAAU,EAAE;oBACrB,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,wMAAwM,CAClP,CAAA;iBACF;qBAAM;oBACL,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,gMAAgM,CAC1O,CAAA;iBACF;aACF;SACF;QAED,IAAI;YACF,sCAAsC;YACtC,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;gBAC5C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACjE,IAAI,SAAS,EAAE;wBACb,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;qBAC3B;iBACF;aACF;YAED,+DAA+D;YAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzB,MAAM,QAAQ,GAAW,MAAM,MAAM,CAAC,oBAAoB,CACxD,IAAI,EACJ,UAAU,CACX,CAAA;gBAED,IAAI,QAAQ,EAAE;oBACZ,OAAO,QAAQ,CAAA;iBAChB;gBAED,OAAO,EAAE,CAAA;aACV;YAED,uCAAuC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;gBACpE,OAAO,EAAE,CAAA;aACV;YAED,gCAAgC;YAChC,EAAE;YACF,kGAAkG;YAClG,+FAA+F;YAC/F,kGAAkG;YAClG,oBAAoB;YACpB,MAAM,WAAW,GAAa,EAAE,CAAA;YAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACtD,IAAI,CAAC,EAAE;wBACL,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;qBACpB;iBACF;aACF;YAED,yBAAyB;YACzB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;gBACnC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAChD,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,EAC3B,UAAU,CACX,CAAA;gBACD,IAAI,QAAQ,EAAE;oBACZ,OAAO,QAAQ,CAAA;iBAChB;aACF;YAED,OAAO,EAAE,CAAA;SACV;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;SAC5D;IACH,CAAC;CAAA;AAnFD,sBAmFC;AAED,SAAS,eAAe,CAAC,OAAoB;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,CAAA;AAC3B,CAAC;AAED,SAAe,cAAc,CAC3B,SAAiB,EACjB,OAAe,EACf,YAAoB,EACpB,KAAc;;QAEd,gDAAgD;QAChD,IAAI,YAAY,IAAI,GAAG;YAAE,OAAM;QAC/B,YAAY,EAAE,CAAA;QAEd,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QAErB,MAAM,KAAK,GAAa,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAEvD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC5B,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAA;YAC1C,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAA;YACzC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAE/C,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE;gBAC7B,UAAU;gBACV,MAAM,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;aAC7D;iBAAM;gBACL,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;aACzC;SACF;QAED,kDAAkD;QAClD,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;CAAA;AAED,qBAAqB;AACrB,SAAe,QAAQ,CACrB,OAAe,EACf,QAAgB,EAChB,KAAc;;QAEd,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE;YAClD,oBAAoB;YACpB,IAAI;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC5B,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;aAC9B;YAAC,OAAO,CAAC,EAAE;gBACV,kCAAkC;gBAClC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;oBACtB,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;oBACpC,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;iBAC9B;gBACD,iDAAiD;aAClD;YAED,oBAAoB;YACpB,MAAM,WAAW,GAAW,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1D,MAAM,MAAM,CAAC,OAAO,CAClB,WAAW,EACX,QAAQ,EACR,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CACtC,CAAA;SACF;aAAM,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,EAAE;YACpD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;SACzC;IACH,CAAC;CAAA"} \ No newline at end of file diff --git a/node_modules/@actions/io/package.json b/node_modules/@actions/io/package.json new file mode 100644 index 00000000..cfdfd902 --- /dev/null +++ b/node_modules/@actions/io/package.json @@ -0,0 +1,64 @@ +{ + "_args": [ + [ + "@actions/io@1.0.0", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "@actions/io@1.0.0", + "_id": "@actions/io@1.0.0", + "_inBundle": false, + "_integrity": "sha512-ezrJSRdqtXtdx1WXlfYL85+40F7gB39jCK9P0jZVODW3W6xUYmu6ZOEc/UmmElUwhRyDRm1R4yNZu1Joq2kuQg==", + "_location": "/@actions/io", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "@actions/io@1.0.0", + "name": "@actions/io", + "escapedName": "@actions%2fio", + "scope": "@actions", + "rawSpec": "1.0.0", + "saveSpec": null, + "fetchSpec": "1.0.0" + }, + "_requiredBy": [ + "#DEV:/", + "/@actions/tool-cache" + ], + "_resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.0.tgz", + "_spec": "1.0.0", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "description": "Actions io lib", + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib" + ], + "gitHead": "a40bce7c8d382aa3dbadaa327acbc696e9390e55", + "homepage": "https://github.com/actions/toolkit/tree/master/packages/io", + "keywords": [ + "io", + "actions" + ], + "license": "MIT", + "main": "lib/io.js", + "name": "@actions/io", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1", + "tsc": "tsc" + }, + "version": "1.0.0" +} diff --git a/node_modules/@actions/tool-cache/README.md b/node_modules/@actions/tool-cache/README.md new file mode 100644 index 00000000..4c360ba9 --- /dev/null +++ b/node_modules/@actions/tool-cache/README.md @@ -0,0 +1,82 @@ +# `@actions/tool-cache` + +> Functions necessary for downloading and caching tools. + +## Usage + +#### Download + +You can use this to download tools (or other files) from a download URL: + +```js +const tc = require('@actions/tool-cache'); + +const node12Path = await tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz'); +``` + +#### Extract + +These can then be extracted in platform specific ways: + +```js +const tc = require('@actions/tool-cache'); + +if (process.platform === 'win32') { + tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.zip'); + const node12ExtractedFolder = await tc.extractZip(node12Path, 'path/to/extract/to'); + + // Or alternately + tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.7z'); + const node12ExtractedFolder = await tc.extract7z(node12Path, 'path/to/extract/to'); +} +else { + const node12Path = await tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz'); + const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to'); +} +``` + +#### Cache + +Finally, you can cache these directories in our tool-cache. This is useful if you want to switch back and forth between versions of a tool, or save a tool between runs for private runners (private runners are still in development but are on the roadmap). + +You'll often want to add it to the path as part of this step: + +```js +const tc = require('@actions/tool-cache'); +const core = require('@actions/core'); + +const node12Path = await tc.downloadTool('http://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz'); +const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to'); + +const cachedPath = await tc.cacheDir(node12ExtractedFolder, 'node', '12.7.0'); +core.addPath(cachedPath); +``` + +You can also cache files for reuse. + +```js +const tc = require('@actions/tool-cache'); + +tc.cacheFile('path/to/exe', 'destFileName.exe', 'myExeName', '1.1.0'); +``` + +#### Find + +Finally, you can find directories and files you've previously cached: + +```js +const tc = require('@actions/tool-cache'); +const core = require('@actions/core'); + +const nodeDirectory = tc.find('node', '12.x', 'x64'); +core.addPath(nodeDirectory); +``` + +You can even find all cached versions of a tool: + +```js +const tc = require('@actions/tool-cache'); + +const allNodeVersions = tc.findAllVersions('node'); +console.log(`Versions of node available: ${allNodeVersions}`); +``` diff --git a/node_modules/@actions/tool-cache/lib/tool-cache.d.ts b/node_modules/@actions/tool-cache/lib/tool-cache.d.ts new file mode 100644 index 00000000..ca6fa074 --- /dev/null +++ b/node_modules/@actions/tool-cache/lib/tool-cache.d.ts @@ -0,0 +1,79 @@ +export declare class HTTPError extends Error { + readonly httpStatusCode: number | undefined; + constructor(httpStatusCode: number | undefined); +} +/** + * Download a tool from an url and stream it into a file + * + * @param url url of tool to download + * @returns path to downloaded tool + */ +export declare function downloadTool(url: string): Promise; +/** + * Extract a .7z file + * + * @param file path to the .7z file + * @param dest destination directory. Optional. + * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this + * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will + * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is + * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line + * interface, it is smaller than the full command line interface, and it does support long paths. At the + * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. + * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path + * to 7zr.exe can be pass to this function. + * @returns path to the destination directory + */ +export declare function extract7z(file: string, dest?: string, _7zPath?: string): Promise; +/** + * Extract a tar + * + * @param file path to the tar + * @param dest destination directory. Optional. + * @param flags flags for the tar. Optional. + * @returns path to the destination directory + */ +export declare function extractTar(file: string, dest?: string, flags?: string): Promise; +/** + * Extract a zip + * + * @param file path to the zip + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +export declare function extractZip(file: string, dest?: string): Promise; +/** + * Caches a directory and installs it into the tool cacheDir + * + * @param sourceDir the directory to cache into tools + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +export declare function cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise; +/** + * Caches a downloaded file (GUID) and installs it + * into the tool cache with a given targetName + * + * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. + * @param targetFile the name of the file name in the tools directory + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +export declare function cacheFile(sourceFile: string, targetFile: string, tool: string, version: string, arch?: string): Promise; +/** + * Finds the path to a tool version in the local installed tool cache + * + * @param toolName name of the tool + * @param versionSpec version of the tool + * @param arch optional arch. defaults to arch of computer + */ +export declare function find(toolName: string, versionSpec: string, arch?: string): string; +/** + * Finds the paths to all versions of a tool that are installed in the local tool cache + * + * @param toolName name of the tool + * @param arch optional arch. defaults to arch of computer + */ +export declare function findAllVersions(toolName: string, arch?: string): string[]; diff --git a/node_modules/@actions/tool-cache/lib/tool-cache.js b/node_modules/@actions/tool-cache/lib/tool-cache.js new file mode 100644 index 00000000..160421a9 --- /dev/null +++ b/node_modules/@actions/tool-cache/lib/tool-cache.js @@ -0,0 +1,448 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const core = require("@actions/core"); +const io = require("@actions/io"); +const fs = require("fs"); +const os = require("os"); +const path = require("path"); +const httpm = require("typed-rest-client/HttpClient"); +const semver = require("semver"); +const uuidV4 = require("uuid/v4"); +const exec_1 = require("@actions/exec/lib/exec"); +const assert_1 = require("assert"); +class HTTPError extends Error { + constructor(httpStatusCode) { + super(`Unexpected HTTP response: ${httpStatusCode}`); + this.httpStatusCode = httpStatusCode; + Object.setPrototypeOf(this, new.target.prototype); + } +} +exports.HTTPError = HTTPError; +const IS_WINDOWS = process.platform === 'win32'; +const userAgent = 'actions/tool-cache'; +// On load grab temp directory and cache directory and remove them from env (currently don't want to expose this) +let tempDirectory = process.env['RUNNER_TEMP'] || ''; +let cacheRoot = process.env['RUNNER_TOOL_CACHE'] || ''; +// If directories not found, place them in common temp locations +if (!tempDirectory || !cacheRoot) { + let baseLocation; + if (IS_WINDOWS) { + // On windows use the USERPROFILE env variable + baseLocation = process.env['USERPROFILE'] || 'C:\\'; + } + else { + if (process.platform === 'darwin') { + baseLocation = '/Users'; + } + else { + baseLocation = '/home'; + } + } + if (!tempDirectory) { + tempDirectory = path.join(baseLocation, 'actions', 'temp'); + } + if (!cacheRoot) { + cacheRoot = path.join(baseLocation, 'actions', 'cache'); + } +} +/** + * Download a tool from an url and stream it into a file + * + * @param url url of tool to download + * @returns path to downloaded tool + */ +function downloadTool(url) { + return __awaiter(this, void 0, void 0, function* () { + // Wrap in a promise so that we can resolve from within stream callbacks + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + try { + const http = new httpm.HttpClient(userAgent, [], { + allowRetries: true, + maxRetries: 3 + }); + const destPath = path.join(tempDirectory, uuidV4()); + yield io.mkdirP(tempDirectory); + core.debug(`Downloading ${url}`); + core.debug(`Downloading ${destPath}`); + if (fs.existsSync(destPath)) { + throw new Error(`Destination file path ${destPath} already exists`); + } + const response = yield http.get(url); + if (response.message.statusCode !== 200) { + const err = new HTTPError(response.message.statusCode); + core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); + throw err; + } + const file = fs.createWriteStream(destPath); + file.on('open', () => __awaiter(this, void 0, void 0, function* () { + try { + const stream = response.message.pipe(file); + stream.on('close', () => { + core.debug('download complete'); + resolve(destPath); + }); + } + catch (err) { + core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); + reject(err); + } + })); + file.on('error', err => { + file.end(); + reject(err); + }); + } + catch (err) { + reject(err); + } + })); + }); +} +exports.downloadTool = downloadTool; +/** + * Extract a .7z file + * + * @param file path to the .7z file + * @param dest destination directory. Optional. + * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this + * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will + * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is + * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line + * interface, it is smaller than the full command line interface, and it does support long paths. At the + * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. + * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path + * to 7zr.exe can be pass to this function. + * @returns path to the destination directory + */ +function extract7z(file, dest, _7zPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); + assert_1.ok(file, 'parameter "file" is required'); + dest = dest || (yield _createExtractFolder(dest)); + const originalCwd = process.cwd(); + process.chdir(dest); + if (_7zPath) { + try { + const args = [ + 'x', + '-bb1', + '-bd', + '-sccUTF-8', + file + ]; + const options = { + silent: true + }; + yield exec_1.exec(`"${_7zPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + else { + const escapedScript = path + .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') + .replace(/'/g, "''") + .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`; + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ]; + const options = { + silent: true + }; + try { + const powershellPath = yield io.which('powershell', true); + yield exec_1.exec(`"${powershellPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + return dest; + }); +} +exports.extract7z = extract7z; +/** + * Extract a tar + * + * @param file path to the tar + * @param dest destination directory. Optional. + * @param flags flags for the tar. Optional. + * @returns path to the destination directory + */ +function extractTar(file, dest, flags = 'xz') { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + dest = dest || (yield _createExtractFolder(dest)); + const tarPath = yield io.which('tar', true); + yield exec_1.exec(`"${tarPath}"`, [flags, '-C', dest, '-f', file]); + return dest; + }); +} +exports.extractTar = extractTar; +/** + * Extract a zip + * + * @param file path to the zip + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +function extractZip(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + dest = dest || (yield _createExtractFolder(dest)); + if (IS_WINDOWS) { + yield extractZipWin(file, dest); + } + else { + if (process.platform === 'darwin') { + yield extractZipDarwin(file, dest); + } + else { + yield extractZipNix(file, dest); + } + } + return dest; + }); +} +exports.extractZip = extractZip; +function extractZipWin(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + // build the powershell command + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`; + // run powershell + const powershellPath = yield io.which('powershell'); + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ]; + yield exec_1.exec(`"${powershellPath}"`, args); + }); +} +function extractZipNix(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + const unzipPath = path.join(__dirname, '..', 'scripts', 'externals', 'unzip'); + yield exec_1.exec(`"${unzipPath}"`, [file], { cwd: dest }); + }); +} +function extractZipDarwin(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + const unzipPath = path.join(__dirname, '..', 'scripts', 'externals', 'unzip-darwin'); + yield exec_1.exec(`"${unzipPath}"`, [file], { cwd: dest }); + }); +} +/** + * Caches a directory and installs it into the tool cacheDir + * + * @param sourceDir the directory to cache into tools + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheDir(sourceDir, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source dir: ${sourceDir}`); + if (!fs.statSync(sourceDir).isDirectory()) { + throw new Error('sourceDir is not a directory'); + } + // Create the tool dir + const destPath = yield _createToolPath(tool, version, arch); + // copy each child item. do not move. move can fail on Windows + // due to anti-virus software having an open handle on a file. + for (const itemName of fs.readdirSync(sourceDir)) { + const s = path.join(sourceDir, itemName); + yield io.cp(s, destPath, { recursive: true }); + } + // write .complete + _completeToolPath(tool, version, arch); + return destPath; + }); +} +exports.cacheDir = cacheDir; +/** + * Caches a downloaded file (GUID) and installs it + * into the tool cache with a given targetName + * + * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. + * @param targetFile the name of the file name in the tools directory + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheFile(sourceFile, targetFile, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source file: ${sourceFile}`); + if (!fs.statSync(sourceFile).isFile()) { + throw new Error('sourceFile is not a file'); + } + // create the tool dir + const destFolder = yield _createToolPath(tool, version, arch); + // copy instead of move. move can fail on Windows due to + // anti-virus software having an open handle on a file. + const destPath = path.join(destFolder, targetFile); + core.debug(`destination file ${destPath}`); + yield io.cp(sourceFile, destPath); + // write .complete + _completeToolPath(tool, version, arch); + return destFolder; + }); +} +exports.cacheFile = cacheFile; +/** + * Finds the path to a tool version in the local installed tool cache + * + * @param toolName name of the tool + * @param versionSpec version of the tool + * @param arch optional arch. defaults to arch of computer + */ +function find(toolName, versionSpec, arch) { + if (!toolName) { + throw new Error('toolName parameter is required'); + } + if (!versionSpec) { + throw new Error('versionSpec parameter is required'); + } + arch = arch || os.arch(); + // attempt to resolve an explicit version + if (!_isExplicitVersion(versionSpec)) { + const localVersions = findAllVersions(toolName, arch); + const match = _evaluateVersions(localVersions, versionSpec); + versionSpec = match; + } + // check for the explicit version in the cache + let toolPath = ''; + if (versionSpec) { + versionSpec = semver.clean(versionSpec) || ''; + const cachePath = path.join(cacheRoot, toolName, versionSpec, arch); + core.debug(`checking cache: ${cachePath}`); + if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { + core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); + toolPath = cachePath; + } + else { + core.debug('not found'); + } + } + return toolPath; +} +exports.find = find; +/** + * Finds the paths to all versions of a tool that are installed in the local tool cache + * + * @param toolName name of the tool + * @param arch optional arch. defaults to arch of computer + */ +function findAllVersions(toolName, arch) { + const versions = []; + arch = arch || os.arch(); + const toolPath = path.join(cacheRoot, toolName); + if (fs.existsSync(toolPath)) { + const children = fs.readdirSync(toolPath); + for (const child of children) { + if (_isExplicitVersion(child)) { + const fullPath = path.join(toolPath, child, arch || ''); + if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { + versions.push(child); + } + } + } + } + return versions; +} +exports.findAllVersions = findAllVersions; +function _createExtractFolder(dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!dest) { + // create a temp dir + dest = path.join(tempDirectory, uuidV4()); + } + yield io.mkdirP(dest); + return dest; + }); +} +function _createToolPath(tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); + core.debug(`destination ${folderPath}`); + const markerPath = `${folderPath}.complete`; + yield io.rmRF(folderPath); + yield io.rmRF(markerPath); + yield io.mkdirP(folderPath); + return folderPath; + }); +} +function _completeToolPath(tool, version, arch) { + const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || ''); + const markerPath = `${folderPath}.complete`; + fs.writeFileSync(markerPath, ''); + core.debug('finished caching tool'); +} +function _isExplicitVersion(versionSpec) { + const c = semver.clean(versionSpec) || ''; + core.debug(`isExplicit: ${c}`); + const valid = semver.valid(c) != null; + core.debug(`explicit? ${valid}`); + return valid; +} +function _evaluateVersions(versions, versionSpec) { + let version = ''; + core.debug(`evaluating ${versions.length} versions`); + versions = versions.sort((a, b) => { + if (semver.gt(a, b)) { + return 1; + } + return -1; + }); + for (let i = versions.length - 1; i >= 0; i--) { + const potential = versions[i]; + const satisfied = semver.satisfies(potential, versionSpec); + if (satisfied) { + version = potential; + break; + } + } + if (version) { + core.debug(`matched: ${version}`); + } + else { + core.debug('match not found'); + } + return version; +} +//# sourceMappingURL=tool-cache.js.map \ No newline at end of file diff --git a/node_modules/@actions/tool-cache/lib/tool-cache.js.map b/node_modules/@actions/tool-cache/lib/tool-cache.js.map new file mode 100644 index 00000000..ffc56a72 --- /dev/null +++ b/node_modules/@actions/tool-cache/lib/tool-cache.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../src/tool-cache.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,sCAAqC;AACrC,kCAAiC;AACjC,yBAAwB;AACxB,yBAAwB;AACxB,6BAA4B;AAC5B,sDAAqD;AACrD,iCAAgC;AAChC,kCAAiC;AACjC,iDAA2C;AAE3C,mCAAyB;AAEzB,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAqB,cAAkC;QACrD,KAAK,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAA;QADjC,mBAAc,GAAd,cAAc,CAAoB;QAErD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACnD,CAAC;CACF;AALD,8BAKC;AAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAC/C,MAAM,SAAS,GAAG,oBAAoB,CAAA;AAEtC,iHAAiH;AACjH,IAAI,aAAa,GAAW,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;AAC5D,IAAI,SAAS,GAAW,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAA;AAC9D,gEAAgE;AAChE,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE;IAChC,IAAI,YAAoB,CAAA;IACxB,IAAI,UAAU,EAAE;QACd,8CAA8C;QAC9C,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,MAAM,CAAA;KACpD;SAAM;QACL,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACjC,YAAY,GAAG,QAAQ,CAAA;SACxB;aAAM;YACL,YAAY,GAAG,OAAO,CAAA;SACvB;KACF;IACD,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;KAC3D;IACD,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;KACxD;CACF;AAED;;;;;GAKG;AACH,SAAsB,YAAY,CAAC,GAAW;;QAC5C,wEAAwE;QACxE,OAAO,IAAI,OAAO,CAAS,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI;gBACF,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE;oBAC/C,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,CAAC;iBACd,CAAC,CAAA;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAA;gBAEnD,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;gBAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;gBAChC,IAAI,CAAC,KAAK,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAA;gBAErC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,iBAAiB,CAAC,CAAA;iBACpE;gBAED,MAAM,QAAQ,GAA6B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAE9D,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,GAAG,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;oBACtD,IAAI,CAAC,KAAK,CACR,4BAA4B,GAAG,WAC7B,QAAQ,CAAC,OAAO,CAAC,UACnB,aAAa,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,CAC/C,CAAA;oBACD,MAAM,GAAG,CAAA;iBACV;gBAED,MAAM,IAAI,GAA0B,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;gBAClE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAS,EAAE;oBACzB,IAAI;wBACF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;4BACtB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;4BAC/B,OAAO,CAAC,QAAQ,CAAC,CAAA;wBACnB,CAAC,CAAC,CAAA;qBACH;oBAAC,OAAO,GAAG,EAAE;wBACZ,IAAI,CAAC,KAAK,CACR,4BAA4B,GAAG,WAC7B,QAAQ,CAAC,OAAO,CAAC,UACnB,aAAa,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,CAC/C,CAAA;wBACD,MAAM,CAAC,GAAG,CAAC,CAAA;qBACZ;gBACH,CAAC,CAAA,CAAC,CAAA;gBACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oBACrB,IAAI,CAAC,GAAG,EAAE,CAAA;oBACV,MAAM,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC,CAAC,CAAA;aACH;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAA;aACZ;QACH,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;CAAA;AAvDD,oCAuDC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAsB,SAAS,CAC7B,IAAY,EACZ,IAAa,EACb,OAAgB;;QAEhB,WAAE,CAAC,UAAU,EAAE,yCAAyC,CAAC,CAAA;QACzD,WAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;QAExC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,IAAI,OAAO,EAAE;YACX,IAAI;gBACF,MAAM,IAAI,GAAa;oBACrB,GAAG;oBACH,MAAM;oBACN,KAAK;oBACL,WAAW;oBACX,IAAI;iBACL,CAAA;gBACD,MAAM,OAAO,GAAgB;oBAC3B,MAAM,EAAE,IAAI;iBACb,CAAA;gBACD,MAAM,WAAI,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;aAC1C;oBAAS;gBACR,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC3B;SACF;aAAM;YACL,MAAM,aAAa,GAAG,IAAI;iBACvB,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC;iBACpD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;iBACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA,CAAC,6DAA6D;YACxF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YACpE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YACtE,MAAM,OAAO,GAAG,MAAM,aAAa,cAAc,WAAW,cAAc,aAAa,GAAG,CAAA;YAC1F,MAAM,IAAI,GAAa;gBACrB,SAAS;gBACT,MAAM;gBACN,YAAY;gBACZ,iBAAiB;gBACjB,kBAAkB;gBAClB,cAAc;gBACd,UAAU;gBACV,OAAO;aACR,CAAA;YACD,MAAM,OAAO,GAAgB;gBAC3B,MAAM,EAAE,IAAI;aACb,CAAA;YACD,IAAI;gBACF,MAAM,cAAc,GAAW,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBACjE,MAAM,WAAI,CAAC,IAAI,cAAc,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;aACjD;oBAAS;gBACR,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AA1DD,8BA0DC;AAED;;;;;;;GAOG;AACH,SAAsB,UAAU,CAC9B,IAAY,EACZ,IAAa,EACb,QAAgB,IAAI;;QAEpB,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QACjD,MAAM,OAAO,GAAW,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACnD,MAAM,WAAI,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAE3D,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAdD,gCAcC;AAED;;;;;;GAMG;AACH,SAAsB,UAAU,CAAC,IAAY,EAAE,IAAa;;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,IAAI,UAAU,EAAE;YACd,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAChC;aAAM;YACL,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBACjC,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aACnC;iBAAM;gBACL,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aAChC;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAlBD,gCAkBC;AAED,SAAe,aAAa,CAAC,IAAY,EAAE,IAAY;;QACrD,+BAA+B;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA,CAAC,6DAA6D;QAClI,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,sKAAsK,WAAW,OAAO,WAAW,IAAI,CAAA;QAEvN,iBAAiB;QACjB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG;YACX,SAAS;YACT,MAAM;YACN,YAAY;YACZ,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,UAAU;YACV,OAAO;SACR,CAAA;QACD,MAAM,WAAI,CAAC,IAAI,cAAc,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;CAAA;AAED,SAAe,aAAa,CAAC,IAAY,EAAE,IAAY;;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;QAC7E,MAAM,WAAI,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAA;IACnD,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,IAAY,EAAE,IAAY;;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,WAAW,EACX,cAAc,CACf,CAAA;QACD,MAAM,WAAI,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAA;IACnD,CAAC;CAAA;AAED;;;;;;;GAOG;AACH,SAAsB,QAAQ,CAC5B,SAAiB,EACjB,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,KAAK,CAAC,eAAe,SAAS,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,sBAAsB;QACtB,MAAM,QAAQ,GAAW,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACnE,8DAA8D;QAC9D,8DAA8D;QAC9D,KAAK,MAAM,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAChD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACxC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SAC5C;QAED,kBAAkB;QAClB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtC,OAAO,QAAQ,CAAA;IACjB,CAAC;CAAA;AA5BD,4BA4BC;AAED;;;;;;;;;GASG;AACH,SAAsB,SAAS,CAC7B,UAAkB,EAClB,UAAkB,EAClB,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,KAAK,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAW,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAErE,wDAAwD;QACxD,uDAAuD;QACvD,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;QAC1C,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEjC,kBAAkB;QAClB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtC,OAAO,UAAU,CAAA;IACnB,CAAC;CAAA;AA7BD,8BA6BC;AAED;;;;;;GAMG;AACH,SAAgB,IAAI,CAClB,QAAgB,EAChB,WAAmB,EACnB,IAAa;IAEb,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;KAClD;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;KACrD;IAED,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;IAExB,yCAAyC;IACzC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;QACpC,MAAM,aAAa,GAAa,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAC3D,WAAW,GAAG,KAAK,CAAA;KACpB;IAED,8CAA8C;IAC9C,IAAI,QAAQ,GAAG,EAAE,CAAA;IACjB,IAAI,WAAW,EAAE;QACf,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;QACnE,IAAI,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAA;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,WAAW,CAAC,EAAE;YACtE,IAAI,CAAC,KAAK,CAAC,uBAAuB,QAAQ,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC,CAAA;YACpE,QAAQ,GAAG,SAAS,CAAA;SACrB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;SACxB;KACF;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AApCD,oBAoCC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,QAAgB,EAAE,IAAa;IAC7D,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE/C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QACnD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;gBACvD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,QAAQ,WAAW,CAAC,EAAE;oBACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBACrB;aACF;SACF;KACF;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAnBD,0CAmBC;AAED,SAAe,oBAAoB,CAAC,IAAa;;QAC/C,IAAI,CAAC,IAAI,EAAE;YACT,oBAAoB;YACpB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAA;SAC1C;QACD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAED,SAAe,eAAe,CAC5B,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,EAChC,IAAI,IAAI,EAAE,CACX,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,eAAe,UAAU,EAAE,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,GAAG,UAAU,WAAW,CAAA;QAC3C,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC3B,OAAO,UAAU,CAAA;IACnB,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAAe,EAAE,IAAa;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,EAChC,IAAI,IAAI,EAAE,CACX,CAAA;IACD,MAAM,UAAU,GAAG,GAAG,UAAU,WAAW,CAAA;IAC3C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IACzC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAE9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACrC,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,EAAE,CAAC,CAAA;IAEhC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkB,EAAE,WAAmB;IAChE,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,CAAC,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAA;IACpD,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACnB,OAAO,CAAC,CAAA;SACT;QACD,OAAO,CAAC,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;IACF,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,SAAS,GAAY,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACnE,IAAI,SAAS,EAAE;YACb,OAAO,GAAG,SAAS,CAAA;YACnB,MAAK;SACN;KACF;IAED,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;KAClC;SAAM;QACL,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;KAC9B;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"} \ No newline at end of file diff --git a/node_modules/@actions/tool-cache/package.json b/node_modules/@actions/tool-cache/package.json new file mode 100644 index 00000000..f51335ce --- /dev/null +++ b/node_modules/@actions/tool-cache/package.json @@ -0,0 +1,77 @@ +{ + "_args": [ + [ + "@actions/tool-cache@1.1.0", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "@actions/tool-cache@1.1.0", + "_id": "@actions/tool-cache@1.1.0", + "_inBundle": false, + "_integrity": "sha512-Oe/R1Gxv0G699OUL9ypxk9cTwHf1uXHhpcK7kpZt8d/Sbw915ktMkfxXt9+awOfLDwyl54sLi86KGCuSvnRuIQ==", + "_location": "/@actions/tool-cache", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "@actions/tool-cache@1.1.0", + "name": "@actions/tool-cache", + "escapedName": "@actions%2ftool-cache", + "scope": "@actions", + "rawSpec": "1.1.0", + "saveSpec": null, + "fetchSpec": "1.1.0" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.0.tgz", + "_spec": "1.1.0", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "bugs": { + "url": "https://github.com/actions/toolkit/issues" + }, + "dependencies": { + "@actions/core": "^1.0.0", + "@actions/exec": "^1.0.0", + "@actions/io": "^1.0.0", + "semver": "^6.1.0", + "typed-rest-client": "^1.4.0", + "uuid": "^3.3.2" + }, + "description": "Actions tool-cache lib", + "devDependencies": { + "@types/nock": "^10.0.3", + "@types/semver": "^6.0.0", + "@types/uuid": "^3.4.4", + "nock": "^10.0.6" + }, + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "lib", + "scripts" + ], + "homepage": "https://github.com/actions/toolkit/tree/master/packages/exec", + "keywords": [ + "exec", + "actions" + ], + "license": "MIT", + "main": "lib/tool-cache.js", + "name": "@actions/tool-cache", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/actions/toolkit.git" + }, + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1", + "tsc": "tsc" + }, + "version": "1.1.0" +} diff --git a/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 b/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 new file mode 100644 index 00000000..8b39bb4d --- /dev/null +++ b/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 @@ -0,0 +1,60 @@ +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)] + [string]$Source, + + [Parameter(Mandatory = $true)] + [string]$Target) + +# This script translates the output from 7zdec into UTF8. Node has limited +# built-in support for encodings. +# +# 7zdec uses the system default code page. The system default code page varies +# depending on the locale configuration. On an en-US box, the system default code +# page is Windows-1252. +# +# Note, on a typical en-US box, testing with the 'ç' character is a good way to +# determine whether data is passed correctly between processes. This is because +# the 'ç' character has a different code point across each of the common encodings +# on a typical en-US box, i.e. +# 1) the default console-output code page (IBM437) +# 2) the system default code page (i.e. CP_ACP) (Windows-1252) +# 3) UTF8 + +$ErrorActionPreference = 'Stop' + +# Redefine the wrapper over STDOUT to use UTF8. Node expects UTF8 by default. +$stdout = [System.Console]::OpenStandardOutput() +$utf8 = New-Object System.Text.UTF8Encoding($false) # do not emit BOM +$writer = New-Object System.IO.StreamWriter($stdout, $utf8) +[System.Console]::SetOut($writer) + +# All subsequent output must be written using [System.Console]::WriteLine(). In +# PowerShell 4, Write-Host and Out-Default do not consider the updated stream writer. + +Set-Location -LiteralPath $Target + +# Print the ##command. +$_7zdec = Join-Path -Path "$PSScriptRoot" -ChildPath "externals/7zdec.exe" +[System.Console]::WriteLine("##[command]$_7zdec x `"$Source`"") + +# The $OutputEncoding variable instructs PowerShell how to interpret the output +# from the external command. +$OutputEncoding = [System.Text.Encoding]::Default + +# Note, the output from 7zdec.exe needs to be iterated over. Otherwise PowerShell.exe +# will launch the external command in such a way that it inherits the streams. +& $_7zdec x $Source 2>&1 | + ForEach-Object { + if ($_ -is [System.Management.Automation.ErrorRecord]) { + [System.Console]::WriteLine($_.Exception.Message) + } + else { + [System.Console]::WriteLine($_) + } + } +[System.Console]::WriteLine("##[debug]7zdec.exe exit code '$LASTEXITCODE'") +[System.Console]::Out.Flush() +if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE +} \ No newline at end of file diff --git a/node_modules/@actions/tool-cache/scripts/externals/7zdec.exe b/node_modules/@actions/tool-cache/scripts/externals/7zdec.exe new file mode 100644 index 00000000..1106aa0e Binary files /dev/null and b/node_modules/@actions/tool-cache/scripts/externals/7zdec.exe differ diff --git a/node_modules/@actions/tool-cache/scripts/externals/unzip b/node_modules/@actions/tool-cache/scripts/externals/unzip new file mode 100755 index 00000000..40824180 Binary files /dev/null and b/node_modules/@actions/tool-cache/scripts/externals/unzip differ diff --git a/node_modules/@actions/tool-cache/scripts/externals/unzip-darwin b/node_modules/@actions/tool-cache/scripts/externals/unzip-darwin new file mode 100755 index 00000000..4ef15045 Binary files /dev/null and b/node_modules/@actions/tool-cache/scripts/externals/unzip-darwin differ diff --git a/node_modules/semver/CHANGELOG.md b/node_modules/semver/CHANGELOG.md new file mode 100644 index 00000000..f567dd3f --- /dev/null +++ b/node_modules/semver/CHANGELOG.md @@ -0,0 +1,70 @@ +# changes log + +## 6.2.0 + +* Coerce numbers to strings when passed to semver.coerce() +* Add `rtl` option to coerce from right to left + +## 6.1.3 + +* Handle X-ranges properly in includePrerelease mode + +## 6.1.2 + +* Do not throw when testing invalid version strings + +## 6.1.1 + +* Add options support for semver.coerce() +* Handle undefined version passed to Range.test + +## 6.1.0 + +* Add semver.compareBuild function +* Support `*` in semver.intersects + +## 6.0 + +* Fix `intersects` logic. + + This is technically a bug fix, but since it is also a change to behavior + that may require users updating their code, it is marked as a major + version increment. + +## 5.7 + +* Add `minVersion` method + +## 5.6 + +* Move boolean `loose` param to an options object, with + backwards-compatibility protection. +* Add ability to opt out of special prerelease version handling with + the `includePrerelease` option flag. + +## 5.5 + +* Add version coercion capabilities + +## 5.4 + +* Add intersection checking + +## 5.3 + +* Add `minSatisfying` method + +## 5.2 + +* Add `prerelease(v)` that returns prerelease components + +## 5.1 + +* Add Backus-Naur for ranges +* Remove excessively cute inspection methods + +## 5.0 + +* Remove AMD/Browserified build artifacts +* Fix ltr and gtr when using the `*` range +* Fix for range `*` with a prerelease identifier diff --git a/node_modules/semver/LICENSE b/node_modules/semver/LICENSE new file mode 100644 index 00000000..19129e31 --- /dev/null +++ b/node_modules/semver/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/semver/README.md b/node_modules/semver/README.md new file mode 100644 index 00000000..2293a14f --- /dev/null +++ b/node_modules/semver/README.md @@ -0,0 +1,443 @@ +semver(1) -- The semantic versioner for npm +=========================================== + +## Install + +```bash +npm install semver +```` + +## Usage + +As a node module: + +```js +const semver = require('semver') + +semver.valid('1.2.3') // '1.2.3' +semver.valid('a.b.c') // null +semver.clean(' =v1.2.3 ') // '1.2.3' +semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true +semver.gt('1.2.3', '9.8.7') // false +semver.lt('1.2.3', '9.8.7') // true +semver.minVersion('>=1.0.0') // '1.0.0' +semver.valid(semver.coerce('v2')) // '2.0.0' +semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' +``` + +As a command-line utility: + +``` +$ semver -h + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, or prerelease. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them. +``` + +## Versions + +A "version" is described by the `v2.0.0` specification found at +. + +A leading `"="` or `"v"` character is stripped off and ignored. + +## Ranges + +A `version range` is a set of `comparators` which specify versions +that satisfy the range. + +A `comparator` is composed of an `operator` and a `version`. The set +of primitive `operators` is: + +* `<` Less than +* `<=` Less than or equal to +* `>` Greater than +* `>=` Greater than or equal to +* `=` Equal. If no operator is specified, then equality is assumed, + so this operator is optional, but MAY be included. + +For example, the comparator `>=1.2.7` would match the versions +`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` +or `1.1.0`. + +Comparators can be joined by whitespace to form a `comparator set`, +which is satisfied by the **intersection** of all of the comparators +it includes. + +A range is composed of one or more comparator sets, joined by `||`. A +version matches a range if and only if every comparator in at least +one of the `||`-separated comparator sets is satisfied by the version. + +For example, the range `>=1.2.7 <1.3.0` would match the versions +`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, +or `1.1.0`. + +The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, +`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. + +### Prerelease Tags + +If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then +it will only be allowed to satisfy comparator sets if at least one +comparator with the same `[major, minor, patch]` tuple also has a +prerelease tag. + +For example, the range `>1.2.3-alpha.3` would be allowed to match the +version `1.2.3-alpha.7`, but it would *not* be satisfied by +`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater +than" `1.2.3-alpha.3` according to the SemVer sort rules. The version +range only accepts prerelease tags on the `1.2.3` version. The +version `3.4.5` *would* satisfy the range, because it does not have a +prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. + +The purpose for this behavior is twofold. First, prerelease versions +frequently are updated very quickly, and contain many breaking changes +that are (by the author's design) not yet fit for public consumption. +Therefore, by default, they are excluded from range matching +semantics. + +Second, a user who has opted into using a prerelease version has +clearly indicated the intent to use *that specific* set of +alpha/beta/rc versions. By including a prerelease tag in the range, +the user is indicating that they are aware of the risk. However, it +is still not appropriate to assume that they have opted into taking a +similar risk on the *next* set of prerelease versions. + +Note that this behavior can be suppressed (treating all prerelease +versions as if they were normal versions, for the purpose of range +matching) by setting the `includePrerelease` flag on the options +object to any +[functions](https://github.com/npm/node-semver#functions) that do +range matching. + +#### Prerelease Identifiers + +The method `.inc` takes an additional `identifier` string argument that +will append the value of the string as a prerelease identifier: + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta') +// '1.2.4-beta.0' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta +1.2.4-beta.0 +``` + +Which then can be used to increment further: + +```bash +$ semver 1.2.4-beta.0 -i prerelease +1.2.4-beta.1 +``` + +### Advanced Range Syntax + +Advanced range syntax desugars to primitive comparators in +deterministic ways. + +Advanced ranges may be combined in the same way as primitive +comparators using white space or `||`. + +#### Hyphen Ranges `X.Y.Z - A.B.C` + +Specifies an inclusive set. + +* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` + +If a partial version is provided as the first version in the inclusive +range, then the missing pieces are replaced with zeroes. + +* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` + +If a partial version is provided as the second version in the +inclusive range, then all versions that start with the supplied parts +of the tuple are accepted, but nothing that would be greater than the +provided tuple parts. + +* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0` +* `1.2.3 - 2` := `>=1.2.3 <3.0.0` + +#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` + +Any of `X`, `x`, or `*` may be used to "stand in" for one of the +numeric values in the `[major, minor, patch]` tuple. + +* `*` := `>=0.0.0` (Any version satisfies) +* `1.x` := `>=1.0.0 <2.0.0` (Matching major version) +* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions) + +A partial version range is treated as an X-Range, so the special +character is in fact optional. + +* `""` (empty string) := `*` := `>=0.0.0` +* `1` := `1.x.x` := `>=1.0.0 <2.0.0` +* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0` + +#### Tilde Ranges `~1.2.3` `~1.2` `~1` + +Allows patch-level changes if a minor version is specified on the +comparator. Allows minor-level changes if not. + +* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0` +* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`) +* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`) +* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0` +* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`) +* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`) +* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. + +#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` + +Allows changes that do not modify the left-most non-zero element in the +`[major, minor, patch]` tuple. In other words, this allows patch and +minor updates for versions `1.0.0` and above, patch updates for +versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. + +Many authors treat a `0.x` version as if the `x` were the major +"breaking-change" indicator. + +Caret ranges are ideal when an author may make breaking changes +between `0.2.4` and `0.3.0` releases, which is a common practice. +However, it presumes that there will *not* be breaking changes between +`0.2.4` and `0.2.5`. It allows for changes that are presumed to be +additive (but non-breaking), according to commonly observed practices. + +* `^1.2.3` := `>=1.2.3 <2.0.0` +* `^0.2.3` := `>=0.2.3 <0.3.0` +* `^0.0.3` := `>=0.0.3 <0.0.4` +* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. +* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the + `0.0.3` version *only* will be allowed, if they are greater than or + equal to `beta`. So, `0.0.3-pr.2` would be allowed. + +When parsing caret ranges, a missing `patch` value desugars to the +number `0`, but will allow flexibility within that value, even if the +major and minor versions are both `0`. + +* `^1.2.x` := `>=1.2.0 <2.0.0` +* `^0.0.x` := `>=0.0.0 <0.1.0` +* `^0.0` := `>=0.0.0 <0.1.0` + +A missing `minor` and `patch` values will desugar to zero, but also +allow flexibility within those values, even if the major version is +zero. + +* `^1.x` := `>=1.0.0 <2.0.0` +* `^0.x` := `>=0.0.0 <1.0.0` + +### Range Grammar + +Putting all this together, here is a Backus-Naur grammar for ranges, +for the benefit of parser authors: + +```bnf +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ +``` + +## Functions + +All methods and classes take a final `options` object argument. All +options in this object are `false` by default. The options supported +are: + +- `loose` Be more forgiving about not-quite-valid semver strings. + (Any resulting output will always be 100% strict compliant, of + course.) For backwards compatibility reasons, if the `options` + argument is a boolean value instead of an object, it is interpreted + to be the `loose` param. +- `includePrerelease` Set to suppress the [default + behavior](https://github.com/npm/node-semver#prerelease-tags) of + excluding prerelease tagged versions from ranges unless they are + explicitly opted into. + +Strict-mode Comparators and Ranges will be strict about the SemVer +strings that they parse. + +* `valid(v)`: Return the parsed version, or null if it's not valid. +* `inc(v, release)`: Return the version incremented by the release + type (`major`, `premajor`, `minor`, `preminor`, `patch`, + `prepatch`, or `prerelease`), or null if it's not valid + * `premajor` in one call will bump the version up to the next major + version and down to a prerelease of that major version. + `preminor`, and `prepatch` work the same way. + * If called from a non-prerelease version, the `prerelease` will work the + same as `prepatch`. It increments the patch version, then makes a + prerelease. If the input version is already a prerelease it simply + increments it. +* `prerelease(v)`: Returns an array of prerelease components, or null + if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]` +* `major(v)`: Return the major version number. +* `minor(v)`: Return the minor version number. +* `patch(v)`: Return the patch version number. +* `intersects(r1, r2, loose)`: Return true if the two supplied ranges + or comparators intersect. +* `parse(v)`: Attempt to parse a string as a semantic version, returning either + a `SemVer` object or `null`. + +### Comparison + +* `gt(v1, v2)`: `v1 > v2` +* `gte(v1, v2)`: `v1 >= v2` +* `lt(v1, v2)`: `v1 < v2` +* `lte(v1, v2)`: `v1 <= v2` +* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, + even if they're not the exact same string. You already know how to + compare strings. +* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. +* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call + the corresponding function above. `"==="` and `"!=="` do simple + string comparison, but are included for completeness. Throws if an + invalid comparison string is provided. +* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions + in descending order when passed to `Array.sort()`. +* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions + are equal. Sorts in ascending order if passed to `Array.sort()`. + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `diff(v1, v2)`: Returns difference between two versions by the release type + (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), + or null if the versions are the same. + +### Comparators + +* `intersects(comparator)`: Return true if the comparators intersect + +### Ranges + +* `validRange(range)`: Return the valid range or null if it's not valid +* `satisfies(version, range)`: Return true if the version satisfies the + range. +* `maxSatisfying(versions, range)`: Return the highest version in the list + that satisfies the range, or `null` if none of them do. +* `minSatisfying(versions, range)`: Return the lowest version in the list + that satisfies the range, or `null` if none of them do. +* `minVersion(range)`: Return the lowest version that can possibly match + the given range. +* `gtr(version, range)`: Return `true` if version is greater than all the + versions possible in the range. +* `ltr(version, range)`: Return `true` if version is less than all the + versions possible in the range. +* `outside(version, range, hilo)`: Return true if the version is outside + the bounds of the range in either the high or low direction. The + `hilo` argument must be either the string `'>'` or `'<'`. (This is + the function called by `gtr` and `ltr`.) +* `intersects(range)`: Return true if any of the ranges comparators intersect + +Note that, since ranges may be non-contiguous, a version might not be +greater than a range, less than a range, *or* satisfy a range! For +example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` +until `2.0.0`, so the version `1.2.10` would not be greater than the +range (because `2.0.1` satisfies, which is higher), nor less than the +range (since `1.2.8` satisfies, which is lower), and it also does not +satisfy the range. + +If you want to know if a version satisfies or does not satisfy a +range, use the `satisfies(version, range)` function. + +### Coercion + +* `coerce(version, options)`: Coerces a string to semver if possible + +This aims to provide a very forgiving translation of a non-semver string to +semver. It looks for the first digit in a string, and consumes all +remaining characters which satisfy at least a partial semver (e.g., `1`, +`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer +versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All +surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes +`3.4.0`). Only text which lacks digits will fail coercion (`version one` +is not valid). The maximum length for any semver component considered for +coercion is 16 characters; longer components will be ignored +(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any +semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value +components are invalid (`9999999999999999.4.7.4` is likely invalid). + +If the `options.rtl` flag is set, then `coerce` will return the right-most +coercible tuple that does not share an ending index with a longer coercible +tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not +`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of +any other overlapping SemVer tuple. + +### Clean + +* `clean(version)`: Clean a string to be a valid semver if possible + +This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges. + +ex. +* `s.clean(' = v 2.1.5foo')`: `null` +* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean(' = v 2.1.5-foo')`: `null` +* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean('=v2.1.5')`: `'2.1.5'` +* `s.clean(' =v2.1.5')`: `2.1.5` +* `s.clean(' 2.1.5 ')`: `'2.1.5'` +* `s.clean('~1.0.0')`: `null` diff --git a/node_modules/semver/bin/semver.js b/node_modules/semver/bin/semver.js new file mode 100755 index 00000000..666034a7 --- /dev/null +++ b/node_modules/semver/bin/semver.js @@ -0,0 +1,174 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +var argv = process.argv.slice(2) + +var versions = [] + +var range = [] + +var inc = null + +var version = require('../package.json').version + +var loose = false + +var includePrerelease = false + +var coerce = false + +var rtl = false + +var identifier + +var semver = require('../semver') + +var reverse = false + +var options = {} + +main() + +function main () { + if (!argv.length) return help() + while (argv.length) { + var a = argv.shift() + var indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + a = a.slice(0, indexOfEqualSign) + argv.unshift(a.slice(indexOfEqualSign + 1)) + } + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + switch (argv[0]) { + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': + inc = argv.shift() + break + default: + inc = 'patch' + break + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-c': case '--coerce': + coerce = true + break + case '--rtl': + rtl = true + break + case '--ltr': + rtl = false + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl } + + versions = versions.map(function (v) { + return coerce ? (semver.coerce(v, options) || { version: v }).version : v + }).filter(function (v) { + return semver.valid(v) + }) + if (!versions.length) return fail() + if (inc && (versions.length !== 1 || range.length)) { return failInc() } + + for (var i = 0, l = range.length; i < l; i++) { + versions = versions.filter(function (v) { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) return fail() + } + return success(versions) +} + +function failInc () { + console.error('--inc can only be used on a single version with no range') + fail() +} + +function fail () { process.exit(1) } + +function success () { + var compare = reverse ? 'rcompare' : 'compare' + versions.sort(function (a, b) { + return semver[compare](a, b, options) + }).map(function (v) { + return semver.clean(v, options) + }).map(function (v) { + return inc ? semver.inc(v, inc, options, identifier) : v + }).forEach(function (v, i, _) { console.log(v) }) +} + +function help () { + console.log(['SemVer ' + version, + '', + 'A JavaScript implementation of the https://semver.org/ specification', + 'Copyright Isaac Z. Schlueter', + '', + 'Usage: semver [options] [ [...]]', + 'Prints valid versions sorted by SemVer precedence', + '', + 'Options:', + '-r --range ', + ' Print versions that match the specified range.', + '', + '-i --increment []', + ' Increment a version by the specified level. Level can', + ' be one of: major, minor, patch, premajor, preminor,', + " prepatch, or prerelease. Default level is 'patch'.", + ' Only one version may be specified.', + '', + '--preid ', + ' Identifier to be used to prefix premajor, preminor,', + ' prepatch or prerelease version increments.', + '', + '-l --loose', + ' Interpret versions and ranges loosely', + '', + '-p --include-prerelease', + ' Always include prerelease versions in range matching', + '', + '-c --coerce', + ' Coerce a string into SemVer if possible', + ' (does not imply --loose)', + '', + '--rtl', + ' Coerce version strings right to left', + '', + '--ltr', + ' Coerce version strings left to right (default)', + '', + 'Program exits successfully if any valid version satisfies', + 'all supplied ranges, and prints all satisfying versions.', + '', + 'If no satisfying versions are found, then exits failure.', + '', + 'Versions are printed in ascending order, so supplying', + 'multiple versions to the utility will just sort them.' + ].join('\n')) +} diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json new file mode 100644 index 00000000..d2feef8b --- /dev/null +++ b/node_modules/semver/package.json @@ -0,0 +1,65 @@ +{ + "_args": [ + [ + "semver@6.3.0", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "semver@6.3.0", + "_id": "semver@6.3.0", + "_inBundle": false, + "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "_location": "/semver", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "semver@6.3.0", + "name": "semver", + "escapedName": "semver", + "rawSpec": "6.3.0", + "saveSpec": null, + "fetchSpec": "6.3.0" + }, + "_requiredBy": [ + "/", + "/@actions/tool-cache", + "/istanbul-lib-instrument" + ], + "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "_spec": "6.3.0", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "bin": { + "semver": "./bin/semver.js" + }, + "bugs": { + "url": "https://github.com/npm/node-semver/issues" + }, + "description": "The semantic version parser used by npm.", + "devDependencies": { + "tap": "^14.3.1" + }, + "files": [ + "bin", + "range.bnf", + "semver.js" + ], + "homepage": "https://github.com/npm/node-semver#readme", + "license": "ISC", + "main": "semver.js", + "name": "semver", + "repository": { + "type": "git", + "url": "git+https://github.com/npm/node-semver.git" + }, + "scripts": { + "postpublish": "git push origin --follow-tags", + "postversion": "npm publish", + "preversion": "npm test", + "test": "tap" + }, + "tap": { + "check-coverage": true + }, + "version": "6.3.0" +} diff --git a/node_modules/semver/range.bnf b/node_modules/semver/range.bnf new file mode 100644 index 00000000..d4c6ae0d --- /dev/null +++ b/node_modules/semver/range.bnf @@ -0,0 +1,16 @@ +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | [1-9] ( [0-9] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ diff --git a/node_modules/semver/semver.js b/node_modules/semver/semver.js new file mode 100644 index 00000000..636fa436 --- /dev/null +++ b/node_modules/semver/semver.js @@ -0,0 +1,1596 @@ +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' + +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 + +// The actual regexps go on exports.re +var re = exports.re = [] +var src = exports.src = [] +var t = exports.tokens = {} +var R = 0 + +function tok (n) { + t[n] = R++ +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +tok('NUMERICIDENTIFIER') +src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' +tok('NUMERICIDENTIFIERLOOSE') +src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+' + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +tok('NONNUMERICIDENTIFIER') +src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +tok('MAINVERSION') +src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')' + +tok('MAINVERSIONLOOSE') +src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +tok('PRERELEASEIDENTIFIER') +src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +tok('PRERELEASEIDENTIFIERLOOSE') +src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +tok('PRERELEASE') +src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' + +tok('PRERELEASELOOSE') +src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +tok('BUILDIDENTIFIER') +src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +tok('BUILD') +src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +tok('FULL') +tok('FULLPLAIN') +src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + + src[t.PRERELEASE] + '?' + + src[t.BUILD] + '?' + +src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +tok('LOOSEPLAIN') +src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + + src[t.PRERELEASELOOSE] + '?' + + src[t.BUILD] + '?' + +tok('LOOSE') +src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' + +tok('GTLT') +src[t.GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +tok('XRANGEIDENTIFIERLOOSE') +src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +tok('XRANGEIDENTIFIER') +src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' + +tok('XRANGEPLAIN') +src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:' + src[t.PRERELEASE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGEPLAINLOOSE') +src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[t.PRERELEASELOOSE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGE') +src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' +tok('XRANGELOOSE') +src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +tok('COERCE') +src[t.COERCE] = '(^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' +tok('COERCERTL') +re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +tok('LONETILDE') +src[t.LONETILDE] = '(?:~>?)' + +tok('TILDETRIM') +src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' +re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') +var tildeTrimReplace = '$1~' + +tok('TILDE') +src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' +tok('TILDELOOSE') +src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +tok('LONECARET') +src[t.LONECARET] = '(?:\\^)' + +tok('CARETTRIM') +src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' +re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') +var caretTrimReplace = '$1^' + +tok('CARET') +src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' +tok('CARETLOOSE') +src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +tok('COMPARATORLOOSE') +src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' +tok('COMPARATOR') +src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +tok('COMPARATORTRIM') +src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +tok('HYPHENRANGE') +src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAIN] + ')' + + '\\s*$' + +tok('HYPHENRANGELOOSE') +src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +tok('STAR') +src[t.STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? re[t.LOOSE] : re[t.FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} + +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + + var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() +} + +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} + +SemVer.prototype.toString = function () { + return this.version +} + +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return this.compareMain(other) || this.comparePre(other) +} + +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) +} + +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +SemVer.prototype.compareBuild = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + var i = 0 + do { + var a = this.build[i] + var b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format() + this.raw = this.version + return this +} + +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } +} + +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} + +exports.compareIdentifiers = compareIdentifiers + +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} + +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} + +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} + +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} + +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} + +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} + +exports.compareBuild = compareBuild +function compareBuild (a, b, loose) { + var versionA = new SemVer(a, loose) + var versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} + +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} + +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(a, b, loose) + }) +} + +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(b, a, loose) + }) +} + +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} + +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} + +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} + +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} + +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} + +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} + +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } + + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) +} + +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + var m = comp.match(r) + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} + +Comparator.prototype.toString = function () { + return this.value +} + +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) +} + +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + var rangeTmp + + if (this.operator === '') { + if (this.value === '') { + return true + } + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} + +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First, split based on boolean or || + this.raw = range + this.set = range.split(/\s*\|\|\s*/).map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + range) + } + + this.format() +} + +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} + +Range.prototype.toString = function () { + return this.range +} + +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + range = range.trim() + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, re[t.COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) + + return set +} + +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return ( + isSatisfiable(thisComparators, options) && + range.set.some(function (rangeComparators) { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every(function (thisComparator) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) +} + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +function isSatisfiable (comparators, options) { + var result = true + var remainingComparators = comparators.slice() + var testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every(function (otherComparator) { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } + + debug('caret return', ret) + return ret + }) +} + +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} + +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + ret = gtlt + M + '.' + m + '.' + p + pr + } else if (xm) { + ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr + } else if (xp) { + ret = '>=' + M + '.' + m + '.0' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + pr + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[t.STAR], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + + return (from + ' ' + to).trim() +} + +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} + +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} + +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} + +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} + +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} + +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + var high = null + var low = null + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version, options) { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + var match = null + if (!options.rtl) { + match = version.match(re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + var next + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1 + } + + if (match === null) { + return null + } + + return parse(match[2] + + '.' + (match[3] || '0') + + '.' + (match[4] || '0'), options) +} diff --git a/node_modules/tunnel/.npmignore b/node_modules/tunnel/.npmignore new file mode 100644 index 00000000..6684c763 --- /dev/null +++ b/node_modules/tunnel/.npmignore @@ -0,0 +1,2 @@ +/.idea +/node_modules diff --git a/node_modules/tunnel/CHANGELOG.md b/node_modules/tunnel/CHANGELOG.md new file mode 100644 index 00000000..70bdbd7e --- /dev/null +++ b/node_modules/tunnel/CHANGELOG.md @@ -0,0 +1,13 @@ +# Changelog + + - 0.0.4 (2016/01/23) + - supported Node v0.12 or later. + + - 0.0.3 (2014/01/20) + - fixed package.json + + - 0.0.1 (2012/02/18) + - supported Node v0.6.x (0.6.11 or later). + + - 0.0.0 (2012/02/11) + - first release. diff --git a/node_modules/tunnel/LICENSE b/node_modules/tunnel/LICENSE new file mode 100644 index 00000000..8b8a895c --- /dev/null +++ b/node_modules/tunnel/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012 Koichi Kobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/tunnel/README.md b/node_modules/tunnel/README.md new file mode 100644 index 00000000..b1961623 --- /dev/null +++ b/node_modules/tunnel/README.md @@ -0,0 +1,179 @@ +# node-tunnel - HTTP/HTTPS Agents for tunneling proxies + +## Example + +```javascript +var tunnel = require('tunnel'); + +var tunnelingAgent = tunnel.httpsOverHttp({ + proxy: { + host: 'localhost', + port: 3128 + } +}); + +var req = https.request({ + host: 'example.com', + port: 443, + agent: tunnelingAgent +}); +``` + +## Installation + + $ npm install tunnel + +## Usages + +### HTTP over HTTP tunneling + +```javascript +var tunnelingAgent = tunnel.httpOverHttp({ + maxSockets: poolSize, // Defaults to 5 + + proxy: { // Proxy settings + host: proxyHost, // Defaults to 'localhost' + port: proxyPort, // Defaults to 80 + localAddress: localAddress, // Local interface if necessary + + // Basic authorization for proxy server if necessary + proxyAuth: 'user:password', + + // Header fields for proxy server if necessary + headers: { + 'User-Agent': 'Node' + } + } +}); + +var req = http.request({ + host: 'example.com', + port: 80, + agent: tunnelingAgent +}); +``` + +### HTTPS over HTTP tunneling + +```javascript +var tunnelingAgent = tunnel.httpsOverHttp({ + maxSockets: poolSize, // Defaults to 5 + + // CA for origin server if necessary + ca: [ fs.readFileSync('origin-server-ca.pem')], + + // Client certification for origin server if necessary + key: fs.readFileSync('origin-server-key.pem'), + cert: fs.readFileSync('origin-server-cert.pem'), + + proxy: { // Proxy settings + host: proxyHost, // Defaults to 'localhost' + port: proxyPort, // Defaults to 80 + localAddress: localAddress, // Local interface if necessary + + // Basic authorization for proxy server if necessary + proxyAuth: 'user:password', + + // Header fields for proxy server if necessary + headers: { + 'User-Agent': 'Node' + }, + } +}); + +var req = https.request({ + host: 'example.com', + port: 443, + agent: tunnelingAgent +}); +``` + +### HTTP over HTTPS tunneling + +```javascript +var tunnelingAgent = tunnel.httpOverHttps({ + maxSockets: poolSize, // Defaults to 5 + + proxy: { // Proxy settings + host: proxyHost, // Defaults to 'localhost' + port: proxyPort, // Defaults to 443 + localAddress: localAddress, // Local interface if necessary + + // Basic authorization for proxy server if necessary + proxyAuth: 'user:password', + + // Header fields for proxy server if necessary + headers: { + 'User-Agent': 'Node' + }, + + // CA for proxy server if necessary + ca: [ fs.readFileSync('origin-server-ca.pem')], + + // Server name for verification if necessary + servername: 'example.com', + + // Client certification for proxy server if necessary + key: fs.readFileSync('origin-server-key.pem'), + cert: fs.readFileSync('origin-server-cert.pem'), + } +}); + +var req = http.request({ + host: 'example.com', + port: 80, + agent: tunnelingAgent +}); +``` + +### HTTPS over HTTPS tunneling + +```javascript +var tunnelingAgent = tunnel.httpsOverHttps({ + maxSockets: poolSize, // Defaults to 5 + + // CA for origin server if necessary + ca: [ fs.readFileSync('origin-server-ca.pem')], + + // Client certification for origin server if necessary + key: fs.readFileSync('origin-server-key.pem'), + cert: fs.readFileSync('origin-server-cert.pem'), + + proxy: { // Proxy settings + host: proxyHost, // Defaults to 'localhost' + port: proxyPort, // Defaults to 443 + localAddress: localAddress, // Local interface if necessary + + // Basic authorization for proxy server if necessary + proxyAuth: 'user:password', + + // Header fields for proxy server if necessary + headers: { + 'User-Agent': 'Node' + } + + // CA for proxy server if necessary + ca: [ fs.readFileSync('origin-server-ca.pem')], + + // Server name for verification if necessary + servername: 'example.com', + + // Client certification for proxy server if necessary + key: fs.readFileSync('origin-server-key.pem'), + cert: fs.readFileSync('origin-server-cert.pem'), + } +}); + +var req = https.request({ + host: 'example.com', + port: 443, + agent: tunnelingAgent +}); +``` + +## CONTRIBUTORS +* [Aleksis Brezas (abresas)](https://github.com/abresas) + +## License + +Licensed under the [MIT](https://github.com/koichik/node-tunnel/blob/master/LICENSE) license. diff --git a/node_modules/tunnel/index.js b/node_modules/tunnel/index.js new file mode 100644 index 00000000..29477574 --- /dev/null +++ b/node_modules/tunnel/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/tunnel'); diff --git a/node_modules/tunnel/lib/tunnel.js b/node_modules/tunnel/lib/tunnel.js new file mode 100644 index 00000000..c42b0398 --- /dev/null +++ b/node_modules/tunnel/lib/tunnel.js @@ -0,0 +1,247 @@ +'use strict'; + +var net = require('net'); +var tls = require('tls'); +var http = require('http'); +var https = require('https'); +var events = require('events'); +var assert = require('assert'); +var util = require('util'); + + +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + return agent; +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + return agent; +} + + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); + +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false + }); + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + + if (res.statusCode === 200) { + assert.equal(head.length, 0); + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + cb(socket); + } else { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } + } + + function onError(cause) { + connectReq.removeAllListeners(); + + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; + +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} + + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} + + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; +} +exports.debug = debug; // for test diff --git a/node_modules/tunnel/package.json b/node_modules/tunnel/package.json new file mode 100644 index 00000000..a597b57a --- /dev/null +++ b/node_modules/tunnel/package.json @@ -0,0 +1,67 @@ +{ + "_args": [ + [ + "tunnel@0.0.4", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "tunnel@0.0.4", + "_id": "tunnel@0.0.4", + "_inBundle": false, + "_integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=", + "_location": "/tunnel", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "tunnel@0.0.4", + "name": "tunnel", + "escapedName": "tunnel", + "rawSpec": "0.0.4", + "saveSpec": null, + "fetchSpec": "0.0.4" + }, + "_requiredBy": [ + "/typed-rest-client" + ], + "_resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", + "_spec": "0.0.4", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "author": { + "name": "Koichi Kobayashi", + "email": "koichik@improvement.jp" + }, + "bugs": { + "url": "https://github.com/koichik/node-tunnel/issues" + }, + "description": "Node HTTP/HTTPS Agents for tunneling proxies", + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "directories": { + "lib": "./lib" + }, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + }, + "homepage": "https://github.com/koichik/node-tunnel/", + "keywords": [ + "http", + "https", + "agent", + "proxy", + "tunnel" + ], + "license": "MIT", + "main": "./index.js", + "name": "tunnel", + "repository": { + "type": "git", + "url": "git+https://github.com/koichik/node-tunnel.git" + }, + "scripts": { + "test": "./node_modules/mocha/bin/mocha" + }, + "version": "0.0.4" +} diff --git a/node_modules/tunnel/test/http-over-http.js b/node_modules/tunnel/test/http-over-http.js new file mode 100644 index 00000000..73d17a2d --- /dev/null +++ b/node_modules/tunnel/test/http-over-http.js @@ -0,0 +1,108 @@ +var http = require('http'); +var net = require('net'); +var should = require('should'); +var tunnel = require('../index'); + +describe('HTTP over HTTP', function() { + it('should finish without error', function(done) { + var serverPort = 3000; + var proxyPort = 3001; + var poolSize = 3; + var N = 10; + var serverConnect = 0; + var proxyConnect = 0; + var clientConnect = 0; + var server; + var proxy; + var agent; + + server = http.createServer(function(req, res) { + tunnel.debug('SERVER: got request'); + ++serverConnect; + res.writeHead(200); + res.end('Hello' + req.url); + tunnel.debug('SERVER: sending response'); + }); + server.listen(serverPort, setupProxy); + + function setupProxy() { + proxy = http.createServer(function(req, res) { + should.fail(); + }); + proxy.on('upgrade', onConnect); // for v0.6 + proxy.on('connect', onConnect); // for v0.7 or later + + function onConnect(req, clientSocket, head) { + tunnel.debug('PROXY: got CONNECT request'); + + req.method.should.equal('CONNECT'); + req.url.should.equal('localhost:' + serverPort); + req.headers.should.not.have.property('transfer-encoding'); + req.headers.should.have.property('proxy-authorization', + 'Basic ' + new Buffer('user:password').toString('base64')); + ++proxyConnect; + + tunnel.debug('PROXY: creating a tunnel'); + var serverSocket = net.connect(serverPort, function() { + tunnel.debug('PROXY: replying to client CONNECT request'); + clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n'); + clientSocket.pipe(serverSocket); + serverSocket.write(head); + serverSocket.pipe(clientSocket); + // workaround, see joyent/node#2524 + serverSocket.on('end', function() { + clientSocket.end(); + }); + }); + } + proxy.listen(proxyPort, setupClient); + } + + function setupClient() { + agent = tunnel.httpOverHttp({ + maxSockets: poolSize, + proxy: { + port: proxyPort, + proxyAuth: 'user:password' + } + }); + + for (var i = 0; i < N; ++i) { + doClientRequest(i); + } + + function doClientRequest(i) { + tunnel.debug('CLIENT: Making HTTP request (%d)', i); + var req = http.get({ + port: serverPort, + path: '/' + i, + agent: agent + }, function(res) { + tunnel.debug('CLIENT: got HTTP response (%d)', i); + res.setEncoding('utf8'); + res.on('data', function(data) { + data.should.equal('Hello/' + i); + }); + res.on('end', function() { + ++clientConnect; + if (clientConnect === N) { + proxy.close(); + server.close(); + } + }); + }); + } + } + + server.on('close', function() { + serverConnect.should.equal(N); + proxyConnect.should.equal(poolSize); + clientConnect.should.equal(N); + + agent.sockets.should.be.empty; + agent.requests.should.be.empty; + + done(); + }); + }); +}); diff --git a/node_modules/tunnel/test/http-over-https.js b/node_modules/tunnel/test/http-over-https.js new file mode 100644 index 00000000..c3a92fd8 --- /dev/null +++ b/node_modules/tunnel/test/http-over-https.js @@ -0,0 +1,130 @@ +var http = require('http'); +var https = require('https'); +var net = require('net'); +var fs = require('fs'); +var path = require('path'); +var should = require('should'); +var tunnel = require('../index'); + +function readPem(file) { + return fs.readFileSync(path.join('test/keys', file + '.pem')); +} + +var proxyKey = readPem('proxy1-key'); +var proxyCert = readPem('proxy1-cert'); +var proxyCA = readPem('ca2-cert'); +var clientKey = readPem('client1-key'); +var clientCert = readPem('client1-cert'); +var clientCA = readPem('ca3-cert'); + +describe('HTTP over HTTPS', function() { + it('should finish without error', function(done) { + var serverPort = 3004; + var proxyPort = 3005; + var poolSize = 3; + var N = 10; + var serverConnect = 0; + var proxyConnect = 0; + var clientConnect = 0; + var server; + var proxy; + var agent; + + server = http.createServer(function(req, res) { + tunnel.debug('SERVER: got request'); + ++serverConnect; + res.writeHead(200); + res.end('Hello' + req.url); + tunnel.debug('SERVER: sending response'); + }); + server.listen(serverPort, setupProxy); + + function setupProxy() { + proxy = https.createServer({ + key: proxyKey, + cert: proxyCert, + ca: [clientCA], + requestCert: true, + rejectUnauthorized: true + }, function(req, res) { + should.fail(); + }); + proxy.on('upgrade', onConnect); // for v0.6 + proxy.on('connect', onConnect); // for v0.7 or later + + function onConnect(req, clientSocket, head) { + tunnel.debug('PROXY: got CONNECT request'); + + req.method.should.equal('CONNECT'); + req.url.should.equal('localhost:' + serverPort); + req.headers.should.not.have.property('transfer-encoding'); + ++proxyConnect; + + tunnel.debug('PROXY: creating a tunnel'); + var serverSocket = net.connect(serverPort, function() { + tunnel.debug('PROXY: replying to client CONNECT request'); + clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n'); + clientSocket.pipe(serverSocket); + serverSocket.write(head); + serverSocket.pipe(clientSocket); + // workaround, see joyent/node#2524 + serverSocket.on('end', function() { + clientSocket.end(); + }); + }); + } + proxy.listen(proxyPort, setupClient); + } + + function setupClient() { + agent = tunnel.httpOverHttps({ + maxSockets: poolSize, + proxy: { + port: proxyPort, + key: clientKey, + cert: clientCert, + ca: [proxyCA], + rejectUnauthorized: true + } + }); + + for (var i = 0; i < N; ++i) { + doClientRequest(i); + } + + function doClientRequest(i) { + tunnel.debug('CLIENT: Making HTTP request (%d)', i); + var req = http.get({ + port: serverPort, + path: '/' + i, + agent: agent + }, function(res) { + tunnel.debug('CLIENT: got HTTP response (%d)', i); + res.setEncoding('utf8'); + res.on('data', function(data) { + data.should.equal('Hello/' + i); + }); + res.on('end', function() { + ++clientConnect; + if (clientConnect === N) { + proxy.close(); + server.close(); + } + }); + }); + } + } + + server.on('close', function() { + serverConnect.should.equal(N); + proxyConnect.should.equal(poolSize); + clientConnect.should.equal(N); + + var name = 'localhost:' + serverPort; + agent.sockets.should.be.empty; + agent.requests.should.be.empty; + + done(); + }); + }); +}); diff --git a/node_modules/tunnel/test/https-over-http.js b/node_modules/tunnel/test/https-over-http.js new file mode 100644 index 00000000..82c47720 --- /dev/null +++ b/node_modules/tunnel/test/https-over-http.js @@ -0,0 +1,130 @@ +var http = require('http'); +var https = require('https'); +var net = require('net'); +var fs = require('fs'); +var path = require('path'); +var should = require('should'); +var tunnel = require('../index'); + +function readPem(file) { + return fs.readFileSync(path.join('test/keys', file + '.pem')); +} + +var serverKey = readPem('server1-key'); +var serverCert = readPem('server1-cert'); +var serverCA = readPem('ca1-cert'); +var clientKey = readPem('client1-key'); +var clientCert = readPem('client1-cert'); +var clientCA = readPem('ca3-cert'); + + +describe('HTTPS over HTTP', function() { + it('should finish without error', function(done) { + var serverPort = 3002; + var proxyPort = 3003; + var poolSize = 3; + var N = 10; + var serverConnect = 0; + var proxyConnect = 0; + var clientConnect = 0; + var server; + var proxy; + var agent; + + server = https.createServer({ + key: serverKey, + cert: serverCert, + ca: [clientCA], + requestCert: true, + rejectUnauthorized: true + }, function(req, res) { + tunnel.debug('SERVER: got request'); + ++serverConnect; + res.writeHead(200); + res.end('Hello' + req.url); + tunnel.debug('SERVER: sending response'); + }); + server.listen(serverPort, setupProxy); + + function setupProxy() { + proxy = http.createServer(function(req, res) { + should.fail(); + }); + proxy.on('upgrade', onConnect); // for v0.6 + proxy.on('connect', onConnect); // for v0.7 or later + + function onConnect(req, clientSocket, head) { + tunnel.debug('PROXY: got CONNECT request'); + + req.method.should.equal('CONNECT'); + req.url.should.equal('localhost:' + serverPort); + req.headers.should.not.have.property('transfer-encoding'); + ++proxyConnect; + + var serverSocket = net.connect(serverPort, function() { + tunnel.debug('PROXY: replying to client CONNECT request'); + clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n'); + clientSocket.pipe(serverSocket); + serverSocket.write(head); + serverSocket.pipe(clientSocket); + // workaround, see joyent/node#2524 + serverSocket.on('end', function() { + clientSocket.end(); + }); + }); + } + proxy.listen(proxyPort, setupClient); + } + + function setupClient() { + agent = tunnel.httpsOverHttp({ + maxSockets: poolSize, + key: clientKey, + cert: clientCert, + ca: [serverCA], + rejectUnauthorized: true, + proxy: { + port: proxyPort + } + }); + + for (var i = 0; i < N; ++i) { + doClientRequest(i); + } + + function doClientRequest(i) { + tunnel.debug('CLIENT: Making HTTPS request (%d)', i); + var req = https.get({ + port: serverPort, + path: '/' + i, + agent: agent + }, function(res) { + tunnel.debug('CLIENT: got HTTPS response (%d)', i); + res.setEncoding('utf8'); + res.on('data', function(data) { + data.should.equal('Hello/' + i); + }); + res.on('end', function() { + ++clientConnect; + if (clientConnect === N) { + proxy.close(); + server.close(); + } + }); + }); + } + } + + server.on('close', function() { + serverConnect.should.equal(N); + proxyConnect.should.equal(poolSize); + clientConnect.should.equal(N); + + var name = 'localhost:' + serverPort; + agent.sockets.should.be.empty; + agent.requests.should.be.empty; + + done(); + }); + }); +}); diff --git a/node_modules/tunnel/test/https-over-https-error.js b/node_modules/tunnel/test/https-over-https-error.js new file mode 100644 index 00000000..c74094df --- /dev/null +++ b/node_modules/tunnel/test/https-over-https-error.js @@ -0,0 +1,261 @@ +var http = require('http'); +var https = require('https'); +var net = require('net'); +var fs = require('fs'); +var path = require('path'); +var should = require('should'); +var tunnel = require('../index'); + +function readPem(file) { + return fs.readFileSync(path.join('test/keys', file + '.pem')); +} + +var serverKey = readPem('server2-key'); +var serverCert = readPem('server2-cert'); +var serverCA = readPem('ca1-cert'); +var proxyKey = readPem('proxy2-key'); +var proxyCert = readPem('proxy2-cert'); +var proxyCA = readPem('ca2-cert'); +var client1Key = readPem('client1-key'); +var client1Cert = readPem('client1-cert'); +var client1CA = readPem('ca3-cert'); +var client2Key = readPem('client2-key'); +var client2Cert = readPem('client2-cert'); +var client2CA = readPem('ca4-cert'); + +describe('HTTPS over HTTPS authentication failed', function() { + it('should finish without error', function(done) { + var serverPort = 3008; + var proxyPort = 3009; + var serverConnect = 0; + var proxyConnect = 0; + var clientRequest = 0; + var clientConnect = 0; + var clientError = 0; + var server; + var proxy; + + server = https.createServer({ + key: serverKey, + cert: serverCert, + ca: [client1CA], + requestCert: true, + rejectUnauthorized: true + }, function(req, res) { + tunnel.debug('SERVER: got request', req.url); + ++serverConnect; + req.on('data', function(data) { + }); + req.on('end', function() { + res.writeHead(200); + res.end('Hello, ' + serverConnect); + tunnel.debug('SERVER: sending response'); + }); + req.resume(); + }); + //server.addContext('server2', { + // key: serverKey, + // cert: serverCert, + // ca: [client1CA], + //}); + server.listen(serverPort, setupProxy); + + function setupProxy() { + proxy = https.createServer({ + key: proxyKey, + cert: proxyCert, + ca: [client2CA], + requestCert: true, + rejectUnauthorized: true + }, function(req, res) { + should.fail(); + }); + //proxy.addContext('proxy2', { + // key: proxyKey, + // cert: proxyCert, + // ca: [client2CA], + //}); + proxy.on('upgrade', onConnect); // for v0.6 + proxy.on('connect', onConnect); // for v0.7 or later + + function onConnect(req, clientSocket, head) { + req.method.should.equal('CONNECT'); + req.url.should.equal('localhost:' + serverPort); + req.headers.should.not.have.property('transfer-encoding'); + ++proxyConnect; + + var serverSocket = net.connect(serverPort, function() { + tunnel.debug('PROXY: replying to client CONNECT request'); + clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n'); + clientSocket.pipe(serverSocket); + serverSocket.write(head); + serverSocket.pipe(clientSocket); + // workaround, see #2524 + serverSocket.on('end', function() { + clientSocket.end(); + }); + }); + } + proxy.listen(proxyPort, setupClient); + } + + function setupClient() { + function doRequest(name, options, host) { + tunnel.debug('CLIENT: Making HTTPS request (%s)', name); + ++clientRequest; + var agent = tunnel.httpsOverHttps(options); + var req = https.get({ + host: 'localhost', + port: serverPort, + path: '/' + encodeURIComponent(name), + headers: { + host: host ? host : 'localhost', + }, + rejectUnauthorized: true, + agent: agent + }, function(res) { + tunnel.debug('CLIENT: got HTTPS response (%s)', name); + ++clientConnect; + res.on('data', function(data) { + }); + res.on('end', function() { + req.emit('finish'); + }); + res.resume(); + }); + req.on('error', function(err) { + tunnel.debug('CLIENT: failed HTTP response (%s)', name, err); + ++clientError; + req.emit('finish'); + }); + req.on('finish', function() { + if (clientConnect + clientError === clientRequest) { + proxy.close(); + server.close(); + } + }); + } + + doRequest('no cert origin nor proxy', { // invalid + maxSockets: 1, + ca: [serverCA], + rejectUnauthorized: true, + // no certificate for origin server + proxy: { + port: proxyPort, + ca: [proxyCA], + rejectUnauthorized: true, + headers: { + host: 'proxy2' + } + // no certificate for proxy + } + }, 'server2'); + + doRequest('no cert proxy', { // invalid + maxSockets: 1, + ca: [serverCA], + rejectUnauthorized: true, + // client certification for origin server + key: client1Key, + cert: client1Cert, + proxy: { + port: proxyPort, + ca: [proxyCA], + rejectUnauthorized: true, + headers: { + host: 'proxy2' + } + // no certificate for proxy + } + }, 'server2'); + + doRequest('no cert origin', { // invalid + maxSockets: 1, + ca: [serverCA], + rejectUnauthorized: true, + // no certificate for origin server + proxy: { + port: proxyPort, + servername: 'proxy2', + ca: [proxyCA], + rejectUnauthorized: true, + headers: { + host: 'proxy2' + }, + // client certification for proxy + key: client2Key, + cert: client2Cert + } + }, 'server2'); + + doRequest('invalid proxy server name', { // invalid + maxSockets: 1, + ca: [serverCA], + rejectUnauthorized: true, + // client certification for origin server + key: client1Key, + cert: client1Cert, + proxy: { + port: proxyPort, + ca: [proxyCA], + rejectUnauthorized: true, + // client certification for proxy + key: client2Key, + cert: client2Cert, + } + }, 'server2'); + + doRequest('invalid origin server name', { // invalid + maxSockets: 1, + ca: [serverCA], + rejectUnauthorized: true, + // client certification for origin server + key: client1Key, + cert: client1Cert, + proxy: { + port: proxyPort, + servername: 'proxy2', + ca: [proxyCA], + rejectUnauthorized: true, + headers: { + host: 'proxy2' + }, + // client certification for proxy + key: client2Key, + cert: client2Cert + } + }); + + doRequest('valid', { // valid + maxSockets: 1, + ca: [serverCA], + rejectUnauthorized: true, + // client certification for origin server + key: client1Key, + cert: client1Cert, + proxy: { + port: proxyPort, + servername: 'proxy2', + ca: [proxyCA], + rejectUnauthorized: true, + headers: { + host: 'proxy2' + }, + // client certification for proxy + key: client2Key, + cert: client2Cert + } + }, 'server2'); + } + + server.on('close', function() { + serverConnect.should.equal(1); + proxyConnect.should.equal(3); + clientConnect.should.equal(1); + clientError.should.equal(5); + + done(); + }); + }); +}); diff --git a/node_modules/tunnel/test/https-over-https.js b/node_modules/tunnel/test/https-over-https.js new file mode 100644 index 00000000..a9f81c80 --- /dev/null +++ b/node_modules/tunnel/test/https-over-https.js @@ -0,0 +1,146 @@ +var http = require('http'); +var https = require('https'); +var net = require('net'); +var fs = require('fs'); +var path = require('path'); +var should = require('should'); +var tunnel = require('../index.js'); + +function readPem(file) { + return fs.readFileSync(path.join('test/keys', file + '.pem')); +} + +var serverKey = readPem('server1-key'); +var serverCert = readPem('server1-cert'); +var serverCA = readPem('ca1-cert'); +var proxyKey = readPem('proxy1-key'); +var proxyCert = readPem('proxy1-cert'); +var proxyCA = readPem('ca2-cert'); +var client1Key = readPem('client1-key'); +var client1Cert = readPem('client1-cert'); +var client1CA = readPem('ca3-cert'); +var client2Key = readPem('client2-key'); +var client2Cert = readPem('client2-cert'); +var client2CA = readPem('ca4-cert'); + +describe('HTTPS over HTTPS', function() { + it('should finish without error', function(done) { + var serverPort = 3006; + var proxyPort = 3007; + var poolSize = 3; + var N = 5; + var serverConnect = 0; + var proxyConnect = 0; + var clientConnect = 0; + var server; + var proxy; + var agent; + + server = https.createServer({ + key: serverKey, + cert: serverCert, + ca: [client1CA], + requestCert: true, + rejectUnauthorized: true + }, function(req, res) { + tunnel.debug('SERVER: got request'); + ++serverConnect; + res.writeHead(200); + res.end('Hello' + req.url); + tunnel.debug('SERVER: sending response'); + }); + server.listen(serverPort, setupProxy); + + function setupProxy() { + proxy = https.createServer({ + key: proxyKey, + cert: proxyCert, + ca: [client2CA], + requestCert: true, + rejectUnauthorized: true + }, function(req, res) { + should.fail(); + }); + proxy.on('upgrade', onConnect); // for v0.6 + proxy.on('connect', onConnect); // for v0.7 or later + + function onConnect(req, clientSocket, head) { + tunnel.debug('PROXY: got CONNECT request'); + req.method.should.equal('CONNECT'); + req.url.should.equal('localhost:' + serverPort); + req.headers.should.not.have.property('transfer-encoding'); + ++proxyConnect; + + var serverSocket = net.connect(serverPort, function() { + tunnel.debug('PROXY: replying to client CONNECT request'); + clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n'); + clientSocket.pipe(serverSocket); + serverSocket.write(head); + serverSocket.pipe(clientSocket); + // workaround, see joyent/node#2524 + serverSocket.on('end', function() { + clientSocket.end(); + }); + }); + } + proxy.listen(proxyPort, setupClient); + } + + function setupClient() { + agent = tunnel.httpsOverHttps({ + maxSockets: poolSize, + // client certification for origin server + key: client1Key, + cert: client1Cert, + ca: [serverCA], + rejectUnauthroized: true, + proxy: { + port: proxyPort, + // client certification for proxy + key: client2Key, + cert: client2Cert, + ca: [proxyCA], + rejectUnauthroized: true + } + }); + + for (var i = 0; i < N; ++i) { + doClientRequest(i); + } + + function doClientRequest(i) { + tunnel.debug('CLIENT: Making HTTPS request (%d)', i); + var req = https.get({ + port: serverPort, + path: '/' + i, + agent: agent + }, function(res) { + tunnel.debug('CLIENT: got HTTPS response (%d)', i); + res.setEncoding('utf8'); + res.on('data', function(data) { + data.should.equal('Hello/' + i); + }); + res.on('end', function() { + ++clientConnect; + if (clientConnect === N) { + proxy.close(); + server.close(); + } + }); + }); + } + } + + server.on('close', function() { + serverConnect.should.equal(N); + proxyConnect.should.equal(poolSize); + clientConnect.should.equal(N); + + var name = 'localhost:' + serverPort; + agent.sockets.should.be.empty; + agent.requests.should.be.empty; + + done(); + }); + }); +}); diff --git a/node_modules/tunnel/test/keys/Makefile b/node_modules/tunnel/test/keys/Makefile new file mode 100644 index 00000000..6b4745b5 --- /dev/null +++ b/node_modules/tunnel/test/keys/Makefile @@ -0,0 +1,157 @@ +all: server1-cert.pem server2-cert.pem proxy1-cert.pem proxy2-cert.pem client1-cert.pem client2-cert.pem + + +# +# Create Certificate Authority: ca1 +# ('password' is used for the CA password.) +# +ca1-cert.pem: ca1.cnf + openssl req -new -x509 -days 9999 -config ca1.cnf -keyout ca1-key.pem -out ca1-cert.pem + +# +# Create Certificate Authority: ca2 +# ('password' is used for the CA password.) +# +ca2-cert.pem: ca2.cnf + openssl req -new -x509 -days 9999 -config ca2.cnf -keyout ca2-key.pem -out ca2-cert.pem + +# +# Create Certificate Authority: ca3 +# ('password' is used for the CA password.) +# +ca3-cert.pem: ca3.cnf + openssl req -new -x509 -days 9999 -config ca3.cnf -keyout ca3-key.pem -out ca3-cert.pem + +# +# Create Certificate Authority: ca4 +# ('password' is used for the CA password.) +# +ca4-cert.pem: ca4.cnf + openssl req -new -x509 -days 9999 -config ca4.cnf -keyout ca4-key.pem -out ca4-cert.pem + + +# +# server1 is signed by ca1. +# +server1-key.pem: + openssl genrsa -out server1-key.pem 1024 + +server1-csr.pem: server1.cnf server1-key.pem + openssl req -new -config server1.cnf -key server1-key.pem -out server1-csr.pem + +server1-cert.pem: server1-csr.pem ca1-cert.pem ca1-key.pem + openssl x509 -req \ + -days 9999 \ + -passin "pass:password" \ + -in server1-csr.pem \ + -CA ca1-cert.pem \ + -CAkey ca1-key.pem \ + -CAcreateserial \ + -out server1-cert.pem + +# +# server2 is signed by ca1. +# +server2-key.pem: + openssl genrsa -out server2-key.pem 1024 + +server2-csr.pem: server2.cnf server2-key.pem + openssl req -new -config server2.cnf -key server2-key.pem -out server2-csr.pem + +server2-cert.pem: server2-csr.pem ca1-cert.pem ca1-key.pem + openssl x509 -req \ + -days 9999 \ + -passin "pass:password" \ + -in server2-csr.pem \ + -CA ca1-cert.pem \ + -CAkey ca1-key.pem \ + -CAcreateserial \ + -out server2-cert.pem + +server2-verify: server2-cert.pem ca1-cert.pem + openssl verify -CAfile ca1-cert.pem server2-cert.pem + +# +# proxy1 is signed by ca2. +# +proxy1-key.pem: + openssl genrsa -out proxy1-key.pem 1024 + +proxy1-csr.pem: proxy1.cnf proxy1-key.pem + openssl req -new -config proxy1.cnf -key proxy1-key.pem -out proxy1-csr.pem + +proxy1-cert.pem: proxy1-csr.pem ca2-cert.pem ca2-key.pem + openssl x509 -req \ + -days 9999 \ + -passin "pass:password" \ + -in proxy1-csr.pem \ + -CA ca2-cert.pem \ + -CAkey ca2-key.pem \ + -CAcreateserial \ + -out proxy1-cert.pem + +# +# proxy2 is signed by ca2. +# +proxy2-key.pem: + openssl genrsa -out proxy2-key.pem 1024 + +proxy2-csr.pem: proxy2.cnf proxy2-key.pem + openssl req -new -config proxy2.cnf -key proxy2-key.pem -out proxy2-csr.pem + +proxy2-cert.pem: proxy2-csr.pem ca2-cert.pem ca2-key.pem + openssl x509 -req \ + -days 9999 \ + -passin "pass:password" \ + -in proxy2-csr.pem \ + -CA ca2-cert.pem \ + -CAkey ca2-key.pem \ + -CAcreateserial \ + -out proxy2-cert.pem + +proxy2-verify: proxy2-cert.pem ca2-cert.pem + openssl verify -CAfile ca2-cert.pem proxy2-cert.pem + +# +# client1 is signed by ca3. +# +client1-key.pem: + openssl genrsa -out client1-key.pem 1024 + +client1-csr.pem: client1.cnf client1-key.pem + openssl req -new -config client1.cnf -key client1-key.pem -out client1-csr.pem + +client1-cert.pem: client1-csr.pem ca3-cert.pem ca3-key.pem + openssl x509 -req \ + -days 9999 \ + -passin "pass:password" \ + -in client1-csr.pem \ + -CA ca3-cert.pem \ + -CAkey ca3-key.pem \ + -CAcreateserial \ + -out client1-cert.pem + +# +# client2 is signed by ca4. +# +client2-key.pem: + openssl genrsa -out client2-key.pem 1024 + +client2-csr.pem: client2.cnf client2-key.pem + openssl req -new -config client2.cnf -key client2-key.pem -out client2-csr.pem + +client2-cert.pem: client2-csr.pem ca4-cert.pem ca4-key.pem + openssl x509 -req \ + -days 9999 \ + -passin "pass:password" \ + -in client2-csr.pem \ + -CA ca4-cert.pem \ + -CAkey ca4-key.pem \ + -CAcreateserial \ + -out client2-cert.pem + + +clean: + rm -f *.pem *.srl + +test: client-verify server2-verify proxy1-verify proxy2-verify client-verify diff --git a/node_modules/tunnel/test/keys/agent1-cert.pem b/node_modules/tunnel/test/keys/agent1-cert.pem new file mode 100644 index 00000000..816f6fbf --- /dev/null +++ b/node_modules/tunnel/test/keys/agent1-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKjCCAZMCCQDQ8o4kHKdCPDANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV +UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO +BgNVBAsTB05vZGUuanMxDDAKBgNVBAMTA2NhMTEgMB4GCSqGSIb3DQEJARYRcnlA +dGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEyWjB9 +MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQK +EwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MTEgMB4G +CSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEFAANL +ADBIAkEAnzpAqcoXZxWJz/WFK7BXwD23jlREyG11x7gkydteHvn6PrVBbB5yfu6c +bk8w3/Ar608AcyMQ9vHjkLQKH7cjEQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAKha +HqjCfTIut+m/idKy3AoFh48tBHo3p9Nl5uBjQJmahKdZAaiksL24Pl+NzPQ8LIU+ +FyDHFp6OeJKN6HzZ72Bh9wpBVu6Uj1hwhZhincyTXT80wtSI/BoUAW8Ls2kwPdus +64LsJhhxqj2m4vPKNRbHB2QxnNrGi30CUf3kt3Ia +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/agent1-csr.pem b/node_modules/tunnel/test/keys/agent1-csr.pem new file mode 100644 index 00000000..748fd000 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent1-csr.pem @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH +EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD +EwZhZ2VudDExIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ +KoZIhvcNAQEBBQADSwAwSAJBAJ86QKnKF2cVic/1hSuwV8A9t45URMhtdce4JMnb +Xh75+j61QWwecn7unG5PMN/wK+tPAHMjEPbx45C0Ch+3IxECAwEAAaAlMCMGCSqG +SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB +AF+AfG64hNyYHum46m6i7RgnUBrJSOynGjs23TekV4he3QdMSAAPPqbll8W14+y3 +vOo7/yQ2v2uTqxCjakUNPPs= +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/agent1-key.pem b/node_modules/tunnel/test/keys/agent1-key.pem new file mode 100644 index 00000000..5dae7eb9 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent1-key.pem @@ -0,0 +1,9 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIBOwIBAAJBAJ86QKnKF2cVic/1hSuwV8A9t45URMhtdce4JMnbXh75+j61QWwe +cn7unG5PMN/wK+tPAHMjEPbx45C0Ch+3IxECAwEAAQJBAI2cU1IuR+4IO87WPyAB +76kruoo87AeNQkjjvuQ/00+b/6IS45mcEP5Kw0NukbqBhIw2di9uQ9J51DJ/ZfQr ++YECIQDUHaN3ZjIdJ7/w8Yq9Zzz+3kY2F/xEz6e4ftOFW8bY2QIhAMAref+WYckC +oECgOLAvAxB1lI4j7oCbAaawfxKdnPj5AiEAi95rXx09aGpAsBGmSdScrPdG1v6j +83/2ebrvoZ1uFqkCIB0AssnrRVjUB6GZTNTyU3ERfdkx/RX1zvr8WkFR/lXpAiB7 +cUZ1i8ZkZrPrdVgw2cb28UJM7qZHQnXcMHTXFFvxeQ== +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/agent1.cnf b/node_modules/tunnel/test/keys/agent1.cnf new file mode 100644 index 00000000..81d2f09f --- /dev/null +++ b/node_modules/tunnel/test/keys/agent1.cnf @@ -0,0 +1,19 @@ +[ req ] +default_bits = 1024 +days = 999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = US +ST = CA +L = SF +O = Joyent +OU = Node.js +CN = agent1 +emailAddress = ry@tinyclouds.org + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/agent2-cert.pem b/node_modules/tunnel/test/keys/agent2-cert.pem new file mode 100644 index 00000000..8e4354db --- /dev/null +++ b/node_modules/tunnel/test/keys/agent2-cert.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE----- +MIIB7DCCAZYCCQC7gs0MDNn6MTANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJV +UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO +BgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEgMB4GCSqGSIb3DQEJARYR +cnlAdGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEy +WjB9MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYD +VQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEg +MB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEF +AANLADBIAkEAyXb8FrRdKbhrKLgLSsn61i1C7w7fVVVd7OQsmV/7p9WB2lWFiDlC +WKGU9SiIz/A6wNZDUAuc2E+VwtpCT561AQIDAQABMA0GCSqGSIb3DQEBBQUAA0EA +C8HzpuNhFLCI3A5KkBS5zHAQax6TFUOhbpBCR0aTDbJ6F1liDTK1lmU/BjvPoj+9 +1LHwrmh29rK8kBPEjmymCQ== +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/agent2-csr.pem b/node_modules/tunnel/test/keys/agent2-csr.pem new file mode 100644 index 00000000..a670c4c6 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent2-csr.pem @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH +EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD +EwZhZ2VudDIxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ +KoZIhvcNAQEBBQADSwAwSAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf ++6fVgdpVhYg5QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAaAlMCMGCSqG +SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB +AJnll2pt5l0pzskQSpjjLVTlFDFmJr/AZ3UK8v0WxBjYjCe5Jx4YehkChpxIyDUm +U3J9q9MDUf0+Y2+EGkssFfk= +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/agent2-key.pem b/node_modules/tunnel/test/keys/agent2-key.pem new file mode 100644 index 00000000..522903c6 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent2-key.pem @@ -0,0 +1,9 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIBOgIBAAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf+6fVgdpVhYg5 +QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAQJBAMT6Bf34+UHKY1ObpsbH +9u2jsVblFq1rWvs8GPMY6oertzvwm3DpuSUp7PTgOB1nLTLYtCERbQ4ovtN8tn3p +OHUCIQDzIEGsoCr5vlxXvy2zJwu+fxYuhTZWMVuo1397L0VyhwIhANQh+yzqUgaf +WRtSB4T2W7ADtJI35ET61jKBty3CqJY3AiAIwju7dVW3A5WeD6Qc1SZGKZvp9yCb +AFI2BfVwwaY11wIgXF3PeGcvACMyMWsuSv7aPXHfliswAbkWuzcwA4TW01ECIGWa +cgsDvVFxmfM5NPSuT/UDTa6R5BFISB5ea0N0AR3I +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/agent2.cnf b/node_modules/tunnel/test/keys/agent2.cnf new file mode 100644 index 00000000..0a9f2c73 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent2.cnf @@ -0,0 +1,19 @@ +[ req ] +default_bits = 1024 +days = 999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = US +ST = CA +L = SF +O = Joyent +OU = Node.js +CN = agent2 +emailAddress = ry@tinyclouds.org + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/agent3-cert.pem b/node_modules/tunnel/test/keys/agent3-cert.pem new file mode 100644 index 00000000..e4a23507 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent3-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKjCCAZMCCQCDBr594bsJmTANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV +UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO +BgNVBAsTB05vZGUuanMxDDAKBgNVBAMTA2NhMjEgMB4GCSqGSIb3DQEJARYRcnlA +dGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEyWjB9 +MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQK +EwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MzEgMB4G +CSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEFAANL +ADBIAkEAtlNDZ+bHeBI0B2gD/IWqA7Aq1hwsnS4+XpnLesjTQcL2JwFFpkR0oWrw +yjrYhCogi7c5gjKrLZF1d2JD5JgHgQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAJoK +bXwsImk7vJz9649yrmsXwnuGbEKVYMvqcGyjaZNP9lYEG41y5CeRzxhWy2rlYdhE +f2nqE2lg75oJP7LQqfQY7aCqwahM3q/GQbsfKVCGjF7TVyq9TQzd8iW+FEJIQzSE +3aN85hR67+3VAXeSzmkGSVBO2m1SJIug4qftIkc2 +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/agent3-csr.pem b/node_modules/tunnel/test/keys/agent3-csr.pem new file mode 100644 index 00000000..e6c0c74b --- /dev/null +++ b/node_modules/tunnel/test/keys/agent3-csr.pem @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH +EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD +EwZhZ2VudDMxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ +KoZIhvcNAQEBBQADSwAwSAJBALZTQ2fmx3gSNAdoA/yFqgOwKtYcLJ0uPl6Zy3rI +00HC9icBRaZEdKFq8Mo62IQqIIu3OYIyqy2RdXdiQ+SYB4ECAwEAAaAlMCMGCSqG +SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB +AEGo76iH+a8pnE+RWQT+wg9/BL+iIuqrcFXLs0rbGonqderrwXAe15ODwql/Bfu3 +zgMt8ooTsgMPcMX9EgmubEM= +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/agent3-key.pem b/node_modules/tunnel/test/keys/agent3-key.pem new file mode 100644 index 00000000..d72f071e --- /dev/null +++ b/node_modules/tunnel/test/keys/agent3-key.pem @@ -0,0 +1,9 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIBOwIBAAJBALZTQ2fmx3gSNAdoA/yFqgOwKtYcLJ0uPl6Zy3rI00HC9icBRaZE +dKFq8Mo62IQqIIu3OYIyqy2RdXdiQ+SYB4ECAwEAAQJAIk+G9s2SKgFa8y3a2jGZ +LfqABSzmJGooaIsOpLuYLd6eCC31XUDlT4rPVGRhysKQCQ4+NMjgdnj9ZqNnvXY/ +RQIhAOgbdltr3Ey2hy7RuDW5rmOeJTuVqCrZ7QI8ifyCEbYTAiEAyRfvWSvvASeP +kZTMUhATRUpuyDQW+058NE0oJSinTpsCIQCR/FPhBGI3TcaQyA9Ym0T4GwvIAkUX +TqInefRAAX8qSQIgZVJPAdIWGbHSL9sWW97HpukLCorcbYEtKbkamiZyrjMCIQCX +lX76ttkeId5OsJGQcF67eFMMr2UGZ1WMf6M39lCYHQ== +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/agent3.cnf b/node_modules/tunnel/test/keys/agent3.cnf new file mode 100644 index 00000000..26db5ba7 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent3.cnf @@ -0,0 +1,19 @@ +[ req ] +default_bits = 1024 +days = 999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = US +ST = CA +L = SF +O = Joyent +OU = Node.js +CN = agent3 +emailAddress = ry@tinyclouds.org + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/agent4-cert.pem b/node_modules/tunnel/test/keys/agent4-cert.pem new file mode 100644 index 00000000..07157b91 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent4-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICSDCCAbGgAwIBAgIJAIMGvn3huwmaMA0GCSqGSIb3DQEBBQUAMHoxCzAJBgNV +BAYTAlVTMQswCQYDVQQIEwJDQTELMAkGA1UEBxMCU0YxDzANBgNVBAoTBkpveWVu +dDEQMA4GA1UECxMHTm9kZS5qczEMMAoGA1UEAxMDY2EyMSAwHgYJKoZIhvcNAQkB +FhFyeUB0aW55Y2xvdWRzLm9yZzAeFw0xMTAzMTQxODI5MTJaFw0zODA3MjkxODI5 +MTJaMH0xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTELMAkGA1UEBxMCU0YxDzAN +BgNVBAoTBkpveWVudDEQMA4GA1UECxMHTm9kZS5qczEPMA0GA1UEAxMGYWdlbnQ0 +MSAwHgYJKoZIhvcNAQkBFhFyeUB0aW55Y2xvdWRzLm9yZzBcMA0GCSqGSIb3DQEB +AQUAA0sAMEgCQQDN/yMfmQ8zdvmjlGk7b3Mn6wY2FjaMb4c5ENJX15vyYhKS1zhx +6n0kQIn2vf6yqG7tO5Okz2IJiD9Sa06mK6GrAgMBAAGjFzAVMBMGA1UdJQQMMAoG +CCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4GBAA8FXpRmdrHBdlofNvxa14zLvv0N +WnUGUmxVklFLKXvpVWTanOhVgI2TDCMrT5WvCRTD25iT1EUKWxjDhFJrklQJ+IfC +KC6fsgO7AynuxWSfSkc8/acGiAH+20vW9QxR53HYiIDMXEV/wnE0KVcr3t/d70lr +ImanTrunagV+3O4O +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/agent4-csr.pem b/node_modules/tunnel/test/keys/agent4-csr.pem new file mode 100644 index 00000000..97e115d0 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent4-csr.pem @@ -0,0 +1,10 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH +EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD +EwZhZ2VudDQxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ +KoZIhvcNAQEBBQADSwAwSAJBAM3/Ix+ZDzN2+aOUaTtvcyfrBjYWNoxvhzkQ0lfX +m/JiEpLXOHHqfSRAifa9/rKobu07k6TPYgmIP1JrTqYroasCAwEAAaAlMCMGCSqG +SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB +AMzo7GUOBtGm5MSck1rrEE2C1bU3qoVvXVuiN3A/57zXeNeq24FZMLnkDeL9U+/b +Kj646XFou04gla982Xp74p0= +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/agent4-key.pem b/node_modules/tunnel/test/keys/agent4-key.pem new file mode 100644 index 00000000..b770b015 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent4-key.pem @@ -0,0 +1,9 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIBOQIBAAJBAM3/Ix+ZDzN2+aOUaTtvcyfrBjYWNoxvhzkQ0lfXm/JiEpLXOHHq +fSRAifa9/rKobu07k6TPYgmIP1JrTqYroasCAwEAAQJAN8RQb+dx1A7rejtdWbfM +Rww7PD07Oz2eL/a72wgFsdIabRuVypIoHunqV0sAegYtNJt9yu+VhREw0R5tx/qz +EQIhAPY+nmzp0b4iFRk7mtGUmCTr9iwwzoqzITwphE7FpQnFAiEA1ihUHFT9YPHO +f85skM6qZv77NEgXHO8NJmQZ5GX1ZK8CICzle+Mluo0tD6W7HV4q9pZ8wzSJbY8S +W/PpKetm09F1AiAWTw8sAGKAtc/IGo3Oq+iuYAN1F8lolzJsfGMCGujsOwIgAJKP +t3eXilwX3ZlsDWSklWNZ7iYcfYrvAc3JqU6gFCE= +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/agent4.cnf b/node_modules/tunnel/test/keys/agent4.cnf new file mode 100644 index 00000000..5e583eb5 --- /dev/null +++ b/node_modules/tunnel/test/keys/agent4.cnf @@ -0,0 +1,21 @@ +[ req ] +default_bits = 1024 +days = 999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = US +ST = CA +L = SF +O = Joyent +OU = Node.js +CN = agent4 +emailAddress = ry@tinyclouds.org + +[ req_attributes ] +challengePassword = A challenge password + +[ ext_key_usage ] +extendedKeyUsage = clientAuth diff --git a/node_modules/tunnel/test/keys/ca1-cert.pem b/node_modules/tunnel/test/keys/ca1-cert.pem new file mode 100644 index 00000000..640c084c --- /dev/null +++ b/node_modules/tunnel/test/keys/ca1-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICIzCCAYwCCQC4ONZJx5BOwjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTExJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww +CgYDVQQDEwNjYTExJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu +anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOJMS1ug8jUu0wwEfD4h9/Mg +w0fvs7JbpMxtwpdcFpg/6ECd8YzGUvljLzeHPe2AhF26MiWIUN3YTxZRiQQ2tv93 +afRVWchdPypytmuxv2aYGjhZ66Tv4vNRizM71OE+66+KS30gEQW2k4MTr0ZVlRPR +OVey+zRSLdVaKciB/XaBAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEApfbly4b+Ry1q +bGIgGrlTvNFvF+j2RuHqSpuTB4nKyw1tbNreKmEEb6SBEfkjcTONx5rKECZ5RRPX +z4R/o1G6Dn21ouf1pWQO0BC/HnLN30KvvsoZRoxBn/fqBlJA+j/Kpj3RQgFj6l2I +AKI5fD+ucPqRGhjmmTsNyc+Ln4UfAq8= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/ca1-cert.srl b/node_modules/tunnel/test/keys/ca1-cert.srl new file mode 100644 index 00000000..d7f4b791 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca1-cert.srl @@ -0,0 +1 @@ +B111C9CEF0257692 diff --git a/node_modules/tunnel/test/keys/ca1-key.pem b/node_modules/tunnel/test/keys/ca1-key.pem new file mode 100644 index 00000000..aaa58ae9 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca1-key.pem @@ -0,0 +1,17 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIbo5wvG42IY0CAggA +MBQGCCqGSIb3DQMHBAgf8SPuz4biYASCAoAR4r8MVikusOAEt4Xp6nB7whrMX4iG +G792Qpf21nHZPMV73w3cdkfimbAfUn8F50tSJwdrAa8U9BjjpL9Kt0loIyXt/r8c +6PWAQ4WZuLPgTFUTJUNAXrunBHI0iFWYEN4YzJYmT1qN3J4u0diy0MkKz6eJPfZ3 +3v97+nF7dR2H86ZgLKsuE4pO5IRb60XW85d7CYaY6rU6l6mXMF0g9sIccHTlFoet +Xm6cA7NAm1XSI1ciYcoc8oaVE9dXoOALaTnBEZ2MJGpsYQ0Hr7kB4VKAO9wsOta5 +L9nXPv79Nzo1MZMChkrORFnwOzH4ffsUwVQ70jUzkt5DEyzCM1oSxFNRQESxnFrr +7c1jLg2gxAVwnqYo8njsKJ23BZqZUxHsBgB2Mg1L/iPT6zhclD0u3RZx9MR4ezB2 +IqoCF19Z5bblkReAeVRAE9Ol4hKVaCEIIPUspcw7eGVGONalHDCSXpIFnJoZLeXJ +OZjLmYlA6KkJw52eNE5IwIb8l/tha2fwNpRvlMoXp65yH9wKyJk8zPSM6WAk4dKD +nLrTCK4KtM6aIbG14Mff6WEf3uaLPM0cLwxmuypfieCZfkIzgytNdFZoBgaYUpon +zazvUMoy3gqDBorcU08SaosdRoL+s+QVkRhA29shf42lqOM4zbh0dTul4QDlLG0U +VBNeMJ3HnrqATfBU28j3bUqtuF2RffgcN/3ivlBjcyzF/iPt0TWmm6Zz5v4K8+b6 +lOm6gofIz+ffg2cXfPzrqZ2/xhFkcerRuN0Xp5eAhlI2vGJVGuEc4X+tT7VtQgLV +iovqzlLhp+ph/gsfCcsYZ9iso3ozw+Cx1HfJ8XT7yWUgXxblkt4uszEo +-----END ENCRYPTED PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/ca1.cnf b/node_modules/tunnel/test/keys/ca1.cnf new file mode 100644 index 00000000..dcb06372 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca1.cnf @@ -0,0 +1,17 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no +output_password = password + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = ca1 +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/ca2-cert.pem b/node_modules/tunnel/test/keys/ca2-cert.pem new file mode 100644 index 00000000..4c29c874 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca2-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICIzCCAYwCCQCxIhZSDET+8DANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww +CgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu +anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaaLMMe7K5eYABH3NnJoimG +LvY4S5tdGF6YRwfkn1bgGa+kEw1zNqa/Y0jSzs4h7bApt3+bKTalR4+Zk+0UmWgZ +Gvlq8+mdqDXtBKoWE3vYDPBmeNyKsgxf9UIhFOpsxVUeYP8t66qJyUk/FlFJcDqc +WPawikl1bUFSZXBKu4PxAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAwh3sXPIkA5kn +fpg7fV5haS4EpFr9ia61dzWbhXDZtasAx+nWdWqgG4T+HIYSLlMNZbGJ998uhFZf +DEHlbY/WuSBukZ0w+xqKBtPyjLIQKVvNiaTx5YMzQes62R1iklOXzBzyHbYIxFOG +dqLfIjEe/mVVoR23LN2tr8Wa6+rmd+w= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/ca2-cert.srl b/node_modules/tunnel/test/keys/ca2-cert.srl new file mode 100644 index 00000000..27499522 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca2-cert.srl @@ -0,0 +1 @@ +9BF2D4B2E00EDF16 diff --git a/node_modules/tunnel/test/keys/ca2-crl.pem b/node_modules/tunnel/test/keys/ca2-crl.pem new file mode 100644 index 00000000..166df745 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca2-crl.pem @@ -0,0 +1,10 @@ +-----BEGIN X509 CRL----- +MIIBXTCBxzANBgkqhkiG9w0BAQQFADB6MQswCQYDVQQGEwJVUzELMAkGA1UECBMC +Q0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUu +anMxDDAKBgNVBAMTA2NhMjEgMB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5v +cmcXDTExMDMxNDE4MjkxNloXDTEzMTIwNzE4MjkxNlowHDAaAgkAgwa+feG7CZoX +DTExMDMxNDE4MjkxNFowDQYJKoZIhvcNAQEEBQADgYEArRKuEkOla61fm4zlZtHe +LTXFV0Hgo21PScHAp6JqPol4rN5R9+EmUkv7gPCVVBJ9VjIgxSosHiLsDiz3zR+u +txHemhzbdIVANAIiChnFct8sEqH2eL4N6XNUIlMIR06NjNl7NbN8w8haqiearnuT +wmnaL4TThPmpbpKAF7N7JqQ= +-----END X509 CRL----- diff --git a/node_modules/tunnel/test/keys/ca2-database.txt b/node_modules/tunnel/test/keys/ca2-database.txt new file mode 100644 index 00000000..a0966d26 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca2-database.txt @@ -0,0 +1 @@ +R 380729182912Z 110314182914Z 8306BE7DE1BB099A unknown /C=US/ST=CA/L=SF/O=Joyent/OU=Node.js/CN=agent4/emailAddress=ry@tinyclouds.org diff --git a/node_modules/tunnel/test/keys/ca2-key.pem b/node_modules/tunnel/test/keys/ca2-key.pem new file mode 100644 index 00000000..9cea659e --- /dev/null +++ b/node_modules/tunnel/test/keys/ca2-key.pem @@ -0,0 +1,17 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI3aq9fKZIOF0CAggA +MBQGCCqGSIb3DQMHBAjyunMfVve0OwSCAoAdMsrRFlQUSILw+bq3cSVIIbFjwcs0 +B1Uz2rc9SB+1qjsazjv4zvPQSXTrsx2EOSJf9PSPz7r+c0NzO9vfWLorpXof/lwL +C1tRN7/1OqEW/mTK+1wlv0M5C4cmf44BBXmI+y+RWrQ/qc+CWEMvfHwv9zWr2K+i +cLlZv55727GvZYCMMVLiqYd/Ejj98loBsE5dhN4JJ5MPaN3UHhFTCpD453GIIzCi +FRuYhOOtX4qYoEuP2db4S2qu26723ZJnYBEHkK2YZiRrgvoZHugyGIr4f/RRoSUI +fPgycgQfL3Ow+Y1G533PiZ+CYgh9cViUzhZImEPiZpSuUntAD1loOYkJuV9Ai9XZ ++t6+7tfkM3aAo1bkaU8KcfINxxNWfAhCbUQw+tGJl2A+73OM5AGjGSfzjQQL/FOa +5omfEvdfEX2XyRRlqnQ2VucvSTL9ZdzbIJGg/euJTpM44Fwc7yAZv2aprbPoPixu +yyf0LoTjlGGSBZvHkunpWx82lYEXvHhcnCxV5MDFw8wehvDrvcSuzb8//HzLOiOB +gzUr3DOQk4U1UD6xixZjAKC+NUwTVZoHg68KtmQfkq+eGUWf5oJP4xUigi3ui/Wy +OCBDdlRBkFtgLGL51KJqtq1ixx3Q9HMl0y6edr5Ls0unDIo0LtUWUUcAtr6wl+kK +zSztxFMi2zTtbhbkwoVpucNstFQNfV1k22vtnlcux2FV2DdZiJQwYpIbr8Gj6gpK +gtV5l9RFe21oZBcKPt/chrF8ayiClfGMpF3D2p2GqGCe0HuH5uM/JAFf60rbnriA +Nu1bWiXsXLRUXcLIQ/uEPR3Mvvo9k1h4Q6it1Rp67eQiXCX6h2uFq+sB +-----END ENCRYPTED PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/ca2-serial b/node_modules/tunnel/test/keys/ca2-serial new file mode 100644 index 00000000..8a0f05e1 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca2-serial @@ -0,0 +1 @@ +01 diff --git a/node_modules/tunnel/test/keys/ca2.cnf b/node_modules/tunnel/test/keys/ca2.cnf new file mode 100644 index 00000000..46e82748 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca2.cnf @@ -0,0 +1,17 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no +output_password = password + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = ca2 +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/ca3-cert.pem b/node_modules/tunnel/test/keys/ca3-cert.pem new file mode 100644 index 00000000..02b3f7a9 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca3-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICIzCCAYwCCQCudHFhEWiUHDANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTMxJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww +CgYDVQQDEwNjYTMxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu +anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJPRJMhCNtxX6dQ3rLdrzVCl +XJMSRIICpbsc7arOzSJcrsIYeYC4d29dGwxYNLnAkKSmHujFT9SmFgh88CoYETLp +gE9zCk9hVCwUlWelM/UaIrzeLT4SC3VBptnLmMtk2mqFniLcaFdMycAcX8OIhAgG +fbqyT5Wxwz7UMegip2ZjAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEADpu8a/W+NPnS +mhyIOxXn8O//2oH9ELlBYFLIgTid0xmS05x/MgkXtWqiBEEZFoOfoJBJxM3vTFs0 +PiZvcVjv0IIjDF4s54yRVH+4WI2p7cil1fgzAVRTuOIuR+VyN7ct8s26a/7GFDq6 +NJMByyjsJHyxwwri5hVv+jbLCxmnDjI= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/ca3-cert.srl b/node_modules/tunnel/test/keys/ca3-cert.srl new file mode 100644 index 00000000..cfd39e16 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca3-cert.srl @@ -0,0 +1 @@ +EF7B2CF0FA61DF41 diff --git a/node_modules/tunnel/test/keys/ca3-key.pem b/node_modules/tunnel/test/keys/ca3-key.pem new file mode 100644 index 00000000..89311324 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca3-key.pem @@ -0,0 +1,17 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIwAta+L4c9soCAggA +MBQGCCqGSIb3DQMHBAgqRud2p3SvogSCAoDXoDJOJDkvgFpQ6rxeV5r0fLX4SrGJ +quv4yt02QxSDUPN2ZLtBt6bLzg4Zv2pIggufYJcZ2IOUnX82T7FlvBP8hbW1q3Bs +jAso7z8kJlFrZjNudjuP2l/X8tjrVyr3I0PoRoomtcHnCcSDdyne8Dqqj1enuikF +8b7FZUqocNLfu8LmNGxMmMwjw3UqhtpP5DjqV60B8ytQFPoz/gFh6aNGvsrD/avU +Dj8EJkQZP6Q32vmCzAvSiLjk7FA7RFmBtaurE9hJYNlc5v1eo69EUwPkeVlTpglJ +5sZAHxlhQCgc72ST6uFQKiMO3ng/JJA5N9EvacYSHQvI1TQIo43V2A//zUh/5hGL +sDv4pRuFq9miX8iiQpwo1LDfRzdwg7+tiLm8/mDyeLUSzDNc6GIX/tC9R4Ukq4ge +1Cfq0gtKSRxZhM8HqpGBC9rDs5mpdUqTRsoHLFn5T6/gMiAtrLCJxgD8JsZBa8rM +KZ09QEdZXTvpyvZ8bSakP5PF6Yz3QYO32CakL7LDPpCng0QDNHG10YaZbTOgJIzQ +NJ5o87DkgDx0Bb3L8FoREIBkjpYFbQi2fvPthoepZ3D5VamVsOwOiZ2sR1WF2J8l +X9c8GdG38byO+SQIPNZ8eT5JvUcNeSlIZiVSwvaEk496d2KzhmMMfoBLFVeHXG90 +CIZPleVfkTmgNQgXPWcFngqTZdDEGsHjEDDhbEAijB3EeOxyiiEDJPMy5zqkdy5D +cZ/Y77EDbln7omcyL+cGvCgBhhYpTbtbuBtzW4CiCvcfEB5N4EtJKOTRJXIpL/d3 +oVnZruqRRKidKwFMEZU2NZJX5FneAWFSeCv0IrY2vAUIc3El+n84CFFK +-----END ENCRYPTED PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/ca3.cnf b/node_modules/tunnel/test/keys/ca3.cnf new file mode 100644 index 00000000..7b2378a9 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca3.cnf @@ -0,0 +1,17 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no +output_password = password + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = ca3 +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/ca4-cert.pem b/node_modules/tunnel/test/keys/ca4-cert.pem new file mode 100644 index 00000000..ed0686a7 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca4-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICIzCCAYwCCQDUGh2r7lOpITANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTQxJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww +CgYDVQQDEwNjYTQxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu +anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOOC+SPC8XzkjIHfKPMzzNV6 +O/LpqQWdzJtEvFNW0oQ9g8gSV4iKqwUFrLNnSlwSGigvqKqGmYtG8S17ANWInoxI +c3sQlrS2cGbgLUBNKu4hZ7s+11EPOjbnn0QUE5w9GN8fy8CDx7ID/8URYKoxcoRv +0w7EJ2agfd68KS1ayxUXAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAumPFeR63Dyki +SWQtRAe2QWkIFlSRAR2PvSDdsDMLwMeXF5wD3Hv51yfTu9Gkg0QJB86deYfQ5vfV +4QsOQ35icesa12boyYpTE0/OoEX1f/s1sLlszpRvtAki3J4bkcGWAzM5yO1fKqpQ +MbtPzLn+DA7ymxuJa6EQAEb+kaJEBuU= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/ca4-cert.srl b/node_modules/tunnel/test/keys/ca4-cert.srl new file mode 100644 index 00000000..5c11314f --- /dev/null +++ b/node_modules/tunnel/test/keys/ca4-cert.srl @@ -0,0 +1 @@ +B01FE0416A2EDCF5 diff --git a/node_modules/tunnel/test/keys/ca4-key.pem b/node_modules/tunnel/test/keys/ca4-key.pem new file mode 100644 index 00000000..fa7aca11 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca4-key.pem @@ -0,0 +1,17 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIWE/ri/feeikCAggA +MBQGCCqGSIb3DQMHBAiu6hUzoFnsVASCAoC53ZQ4gxLcFnb5yAcdCl4DdKOJ5m4G +CHosR87pJpZlO68DsCKwORUp9tTmb1/Q4Wm9n2kRf6VQNyVVm6REwzEPAgIJEgy2 +FqLmfqpTElbRsQako8UDXjDjaMO30e+Qhy8HOTrHMJZ6LgrU90xnOCPPeN9fYmIu +YBkX4qewUfu+wFzk/unUbFLChvJsEN4fdrlDwTJMHRzKwbdvg3mHlCnspWwjA2Mc +q27QPeb3mwRUajmqL0dT9y7wVYeAN2zV59VoWm6zV+dWFgyMlVrVCRYkqQC3xOsy +ZlKrGldrY8nNdv5s6+Sc7YavTJiJxHgIB7sm6QFIsdqjxTBEGD4/YhEI52SUw/xO +VJmOTWdWUz4FdWNi7286nfhZ0+mdv6fUoG54Qv6ahnUMJvEsp60LkR1gHXLzQu/m ++yDZFqY/IIg2QA7M3gL0Md5GrWydDlD2uBPoXcC4A5gfOHswzHWDKurDCpoMqdpn +CUQ/ZVl2rwF8Pnty61MjY1xCN1r8xQjFBCgcfBWw5v6sNRbr/vef3TfQIBzVm+hx +akDb1nckBsIjMT9EfeT6hXub2n0oehEHewF1COifbcOjnxToLSswPLrtb0behB+o +zTgftn+4XrkY0sFY69TzYtQVMLAsiWTpZFvAi+D++2pXlQ/bnxKJiBBc6kZuAGpN +z+cJ4kUuFE4S9v5C5vK89nIgcuJT06u8wYTy0N0j/DnIjSaVgGr0Y0841mXtU1VV +wUZjuyYrVwVT/g5r6uzEFldTcjmYkbMaxo+MYnEZZgqYJvu2QlK87YxJOwo+D1NX +4gl1s/bmlPlGw/t9TxutI3S9PEr3JM3013e9UPE+evlTG9IIrZaUPzyj +-----END ENCRYPTED PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/ca4.cnf b/node_modules/tunnel/test/keys/ca4.cnf new file mode 100644 index 00000000..ceac8f35 --- /dev/null +++ b/node_modules/tunnel/test/keys/ca4.cnf @@ -0,0 +1,17 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no +output_password = password + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = ca4 +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/client.cnf b/node_modules/tunnel/test/keys/client.cnf new file mode 100644 index 00000000..e3db7416 --- /dev/null +++ b/node_modules/tunnel/test/keys/client.cnf @@ -0,0 +1,16 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = localhost +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/client1-cert.pem b/node_modules/tunnel/test/keys/client1-cert.pem new file mode 100644 index 00000000..24ea1db7 --- /dev/null +++ b/node_modules/tunnel/test/keys/client1-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAZICCQDveyzw+mHfQTANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTMxJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw +EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92 +ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYUuKyuxT93zvrS +mL8IMI8xu8dP3iRZDUYu6dmq6Dntgb7intfzxtEFVmfNCDGwJwg7UKx/FzftGxFb +9LksuvAQuW2FLhCrOmXUVU938OZkQRSflISD80kd4i9JEoKKYPX1imjaMugIQ0ta +Bq2orY6sna8JAUVDW6WO3wVEJ4mBAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAAbaH +bc/6dIFC9TPIDrgsLtsOtycdBJqKbFT1wThhyKncXF/iyaI+8N4UA+hXMjk8ODUl +BVmmgaN6ufMLwnx/Gdl9FLmmDq4FQ4zspClTJo42QPzg5zKoPSw5liy73LM7z+nG +g6IeM8RFlEbs109YxqvQnbHfTgeLdIsdvtNXU80= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/client1-csr.pem b/node_modules/tunnel/test/keys/client1-csr.pem new file mode 100644 index 00000000..c33a1354 --- /dev/null +++ b/node_modules/tunnel/test/keys/client1-csr.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES +MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv +dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGFLisrsU/d876 +0pi/CDCPMbvHT94kWQ1GLunZqug57YG+4p7X88bRBVZnzQgxsCcIO1Csfxc37RsR +W/S5LLrwELlthS4Qqzpl1FVPd/DmZEEUn5SEg/NJHeIvSRKCimD19Ypo2jLoCENL +WgatqK2OrJ2vCQFFQ1uljt8FRCeJgQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg +Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAB5NvNSHX+WDlF5R +LNr7SI2NzIy5OWEAgTxLkvS0NS75zlDLScaqwgs1uNfB2AnH0Fpw9+pePEijlb+L +3VRLNpV8hRn5TKztlS3O0Z4PPb7hlDHitXukTOQYrq0juQacodVSgWqNbac+O2yK +qf4Y3A7kQO1qmDOfN6QJFYVIpPiP +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/client1-key.pem b/node_modules/tunnel/test/keys/client1-key.pem new file mode 100644 index 00000000..52aff97b --- /dev/null +++ b/node_modules/tunnel/test/keys/client1-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDGFLisrsU/d8760pi/CDCPMbvHT94kWQ1GLunZqug57YG+4p7X +88bRBVZnzQgxsCcIO1Csfxc37RsRW/S5LLrwELlthS4Qqzpl1FVPd/DmZEEUn5SE +g/NJHeIvSRKCimD19Ypo2jLoCENLWgatqK2OrJ2vCQFFQ1uljt8FRCeJgQIDAQAB +AoGAbfcM+xjfejeqGYcWs175jlVe2OyW93jUrLTYsDV4TMh08iLfaiX0pw+eg2vI +88TGNoSvacP4gNzJ3R4+wxp5AFlRKZ876yL7D0VKavMFwbyRk21+D/tLGvW6gqOC +4qi4IWSkfgBh5RK+o4jZcl5tzRPQyuxR3pJGBS33q5K2dEECQQDhV4NuKZcGDnKt +1AhmtzqsJ4wrp2a3ysZYDTWyA692NGXi2Vnpnc6Aw9JchJhT3cueFLcOTFrb/ttu +ZC/iA67pAkEA4Qe7LvcPvHlwNAmzqzOg2lYAqq+aJY2ghfJMqr3dPCJqbHJnLN6p +GXsqGngwVlnvso0O/n5g30UmzvkRMFZW2QJAbOMQy0alh3OrzntKo/eeDln9zYpS +hDUjqqCXdbF6M7AWG4vTeqOaiXYWTEZ2JPBj17tCyVH0BaIc/jbDPH9zIQJBALei +YH0l/oB2tTqyBB2cpxIlhqvDW05z8d/859WZ1PVivGg9P7cdCO+TU7uAAyokgHe7 +ptXFefYZb18NX5qLipkCQHjIo4BknrO1oisfsusWcCC700aRIYIDk0QyEEIAY3+9 +7ar/Oo1EbqWA/qN7zByPuTKrjrb91/D+IMFUFgb4RWc= +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/client1.cnf b/node_modules/tunnel/test/keys/client1.cnf new file mode 100644 index 00000000..e3db7416 --- /dev/null +++ b/node_modules/tunnel/test/keys/client1.cnf @@ -0,0 +1,16 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = localhost +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/client2-cert.pem b/node_modules/tunnel/test/keys/client2-cert.pem new file mode 100644 index 00000000..f0de53c7 --- /dev/null +++ b/node_modules/tunnel/test/keys/client2-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAZICCQCwH+BBai7c9TANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTQxJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw +EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92 +ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMJQGt34PZX5pQmi +3bNp3dryr7qPO3oGhTeShLCeZ6PPCdnmVl0PnT0n8/DFBlaijbvXGU9AjcFZ7gg7 +hcSAFLGmPEb2pug021yzl7u0qUD2fnVaEzfJ04ZU4lUCFqGKsfFVQuIkDHFwadbE +AO+8EqOmDynUMkKfHPWQK6O9jt5ZAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEA143M +QIygJGDv2GFKlVgV05/CYZo6ouX9I6vPRekJnGeL98lmVH83Ogb7Xmc2SbJ18qFq +naBYnUEmHPUAZ2Ms2KuV3OOvscUSCsEJ4utJYznOT8PsemxVWrgG1Ba+zpnPkdII +p+PanKCsclNUKwBlSkJ8XfGi9CAZJBykwws3O1c= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/client2-csr.pem b/node_modules/tunnel/test/keys/client2-csr.pem new file mode 100644 index 00000000..b7507f4f --- /dev/null +++ b/node_modules/tunnel/test/keys/client2-csr.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES +MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv +dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCUBrd+D2V+aUJ +ot2zad3a8q+6jzt6BoU3koSwnmejzwnZ5lZdD509J/PwxQZWoo271xlPQI3BWe4I +O4XEgBSxpjxG9qboNNtcs5e7tKlA9n51WhM3ydOGVOJVAhahirHxVULiJAxxcGnW +xADvvBKjpg8p1DJCnxz1kCujvY7eWQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg +Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAA//UPKPpVEpflDj +DBboWewa6yw8FEOnMvh6eeg/a8KbXfIYnkZRtxbmH06ygywBy/RUBCbM5EzyElkJ +bTVKorzCHnxuTfSnKQ68ZD+vI2SNjiWqQFXW6oOCPzLbtaTJVKw5D6ylBp8Zsu6n +BzQ/4Y42aX/HW4nfJeDydxNFYVJJ +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/client2-key.pem b/node_modules/tunnel/test/keys/client2-key.pem new file mode 100644 index 00000000..ecb616e1 --- /dev/null +++ b/node_modules/tunnel/test/keys/client2-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQDCUBrd+D2V+aUJot2zad3a8q+6jzt6BoU3koSwnmejzwnZ5lZd +D509J/PwxQZWoo271xlPQI3BWe4IO4XEgBSxpjxG9qboNNtcs5e7tKlA9n51WhM3 +ydOGVOJVAhahirHxVULiJAxxcGnWxADvvBKjpg8p1DJCnxz1kCujvY7eWQIDAQAB +AoGAbiT0JdCaMFIzb/PnEdU30e1xGSIpx7C8gNTH7EnOW7d3URHU8KlyKwFjsJ4u +SpuYFdsG2Lqx3+D3IamD2O/1SgODmtdFas1C/hQ2zx42SgyBQolVJU1MHJxHqmCb +nm2Wo8aHmvFXpQ8OF4YJLPxLOSdvmq0PC17evDyjz5PciWUCQQD5yzaBpJ7yzGwd +b6nreWj6pt+jfi11YsA3gAdvTJcFzMGyNNC+U9OExjQqHsyaHyxGhHKQ6y+ybZkR +BggkudPfAkEAxyQC/hmcvWegdGI4xOJNbm0kv8UyxyeqhtgzEW2hWgEQs4k3fflZ +iNpvxyIBIp/7zZo02YqeQfZlDYuxKypUxwJAa6jQBzRCZXcBqfY0kA611kIR5U8+ +nHdBTSpbCfdCp/dGDF6DEWTjpzgdx4GawVpqJMJ09kzHM+nUrOeinuGQlQJAMAsV +Gb6OHPfaMxnbPkymh6SXQBjQNlHwhxWzxFmhmrg1EkthcufsXOLuIqmmgnb8Zc71 +PyJ9KcbK/GieNp7A0wJAIz3Mm3Up9Rlk25TH9k5e3ELjC6fkd93u94Uo145oTgDm +HSbCbjifP5eVl66PztxZppG2GBXiXT0hA/RMruTQMg== +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/client2.cnf b/node_modules/tunnel/test/keys/client2.cnf new file mode 100644 index 00000000..e3db7416 --- /dev/null +++ b/node_modules/tunnel/test/keys/client2.cnf @@ -0,0 +1,16 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = localhost +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/proxy1-cert.pem b/node_modules/tunnel/test/keys/proxy1-cert.pem new file mode 100644 index 00000000..30851fec --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy1-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAZICCQCb8tSy4A7fFTANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw +EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92 +ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALiUyeosVxtJK8G4 +sAqU2DBLx5sMuZpV/YcW/YxUuJv3t/9TpVxcWAs6VRPzi5fqKe8TER8qxi1/I8zV +Qks1gWyZ01reU6Wpdt1MZguF036W2qKOxlJXvnqnRDWu9IFf6KMjSJjFZb6nqhQv +aiL/80hqc2qXVfuJbSYlGrKWFFINAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEABPIn ++vQoDpJx7lVNJNOe7DE+ShCXCK6jkQY8+GQXB1sz5K0OWdZxUWOOp/fcjNJua0NM +hgnylWu/pmjPh7c9xHdZhuh6LPD3F0k4QqK+I2rg45gdBPZT2IxEvxNYpGIfayvY +ofOgbienn69tMzGCMF/lUmEJu7Bn08EbL+OyNBg= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/proxy1-csr.pem b/node_modules/tunnel/test/keys/proxy1-csr.pem new file mode 100644 index 00000000..78ad2208 --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy1-csr.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES +MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv +dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4lMnqLFcbSSvB +uLAKlNgwS8ebDLmaVf2HFv2MVLib97f/U6VcXFgLOlUT84uX6invExEfKsYtfyPM +1UJLNYFsmdNa3lOlqXbdTGYLhdN+ltqijsZSV756p0Q1rvSBX+ijI0iYxWW+p6oU +L2oi//NIanNql1X7iW0mJRqylhRSDQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg +Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAFhZc2cvYGf8mCg/ +5nPWmnjNIqgy7uJnOGfE3AP4rW48yiVHCJK9ZmPogbH7gBMOBrrX8fLX3ThK9Sbj +uJlBlZD/19zjM+kvJ14DcievJ15S3KehVQ6Ipmgbz/vnAaL1D+ZiOnjQad2/Fzg4 +0MFXQaZFEUcI8fKnv/zmYi1aivej +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/proxy1-key.pem b/node_modules/tunnel/test/keys/proxy1-key.pem new file mode 100644 index 00000000..d06fddd5 --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy1-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQC4lMnqLFcbSSvBuLAKlNgwS8ebDLmaVf2HFv2MVLib97f/U6Vc +XFgLOlUT84uX6invExEfKsYtfyPM1UJLNYFsmdNa3lOlqXbdTGYLhdN+ltqijsZS +V756p0Q1rvSBX+ijI0iYxWW+p6oUL2oi//NIanNql1X7iW0mJRqylhRSDQIDAQAB +AoGADPSkl4M1Of0QzTAhaxy3b+xhvkhOXr7aZLkAYvEvZAMnLwy39puksmUNw7C8 +g5U0DEvST9W4w0jBQodVd+Hxi4dUS4BLDVVStaLMa1Fjai/4uBPxbsrvdHzDu7if +BI6t12vWNNRtTxbfCJ1Fs3nHvDG0ueBZX3fYWBIPPM4bRQECQQDjmCrxbkfFrN5z +JXHfmzoNovV7KzgwRLKOLF17dYnhaG3G77JYjhEjIg5VXmQ8XJrwS45C/io5feFA +qrsy/0v1AkEAz55QK8CLue+sn0J8Yw//yLjJT6BK4pCFFKDxyAvP/3r4t7+1TgDj +KAfUMWb5Hcn9iT3sEykUeOe0ghU0h5X2uQJBAKES2qGPuP/vvmejwpnMVCO+hxmq +ltOiavQv9eEgaHq826SFk6UUtpA01AwbB7momIckEgTbuKqDql2H94C6KdkCQQC7 +PfrtyoP5V8dmBk8qBEbZ3pVn45dFx7LNzOzhTo3yyhO/m/zGcZRsCMt9FnI7RG0M +tjTPfvAArm8kFj2+vie5AkASvVx478N8so+02QWKme4T3ZDX+HDBXgFH1+SMD91m +9tS6x2dtTNvvwBA2KFI1fUg3B/wDoKJQRrqwdl8jpoGP +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/proxy1.cnf b/node_modules/tunnel/test/keys/proxy1.cnf new file mode 100644 index 00000000..e3db7416 --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy1.cnf @@ -0,0 +1,16 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = localhost +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/proxy2-cert.pem b/node_modules/tunnel/test/keys/proxy2-cert.pem new file mode 100644 index 00000000..dfe9d8e8 --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy2-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICJjCCAY8CCQCb8tSy4A7fFjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBZMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQ8w +DQYDVQQDEwZwcm94eTIxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1l +bnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALZ3oNCmB2P4Q9DoUVFq +Z1ByASLm63jTPEumv2kX81GF5QMLRl59HBM6Te1rRR7wFHL0iBQUYuEzNPmedXpU +cds0uWl5teoO63ZSKFL1QLU3PMFo56AeWeznxOhy6vwWv3M8C391X6lYsiBow3K9 +d37p//GLIR+jl6Q4xYD41zaxAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEADUQgtmot +8zqsRQInjWAypcntkxX8hdUOEudN2/zjX/YtMZbr8rRvsZzBsUDdgK+E2EmEb/N3 +9ARZ0T2zWFFphJapkZOM1o1+LawN5ON5HfTPqr6d9qlHuRdGCBpXMUERO2V43Z+S +Zwm+iw1yZEs4buTmiw6zu6Nq0fhBlTiAweE= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/proxy2-csr.pem b/node_modules/tunnel/test/keys/proxy2-csr.pem new file mode 100644 index 00000000..5510e7fc --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy2-csr.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBvjCCAScCAQAwWTELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDEP +MA0GA1UEAxMGcHJveHkyMSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJvdmVt +ZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2d6DQpgdj+EPQ6FFR +amdQcgEi5ut40zxLpr9pF/NRheUDC0ZefRwTOk3ta0Ue8BRy9IgUFGLhMzT5nnV6 +VHHbNLlpebXqDut2UihS9UC1NzzBaOegHlns58Tocur8Fr9zPAt/dV+pWLIgaMNy +vXd+6f/xiyEfo5ekOMWA+Nc2sQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEgY2hh +bGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBADC4dh/+gQnJcPMQ0riJ +CBVLygcCWxkNvwM3ARboyihuNbzFX1f2g23Zr5iLphiuEFCPDOyd26hHieQ8Xo1y +FPuDXpWMx9X9MLjCWg8kdtada7HsYffbUvpjjL9TxFh+rX0cmr6Ixc5kV7AV4I6V +3h8BYJebX+XfuYrI1UwEqjqI +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/proxy2-key.pem b/node_modules/tunnel/test/keys/proxy2-key.pem new file mode 100644 index 00000000..29eed2c5 --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy2-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQC2d6DQpgdj+EPQ6FFRamdQcgEi5ut40zxLpr9pF/NRheUDC0Ze +fRwTOk3ta0Ue8BRy9IgUFGLhMzT5nnV6VHHbNLlpebXqDut2UihS9UC1NzzBaOeg +Hlns58Tocur8Fr9zPAt/dV+pWLIgaMNyvXd+6f/xiyEfo5ekOMWA+Nc2sQIDAQAB +AoGBALPH0o9Bxu5c4pSnEdgh+oFskmoNE90MY9A2D0pA6uBcCHSjW0YmBs97FuTi +WExPSBarkJgYLgStK3j3A9Dv+uzRRT0gSr34vKFh5ozI+nJZOMNJyHDOCFiT9sm7 +urDW0gSq9OW/H8NbAkxkBZw0PaB9oW5nljuieVIFDYXNAeMBAkEA6NfBHjzp3GS0 +RbtaBkxn3CRlEoUUPVd3sJ6lW2XBu5AWrgNHRSlh0oBupXgd3cxWIB69xPOg6QjU +XmvcLjBlCQJBAMidTIw4s89m4+14eY/KuXaEgxW/awLEbQP2JDCjY1wT3Ya3Ggac +HIFuGdTbd2faJPxNJjoljZnatSdwY5aXFmkCQBQZM5FBnsooYys1vdKXW8uz1Imh +tRqKZ0l2mD1obi2bhWml3MwKg2ghL+vWj3VqwvBo1uaeRQB4g6RW2R2fjckCQQCf +FnZ0oCafa2WGlMo5qDbI8K6PGXv/9srIoHH0jC0oAKzkvuEJqtTEIw6jCOM43PoF +hhyxccRH5PNRckPXULs5AkACxKEL1dN+Bx72zE8jSU4DB5arpQdGOvuVsqXgVM/5 +QLneJEHGPCqNFS1OkWUYLtX0S28X5GmHMEpLRLpgE9JY +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/proxy2.cnf b/node_modules/tunnel/test/keys/proxy2.cnf new file mode 100644 index 00000000..e62c90ae --- /dev/null +++ b/node_modules/tunnel/test/keys/proxy2.cnf @@ -0,0 +1,16 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = proxy2 +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/server1-cert.pem b/node_modules/tunnel/test/keys/server1-cert.pem new file mode 100644 index 00000000..d0b6430d --- /dev/null +++ b/node_modules/tunnel/test/keys/server1-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAZICCQCxEcnO8CV2kTANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTExJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw +EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92 +ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALYb3z6TVgD8VmV2 +i0IHoes/HNVz+/UgXxRoA7gTUXp4Q69HBymWwm4fG61YMn7XAjy0gyC2CX/C0S74 +ZzHkhq1DCXCtlXCDx5oZhSRPpa902MVdDSRR+naLA4PPFkV2pI53hsFW37M5Dhge ++taFbih/dbjpOnhLD+SbkSKNTw/dAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAjDNi +mdmMM8Of/8iCYISqkqCG+7fz747Ntkg5fVMPufkwrBfkD9UjYVbfIpEOkZ3L0If9 +0/wNi0uZobIJnd/9B/e0cHKYnx0gkhUpMylaRvIV4odKe2vq3+mjwMb9syYXYDx3 +hw2qDMIIPr0S5ICeoIKXhbsYtODVxKSdJq+FjAI= +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/server1-csr.pem b/node_modules/tunnel/test/keys/server1-csr.pem new file mode 100644 index 00000000..9d9ff1b9 --- /dev/null +++ b/node_modules/tunnel/test/keys/server1-csr.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES +MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv +dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2G98+k1YA/FZl +dotCB6HrPxzVc/v1IF8UaAO4E1F6eEOvRwcplsJuHxutWDJ+1wI8tIMgtgl/wtEu ++Gcx5IatQwlwrZVwg8eaGYUkT6WvdNjFXQ0kUfp2iwODzxZFdqSOd4bBVt+zOQ4Y +HvrWhW4of3W46Tp4Sw/km5EijU8P3QIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg +Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAJLLYClTc1BZbQi4 +2GrGEimzJoheXXD1vepECS6TaeYJFSQldMGdkn5D8TMXWW115V4hw7a1pCwvRBPH +dVEeh3u3ktI1e4pS5ozvpbpYanILrHCNOQ4PvKi9rzG9Km8CprPcrJCZlWf2QUBK +gVNgqZJeqyEcBu80/ajjc6xrZsSP +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/server1-key.pem b/node_modules/tunnel/test/keys/server1-key.pem new file mode 100644 index 00000000..d24acc80 --- /dev/null +++ b/node_modules/tunnel/test/keys/server1-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQC2G98+k1YA/FZldotCB6HrPxzVc/v1IF8UaAO4E1F6eEOvRwcp +lsJuHxutWDJ+1wI8tIMgtgl/wtEu+Gcx5IatQwlwrZVwg8eaGYUkT6WvdNjFXQ0k +Ufp2iwODzxZFdqSOd4bBVt+zOQ4YHvrWhW4of3W46Tp4Sw/km5EijU8P3QIDAQAB +AoGAcDioz+T3gM//ZbMxidUuQMu5twgsYhg6v1aBxDOTaEcoXqEElupikn31DlNl +eqiApmwOyl+jZunlAm7tGN/c5WjmZtW6watv1D7HjDIFJQBdiOv2jLeV5gsoArMP +f8Y13MS68nJ7/ZkqisovjBlD7ZInbyUiJj0FH/cazauflIECQQDwHgQ0J46eL5EG +3smQQG9/8b/Wsnf8s9Vz6X/KptsbL3c7mCBY9/+cGw0xVxoUOyO7KGPzpRhtz4Y0 +oP+JwISxAkEAwieUtl+SuUAn6er1tZzPPiAM2w6XGOAod+HuPjTAKVhLKHYIEJbU +jhPdjOGtZr10ED9g0m7M4n3JKMMM00W47QJBAOVkp7tztwpkgva/TG0lQeBHgnCI +G50t6NRN1Koz8crs88nZMb4NXwMxzM7AWcfOH/qjQan4pXfy9FG/JaHibGECQH8i +L+zj1E3dxsUTh+VuUv5ZOlHO0f4F+jnWBY1SOWpZWI2cDFfgjDqko3R26nbWI8Pn +3FyvFRZSS4CXiDRn+VkCQQCKPBl60QAifkZITqL0dCs+wB2hhmlWwqlpq1ZgeCby +zwmZY1auUK1BYBX1aPB85+Bm2Zhp5jnkwRcO7iSYy8+C +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/server1.cnf b/node_modules/tunnel/test/keys/server1.cnf new file mode 100644 index 00000000..e3db7416 --- /dev/null +++ b/node_modules/tunnel/test/keys/server1.cnf @@ -0,0 +1,16 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = localhost +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/server2-cert.pem b/node_modules/tunnel/test/keys/server2-cert.pem new file mode 100644 index 00000000..ba92620f --- /dev/null +++ b/node_modules/tunnel/test/keys/server2-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICJzCCAZACCQCxEcnO8CV2kjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK +UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTExJTAjBgkqhkiG9w0B +CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw +NTEwMTEyMzIxWjBaMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRAw +DgYDVQQDEwdzZXJ2ZXIyMSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJvdmVt +ZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEkKr9SHG6jtf5UNfL +u66wNi8jrbAW5keYy7ECWRGRFDE7ay4N8LDMmOO3/1eH2WpY0QM5JFxq78hoVQED +ogvoeVTw+Ni33yqY6VL2WRv84FN2BmCrDGJQ83EYdsJqPUnxuXvbmq7Viw3l/BEu +hvsp722KcToIrqt8mHKMc/nPRwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBALbdQz32 +CN0hJfJ6BtGyqee3zRSpufPY1KFV8OHSDG4qL55OfpjB5e5wsldp3VChTWzm2KM+ +xg9WSWurMINM5KLgUqCZ69ttg1gJ/SnZNolXhH0I3SG/DY4DGTHo9oJPoSrgrWbX +3ZmCoO6rrDoSuVRJ8dKMWJmt8O1pZ6ZRW2iM +-----END CERTIFICATE----- diff --git a/node_modules/tunnel/test/keys/server2-csr.pem b/node_modules/tunnel/test/keys/server2-csr.pem new file mode 100644 index 00000000..f89c5103 --- /dev/null +++ b/node_modules/tunnel/test/keys/server2-csr.pem @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIBvzCCASgCAQAwWjELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDEQ +MA4GA1UEAxMHc2VydmVyMjElMCMGCSqGSIb3DQEJARYWa29pY2hpa0BpbXByb3Zl +bWVudC5qcDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxJCq/Uhxuo7X+VDX +y7uusDYvI62wFuZHmMuxAlkRkRQxO2suDfCwzJjjt/9Xh9lqWNEDOSRcau/IaFUB +A6IL6HlU8PjYt98qmOlS9lkb/OBTdgZgqwxiUPNxGHbCaj1J8bl725qu1YsN5fwR +Lob7Ke9tinE6CK6rfJhyjHP5z0cCAwEAAaAlMCMGCSqGSIb3DQEJBzEWExRBIGNo +YWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAAOBgQB3rCGCErgshGKEI5j9 +togUBwD3ul91yRFSBoV2hVGXsTOalWa0XCI+9+5QQEOBlj1pUT8eDU8ve55mX1UX +AZEx+cbUQa9DNeiDAMX83GqHMD8fF2zqsY1mkg5zFKG3nhoIYSG15qXcpqAhxRpX +NUQnZ4yzt2pE0aiFfkXa3PM42Q== +-----END CERTIFICATE REQUEST----- diff --git a/node_modules/tunnel/test/keys/server2-key.pem b/node_modules/tunnel/test/keys/server2-key.pem new file mode 100644 index 00000000..9f72b5c2 --- /dev/null +++ b/node_modules/tunnel/test/keys/server2-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQDEkKr9SHG6jtf5UNfLu66wNi8jrbAW5keYy7ECWRGRFDE7ay4N +8LDMmOO3/1eH2WpY0QM5JFxq78hoVQEDogvoeVTw+Ni33yqY6VL2WRv84FN2BmCr +DGJQ83EYdsJqPUnxuXvbmq7Viw3l/BEuhvsp722KcToIrqt8mHKMc/nPRwIDAQAB +AoGAQ/bRaGoYCK1DN80gEC2ApSTW/7saW5CbyNUFCw7I6CTXMPhKID/MobFraz86 +gJpIDxWVy7gqzD7ESG67vwnUm52ITojQiY3JH7NCNhq/39/aYZOz2d7rBv2mvhk3 +w7gxUsmtPVUz3s2/h1KYaGpM3b68TwMS9nIiwwHDJS1aR8ECQQDu/kOy+Z/0EVKC +APgiEzbxewAiy7BVzNppd8CR/5m1KxlsIoMr8OdLqVwiJ/13m3eZGkPNx5pLJ9Xv +sXER0ZcPAkEA0o19xA1AJ/v5qsRaWJaA+ftgQ8ZanqsWXhM9abAvkPdFLPKYWTfO +r9f8eUDH0+O9mA2eZ2mlsEcsmIHDTY6ESQJAO2lyIvfzT5VO0Yq0JKRqMDXHnt7M +A0hds4JVmPXVnDgOpdcejLniheigQs12MVmwrZrd6DYKoUxR3rhZx3g2+QJBAK/2 +5fuaI1sHP+HSlbrhlUrWJd6egA+I5nma1MFmKGqb7Kki2eX+OPNGq87eL+LKuyG/ +h/nfFkTbRs7x67n+eFkCQQCPgy381Vpa7lmoNUfEVeMSNe74FNL05IlPDs/BHcci +1GX9XzsFEqHLtJ5t1aWbGv39gb2WmPP3LJBsRPzLa2iQ +-----END RSA PRIVATE KEY----- diff --git a/node_modules/tunnel/test/keys/server2.cnf b/node_modules/tunnel/test/keys/server2.cnf new file mode 100644 index 00000000..bfaa48b8 --- /dev/null +++ b/node_modules/tunnel/test/keys/server2.cnf @@ -0,0 +1,16 @@ +[ req ] +default_bits = 1024 +days = 9999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = JP +OU = nodejs_jp +CN = server2 +emailAddress = koichik@improvement.jp + +[ req_attributes ] +challengePassword = A challenge password + diff --git a/node_modules/tunnel/test/keys/test.js b/node_modules/tunnel/test/keys/test.js new file mode 100644 index 00000000..d8284221 --- /dev/null +++ b/node_modules/tunnel/test/keys/test.js @@ -0,0 +1,43 @@ +var fs = require('fs'); +var tls = require('tls'); + +var server1Key = fs.readFileSync(__dirname + '/server1-key.pem'); +var server1Cert = fs.readFileSync(__dirname + '/server1-cert.pem'); +var clientKey = fs.readFileSync(__dirname + '/client-key.pem'); +var clientCert = fs.readFileSync(__dirname + '/client-cert.pem'); +var ca1Cert = fs.readFileSync(__dirname + '/ca1-cert.pem'); +var ca3Cert = fs.readFileSync(__dirname + '/ca3-cert.pem'); + +var server = tls.createServer({ + key: server1Key, + cert: server1Cert, + ca: [ca3Cert], + requestCert: true, + rejectUnauthorized: true, +}, function(s) { + console.log('connected on server'); + s.on('data', function(chunk) { + console.log('S:' + chunk); + s.write(chunk); + }); + s.setEncoding('utf8'); +}).listen(3000, function() { + var c = tls.connect({ + host: 'localhost', + port: 3000, + key: clientKey, + cert: clientCert, + ca: [ca1Cert], + rejectUnauthorized: true + }, function() { + console.log('connected on client'); + c.on('data', function(chunk) { + console.log('C:' + chunk); + }); + c.setEncoding('utf8'); + c.write('Hello'); + }); + c.on('error', function(err) { + console.log(err); + }); +}); diff --git a/node_modules/typed-rest-client/Handlers.d.ts b/node_modules/typed-rest-client/Handlers.d.ts new file mode 100644 index 00000000..780935d1 --- /dev/null +++ b/node_modules/typed-rest-client/Handlers.d.ts @@ -0,0 +1,4 @@ +export { BasicCredentialHandler } from "./handlers/basiccreds"; +export { BearerCredentialHandler } from "./handlers/bearertoken"; +export { NtlmCredentialHandler } from "./handlers/ntlm"; +export { PersonalAccessTokenCredentialHandler } from "./handlers/personalaccesstoken"; diff --git a/node_modules/typed-rest-client/Handlers.js b/node_modules/typed-rest-client/Handlers.js new file mode 100644 index 00000000..0b9e040d --- /dev/null +++ b/node_modules/typed-rest-client/Handlers.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var basiccreds_1 = require("./handlers/basiccreds"); +exports.BasicCredentialHandler = basiccreds_1.BasicCredentialHandler; +var bearertoken_1 = require("./handlers/bearertoken"); +exports.BearerCredentialHandler = bearertoken_1.BearerCredentialHandler; +var ntlm_1 = require("./handlers/ntlm"); +exports.NtlmCredentialHandler = ntlm_1.NtlmCredentialHandler; +var personalaccesstoken_1 = require("./handlers/personalaccesstoken"); +exports.PersonalAccessTokenCredentialHandler = personalaccesstoken_1.PersonalAccessTokenCredentialHandler; diff --git a/node_modules/typed-rest-client/HttpClient.d.ts b/node_modules/typed-rest-client/HttpClient.d.ts new file mode 100644 index 00000000..f5cd014d --- /dev/null +++ b/node_modules/typed-rest-client/HttpClient.d.ts @@ -0,0 +1,103 @@ +/// +import url = require("url"); +import http = require("http"); +import ifm = require('./Interfaces'); +export declare enum HttpCodes { + OK = 200, + MultipleChoices = 300, + MovedPermanently = 301, + ResourceMoved = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + SwitchProxy = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504, +} +export declare class HttpClientResponse implements ifm.IHttpClientResponse { + constructor(message: http.IncomingMessage); + message: http.IncomingMessage; + readBody(): Promise; +} +export interface RequestInfo { + options: http.RequestOptions; + parsedUrl: url.Url; + httpModule: any; +} +export declare function isHttps(requestUrl: string): boolean; +export declare class HttpClient implements ifm.IHttpClient { + userAgent: string; + handlers: ifm.IRequestHandler[]; + requestOptions: ifm.IRequestOptions; + private _ignoreSslError; + private _socketTimeout; + private _httpProxy; + private _httpProxyBypassHosts; + private _allowRedirects; + private _maxRedirects; + private _allowRetries; + private _maxRetries; + private _agent; + private _proxyAgent; + private _keepAlive; + private _disposed; + private _certConfig; + private _ca; + private _cert; + private _key; + constructor(userAgent: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions); + options(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; + get(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; + del(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; + post(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise; + patch(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise; + put(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise; + head(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise; + sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: ifm.IHeaders): Promise; + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: ifm.IHeaders): Promise; + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose(): void; + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream): Promise; + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: ifm.IHttpClientResponse) => void): void; + private _prepareRequest(method, requestUrl, headers); + private _isPresigned(requestUrl); + private _mergeHeaders(headers); + private _getAgent(requestUrl); + private _getProxy(requestUrl); + private _isBypassProxy(requestUrl); + private _performExponentialBackoff(retryNumber); +} diff --git a/node_modules/typed-rest-client/HttpClient.js b/node_modules/typed-rest-client/HttpClient.js new file mode 100644 index 00000000..169b8f7f --- /dev/null +++ b/node_modules/typed-rest-client/HttpClient.js @@ -0,0 +1,455 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const url = require("url"); +const http = require("http"); +const https = require("https"); +let fs; +let tunnel; +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +const HttpRedirectCodes = [HttpCodes.MovedPermanently, HttpCodes.ResourceMoved, HttpCodes.SeeOther, HttpCodes.TemporaryRedirect, HttpCodes.PermanentRedirect]; +const HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + let output = ''; + this.message.on('data', (chunk) => { + output += chunk; + }); + this.message.on('end', () => { + resolve(output); + }); + })); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + let parsedUrl = url.parse(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +var EnvironmentVariables; +(function (EnvironmentVariables) { + EnvironmentVariables["HTTP_PROXY"] = "HTTP_PROXY"; + EnvironmentVariables["HTTPS_PROXY"] = "HTTPS_PROXY"; +})(EnvironmentVariables || (EnvironmentVariables = {})); +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + this._httpProxy = requestOptions.proxy; + if (requestOptions.proxy && requestOptions.proxy.proxyBypassHosts) { + this._httpProxyBypassHosts = []; + requestOptions.proxy.proxyBypassHosts.forEach(bypass => { + this._httpProxyBypassHosts.push(new RegExp(bypass, 'i')); + }); + } + this._certConfig = requestOptions.cert; + if (this._certConfig) { + // If using cert, need fs + fs = require('fs'); + // cache the cert content into memory, so we don't have to read it from disk every time + if (this._certConfig.caFile && fs.existsSync(this._certConfig.caFile)) { + this._ca = fs.readFileSync(this._certConfig.caFile, 'utf8'); + } + if (this._certConfig.certFile && fs.existsSync(this._certConfig.certFile)) { + this._cert = fs.readFileSync(this._certConfig.certFile, 'utf8'); + } + if (this._certConfig.keyFile && fs.existsSync(this._certConfig.keyFile)) { + this._key = fs.readFileSync(this._certConfig.keyFile, 'utf8'); + } + } + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + } + get(requestUrl, additionalHeaders) { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + } + del(requestUrl, additionalHeaders) { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + } + post(requestUrl, data, additionalHeaders) { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + } + patch(requestUrl, data, additionalHeaders) { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + } + put(requestUrl, data, additionalHeaders) { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + } + head(requestUrl, additionalHeaders) { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return this.request(verb, requestUrl, stream, additionalHeaders); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error("Client has already been disposed."); + } + let info = this._prepareRequest(verb, requestUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + let maxTries = (this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1) ? this._maxRetries + 1 : 1; + let numTries = 0; + let response; + while (numTries < maxTries) { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (let i = 0; i < this.handlers.length; i++) { + if (this.handlers[i].canHandleAuthentication(response)) { + authenticationHandler = this.handlers[i]; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 + && this._allowRedirects + && redirectsRemaining > 0) { + const redirectUrl = response.message.headers["location"]; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, redirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return new Promise((resolve, reject) => { + let callbackForResult = function (err, res) { + if (err) { + reject(err); + } + resolve(res); + }; + this.requestRawWithCallback(info, data, callbackForResult); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + let socket; + let isDataString = typeof (data) === 'string'; + if (typeof (data) === 'string') { + info.options.headers["Content-Length"] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + let handleResult = (err, res) => { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + }; + let req = info.httpModule.request(info.options, (msg) => { + let res = new HttpClientResponse(msg); + handleResult(null, res); + }); + req.on('socket', (sock) => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error('Request timeout: ' + info.options.path), null); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err, null); + }); + if (data && typeof (data) === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof (data) !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = url.parse(requestUrl); + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; + info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + info.options.headers["user-agent"] = this.userAgent; + info.options.agent = this._getAgent(requestUrl); + // gives handlers an opportunity to participate + if (this.handlers && !this._isPresigned(requestUrl)) { + this.handlers.forEach((handler) => { + handler.prepareRequest(info.options); + }); + } + return info; + } + _isPresigned(requestUrl) { + if (this.requestOptions && this.requestOptions.presignedUrlPatterns) { + const patterns = this.requestOptions.presignedUrlPatterns; + for (let i = 0; i < patterns.length; i++) { + if (requestUrl.match(patterns[i])) { + return true; + } + } + } + return false; + } + _mergeHeaders(headers) { + const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {}); + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers)); + } + return lowercaseKeys(headers || {}); + } + _getAgent(requestUrl) { + let agent; + let proxy = this._getProxy(requestUrl); + let useProxy = proxy.proxyUrl && proxy.proxyUrl.hostname && !this._isBypassProxy(requestUrl); + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (!!agent) { + return agent; + } + let parsedUrl = url.parse(requestUrl); + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (!!this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + if (useProxy) { + // If using proxy, need tunnel + if (!tunnel) { + tunnel = require('tunnel'); + } + const agentOptions = { + maxSockets: maxSockets, + keepAlive: this._keepAlive, + proxy: { + proxyAuth: proxy.proxyAuth, + host: proxy.proxyUrl.hostname, + port: proxy.proxyUrl.port + }, + }; + let tunnelAgent; + const overHttps = proxy.proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets: maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { rejectUnauthorized: false }); + } + if (usingSsl && this._certConfig) { + agent.options = Object.assign(agent.options || {}, { ca: this._ca, cert: this._cert, key: this._key, passphrase: this._certConfig.passphrase }); + } + return agent; + } + _getProxy(requestUrl) { + const parsedUrl = url.parse(requestUrl); + let usingSsl = parsedUrl.protocol === 'https:'; + let proxyConfig = this._httpProxy; + // fallback to http_proxy and https_proxy env + let https_proxy = process.env[EnvironmentVariables.HTTPS_PROXY]; + let http_proxy = process.env[EnvironmentVariables.HTTP_PROXY]; + if (!proxyConfig) { + if (https_proxy && usingSsl) { + proxyConfig = { + proxyUrl: https_proxy + }; + } + else if (http_proxy) { + proxyConfig = { + proxyUrl: http_proxy + }; + } + } + let proxyUrl; + let proxyAuth; + if (proxyConfig) { + if (proxyConfig.proxyUrl.length > 0) { + proxyUrl = url.parse(proxyConfig.proxyUrl); + } + if (proxyConfig.proxyUsername || proxyConfig.proxyPassword) { + proxyAuth = proxyConfig.proxyUsername + ":" + proxyConfig.proxyPassword; + } + } + return { proxyUrl: proxyUrl, proxyAuth: proxyAuth }; + } + _isBypassProxy(requestUrl) { + if (!this._httpProxyBypassHosts) { + return false; + } + let bypass = false; + this._httpProxyBypassHosts.forEach(bypassHost => { + if (bypassHost.test(requestUrl)) { + bypass = true; + } + }); + return bypass; + } + _performExponentialBackoff(retryNumber) { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + } +} +exports.HttpClient = HttpClient; diff --git a/node_modules/typed-rest-client/Index.d.ts b/node_modules/typed-rest-client/Index.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/node_modules/typed-rest-client/Index.js b/node_modules/typed-rest-client/Index.js new file mode 100644 index 00000000..c8ad2e54 --- /dev/null +++ b/node_modules/typed-rest-client/Index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/typed-rest-client/Interfaces.d.ts b/node_modules/typed-rest-client/Interfaces.d.ts new file mode 100644 index 00000000..5900e26e --- /dev/null +++ b/node_modules/typed-rest-client/Interfaces.d.ts @@ -0,0 +1,62 @@ +/// +import http = require("http"); +import url = require("url"); +export interface IHeaders { + [key: string]: any; +} +export interface IBasicCredentials { + username: string; + password: string; +} +export interface IHttpClient { + options(requestUrl: string, additionalHeaders?: IHeaders): Promise; + get(requestUrl: string, additionalHeaders?: IHeaders): Promise; + del(requestUrl: string, additionalHeaders?: IHeaders): Promise; + post(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; + patch(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; + put(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; + sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: IHeaders): Promise; + request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: IHeaders): Promise; + requestRaw(info: IRequestInfo, data: string | NodeJS.ReadableStream): Promise; + requestRawWithCallback(info: IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: IHttpClientResponse) => void): void; +} +export interface IRequestHandler { + prepareRequest(options: http.RequestOptions): void; + canHandleAuthentication(response: IHttpClientResponse): boolean; + handleAuthentication(httpClient: IHttpClient, requestInfo: IRequestInfo, objs: any): Promise; +} +export interface IHttpClientResponse { + message: http.IncomingMessage; + readBody(): Promise; +} +export interface IRequestInfo { + options: http.RequestOptions; + parsedUrl: url.Url; + httpModule: any; +} +export interface IRequestOptions { + headers?: IHeaders; + socketTimeout?: number; + ignoreSslError?: boolean; + proxy?: IProxyConfiguration; + cert?: ICertConfiguration; + allowRedirects?: boolean; + maxRedirects?: number; + maxSockets?: number; + keepAlive?: boolean; + presignedUrlPatterns?: RegExp[]; + allowRetries?: boolean; + maxRetries?: number; +} +export interface IProxyConfiguration { + proxyUrl: string; + proxyUsername?: string; + proxyPassword?: string; + proxyBypassHosts?: string[]; +} +export interface ICertConfiguration { + caFile?: string; + certFile?: string; + keyFile?: string; + passphrase?: string; +} diff --git a/node_modules/typed-rest-client/Interfaces.js b/node_modules/typed-rest-client/Interfaces.js new file mode 100644 index 00000000..2bc6be20 --- /dev/null +++ b/node_modules/typed-rest-client/Interfaces.js @@ -0,0 +1,5 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +Object.defineProperty(exports, "__esModule", { value: true }); +; diff --git a/node_modules/typed-rest-client/LICENSE b/node_modules/typed-rest-client/LICENSE new file mode 100644 index 00000000..8cddf7ed --- /dev/null +++ b/node_modules/typed-rest-client/LICENSE @@ -0,0 +1,21 @@ +Typed Rest Client for Node.js + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/typed-rest-client/README.md b/node_modules/typed-rest-client/README.md new file mode 100644 index 00000000..0c2b7681 --- /dev/null +++ b/node_modules/typed-rest-client/README.md @@ -0,0 +1,100 @@ +[![Build Status](https://dev.azure.com/ms/typed-rest-client/_apis/build/status/Microsoft.typed-rest-client?branchName=master)](https://dev.azure.com/ms/typed-rest-client/_build/latest?definitionId=42&branchName=master) + +# Typed REST and HTTP Client with TypeScript Typings + +A lightweight REST and HTTP client optimized for use with TypeScript with generics and async await. + +## Features + + - REST and HTTP client with TypeScript generics and async/await/Promises + - Typings included so no need to acquire separately (great for intellisense and no versioning drift) + - Basic, Bearer and NTLM Support out of the box. Extensible handlers for others. + - Proxy support + - Certificate support (Self-signed server and client cert) + - Redirects supported + +Intellisense and compile support: + +![intellisense](./docs/intellisense.png) + +## Install + +``` +npm install typed-rest-client --save +``` + +Or to install the latest preview: +``` +npm install typed-rest-client@preview --save +``` + +## Samples + +See the [samples](./samples) for complete coding examples. Also see the [REST](./test/tests/resttests.ts) and [HTTP](./test/tests/httptests.ts) tests for detailed examples. + +## Errors + +### HTTP + +The HTTP client does not throw unless truly exceptional. + +* A request that successfully executes resulting in a 404, 500 etc... will return a response object with a status code and a body. +* Redirects (3xx) will be followed by default. + + +See [HTTP tests](./test/tests/httptests.ts) for detailed examples. + +### REST + +The REST client is a high-level client which uses the HTTP client. Its responsibility is to turn a body into a typed resource object. + +* A 200 will be success. +* Redirects (3xx) will be followed. +* A 404 will not throw but the result object will be null and the result statusCode will be set. +* Other 4xx and 5xx errors will throw. The status code will be attached to the error object. If a RESTful error object is returned (`{ message: xxx}`), then the error message will be that. Otherwise, it will be a generic, `Failed Request: (xxx)`. + +See [REST tests](./test/tests/resttests.ts) for detailed examples. + +## Debugging + +To enable detailed console logging of all HTTP requests and responses, set the NODE_DEBUG environment varible: + +``` +export NODE_DEBUG=http +``` + +or + +``` +set NODE_DEBUG=http +``` + + + +## Node support + +The typed-rest-client is built using the latest LTS version of Node 8. We also support the latest LTS for Node 4 and Node 6. + +## Contributing + +To contribute to this repository, see the [contribution guide](./CONTRIBUTING.md) + +To build: + +```bash +$ npm run build +``` + +To run all tests: +```bash +$ npm test +``` + +To just run unit tests: +```bash +$ npm run units +``` + +## Code of Conduct + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/node_modules/typed-rest-client/RestClient.d.ts b/node_modules/typed-rest-client/RestClient.d.ts new file mode 100644 index 00000000..74b33cba --- /dev/null +++ b/node_modules/typed-rest-client/RestClient.d.ts @@ -0,0 +1,77 @@ +/// +import httpm = require('./HttpClient'); +import ifm = require("./Interfaces"); +export interface IRestResponse { + statusCode: number; + result: T | null; + headers: Object; +} +export interface IRequestOptions { + acceptHeader?: string; + additionalHeaders?: ifm.IHeaders; + responseProcessor?: Function; + deserializeDates?: boolean; +} +export declare class RestClient { + client: httpm.HttpClient; + versionParam: string; + /** + * Creates an instance of the RestClient + * @constructor + * @param {string} userAgent - userAgent for requests + * @param {string} baseUrl - (Optional) If not specified, use full urls per request. If supplied and a function passes a relative url, it will be appended to this + * @param {ifm.IRequestHandler[]} handlers - handlers are typically auth handlers (basic, bearer, ntlm supplied) + * @param {ifm.IRequestOptions} requestOptions - options for each http requests (http proxy setting, socket timeout) + */ + constructor(userAgent: string, baseUrl?: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions); + private _baseUrl; + /** + * Gets a resource from an endpoint + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} requestUrl - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + options(requestUrl: string, options?: IRequestOptions): Promise>; + /** + * Gets a resource from an endpoint + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified url or relative path + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + get(resource: string, options?: IRequestOptions): Promise>; + /** + * Deletes a resource from an endpoint + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + del(resource: string, options?: IRequestOptions): Promise>; + /** + * Creates resource(s) from an endpoint + * T type of object returned. + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + create(resource: string, resources: any, options?: IRequestOptions): Promise>; + /** + * Updates resource(s) from an endpoint + * T type of object returned. + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + update(resource: string, resources: any, options?: IRequestOptions): Promise>; + /** + * Replaces resource(s) from an endpoint + * T type of object returned. + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + replace(resource: string, resources: any, options?: IRequestOptions): Promise>; + uploadStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, options?: IRequestOptions): Promise>; + private _headersFromOptions(options, contentType?); + private static dateTimeDeserializer(key, value); + private _processResponse(res, options); +} diff --git a/node_modules/typed-rest-client/RestClient.js b/node_modules/typed-rest-client/RestClient.js new file mode 100644 index 00000000..1548b8f6 --- /dev/null +++ b/node_modules/typed-rest-client/RestClient.js @@ -0,0 +1,217 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const httpm = require("./HttpClient"); +const util = require("./Util"); +class RestClient { + /** + * Creates an instance of the RestClient + * @constructor + * @param {string} userAgent - userAgent for requests + * @param {string} baseUrl - (Optional) If not specified, use full urls per request. If supplied and a function passes a relative url, it will be appended to this + * @param {ifm.IRequestHandler[]} handlers - handlers are typically auth handlers (basic, bearer, ntlm supplied) + * @param {ifm.IRequestOptions} requestOptions - options for each http requests (http proxy setting, socket timeout) + */ + constructor(userAgent, baseUrl, handlers, requestOptions) { + this.client = new httpm.HttpClient(userAgent, handlers, requestOptions); + if (baseUrl) { + this._baseUrl = baseUrl; + } + } + /** + * Gets a resource from an endpoint + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} requestUrl - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + options(requestUrl, options) { + return __awaiter(this, void 0, void 0, function* () { + let url = util.getUrl(requestUrl, this._baseUrl); + let res = yield this.client.options(url, this._headersFromOptions(options)); + return this._processResponse(res, options); + }); + } + /** + * Gets a resource from an endpoint + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified url or relative path + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + get(resource, options) { + return __awaiter(this, void 0, void 0, function* () { + let url = util.getUrl(resource, this._baseUrl); + let res = yield this.client.get(url, this._headersFromOptions(options)); + return this._processResponse(res, options); + }); + } + /** + * Deletes a resource from an endpoint + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + del(resource, options) { + return __awaiter(this, void 0, void 0, function* () { + let url = util.getUrl(resource, this._baseUrl); + let res = yield this.client.del(url, this._headersFromOptions(options)); + return this._processResponse(res, options); + }); + } + /** + * Creates resource(s) from an endpoint + * T type of object returned. + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + create(resource, resources, options) { + return __awaiter(this, void 0, void 0, function* () { + let url = util.getUrl(resource, this._baseUrl); + let headers = this._headersFromOptions(options, true); + let data = JSON.stringify(resources, null, 2); + let res = yield this.client.post(url, data, headers); + return this._processResponse(res, options); + }); + } + /** + * Updates resource(s) from an endpoint + * T type of object returned. + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + update(resource, resources, options) { + return __awaiter(this, void 0, void 0, function* () { + let url = util.getUrl(resource, this._baseUrl); + let headers = this._headersFromOptions(options, true); + let data = JSON.stringify(resources, null, 2); + let res = yield this.client.patch(url, data, headers); + return this._processResponse(res, options); + }); + } + /** + * Replaces resource(s) from an endpoint + * T type of object returned. + * Be aware that not found returns a null. Other error conditions reject the promise + * @param {string} resource - fully qualified or relative url + * @param {IRequestOptions} requestOptions - (optional) requestOptions object + */ + replace(resource, resources, options) { + return __awaiter(this, void 0, void 0, function* () { + let url = util.getUrl(resource, this._baseUrl); + let headers = this._headersFromOptions(options, true); + let data = JSON.stringify(resources, null, 2); + let res = yield this.client.put(url, data, headers); + return this._processResponse(res, options); + }); + } + uploadStream(verb, requestUrl, stream, options) { + return __awaiter(this, void 0, void 0, function* () { + let url = util.getUrl(requestUrl, this._baseUrl); + let headers = this._headersFromOptions(options, true); + let res = yield this.client.sendStream(verb, url, stream, headers); + return this._processResponse(res, options); + }); + } + _headersFromOptions(options, contentType) { + options = options || {}; + let headers = options.additionalHeaders || {}; + headers["Accept"] = options.acceptHeader || "application/json"; + if (contentType) { + let found = false; + for (let header in headers) { + if (header.toLowerCase() == "content-type") { + found = true; + } + } + if (!found) { + headers["Content-Type"] = 'application/json; charset=utf-8'; + } + } + return headers; + } + static dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + let a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode; + const response = { + statusCode: statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode == httpm.HttpCodes.NotFound) { + resolve(response); + } + let obj; + let contents; + // get the result from the body + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, RestClient.dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + if (options && options.responseProcessor) { + response.result = options.responseProcessor(obj); + } + else { + response.result = obj; + } + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = "Failed request: (" + statusCode + ")"; + } + let err = new Error(msg); + // attach statusCode and body obj (if available) to the error object + err['statusCode'] = statusCode; + if (response.result) { + err['result'] = response.result; + } + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.RestClient = RestClient; diff --git a/node_modules/typed-rest-client/ThirdPartyNotice.txt b/node_modules/typed-rest-client/ThirdPartyNotice.txt new file mode 100644 index 00000000..7bd67743 --- /dev/null +++ b/node_modules/typed-rest-client/ThirdPartyNotice.txt @@ -0,0 +1,1318 @@ + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +This Visual Studio Team Services extension (vsts-task-lib) is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Visual Studio Team Services extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. + +1. @types/glob (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git) +2. @types/minimatch (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git) +3. @types/mocha (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git) +4. @types/node (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git) +5. @types/shelljs (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git) +6. balanced-match (git://github.com/juliangruber/balanced-match.git) +7. brace-expansion (git://github.com/juliangruber/brace-expansion.git) +8. browser-stdout (git+ssh://git@github.com/kumavis/browser-stdout.git) +9. commander (git+https://github.com/tj/commander.js.git) +10. concat-map (git://github.com/substack/node-concat-map.git) +11. debug (git://github.com/visionmedia/debug.git) +12. diff (git://github.com/kpdecker/jsdiff.git) +13. escape-string-regexp (git+https://github.com/sindresorhus/escape-string-regexp.git) +14. fs.realpath (git+https://github.com/isaacs/fs.realpath.git) +15. glob (git://github.com/isaacs/node-glob.git) +16. graceful-readlink (git://github.com/zhiyelee/graceful-readlink.git) +17. growl (git://github.com/tj/node-growl.git) +18. has-flag (git+https://github.com/sindresorhus/has-flag.git) +19. he (git+https://github.com/mathiasbynens/he.git) +20. inflight (git+https://github.com/npm/inflight.git) +21. inherits (git://github.com/isaacs/inherits.git) +22. interpret (git://github.com/tkellen/node-interpret.git) +23. json3 (git://github.com/bestiejs/json3.git) +24. lodash.create (git+https://github.com/lodash/lodash.git) +25. lodash.isarguments (git+https://github.com/lodash/lodash.git) +26. lodash.isarray (git+https://github.com/lodash/lodash.git) +27. lodash.keys (git+https://github.com/lodash/lodash.git) +28. lodash._baseassign (git+https://github.com/lodash/lodash.git) +29. lodash._basecopy (git+https://github.com/lodash/lodash.git) +30. lodash._basecreate (git+https://github.com/lodash/lodash.git) +31. lodash._getnative (git+https://github.com/lodash/lodash.git) +32. lodash._isiterateecall (git+https://github.com/lodash/lodash.git) +33. minimatch (git://github.com/isaacs/minimatch.git) +34. minimist (git://github.com/substack/minimist.git) +35. mkdirp (git+https://github.com/substack/node-mkdirp.git) +36. mocha (git+https://github.com/mochajs/mocha.git) +37. ms (git+https://github.com/zeit/ms.git) +38. once (git://github.com/isaacs/once.git) +39. path-is-absolute (git+https://github.com/sindresorhus/path-is-absolute.git) +40. path-parse (git+https://github.com/jbgutierrez/path-parse.git) +41. rechoir (git://github.com/tkellen/node-rechoir.git) +42. resolve (git://github.com/substack/node-resolve.git) +43. semver (git://github.com/npm/node-semver.git) +44. shelljs (git://github.com/shelljs/shelljs.git) +45. supports-color (git+https://github.com/chalk/supports-color.git) +46. tunnel (git+https://github.com/koichik/node-tunnel.git) +47. typescript (git+https://github.com/Microsoft/TypeScript.git) +48. underscore (git://github.com/jashkenas/underscore.git) +49. wrappy (git+https://github.com/npm/wrappy.git) + + +%% @types/glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/glob NOTICES, INFORMATION, AND LICENSE + +%% @types/minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/minimatch NOTICES, INFORMATION, AND LICENSE + +%% @types/mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/mocha NOTICES, INFORMATION, AND LICENSE + +%% @types/node NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/node NOTICES, INFORMATION, AND LICENSE + +%% @types/shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/shelljs NOTICES, INFORMATION, AND LICENSE + +%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF balanced-match NOTICES, INFORMATION, AND LICENSE + +%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +No license text available. +========================================= +END OF brace-expansion NOTICES, INFORMATION, AND LICENSE + +%% browser-stdout NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +No license text available. +========================================= +END OF browser-stdout NOTICES, INFORMATION, AND LICENSE + +%% commander NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF commander NOTICES, INFORMATION, AND LICENSE + +%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF concat-map NOTICES, INFORMATION, AND LICENSE + +%% debug NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF debug NOTICES, INFORMATION, AND LICENSE + +%% diff NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Software License Agreement (BSD License) + +Copyright (c) 2009-2015, Kevin Decker + +All rights reserved. + +Redistribution and use of this software in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Kevin Decker nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF diff NOTICES, INFORMATION, AND LICENSE + +%% escape-string-regexp NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF escape-string-regexp NOTICES, INFORMATION, AND LICENSE + +%% fs.realpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +---- + +This library bundles a version of the `fs.realpath` and `fs.realpathSync` +methods from Node.js v0.10 under the terms of the Node.js MIT license. + +Node's license follows, also included at the header of `old.js` which contains +the licensed code: + + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +========================================= +END OF fs.realpath NOTICES, INFORMATION, AND LICENSE + +%% glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF glob NOTICES, INFORMATION, AND LICENSE + +%% graceful-readlink NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2015 Zhiye Li + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF graceful-readlink NOTICES, INFORMATION, AND LICENSE + +%% growl NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +No license text available. +========================================= +END OF growl NOTICES, INFORMATION, AND LICENSE + +%% has-flag NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF has-flag NOTICES, INFORMATION, AND LICENSE + +%% he NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Mathias Bynens + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF he NOTICES, INFORMATION, AND LICENSE + +%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF inflight NOTICES, INFORMATION, AND LICENSE + +%% inherits NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF inherits NOTICES, INFORMATION, AND LICENSE + +%% interpret NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2014 Tyler Kellen + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF interpret NOTICES, INFORMATION, AND LICENSE + +%% json3 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012-2014 Kit Cambridge. +http://kitcambridge.be/ + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF json3 NOTICES, INFORMATION, AND LICENSE + +%% lodash.create NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash.create NOTICES, INFORMATION, AND LICENSE + +%% lodash.isarguments NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.isarguments NOTICES, INFORMATION, AND LICENSE + +%% lodash.isarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash.isarray NOTICES, INFORMATION, AND LICENSE + +%% lodash.keys NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash.keys NOTICES, INFORMATION, AND LICENSE + +%% lodash._baseassign NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash._baseassign NOTICES, INFORMATION, AND LICENSE + +%% lodash._basecopy NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash._basecopy NOTICES, INFORMATION, AND LICENSE + +%% lodash._basecreate NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash._basecreate NOTICES, INFORMATION, AND LICENSE + +%% lodash._getnative NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash._getnative NOTICES, INFORMATION, AND LICENSE + +%% lodash._isiterateecall NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2012-2015 The Dojo Foundation +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF lodash._isiterateecall NOTICES, INFORMATION, AND LICENSE + +%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF minimatch NOTICES, INFORMATION, AND LICENSE + +%% minimist NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF minimist NOTICES, INFORMATION, AND LICENSE + +%% mkdirp NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF mkdirp NOTICES, INFORMATION, AND LICENSE + +%% mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2011-2017 JS Foundation and contributors, https://js.foundation + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF mocha NOTICES, INFORMATION, AND LICENSE + +%% ms NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2016 Zeit, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ms NOTICES, INFORMATION, AND LICENSE + +%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF once NOTICES, INFORMATION, AND LICENSE + +%% path-is-absolute NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF path-is-absolute NOTICES, INFORMATION, AND LICENSE + +%% path-parse NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +No license text available. +========================================= +END OF path-parse NOTICES, INFORMATION, AND LICENSE + +%% rechoir NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2015 Tyler Kellen + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF rechoir NOTICES, INFORMATION, AND LICENSE + +%% resolve NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF resolve NOTICES, INFORMATION, AND LICENSE + +%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Isaac Z. Schlueter ("Author") +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF semver NOTICES, INFORMATION, AND LICENSE + +%% shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Artur Adib +All rights reserved. + +You may use this project under the terms of the New BSD license as follows: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Artur Adib nor the + names of the contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF shelljs NOTICES, INFORMATION, AND LICENSE + +%% supports-color NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF supports-color NOTICES, INFORMATION, AND LICENSE + +%% tunnel NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2012 Koichi Kobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF tunnel NOTICES, INFORMATION, AND LICENSE + +%% typescript NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF typescript NOTICES, INFORMATION, AND LICENSE + +%% underscore NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF underscore NOTICES, INFORMATION, AND LICENSE + +%% wrappy NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF wrappy NOTICES, INFORMATION, AND LICENSE + diff --git a/node_modules/typed-rest-client/Util.d.ts b/node_modules/typed-rest-client/Util.d.ts new file mode 100644 index 00000000..32757e82 --- /dev/null +++ b/node_modules/typed-rest-client/Util.d.ts @@ -0,0 +1,7 @@ +/** + * creates an url from a request url and optional base url (http://server:8080) + * @param {string} resource - a fully qualified url or relative path + * @param {string} baseUrl - an optional baseUrl (http://server:8080) + * @return {string} - resultant url + */ +export declare function getUrl(resource: string, baseUrl?: string): string; diff --git a/node_modules/typed-rest-client/Util.js b/node_modules/typed-rest-client/Util.js new file mode 100644 index 00000000..32981d13 --- /dev/null +++ b/node_modules/typed-rest-client/Util.js @@ -0,0 +1,35 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const url = require("url"); +const path = require("path"); +/** + * creates an url from a request url and optional base url (http://server:8080) + * @param {string} resource - a fully qualified url or relative path + * @param {string} baseUrl - an optional baseUrl (http://server:8080) + * @return {string} - resultant url + */ +function getUrl(resource, baseUrl) { + const pathApi = path.posix || path; + if (!baseUrl) { + return resource; + } + else if (!resource) { + return baseUrl; + } + else { + const base = url.parse(baseUrl); + const resultantUrl = url.parse(resource); + // resource (specific per request) elements take priority + resultantUrl.protocol = resultantUrl.protocol || base.protocol; + resultantUrl.auth = resultantUrl.auth || base.auth; + resultantUrl.host = resultantUrl.host || base.host; + resultantUrl.pathname = pathApi.resolve(base.pathname, resultantUrl.pathname); + if (!resultantUrl.pathname.endsWith('/') && resource.endsWith('/')) { + resultantUrl.pathname += '/'; + } + return url.format(resultantUrl); + } +} +exports.getUrl = getUrl; diff --git a/node_modules/typed-rest-client/handlers/basiccreds.d.ts b/node_modules/typed-rest-client/handlers/basiccreds.d.ts new file mode 100644 index 00000000..17ade55e --- /dev/null +++ b/node_modules/typed-rest-client/handlers/basiccreds.d.ts @@ -0,0 +1,9 @@ +import ifm = require('../Interfaces'); +export declare class BasicCredentialHandler implements ifm.IRequestHandler { + username: string; + password: string; + constructor(username: string, password: string); + prepareRequest(options: any): void; + canHandleAuthentication(response: ifm.IHttpClientResponse): boolean; + handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise; +} diff --git a/node_modules/typed-rest-client/handlers/basiccreds.js b/node_modules/typed-rest-client/handlers/basiccreds.js new file mode 100644 index 00000000..384a39cb --- /dev/null +++ b/node_modules/typed-rest-client/handlers/basiccreds.js @@ -0,0 +1,24 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +Object.defineProperty(exports, "__esModule", { value: true }); +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + options.headers['Authorization'] = 'Basic ' + new Buffer(this.username + ':' + this.password).toString('base64'); + options.headers['X-TFS-FedAuthRedirect'] = 'Suppress'; + } + // This handler cannot handle 401 + canHandleAuthentication(response) { + return false; + } + handleAuthentication(httpClient, requestInfo, objs) { + return null; + } +} +exports.BasicCredentialHandler = BasicCredentialHandler; diff --git a/node_modules/typed-rest-client/handlers/bearertoken.d.ts b/node_modules/typed-rest-client/handlers/bearertoken.d.ts new file mode 100644 index 00000000..c08496fd --- /dev/null +++ b/node_modules/typed-rest-client/handlers/bearertoken.d.ts @@ -0,0 +1,8 @@ +import ifm = require('../Interfaces'); +export declare class BearerCredentialHandler implements ifm.IRequestHandler { + token: string; + constructor(token: string); + prepareRequest(options: any): void; + canHandleAuthentication(response: ifm.IHttpClientResponse): boolean; + handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise; +} diff --git a/node_modules/typed-rest-client/handlers/bearertoken.js b/node_modules/typed-rest-client/handlers/bearertoken.js new file mode 100644 index 00000000..dad27a7c --- /dev/null +++ b/node_modules/typed-rest-client/handlers/bearertoken.js @@ -0,0 +1,23 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +Object.defineProperty(exports, "__esModule", { value: true }); +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + options.headers['Authorization'] = 'Bearer ' + this.token; + options.headers['X-TFS-FedAuthRedirect'] = 'Suppress'; + } + // This handler cannot handle 401 + canHandleAuthentication(response) { + return false; + } + handleAuthentication(httpClient, requestInfo, objs) { + return null; + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; diff --git a/node_modules/typed-rest-client/handlers/ntlm.d.ts b/node_modules/typed-rest-client/handlers/ntlm.d.ts new file mode 100644 index 00000000..2f509b0e --- /dev/null +++ b/node_modules/typed-rest-client/handlers/ntlm.d.ts @@ -0,0 +1,13 @@ +/// +import ifm = require('../Interfaces'); +import http = require("http"); +export declare class NtlmCredentialHandler implements ifm.IRequestHandler { + private _ntlmOptions; + constructor(username: string, password: string, workstation?: string, domain?: string); + prepareRequest(options: http.RequestOptions): void; + canHandleAuthentication(response: ifm.IHttpClientResponse): boolean; + handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise; + private handleAuthenticationPrivate(httpClient, requestInfo, objs, finalCallback); + private sendType1Message(httpClient, requestInfo, objs, finalCallback); + private sendType3Message(httpClient, requestInfo, objs, res, callback); +} diff --git a/node_modules/typed-rest-client/handlers/ntlm.js b/node_modules/typed-rest-client/handlers/ntlm.js new file mode 100644 index 00000000..5fbca821 --- /dev/null +++ b/node_modules/typed-rest-client/handlers/ntlm.js @@ -0,0 +1,137 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +Object.defineProperty(exports, "__esModule", { value: true }); +const http = require("http"); +const https = require("https"); +const _ = require("underscore"); +const ntlm = require("../opensource/node-http-ntlm/ntlm"); +class NtlmCredentialHandler { + constructor(username, password, workstation, domain) { + this._ntlmOptions = {}; + this._ntlmOptions.username = username; + this._ntlmOptions.password = password; + if (domain !== undefined) { + this._ntlmOptions.domain = domain; + } + else { + this._ntlmOptions.domain = ''; + } + if (workstation !== undefined) { + this._ntlmOptions.workstation = workstation; + } + else { + this._ntlmOptions.workstation = ''; + } + } + prepareRequest(options) { + // No headers or options need to be set. We keep the credentials on the handler itself. + // If a (proxy) agent is set, remove it as we don't support proxy for NTLM at this time + if (options.agent) { + delete options.agent; + } + } + canHandleAuthentication(response) { + if (response && response.message && response.message.statusCode === 401) { + // Ensure that we're talking NTLM here + // Once we have the www-authenticate header, split it so we can ensure we can talk NTLM + const wwwAuthenticate = response.message.headers['www-authenticate']; + if (wwwAuthenticate) { + const mechanisms = wwwAuthenticate.split(', '); + const index = mechanisms.indexOf("NTLM"); + if (index >= 0) { + return true; + } + } + } + return false; + } + handleAuthentication(httpClient, requestInfo, objs) { + return new Promise((resolve, reject) => { + const callbackForResult = function (err, res) { + if (err) { + reject(err); + } + // We have to readbody on the response before continuing otherwise there is a hang. + res.readBody().then(() => { + resolve(res); + }); + }; + this.handleAuthenticationPrivate(httpClient, requestInfo, objs, callbackForResult); + }); + } + handleAuthenticationPrivate(httpClient, requestInfo, objs, finalCallback) { + // Set up the headers for NTLM authentication + requestInfo.options = _.extend(requestInfo.options, { + username: this._ntlmOptions.username, + password: this._ntlmOptions.password, + domain: this._ntlmOptions.domain, + workstation: this._ntlmOptions.workstation + }); + if (httpClient.isSsl === true) { + requestInfo.options.agent = new https.Agent({ keepAlive: true }); + } + else { + requestInfo.options.agent = new http.Agent({ keepAlive: true }); + } + let self = this; + // The following pattern of sending the type1 message following immediately (in a setImmediate) is + // critical for the NTLM exchange to happen. If we removed setImmediate (or call in a different manner) + // the NTLM exchange will always fail with a 401. + this.sendType1Message(httpClient, requestInfo, objs, function (err, res) { + if (err) { + return finalCallback(err, null, null); + } + /// We have to readbody on the response before continuing otherwise there is a hang. + res.readBody().then(() => { + // It is critical that we have setImmediate here due to how connection requests are queued. + // If setImmediate is removed then the NTLM handshake will not work. + // setImmediate allows us to queue a second request on the same connection. If this second + // request is not queued on the connection when the first request finishes then node closes + // the connection. NTLM requires both requests to be on the same connection so we need this. + setImmediate(function () { + self.sendType3Message(httpClient, requestInfo, objs, res, finalCallback); + }); + }); + }); + } + // The following method is an adaptation of code found at https://github.com/SamDecrock/node-http-ntlm/blob/master/httpntlm.js + sendType1Message(httpClient, requestInfo, objs, finalCallback) { + const type1msg = ntlm.createType1Message(this._ntlmOptions); + const type1options = { + headers: { + 'Connection': 'keep-alive', + 'Authorization': type1msg + }, + timeout: requestInfo.options.timeout || 0, + agent: requestInfo.httpModule, + }; + const type1info = {}; + type1info.httpModule = requestInfo.httpModule; + type1info.parsedUrl = requestInfo.parsedUrl; + type1info.options = _.extend(type1options, _.omit(requestInfo.options, 'headers')); + return httpClient.requestRawWithCallback(type1info, objs, finalCallback); + } + // The following method is an adaptation of code found at https://github.com/SamDecrock/node-http-ntlm/blob/master/httpntlm.js + sendType3Message(httpClient, requestInfo, objs, res, callback) { + if (!res.message.headers && !res.message.headers['www-authenticate']) { + throw new Error('www-authenticate not found on response of second request'); + } + const type2msg = ntlm.parseType2Message(res.message.headers['www-authenticate']); + const type3msg = ntlm.createType3Message(type2msg, this._ntlmOptions); + const type3options = { + headers: { + 'Authorization': type3msg, + 'Connection': 'Close' + }, + agent: requestInfo.httpModule, + }; + const type3info = {}; + type3info.httpModule = requestInfo.httpModule; + type3info.parsedUrl = requestInfo.parsedUrl; + type3options.headers = _.extend(type3options.headers, requestInfo.options.headers); + type3info.options = _.extend(type3options, _.omit(requestInfo.options, 'headers')); + return httpClient.requestRawWithCallback(type3info, objs, callback); + } +} +exports.NtlmCredentialHandler = NtlmCredentialHandler; diff --git a/node_modules/typed-rest-client/handlers/personalaccesstoken.d.ts b/node_modules/typed-rest-client/handlers/personalaccesstoken.d.ts new file mode 100644 index 00000000..4bb77fdc --- /dev/null +++ b/node_modules/typed-rest-client/handlers/personalaccesstoken.d.ts @@ -0,0 +1,8 @@ +import ifm = require('../Interfaces'); +export declare class PersonalAccessTokenCredentialHandler implements ifm.IRequestHandler { + token: string; + constructor(token: string); + prepareRequest(options: any): void; + canHandleAuthentication(response: ifm.IHttpClientResponse): boolean; + handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise; +} diff --git a/node_modules/typed-rest-client/handlers/personalaccesstoken.js b/node_modules/typed-rest-client/handlers/personalaccesstoken.js new file mode 100644 index 00000000..4bb88f80 --- /dev/null +++ b/node_modules/typed-rest-client/handlers/personalaccesstoken.js @@ -0,0 +1,23 @@ +"use strict"; +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +Object.defineProperty(exports, "__esModule", { value: true }); +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + options.headers['Authorization'] = 'Basic ' + new Buffer('PAT:' + this.token).toString('base64'); + options.headers['X-TFS-FedAuthRedirect'] = 'Suppress'; + } + // This handler cannot handle 401 + canHandleAuthentication(response) { + return false; + } + handleAuthentication(httpClient, requestInfo, objs) { + return null; + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; diff --git a/node_modules/typed-rest-client/opensource/node-http-ntlm/ntlm.js b/node_modules/typed-rest-client/opensource/node-http-ntlm/ntlm.js new file mode 100644 index 00000000..adf7602e --- /dev/null +++ b/node_modules/typed-rest-client/opensource/node-http-ntlm/ntlm.js @@ -0,0 +1,389 @@ +var crypto = require('crypto'); + +var flags = { + NTLM_NegotiateUnicode : 0x00000001, + NTLM_NegotiateOEM : 0x00000002, + NTLM_RequestTarget : 0x00000004, + NTLM_Unknown9 : 0x00000008, + NTLM_NegotiateSign : 0x00000010, + NTLM_NegotiateSeal : 0x00000020, + NTLM_NegotiateDatagram : 0x00000040, + NTLM_NegotiateLanManagerKey : 0x00000080, + NTLM_Unknown8 : 0x00000100, + NTLM_NegotiateNTLM : 0x00000200, + NTLM_NegotiateNTOnly : 0x00000400, + NTLM_Anonymous : 0x00000800, + NTLM_NegotiateOemDomainSupplied : 0x00001000, + NTLM_NegotiateOemWorkstationSupplied : 0x00002000, + NTLM_Unknown6 : 0x00004000, + NTLM_NegotiateAlwaysSign : 0x00008000, + NTLM_TargetTypeDomain : 0x00010000, + NTLM_TargetTypeServer : 0x00020000, + NTLM_TargetTypeShare : 0x00040000, + NTLM_NegotiateExtendedSecurity : 0x00080000, + NTLM_NegotiateIdentify : 0x00100000, + NTLM_Unknown5 : 0x00200000, + NTLM_RequestNonNTSessionKey : 0x00400000, + NTLM_NegotiateTargetInfo : 0x00800000, + NTLM_Unknown4 : 0x01000000, + NTLM_NegotiateVersion : 0x02000000, + NTLM_Unknown3 : 0x04000000, + NTLM_Unknown2 : 0x08000000, + NTLM_Unknown1 : 0x10000000, + NTLM_Negotiate128 : 0x20000000, + NTLM_NegotiateKeyExchange : 0x40000000, + NTLM_Negotiate56 : 0x80000000 +}; +var typeflags = { + NTLM_TYPE1_FLAGS : flags.NTLM_NegotiateUnicode + + flags.NTLM_NegotiateOEM + + flags.NTLM_RequestTarget + + flags.NTLM_NegotiateNTLM + + flags.NTLM_NegotiateOemDomainSupplied + + flags.NTLM_NegotiateOemWorkstationSupplied + + flags.NTLM_NegotiateAlwaysSign + + flags.NTLM_NegotiateExtendedSecurity + + flags.NTLM_NegotiateVersion + + flags.NTLM_Negotiate128 + + flags.NTLM_Negotiate56, + + NTLM_TYPE2_FLAGS : flags.NTLM_NegotiateUnicode + + flags.NTLM_RequestTarget + + flags.NTLM_NegotiateNTLM + + flags.NTLM_NegotiateAlwaysSign + + flags.NTLM_NegotiateExtendedSecurity + + flags.NTLM_NegotiateTargetInfo + + flags.NTLM_NegotiateVersion + + flags.NTLM_Negotiate128 + + flags.NTLM_Negotiate56 +}; + +function createType1Message(options){ + var domain = escape(options.domain.toUpperCase()); + var workstation = escape(options.workstation.toUpperCase()); + var protocol = 'NTLMSSP\0'; + + var BODY_LENGTH = 40; + + var type1flags = typeflags.NTLM_TYPE1_FLAGS; + if(!domain || domain === '') + type1flags = type1flags - flags.NTLM_NegotiateOemDomainSupplied; + + var pos = 0; + var buf = new Buffer(BODY_LENGTH + domain.length + workstation.length); + + + buf.write(protocol, pos, protocol.length); pos += protocol.length; // protocol + buf.writeUInt32LE(1, pos); pos += 4; // type 1 + buf.writeUInt32LE(type1flags, pos); pos += 4; // TYPE1 flag + + buf.writeUInt16LE(domain.length, pos); pos += 2; // domain length + buf.writeUInt16LE(domain.length, pos); pos += 2; // domain max length + buf.writeUInt32LE(BODY_LENGTH + workstation.length, pos); pos += 4; // domain buffer offset + + buf.writeUInt16LE(workstation.length, pos); pos += 2; // workstation length + buf.writeUInt16LE(workstation.length, pos); pos += 2; // workstation max length + buf.writeUInt32LE(BODY_LENGTH, pos); pos += 4; // workstation buffer offset + + buf.writeUInt8(5, pos); pos += 1; //ProductMajorVersion + buf.writeUInt8(1, pos); pos += 1; //ProductMinorVersion + buf.writeUInt16LE(2600, pos); pos += 2; //ProductBuild + + buf.writeUInt8(0 , pos); pos += 1; //VersionReserved1 + buf.writeUInt8(0 , pos); pos += 1; //VersionReserved2 + buf.writeUInt8(0 , pos); pos += 1; //VersionReserved3 + buf.writeUInt8(15, pos); pos += 1; //NTLMRevisionCurrent + + buf.write(workstation, pos, workstation.length, 'ascii'); pos += workstation.length; // workstation string + buf.write(domain , pos, domain.length , 'ascii'); pos += domain.length; + + return 'NTLM ' + buf.toString('base64'); +} + +function parseType2Message(rawmsg, callback){ + var match = rawmsg.match(/NTLM (.+)?/); + if(!match || !match[1]) + return callback(new Error("Couldn't find NTLM in the message type2 comming from the server")); + + var buf = new Buffer(match[1], 'base64'); + + var msg = {}; + + msg.signature = buf.slice(0, 8); + msg.type = buf.readInt16LE(8); + + if(msg.type != 2) + return callback(new Error("Server didn't return a type 2 message")); + + msg.targetNameLen = buf.readInt16LE(12); + msg.targetNameMaxLen = buf.readInt16LE(14); + msg.targetNameOffset = buf.readInt32LE(16); + msg.targetName = buf.slice(msg.targetNameOffset, msg.targetNameOffset + msg.targetNameMaxLen); + + msg.negotiateFlags = buf.readInt32LE(20); + msg.serverChallenge = buf.slice(24, 32); + msg.reserved = buf.slice(32, 40); + + if(msg.negotiateFlags & flags.NTLM_NegotiateTargetInfo){ + msg.targetInfoLen = buf.readInt16LE(40); + msg.targetInfoMaxLen = buf.readInt16LE(42); + msg.targetInfoOffset = buf.readInt32LE(44); + msg.targetInfo = buf.slice(msg.targetInfoOffset, msg.targetInfoOffset + msg.targetInfoLen); + } + return msg; +} + +function createType3Message(msg2, options){ + var nonce = msg2.serverChallenge; + var username = options.username; + var password = options.password; + var negotiateFlags = msg2.negotiateFlags; + + var isUnicode = negotiateFlags & flags.NTLM_NegotiateUnicode; + var isNegotiateExtendedSecurity = negotiateFlags & flags.NTLM_NegotiateExtendedSecurity; + + var BODY_LENGTH = 72; + + var domainName = escape(options.domain.toUpperCase()); + var workstation = escape(options.workstation.toUpperCase()); + + var workstationBytes, domainNameBytes, usernameBytes, encryptedRandomSessionKeyBytes; + + var encryptedRandomSessionKey = ""; + if(isUnicode){ + workstationBytes = new Buffer(workstation, 'utf16le'); + domainNameBytes = new Buffer(domainName, 'utf16le'); + usernameBytes = new Buffer(username, 'utf16le'); + encryptedRandomSessionKeyBytes = new Buffer(encryptedRandomSessionKey, 'utf16le'); + }else{ + workstationBytes = new Buffer(workstation, 'ascii'); + domainNameBytes = new Buffer(domainName, 'ascii'); + usernameBytes = new Buffer(username, 'ascii'); + encryptedRandomSessionKeyBytes = new Buffer(encryptedRandomSessionKey, 'ascii'); + } + + var lmChallengeResponse = calc_resp(create_LM_hashed_password_v1(password), nonce); + var ntChallengeResponse = calc_resp(create_NT_hashed_password_v1(password), nonce); + + if(isNegotiateExtendedSecurity){ + var pwhash = create_NT_hashed_password_v1(password); + var clientChallenge = ""; + for(var i=0; i < 8; i++){ + clientChallenge += String.fromCharCode( Math.floor(Math.random()*256) ); + } + var clientChallengeBytes = new Buffer(clientChallenge, 'ascii'); + var challenges = ntlm2sr_calc_resp(pwhash, nonce, clientChallengeBytes); + lmChallengeResponse = challenges.lmChallengeResponse; + ntChallengeResponse = challenges.ntChallengeResponse; + } + + var signature = 'NTLMSSP\0'; + + var pos = 0; + var buf = new Buffer(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length + lmChallengeResponse.length + ntChallengeResponse.length + encryptedRandomSessionKeyBytes.length); + + buf.write(signature, pos, signature.length); pos += signature.length; + buf.writeUInt32LE(3, pos); pos += 4; // type 1 + + buf.writeUInt16LE(lmChallengeResponse.length, pos); pos += 2; // LmChallengeResponseLen + buf.writeUInt16LE(lmChallengeResponse.length, pos); pos += 2; // LmChallengeResponseMaxLen + buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length, pos); pos += 4; // LmChallengeResponseOffset + + buf.writeUInt16LE(ntChallengeResponse.length, pos); pos += 2; // NtChallengeResponseLen + buf.writeUInt16LE(ntChallengeResponse.length, pos); pos += 2; // NtChallengeResponseMaxLen + buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length + lmChallengeResponse.length, pos); pos += 4; // NtChallengeResponseOffset + + buf.writeUInt16LE(domainNameBytes.length, pos); pos += 2; // DomainNameLen + buf.writeUInt16LE(domainNameBytes.length, pos); pos += 2; // DomainNameMaxLen + buf.writeUInt32LE(BODY_LENGTH, pos); pos += 4; // DomainNameOffset + + buf.writeUInt16LE(usernameBytes.length, pos); pos += 2; // UserNameLen + buf.writeUInt16LE(usernameBytes.length, pos); pos += 2; // UserNameMaxLen + buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length, pos); pos += 4; // UserNameOffset + + buf.writeUInt16LE(workstationBytes.length, pos); pos += 2; // WorkstationLen + buf.writeUInt16LE(workstationBytes.length, pos); pos += 2; // WorkstationMaxLen + buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length, pos); pos += 4; // WorkstationOffset + + buf.writeUInt16LE(encryptedRandomSessionKeyBytes.length, pos); pos += 2; // EncryptedRandomSessionKeyLen + buf.writeUInt16LE(encryptedRandomSessionKeyBytes.length, pos); pos += 2; // EncryptedRandomSessionKeyMaxLen + buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length + lmChallengeResponse.length + ntChallengeResponse.length, pos); pos += 4; // EncryptedRandomSessionKeyOffset + + buf.writeUInt32LE(typeflags.NTLM_TYPE2_FLAGS, pos); pos += 4; // NegotiateFlags + + buf.writeUInt8(5, pos); pos++; // ProductMajorVersion + buf.writeUInt8(1, pos); pos++; // ProductMinorVersion + buf.writeUInt16LE(2600, pos); pos += 2; // ProductBuild + buf.writeUInt8(0, pos); pos++; // VersionReserved1 + buf.writeUInt8(0, pos); pos++; // VersionReserved2 + buf.writeUInt8(0, pos); pos++; // VersionReserved3 + buf.writeUInt8(15, pos); pos++; // NTLMRevisionCurrent + + domainNameBytes.copy(buf, pos); pos += domainNameBytes.length; + usernameBytes.copy(buf, pos); pos += usernameBytes.length; + workstationBytes.copy(buf, pos); pos += workstationBytes.length; + lmChallengeResponse.copy(buf, pos); pos += lmChallengeResponse.length; + ntChallengeResponse.copy(buf, pos); pos += ntChallengeResponse.length; + encryptedRandomSessionKeyBytes.copy(buf, pos); pos += encryptedRandomSessionKeyBytes.length; + + return 'NTLM ' + buf.toString('base64'); +} + +function create_LM_hashed_password_v1(password){ + // fix the password length to 14 bytes + password = password.toUpperCase(); + var passwordBytes = new Buffer(password, 'ascii'); + + var passwordBytesPadded = new Buffer(14); + passwordBytesPadded.fill("\0"); + var sourceEnd = 14; + if(passwordBytes.length < 14) sourceEnd = passwordBytes.length; + passwordBytes.copy(passwordBytesPadded, 0, 0, sourceEnd); + + // split into 2 parts of 7 bytes: + var firstPart = passwordBytesPadded.slice(0,7); + var secondPart = passwordBytesPadded.slice(7); + + function encrypt(buf){ + var key = insertZerosEvery7Bits(buf); + var des = crypto.createCipheriv('DES-ECB', key, ''); + return des.update("KGS!@#$%"); // page 57 in [MS-NLMP]); + } + + var firstPartEncrypted = encrypt(firstPart); + var secondPartEncrypted = encrypt(secondPart); + + return Buffer.concat([firstPartEncrypted, secondPartEncrypted]); +} + +function insertZerosEvery7Bits(buf){ + var binaryArray = bytes2binaryArray(buf); + var newBinaryArray = []; + for(var i=0; i array.length) + break; + + var binString1 = '' + array[i] + '' + array[i+1] + '' + array[i+2] + '' + array[i+3]; + var binString2 = '' + array[i+4] + '' + array[i+5] + '' + array[i+6] + '' + array[i+7]; + var hexchar1 = binary2hex[binString1]; + var hexchar2 = binary2hex[binString2]; + + var buf = new Buffer(hexchar1 + '' + hexchar2, 'hex'); + bufArray.push(buf); + } + + return Buffer.concat(bufArray); +} + +function create_NT_hashed_password_v1(password){ + var buf = new Buffer(password, 'utf16le'); + var md4 = crypto.createHash('md4'); + md4.update(buf); + return new Buffer(md4.digest()); +} + +function calc_resp(password_hash, server_challenge){ + // padding with zeros to make the hash 21 bytes long + var passHashPadded = new Buffer(21); + passHashPadded.fill("\0"); + password_hash.copy(passHashPadded, 0, 0, password_hash.length); + + var resArray = []; + + var des = crypto.createCipheriv('DES-ECB', insertZerosEvery7Bits(passHashPadded.slice(0,7)), ''); + resArray.push( des.update(server_challenge.slice(0,8)) ); + + des = crypto.createCipheriv('DES-ECB', insertZerosEvery7Bits(passHashPadded.slice(7,14)), ''); + resArray.push( des.update(server_challenge.slice(0,8)) ); + + des = crypto.createCipheriv('DES-ECB', insertZerosEvery7Bits(passHashPadded.slice(14,21)), ''); + resArray.push( des.update(server_challenge.slice(0,8)) ); + + return Buffer.concat(resArray); +} + +function ntlm2sr_calc_resp(responseKeyNT, serverChallenge, clientChallenge){ + // padding with zeros to make the hash 16 bytes longer + var lmChallengeResponse = new Buffer(clientChallenge.length + 16); + lmChallengeResponse.fill("\0"); + clientChallenge.copy(lmChallengeResponse, 0, 0, clientChallenge.length); + + var buf = Buffer.concat([serverChallenge, clientChallenge]); + var md5 = crypto.createHash('md5'); + md5.update(buf); + var sess = md5.digest(); + var ntChallengeResponse = calc_resp(responseKeyNT, sess.slice(0,8)); + + return { + lmChallengeResponse: lmChallengeResponse, + ntChallengeResponse: ntChallengeResponse + }; +} + +exports.createType1Message = createType1Message; +exports.parseType2Message = parseType2Message; +exports.createType3Message = createType3Message; + + + diff --git a/node_modules/typed-rest-client/opensource/node-http-ntlm/readme.txt b/node_modules/typed-rest-client/opensource/node-http-ntlm/readme.txt new file mode 100644 index 00000000..b341600f --- /dev/null +++ b/node_modules/typed-rest-client/opensource/node-http-ntlm/readme.txt @@ -0,0 +1,6 @@ +// This software (ntlm.js) was copied from a file of the same name at https://github.com/SamDecrock/node-http-ntlm/blob/master/ntlm.js. +// +// As of this writing, it is a part of the node-http-ntlm module produced by SamDecrock. +// +// It is used as a part of the NTLM support provided by the vso-node-api library. +// diff --git a/node_modules/typed-rest-client/package.json b/node_modules/typed-rest-client/package.json new file mode 100644 index 00000000..cd66ab16 --- /dev/null +++ b/node_modules/typed-rest-client/package.json @@ -0,0 +1,76 @@ +{ + "_args": [ + [ + "typed-rest-client@1.5.0", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "typed-rest-client@1.5.0", + "_id": "typed-rest-client@1.5.0", + "_inBundle": false, + "_integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==", + "_location": "/typed-rest-client", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "typed-rest-client@1.5.0", + "name": "typed-rest-client", + "escapedName": "typed-rest-client", + "rawSpec": "1.5.0", + "saveSpec": null, + "fetchSpec": "1.5.0" + }, + "_requiredBy": [ + "/@actions/tool-cache" + ], + "_resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz", + "_spec": "1.5.0", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "author": { + "name": "Microsoft Corporation" + }, + "bugs": { + "url": "https://github.com/Microsoft/typed-rest-client/issues" + }, + "dependencies": { + "tunnel": "0.0.4", + "underscore": "1.8.3" + }, + "description": "Node Rest and Http Clients for use with TypeScript", + "devDependencies": { + "@types/mocha": "^2.2.44", + "@types/node": "^6.0.92", + "@types/shelljs": "0.7.4", + "mocha": "^3.5.3", + "nock": "9.6.1", + "react-scripts": "1.1.5", + "semver": "4.3.3", + "shelljs": "0.7.6", + "typescript": "3.1.5" + }, + "homepage": "https://github.com/Microsoft/typed-rest-client#readme", + "keywords": [ + "rest", + "http", + "client", + "typescript", + "node" + ], + "license": "MIT", + "main": "./RestClient.js", + "name": "typed-rest-client", + "repository": { + "type": "git", + "url": "git+https://github.com/Microsoft/typed-rest-client.git" + }, + "scripts": { + "bt": "node make.js buildtest", + "build": "node make.js build", + "samples": "node make.js samples", + "test": "node make.js test", + "units": "node make.js units", + "validate": "node make.js validate" + }, + "version": "1.5.0" +} diff --git a/node_modules/underscore/LICENSE b/node_modules/underscore/LICENSE new file mode 100644 index 00000000..ad0e71bc --- /dev/null +++ b/node_modules/underscore/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/underscore/README.md b/node_modules/underscore/README.md new file mode 100644 index 00000000..c2ba2590 --- /dev/null +++ b/node_modules/underscore/README.md @@ -0,0 +1,22 @@ + __ + /\ \ __ + __ __ ___ \_\ \ __ _ __ ____ ___ ___ _ __ __ /\_\ ____ + /\ \/\ \ /' _ `\ /'_ \ /'__`\/\ __\/ ,__\ / ___\ / __`\/\ __\/'__`\ \/\ \ /',__\ + \ \ \_\ \/\ \/\ \/\ \ \ \/\ __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\ __/ __ \ \ \/\__, `\ + \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/ + \/___/ \/_/\/_/\/__,_ /\/____/ \/_/ \/___/ \/____/\/___/ \/_/ \/____/\/_//\ \_\ \/___/ + \ \____/ + \/___/ + +Underscore.js is a utility-belt library for JavaScript that provides +support for the usual functional suspects (each, map, reduce, filter...) +without extending any core JavaScript objects. + +For Docs, License, Tests, and pre-packed downloads, see: +http://underscorejs.org + +Underscore is an open-sourced component of DocumentCloud: +https://github.com/documentcloud + +Many thanks to our contributors: +https://github.com/jashkenas/underscore/contributors diff --git a/node_modules/underscore/package.json b/node_modules/underscore/package.json new file mode 100644 index 00000000..09d5cdd5 --- /dev/null +++ b/node_modules/underscore/package.json @@ -0,0 +1,76 @@ +{ + "_args": [ + [ + "underscore@1.8.3", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "underscore@1.8.3", + "_id": "underscore@1.8.3", + "_inBundle": false, + "_integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "_location": "/underscore", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "underscore@1.8.3", + "name": "underscore", + "escapedName": "underscore", + "rawSpec": "1.8.3", + "saveSpec": null, + "fetchSpec": "1.8.3" + }, + "_requiredBy": [ + "/typed-rest-client" + ], + "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "_spec": "1.8.3", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "author": { + "name": "Jeremy Ashkenas", + "email": "jeremy@documentcloud.org" + }, + "bugs": { + "url": "https://github.com/jashkenas/underscore/issues" + }, + "description": "JavaScript's functional programming helper library.", + "devDependencies": { + "docco": "*", + "eslint": "0.6.x", + "karma": "~0.12.31", + "karma-qunit": "~0.1.4", + "qunit-cli": "~0.2.0", + "uglify-js": "2.4.x" + }, + "files": [ + "underscore.js", + "underscore-min.js", + "underscore-min.map", + "LICENSE" + ], + "homepage": "http://underscorejs.org", + "keywords": [ + "util", + "functional", + "server", + "client", + "browser" + ], + "license": "MIT", + "main": "underscore.js", + "name": "underscore", + "repository": { + "type": "git", + "url": "git://github.com/jashkenas/underscore.git" + }, + "scripts": { + "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/ .*/\" -m --source-map underscore-min.map -o underscore-min.js", + "doc": "docco underscore.js", + "lint": "eslint underscore.js test/*.js", + "test": "npm run test-node && npm run lint", + "test-browser": "npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start", + "test-node": "qunit-cli test/*.js" + }, + "version": "1.8.3" +} diff --git a/node_modules/underscore/underscore-min.js b/node_modules/underscore/underscore-min.js new file mode 100644 index 00000000..f01025b7 --- /dev/null +++ b/node_modules/underscore/underscore-min.js @@ -0,0 +1,6 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); +//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/node_modules/underscore/underscore-min.map b/node_modules/underscore/underscore-min.map new file mode 100644 index 00000000..cf356bf9 --- /dev/null +++ b/node_modules/underscore/underscore-min.map @@ -0,0 +1 @@ +{"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","_","arguments","createPredicateIndexFinder","array","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","i","Math","max","min","slice","call","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","prototype","ObjProto","prop","has","contains","push","root","this","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","exports","module","VERSION","func","argCount","value","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","key","baseCreate","result","MAX_ARRAY_INDEX","pow","each","forEach","map","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","includes","include","fromIndex","guard","values","indexOf","invoke","method","args","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","object","findLastIndex","low","high","mid","floor","lastIndexOf","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","concat","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extend","extendOwn","assign","pick","oiteratee","omit","String","defaults","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","valueOf","toJSON","define","amd"],"mappings":";;;;CAKC,WA4KC,QAASA,GAAaC,GAGpB,QAASC,GAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,GAClD,KAAOD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAAK,CACjD,GAAIQ,GAAaH,EAAOA,EAAKC,GAASA,CACtCF,GAAOD,EAASC,EAAMF,EAAIM,GAAaA,EAAYN,GAErD,MAAOE,GAGT,MAAO,UAASF,EAAKC,EAAUC,EAAMK,GACnCN,EAAWO,EAAWP,EAAUM,EAAS,EACzC,IAAIJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBD,EAAQN,EAAM,EAAI,EAAIO,EAAS,CAMnC,OAJIM,WAAUN,OAAS,IACrBH,EAAOF,EAAIG,EAAOA,EAAKC,GAASA,GAChCA,GAASN,GAEJC,EAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,IA+ZtD,QAASO,GAA2Bd,GAClC,MAAO,UAASe,EAAOC,EAAWP,GAChCO,EAAYC,EAAGD,EAAWP,EAG1B,KAFA,GAAIF,GAASW,EAAUH,GACnBT,EAAQN,EAAM,EAAI,EAAIO,EAAS,EAC5BD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAC5C,GAAIgB,EAAUD,EAAMT,GAAQA,EAAOS,GAAQ,MAAOT,EAEpD,QAAQ,GAsBZ,QAASa,GAAkBnB,EAAKoB,EAAeC,GAC7C,MAAO,UAASN,EAAOO,EAAMC,GAC3B,GAAIC,GAAI,EAAGjB,EAASW,EAAUH,EAC9B,IAAkB,gBAAPQ,GACLvB,EAAM,EACNwB,EAAID,GAAO,EAAIA,EAAME,KAAKC,IAAIH,EAAMhB,EAAQiB,GAE5CjB,EAASgB,GAAO,EAAIE,KAAKE,IAAIJ,EAAM,EAAGhB,GAAUgB,EAAMhB,EAAS,MAE9D,IAAIc,GAAeE,GAAOhB,EAE/B,MADAgB,GAAMF,EAAYN,EAAOO,GAClBP,EAAMQ,KAASD,EAAOC,GAAO,CAEtC,IAAID,IAASA,EAEX,MADAC,GAAMH,EAAcQ,EAAMC,KAAKd,EAAOS,EAAGjB,GAASK,EAAEkB,OAC7CP,GAAO,EAAIA,EAAMC,GAAK,CAE/B,KAAKD,EAAMvB,EAAM,EAAIwB,EAAIjB,EAAS,EAAGgB,GAAO,GAAWhB,EAANgB,EAAcA,GAAOvB,EACpE,GAAIe,EAAMQ,KAASD,EAAM,MAAOC,EAElC,QAAQ,GAqPZ,QAASQ,GAAoB7B,EAAKG,GAChC,GAAI2B,GAAaC,EAAmB1B,OAChC2B,EAAchC,EAAIgC,YAClBC,EAASvB,EAAEwB,WAAWF,IAAgBA,EAAYG,WAAcC,EAGhEC,EAAO,aAGX,KAFI3B,EAAE4B,IAAItC,EAAKqC,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAAOlC,EAAKqC,KAAKH,GAEpDP,KACLO,EAAON,EAAmBD,GACtBO,IAAQrC,IAAOA,EAAIqC,KAAUJ,EAAMI,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAChElC,EAAKqC,KAAKH,GA74BhB,GAAII,GAAOC,KAGPC,EAAqBF,EAAK/B,EAG1BkC,EAAaC,MAAMV,UAAWC,EAAWU,OAAOX,UAAWY,EAAYC,SAASb,UAIlFK,EAAmBI,EAAWJ,KAC9Bd,EAAmBkB,EAAWlB,MAC9BuB,EAAmBb,EAASa,SAC5BC,EAAmBd,EAASc,eAK5BC,EAAqBN,MAAMO,QAC3BC,EAAqBP,OAAO3C,KAC5BmD,EAAqBP,EAAUQ,KAC/BC,EAAqBV,OAAOW,OAG1BC,EAAO,aAGPhD,EAAI,SAASV,GACf,MAAIA,aAAeU,GAAUV,EACvB0C,eAAgBhC,QACtBgC,KAAKiB,SAAW3D,GADiB,GAAIU,GAAEV,GAOlB,oBAAZ4D,UACa,mBAAXC,SAA0BA,OAAOD,UAC1CA,QAAUC,OAAOD,QAAUlD,GAE7BkD,QAAQlD,EAAIA,GAEZ+B,EAAK/B,EAAIA,EAIXA,EAAEoD,QAAU,OAKZ,IAAItD,GAAa,SAASuD,EAAMxD,EAASyD,GACvC,GAAIzD,QAAiB,GAAG,MAAOwD,EAC/B,QAAoB,MAAZC,EAAmB,EAAIA,GAC7B,IAAK,GAAG,MAAO,UAASC,GACtB,MAAOF,GAAKpC,KAAKpB,EAAS0D,GAE5B,KAAK,GAAG,MAAO,UAASA,EAAOC,GAC7B,MAAOH,GAAKpC,KAAKpB,EAAS0D,EAAOC,GAEnC,KAAK,GAAG,MAAO,UAASD,EAAO7D,EAAO+D,GACpC,MAAOJ,GAAKpC,KAAKpB,EAAS0D,EAAO7D,EAAO+D,GAE1C,KAAK,GAAG,MAAO,UAASC,EAAaH,EAAO7D,EAAO+D,GACjD,MAAOJ,GAAKpC,KAAKpB,EAAS6D,EAAaH,EAAO7D,EAAO+D,IAGzD,MAAO,YACL,MAAOJ,GAAKM,MAAM9D,EAASI,aAO3BI,EAAK,SAASkD,EAAO1D,EAASyD,GAChC,MAAa,OAATC,EAAsBvD,EAAE4D,SACxB5D,EAAEwB,WAAW+B,GAAezD,EAAWyD,EAAO1D,EAASyD,GACvDtD,EAAE6D,SAASN,GAAevD,EAAE8D,QAAQP,GACjCvD,EAAE+D,SAASR,GAEpBvD,GAAET,SAAW,SAASgE,EAAO1D,GAC3B,MAAOQ,GAAGkD,EAAO1D,EAASmE,KAI5B,IAAIC,GAAiB,SAASC,EAAUC,GACtC,MAAO,UAAS7E,GACd,GAAIK,GAASM,UAAUN,MACvB,IAAa,EAATA,GAAqB,MAAPL,EAAa,MAAOA,EACtC,KAAK,GAAII,GAAQ,EAAWC,EAARD,EAAgBA,IAIlC,IAAK,GAHD0E,GAASnE,UAAUP,GACnBD,EAAOyE,EAASE,GAChBC,EAAI5E,EAAKE,OACJiB,EAAI,EAAOyD,EAAJzD,EAAOA,IAAK,CAC1B,GAAI0D,GAAM7E,EAAKmB,EACVuD,IAAiB7E,EAAIgF,SAAc,KAAGhF,EAAIgF,GAAOF,EAAOE,IAGjE,MAAOhF,KAKPiF,EAAa,SAAS9C,GACxB,IAAKzB,EAAE6D,SAASpC,GAAY,QAC5B,IAAIqB,EAAc,MAAOA,GAAarB,EACtCuB,GAAKvB,UAAYA,CACjB,IAAI+C,GAAS,GAAIxB,EAEjB,OADAA,GAAKvB,UAAY,KACV+C,GAGLT,EAAW,SAASO,GACtB,MAAO,UAAShF,GACd,MAAc,OAAPA,MAAmB,GAAIA,EAAIgF,KAQlCG,EAAkB5D,KAAK6D,IAAI,EAAG,IAAM,EACpCpE,EAAYyD,EAAS,UACrBhE,EAAc,SAAS0D,GACzB,GAAI9D,GAASW,EAAUmD,EACvB,OAAwB,gBAAV9D,IAAsBA,GAAU,GAAe8E,GAAV9E,EASrDK,GAAE2E,KAAO3E,EAAE4E,QAAU,SAAStF,EAAKC,EAAUM,GAC3CN,EAAWO,EAAWP,EAAUM,EAChC,IAAIe,GAAGjB,CACP,IAAII,EAAYT,GACd,IAAKsB,EAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC3CrB,EAASD,EAAIsB,GAAIA,EAAGtB,OAEjB,CACL,GAAIG,GAAOO,EAAEP,KAAKH,EAClB,KAAKsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAC5CrB,EAASD,EAAIG,EAAKmB,IAAKnB,EAAKmB,GAAItB,GAGpC,MAAOA,IAITU,EAAE6E,IAAM7E,EAAE8E,QAAU,SAASxF,EAAKC,EAAUM,GAC1CN,EAAWc,EAAGd,EAAUM,EAIxB,KAAK,GAHDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBoF,EAAU5C,MAAMxC,GACXD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtCqF,GAAQrF,GAASH,EAASD,EAAIM,GAAaA,EAAYN,GAEzD,MAAOyF,IA+BT/E,EAAEgF,OAAShF,EAAEiF,MAAQjF,EAAEkF,OAAS/F,EAAa,GAG7Ca,EAAEmF,YAAcnF,EAAEoF,MAAQjG,GAAc,GAGxCa,EAAEqF,KAAOrF,EAAEsF,OAAS,SAAShG,EAAKc,EAAWP,GAC3C,GAAIyE,EAMJ,OAJEA,GADEvE,EAAYT,GACRU,EAAEuF,UAAUjG,EAAKc,EAAWP,GAE5BG,EAAEwF,QAAQlG,EAAKc,EAAWP,GAE9ByE,QAAa,IAAKA,KAAS,EAAUhF,EAAIgF,GAA7C,QAKFtE,EAAEyF,OAASzF,EAAE0F,OAAS,SAASpG,EAAKc,EAAWP,GAC7C,GAAIkF,KAKJ,OAJA3E,GAAYC,EAAGD,EAAWP,GAC1BG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC7BvF,EAAUmD,EAAO7D,EAAOiG,IAAOZ,EAAQjD,KAAKyB,KAE3CwB,GAIT/E,EAAE4F,OAAS,SAAStG,EAAKc,EAAWP,GAClC,MAAOG,GAAEyF,OAAOnG,EAAKU,EAAE6F,OAAOxF,EAAGD,IAAaP,IAKhDG,EAAE8F,MAAQ9F,EAAE+F,IAAM,SAASzG,EAAKc,EAAWP,GACzCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,KAAKU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE3D,OAAO,GAKTU,EAAEgG,KAAOhG,EAAEiG,IAAM,SAAS3G,EAAKc,EAAWP,GACxCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,IAAIU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE1D,OAAO,GAKTU,EAAE6B,SAAW7B,EAAEkG,SAAWlG,EAAEmG,QAAU,SAAS7G,EAAKoB,EAAM0F,EAAWC,GAGnE,MAFKtG,GAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,KACd,gBAAb8G,IAAyBC,KAAOD,EAAY,GAChDpG,EAAEuG,QAAQjH,EAAKoB,EAAM0F,IAAc,GAI5CpG,EAAEwG,OAAS,SAASlH,EAAKmH,GACvB,GAAIC,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7B0G,EAAS3G,EAAEwB,WAAWiF,EAC1B,OAAOzG,GAAE6E,IAAIvF,EAAK,SAASiE,GACzB,GAAIF,GAAOsD,EAASF,EAASlD,EAAMkD,EACnC,OAAe,OAARpD,EAAeA,EAAOA,EAAKM,MAAMJ,EAAOmD,MAKnD1G,EAAE4G,MAAQ,SAAStH,EAAKgF,GACtB,MAAOtE,GAAE6E,IAAIvF,EAAKU,EAAE+D,SAASO,KAK/BtE,EAAE6G,MAAQ,SAASvH,EAAKwH,GACtB,MAAO9G,GAAEyF,OAAOnG,EAAKU,EAAE8D,QAAQgD,KAKjC9G,EAAE+G,UAAY,SAASzH,EAAKwH,GAC1B,MAAO9G,GAAEqF,KAAK/F,EAAKU,EAAE8D,QAAQgD,KAI/B9G,EAAEc,IAAM,SAASxB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,GAAUR,IAAUiD,GAAgBjD,GAExC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACR2C,EAAQiB,IACVA,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IAC9BqB,EAAWC,GAAgBD,KAAchD,KAAYQ,KAAYR,OACnEQ,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAITxE,EAAEe,IAAM,SAASzB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,EAASR,IAAUiD,EAAejD,GAEtC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACA4D,EAARjB,IACFiB,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IACnBsB,EAAXD,GAAwChD,MAAbgD,GAAoChD,MAAXQ,KACtDA,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAKTxE,EAAEkH,QAAU,SAAS5H,GAInB,IAAK,GAAe6H,GAHhBC,EAAMrH,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,GACxCK,EAASyH,EAAIzH,OACb0H,EAAWlF,MAAMxC,GACZD,EAAQ,EAAiBC,EAARD,EAAgBA,IACxCyH,EAAOnH,EAAEsH,OAAO,EAAG5H,GACfyH,IAASzH,IAAO2H,EAAS3H,GAAS2H,EAASF,IAC/CE,EAASF,GAAQC,EAAI1H,EAEvB,OAAO2H,IAMTrH,EAAEuH,OAAS,SAASjI,EAAKkI,EAAGnB,GAC1B,MAAS,OAALmB,GAAanB,GACVtG,EAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,IAC/BA,EAAIU,EAAEsH,OAAOhI,EAAIK,OAAS,KAE5BK,EAAEkH,QAAQ5H,GAAK0B,MAAM,EAAGH,KAAKC,IAAI,EAAG0G,KAI7CxH,EAAEyH,OAAS,SAASnI,EAAKC,EAAUM,GAEjC,MADAN,GAAWc,EAAGd,EAAUM,GACjBG,EAAE4G,MAAM5G,EAAE6E,IAAIvF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC/C,OACEpC,MAAOA,EACP7D,MAAOA,EACPgI,SAAUnI,EAASgE,EAAO7D,EAAOiG,MAElCgC,KAAK,SAASC,EAAMC,GACrB,GAAIC,GAAIF,EAAKF,SACTK,EAAIF,EAAMH,QACd,IAAII,IAAMC,EAAG,CACX,GAAID,EAAIC,GAAKD,QAAW,GAAG,MAAO,EAClC,IAAQC,EAAJD,GAASC,QAAW,GAAG,OAAQ,EAErC,MAAOH,GAAKlI,MAAQmI,EAAMnI,QACxB,SAIN,IAAIsI,GAAQ,SAASC,GACnB,MAAO,UAAS3I,EAAKC,EAAUM,GAC7B,GAAI2E,KAMJ,OALAjF,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,GAC1B,GAAI4E,GAAM/E,EAASgE,EAAO7D,EAAOJ,EACjC2I,GAASzD,EAAQjB,EAAOe,KAEnBE,GAMXxE,GAAEkI,QAAUF,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,GAAKxC,KAAKyB,GAAaiB,EAAOF,IAAQf,KAKvEvD,EAAEmI,QAAUH,EAAM,SAASxD,EAAQjB,EAAOe,GACxCE,EAAOF,GAAOf,IAMhBvD,EAAEoI,QAAUJ,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,KAAaE,EAAOF,GAAO,IAI5DtE,EAAEqI,QAAU,SAAS/I,GACnB,MAAKA,GACDU,EAAE0C,QAAQpD,GAAa0B,EAAMC,KAAK3B,GAClCS,EAAYT,GAAaU,EAAE6E,IAAIvF,EAAKU,EAAE4D,UACnC5D,EAAEsG,OAAOhH,OAIlBU,EAAEsI,KAAO,SAAShJ,GAChB,MAAW,OAAPA,EAAoB,EACjBS,EAAYT,GAAOA,EAAIK,OAASK,EAAEP,KAAKH,GAAKK,QAKrDK,EAAEuI,UAAY,SAASjJ,EAAKc,EAAWP,GACrCO,EAAYC,EAAGD,EAAWP,EAC1B,IAAI2I,MAAWC,IAIf,OAHAzI,GAAE2E,KAAKrF,EAAK,SAASiE,EAAOe,EAAKhF,IAC9Bc,EAAUmD,EAAOe,EAAKhF,GAAOkJ,EAAOC,GAAM3G,KAAKyB,MAE1CiF,EAAMC,IAShBzI,EAAE0I,MAAQ1I,EAAE2I,KAAO3I,EAAE4I,KAAO,SAASzI,EAAOqH,EAAGnB,GAC7C,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAM,GAC9BH,EAAE6I,QAAQ1I,EAAOA,EAAMR,OAAS6H,IAMzCxH,EAAE6I,QAAU,SAAS1I,EAAOqH,EAAGnB,GAC7B,MAAOrF,GAAMC,KAAKd,EAAO,EAAGU,KAAKC,IAAI,EAAGX,EAAMR,QAAe,MAAL6H,GAAanB,EAAQ,EAAImB,MAKnFxH,EAAE8I,KAAO,SAAS3I,EAAOqH,EAAGnB,GAC1B,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAMA,EAAMR,OAAS,GAC7CK,EAAE+I,KAAK5I,EAAOU,KAAKC,IAAI,EAAGX,EAAMR,OAAS6H,KAMlDxH,EAAE+I,KAAO/I,EAAEgJ,KAAOhJ,EAAEiJ,KAAO,SAAS9I,EAAOqH,EAAGnB,GAC5C,MAAOrF,GAAMC,KAAKd,EAAY,MAALqH,GAAanB,EAAQ,EAAImB,IAIpDxH,EAAEkJ,QAAU,SAAS/I,GACnB,MAAOH,GAAEyF,OAAOtF,EAAOH,EAAE4D,UAI3B,IAAIuF,GAAU,SAASC,EAAOC,EAASC,EAAQC,GAE7C,IAAK,GADDC,MAAa7I,EAAM,EACdC,EAAI2I,GAAc,EAAG5J,EAASW,EAAU8I,GAAYzJ,EAAJiB,EAAYA,IAAK,CACxE,GAAI2C,GAAQ6F,EAAMxI,EAClB,IAAIb,EAAYwD,KAAWvD,EAAE0C,QAAQa,IAAUvD,EAAEyJ,YAAYlG,IAAS,CAE/D8F,IAAS9F,EAAQ4F,EAAQ5F,EAAO8F,EAASC,GAC9C,IAAII,GAAI,EAAGC,EAAMpG,EAAM5D,MAEvB,KADA6J,EAAO7J,QAAUgK,EACNA,EAAJD,GACLF,EAAO7I,KAAS4C,EAAMmG,SAEdJ,KACVE,EAAO7I,KAAS4C,GAGpB,MAAOiG,GAITxJ,GAAEmJ,QAAU,SAAShJ,EAAOkJ,GAC1B,MAAOF,GAAQhJ,EAAOkJ,GAAS,IAIjCrJ,EAAE4J,QAAU,SAASzJ,GACnB,MAAOH,GAAE6J,WAAW1J,EAAOa,EAAMC,KAAKhB,UAAW,KAMnDD,EAAE8J,KAAO9J,EAAE+J,OAAS,SAAS5J,EAAO6J,EAAUzK,EAAUM,GACjDG,EAAEiK,UAAUD,KACfnK,EAAUN,EACVA,EAAWyK,EACXA,GAAW,GAEG,MAAZzK,IAAkBA,EAAWc,EAAGd,EAAUM,GAG9C,KAAK,GAFD2E,MACA0F,KACKtJ,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAI2C,GAAQpD,EAAMS,GACdoG,EAAWzH,EAAWA,EAASgE,EAAO3C,EAAGT,GAASoD,CAClDyG,IACGpJ,GAAKsJ,IAASlD,GAAUxC,EAAO1C,KAAKyB,GACzC2G,EAAOlD,GACEzH,EACJS,EAAE6B,SAASqI,EAAMlD,KACpBkD,EAAKpI,KAAKkF,GACVxC,EAAO1C,KAAKyB,IAEJvD,EAAE6B,SAAS2C,EAAQjB,IAC7BiB,EAAO1C,KAAKyB,GAGhB,MAAOiB,IAKTxE,EAAEmK,MAAQ,WACR,MAAOnK,GAAE8J,KAAKX,EAAQlJ,WAAW,GAAM,KAKzCD,EAAEoK,aAAe,SAASjK,GAGxB,IAAK,GAFDqE,MACA6F,EAAapK,UAAUN,OAClBiB,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAIF,GAAOP,EAAMS,EACjB,KAAIZ,EAAE6B,SAAS2C,EAAQ9D,GAAvB,CACA,IAAK,GAAIgJ,GAAI,EAAOW,EAAJX,GACT1J,EAAE6B,SAAS5B,UAAUyJ,GAAIhJ,GADAgJ,KAG5BA,IAAMW,GAAY7F,EAAO1C,KAAKpB,IAEpC,MAAO8D,IAKTxE,EAAE6J,WAAa,SAAS1J,GACtB,GAAI4I,GAAOI,EAAQlJ,WAAW,GAAM,EAAM,EAC1C,OAAOD,GAAEyF,OAAOtF,EAAO,SAASoD,GAC9B,OAAQvD,EAAE6B,SAASkH,EAAMxF,MAM7BvD,EAAEsK,IAAM,WACN,MAAOtK,GAAEuK,MAAMtK,YAKjBD,EAAEuK,MAAQ,SAASpK,GAIjB,IAAK,GAHDR,GAASQ,GAASH,EAAEc,IAAIX,EAAOG,GAAWX,QAAU,EACpD6E,EAASrC,MAAMxC,GAEVD,EAAQ,EAAWC,EAARD,EAAgBA,IAClC8E,EAAO9E,GAASM,EAAE4G,MAAMzG,EAAOT,EAEjC,OAAO8E,IAMTxE,EAAEwK,OAAS,SAAS7E,EAAMW,GAExB,IAAK,GADD9B,MACK5D,EAAI,EAAGjB,EAASW,EAAUqF,GAAWhG,EAAJiB,EAAYA,IAChD0F,EACF9B,EAAOmB,EAAK/E,IAAM0F,EAAO1F,GAEzB4D,EAAOmB,EAAK/E,GAAG,IAAM+E,EAAK/E,GAAG,EAGjC,OAAO4D,IAiBTxE,EAAEuF,UAAYrF,EAA2B,GACzCF,EAAEyK,cAAgBvK,GAA4B,GAI9CF,EAAES,YAAc,SAASN,EAAOb,EAAKC,EAAUM,GAC7CN,EAAWc,EAAGd,EAAUM,EAAS,EAGjC,KAFA,GAAI0D,GAAQhE,EAASD,GACjBoL,EAAM,EAAGC,EAAOrK,EAAUH,GACjBwK,EAAND,GAAY,CACjB,GAAIE,GAAM/J,KAAKgK,OAAOH,EAAMC,GAAQ,EAChCpL,GAASY,EAAMyK,IAAQrH,EAAOmH,EAAME,EAAM,EAAQD,EAAOC,EAE/D,MAAOF,IAgCT1K,EAAEuG,QAAUhG,EAAkB,EAAGP,EAAEuF,UAAWvF,EAAES,aAChDT,EAAE8K,YAAcvK,GAAmB,EAAGP,EAAEyK,eAKxCzK,EAAE+K,MAAQ,SAASC,EAAOC,EAAMC,GAClB,MAARD,IACFA,EAAOD,GAAS,EAChBA,EAAQ,GAEVE,EAAOA,GAAQ,CAKf,KAAK,GAHDvL,GAASkB,KAAKC,IAAID,KAAKsK,MAAMF,EAAOD,GAASE,GAAO,GACpDH,EAAQ5I,MAAMxC,GAETgB,EAAM,EAAShB,EAANgB,EAAcA,IAAOqK,GAASE,EAC9CH,EAAMpK,GAAOqK,CAGf,OAAOD,GAQT,IAAIK,GAAe,SAASC,EAAYC,EAAWzL,EAAS0L,EAAgB7E,GAC1E,KAAM6E,YAA0BD,IAAY,MAAOD,GAAW1H,MAAM9D,EAAS6G,EAC7E,IAAI8E,GAAOjH,EAAW8G,EAAW5J,WAC7B+C,EAAS6G,EAAW1H,MAAM6H,EAAM9E,EACpC,OAAI1G,GAAE6D,SAASW,GAAgBA,EACxBgH,EAMTxL,GAAE6C,KAAO,SAASQ,EAAMxD,GACtB,GAAI+C,GAAcS,EAAKR,OAASD,EAAY,MAAOA,GAAWe,MAAMN,EAAMrC,EAAMC,KAAKhB,UAAW,GAChG,KAAKD,EAAEwB,WAAW6B,GAAO,KAAM,IAAIoI,WAAU,oCAC7C,IAAI/E,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7ByL,EAAQ,WACV,MAAON,GAAa/H,EAAMqI,EAAO7L,EAASmC,KAAM0E,EAAKiF,OAAO3K,EAAMC,KAAKhB,aAEzE,OAAOyL,IAMT1L,EAAE4L,QAAU,SAASvI,GACnB,GAAIwI,GAAY7K,EAAMC,KAAKhB,UAAW,GAClCyL,EAAQ,WAGV,IAAK,GAFDI,GAAW,EAAGnM,EAASkM,EAAUlM,OACjC+G,EAAOvE,MAAMxC,GACRiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B8F,EAAK9F,GAAKiL,EAAUjL,KAAOZ,EAAIC,UAAU6L,KAAcD,EAAUjL,EAEnE,MAAOkL,EAAW7L,UAAUN,QAAQ+G,EAAK5E,KAAK7B,UAAU6L,KACxD,OAAOV,GAAa/H,EAAMqI,EAAO1J,KAAMA,KAAM0E,GAE/C,OAAOgF,IAMT1L,EAAE+L,QAAU,SAASzM,GACnB,GAAIsB,GAA8B0D,EAA3B3E,EAASM,UAAUN,MAC1B,IAAc,GAAVA,EAAa,KAAM,IAAIqM,OAAM,wCACjC,KAAKpL,EAAI,EAAOjB,EAAJiB,EAAYA,IACtB0D,EAAMrE,UAAUW,GAChBtB,EAAIgF,GAAOtE,EAAE6C,KAAKvD,EAAIgF,GAAMhF,EAE9B,OAAOA,IAITU,EAAEiM,QAAU,SAAS5I,EAAM6I,GACzB,GAAID,GAAU,SAAS3H,GACrB,GAAI6H,GAAQF,EAAQE,MAChBC,EAAU,IAAMF,EAASA,EAAOvI,MAAM3B,KAAM/B,WAAaqE,EAE7D,OADKtE,GAAE4B,IAAIuK,EAAOC,KAAUD,EAAMC,GAAW/I,EAAKM,MAAM3B,KAAM/B,YACvDkM,EAAMC,GAGf,OADAH,GAAQE,SACDF,GAKTjM,EAAEqM,MAAQ,SAAShJ,EAAMiJ,GACvB,GAAI5F,GAAO1F,EAAMC,KAAKhB,UAAW,EACjC,OAAOsM,YAAW,WAChB,MAAOlJ,GAAKM,MAAM,KAAM+C,IACvB4F,IAKLtM,EAAEwM,MAAQxM,EAAE4L,QAAQ5L,EAAEqM,MAAOrM,EAAG,GAOhCA,EAAEyM,SAAW,SAASpJ,EAAMiJ,EAAMI,GAChC,GAAI7M,GAAS6G,EAAMlC,EACfmI,EAAU,KACVC,EAAW,CACVF,KAASA,KACd,IAAIG,GAAQ,WACVD,EAAWF,EAAQI,WAAY,EAAQ,EAAI9M,EAAE+M,MAC7CJ,EAAU,KACVnI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,MAEjC,OAAO,YACL,GAAIqG,GAAM/M,EAAE+M,KACPH,IAAYF,EAAQI,WAAY,IAAOF,EAAWG,EACvD,IAAIC,GAAYV,GAAQS,EAAMH,EAc9B,OAbA/M,GAAUmC,KACV0E,EAAOzG,UACU,GAAb+M,GAAkBA,EAAYV,GAC5BK,IACFM,aAAaN,GACbA,EAAU,MAEZC,EAAWG,EACXvI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,OACrBiG,GAAWD,EAAQQ,YAAa,IAC1CP,EAAUJ,WAAWM,EAAOG,IAEvBxI,IAQXxE,EAAEmN,SAAW,SAAS9J,EAAMiJ,EAAMc,GAChC,GAAIT,GAASjG,EAAM7G,EAASwN,EAAW7I,EAEnCqI,EAAQ,WACV,GAAI/D,GAAO9I,EAAE+M,MAAQM,CAEVf,GAAPxD,GAAeA,GAAQ,EACzB6D,EAAUJ,WAAWM,EAAOP,EAAOxD,IAEnC6D,EAAU,KACLS,IACH5I,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,QAKrC,OAAO,YACL7G,EAAUmC,KACV0E,EAAOzG,UACPoN,EAAYrN,EAAE+M,KACd,IAAIO,GAAUF,IAAcT,CAO5B,OANKA,KAASA,EAAUJ,WAAWM,EAAOP,IACtCgB,IACF9I,EAASnB,EAAKM,MAAM9D,EAAS6G,GAC7B7G,EAAU6G,EAAO,MAGZlC,IAOXxE,EAAEuN,KAAO,SAASlK,EAAMmK,GACtB,MAAOxN,GAAE4L,QAAQ4B,EAASnK,IAI5BrD,EAAE6F,OAAS,SAASzF,GAClB,MAAO,YACL,OAAQA,EAAUuD,MAAM3B,KAAM/B,aAMlCD,EAAEyN,QAAU,WACV,GAAI/G,GAAOzG,UACP+K,EAAQtE,EAAK/G,OAAS,CAC1B,OAAO,YAGL,IAFA,GAAIiB,GAAIoK,EACJxG,EAASkC,EAAKsE,GAAOrH,MAAM3B,KAAM/B,WAC9BW,KAAK4D,EAASkC,EAAK9F,GAAGK,KAAKe,KAAMwC,EACxC,OAAOA,KAKXxE,EAAE0N,MAAQ,SAASC,EAAOtK,GACxB,MAAO,YACL,QAAMsK,EAAQ,EACLtK,EAAKM,MAAM3B,KAAM/B,WAD1B,SAOJD,EAAE4N,OAAS,SAASD,EAAOtK,GACzB,GAAI7D,EACJ,OAAO,YAKL,QAJMmO,EAAQ,IACZnO,EAAO6D,EAAKM,MAAM3B,KAAM/B,YAEb,GAAT0N,IAAYtK,EAAO,MAChB7D,IAMXQ,EAAE6N,KAAO7N,EAAE4L,QAAQ5L,EAAE4N,OAAQ,EAM7B,IAAIE,KAAevL,SAAU,MAAMwL,qBAAqB,YACpD1M,GAAsB,UAAW,gBAAiB,WAClC,uBAAwB,iBAAkB,iBAqB9DrB,GAAEP,KAAO,SAASH,GAChB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIqD,EAAY,MAAOA,GAAWrD,EAClC,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAASU,EAAE4B,IAAItC,EAAKgF,IAAM7E,EAAKqC,KAAKwC,EAGpD,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEgO,QAAU,SAAS1O,GACnB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAAKG,EAAKqC,KAAKwC,EAG/B,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEsG,OAAS,SAAShH,GAIlB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACd2G,EAASnE,MAAMxC,GACViB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B0F,EAAO1F,GAAKtB,EAAIG,EAAKmB,GAEvB,OAAO0F,IAKTtG,EAAEiO,UAAY,SAAS3O,EAAKC,EAAUM,GACpCN,EAAWc,EAAGd,EAAUM,EAKtB,KAAK,GADDD,GAHFH,EAAQO,EAAEP,KAAKH,GACbK,EAASF,EAAKE,OACdoF,KAEKrF,EAAQ,EAAWC,EAARD,EAAgBA,IAClCE,EAAaH,EAAKC,GAClBqF,EAAQnF,GAAcL,EAASD,EAAIM,GAAaA,EAAYN,EAE9D,OAAOyF,IAIX/E,EAAEkO,MAAQ,SAAS5O,GAIjB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACduO,EAAQ/L,MAAMxC,GACTiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1BsN,EAAMtN,IAAMnB,EAAKmB,GAAItB,EAAIG,EAAKmB,IAEhC,OAAOsN,IAITlO,EAAEmO,OAAS,SAAS7O,GAGlB,IAAK,GAFDkF,MACA/E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAChD4D,EAAOlF,EAAIG,EAAKmB,KAAOnB,EAAKmB,EAE9B,OAAO4D,IAKTxE,EAAEoO,UAAYpO,EAAEqO,QAAU,SAAS/O,GACjC,GAAIgP,KACJ,KAAK,GAAIhK,KAAOhF,GACVU,EAAEwB,WAAWlC,EAAIgF,KAAOgK,EAAMxM,KAAKwC,EAEzC,OAAOgK,GAAM3G,QAIf3H,EAAEuO,OAAStK,EAAejE,EAAEgO,SAI5BhO,EAAEwO,UAAYxO,EAAEyO,OAASxK,EAAejE,EAAEP,MAG1CO,EAAEwF,QAAU,SAASlG,EAAKc,EAAWP,GACnCO,EAAYC,EAAGD,EAAWP,EAE1B,KAAK,GADmByE,GAApB7E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAEhD,GADA0D,EAAM7E,EAAKmB,GACPR,EAAUd,EAAIgF,GAAMA,EAAKhF,GAAM,MAAOgF,IAK9CtE,EAAE0O,KAAO,SAASlE,EAAQmE,EAAW9O,GACnC,GAA+BN,GAAUE,EAArC+E,KAAalF,EAAMkL,CACvB,IAAW,MAAPlL,EAAa,MAAOkF,EACpBxE,GAAEwB,WAAWmN,IACflP,EAAOO,EAAEgO,QAAQ1O,GACjBC,EAAWO,EAAW6O,EAAW9O,KAEjCJ,EAAO0J,EAAQlJ,WAAW,GAAO,EAAO,GACxCV,EAAW,SAASgE,EAAOe,EAAKhF,GAAO,MAAOgF,KAAOhF,IACrDA,EAAM8C,OAAO9C,GAEf,KAAK,GAAIsB,GAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAAK,CACrD,GAAI0D,GAAM7E,EAAKmB,GACX2C,EAAQjE,EAAIgF,EACZ/E,GAASgE,EAAOe,EAAKhF,KAAMkF,EAAOF,GAAOf,GAE/C,MAAOiB,IAITxE,EAAE4O,KAAO,SAAStP,EAAKC,EAAUM,GAC/B,GAAIG,EAAEwB,WAAWjC,GACfA,EAAWS,EAAE6F,OAAOtG,OACf,CACL,GAAIE,GAAOO,EAAE6E,IAAIsE,EAAQlJ,WAAW,GAAO,EAAO,GAAI4O,OACtDtP,GAAW,SAASgE,EAAOe,GACzB,OAAQtE,EAAE6B,SAASpC,EAAM6E,IAG7B,MAAOtE,GAAE0O,KAAKpP,EAAKC,EAAUM,IAI/BG,EAAE8O,SAAW7K,EAAejE,EAAEgO,SAAS,GAKvChO,EAAE+C,OAAS,SAAStB,EAAWsN,GAC7B,GAAIvK,GAASD,EAAW9C,EAExB,OADIsN,IAAO/O,EAAEwO,UAAUhK,EAAQuK,GACxBvK,GAITxE,EAAEgP,MAAQ,SAAS1P,GACjB,MAAKU,GAAE6D,SAASvE,GACTU,EAAE0C,QAAQpD,GAAOA,EAAI0B,QAAUhB,EAAEuO,UAAWjP,GADtBA,GAO/BU,EAAEiP,IAAM,SAAS3P,EAAK4P,GAEpB,MADAA,GAAY5P,GACLA,GAITU,EAAEmP,QAAU,SAAS3E,EAAQ1D,GAC3B,GAAIrH,GAAOO,EAAEP,KAAKqH,GAAQnH,EAASF,EAAKE,MACxC,IAAc,MAAV6K,EAAgB,OAAQ7K,CAE5B,KAAK,GADDL,GAAM8C,OAAOoI,GACR5J,EAAI,EAAOjB,EAAJiB,EAAYA,IAAK,CAC/B,GAAI0D,GAAM7E,EAAKmB,EACf,IAAIkG,EAAMxC,KAAShF,EAAIgF,MAAUA,IAAOhF,IAAM,OAAO,EAEvD,OAAO,EAKT,IAAI8P,GAAK,SAAStH,EAAGC,EAAGsH,EAAQC,GAG9B,GAAIxH,IAAMC,EAAG,MAAa,KAAND,GAAW,EAAIA,IAAM,EAAIC,CAE7C,IAAS,MAALD,GAAkB,MAALC,EAAW,MAAOD,KAAMC,CAErCD,aAAa9H,KAAG8H,EAAIA,EAAE7E,UACtB8E,YAAa/H,KAAG+H,EAAIA,EAAE9E,SAE1B,IAAIsM,GAAYhN,EAAStB,KAAK6G,EAC9B,IAAIyH,IAAchN,EAAStB,KAAK8G,GAAI,OAAO,CAC3C,QAAQwH,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAKzH,GAAM,GAAKC,CACzB,KAAK,kBAGH,OAAKD,KAAOA,GAAWC,KAAOA,EAEhB,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,CAC/C,KAAK,gBACL,IAAK,mBAIH,OAAQD,KAAOC,EAGnB,GAAIyH,GAA0B,mBAAdD,CAChB,KAAKC,EAAW,CACd,GAAgB,gBAAL1H,IAA6B,gBAALC,GAAe,OAAO,CAIzD,IAAI0H,GAAQ3H,EAAExG,YAAaoO,EAAQ3H,EAAEzG,WACrC,IAAImO,IAAUC,KAAW1P,EAAEwB,WAAWiO,IAAUA,YAAiBA,IACxCzP,EAAEwB,WAAWkO,IAAUA,YAAiBA,KACzC,eAAiB5H,IAAK,eAAiBC,GAC7D,OAAO,EAQXsH,EAASA,MACTC,EAASA,KAET,KADA,GAAI3P,GAAS0P,EAAO1P,OACbA,KAGL,GAAI0P,EAAO1P,KAAYmI,EAAG,MAAOwH,GAAO3P,KAAYoI,CAQtD,IAJAsH,EAAOvN,KAAKgG,GACZwH,EAAOxN,KAAKiG,GAGRyH,EAAW,CAGb,GADA7P,EAASmI,EAAEnI,OACPA,IAAWoI,EAAEpI,OAAQ,OAAO,CAEhC,MAAOA,KACL,IAAKyP,EAAGtH,EAAEnI,GAASoI,EAAEpI,GAAS0P,EAAQC,GAAS,OAAO,MAEnD,CAEL,GAAsBhL,GAAlB7E,EAAOO,EAAEP,KAAKqI,EAGlB,IAFAnI,EAASF,EAAKE,OAEVK,EAAEP,KAAKsI,GAAGpI,SAAWA,EAAQ,OAAO,CACxC,MAAOA,KAGL,GADA2E,EAAM7E,EAAKE,IACLK,EAAE4B,IAAImG,EAAGzD,KAAQ8K,EAAGtH,EAAExD,GAAMyD,EAAEzD,GAAM+K,EAAQC,GAAU,OAAO,EAMvE,MAFAD,GAAOM,MACPL,EAAOK,OACA,EAIT3P,GAAE4P,QAAU,SAAS9H,EAAGC,GACtB,MAAOqH,GAAGtH,EAAGC,IAKf/H,EAAE6P,QAAU,SAASvQ,GACnB,MAAW,OAAPA,GAAoB,EACpBS,EAAYT,KAASU,EAAE0C,QAAQpD,IAAQU,EAAE8P,SAASxQ,IAAQU,EAAEyJ,YAAYnK,IAA6B,IAAfA,EAAIK,OAChE,IAAvBK,EAAEP,KAAKH,GAAKK,QAIrBK,EAAE+P,UAAY,SAASzQ,GACrB,SAAUA,GAAwB,IAAjBA,EAAI0Q,WAKvBhQ,EAAE0C,QAAUD,GAAiB,SAASnD,GACpC,MAA8B,mBAAvBiD,EAAStB,KAAK3B,IAIvBU,EAAE6D,SAAW,SAASvE,GACpB,GAAI2Q,SAAc3Q,EAClB,OAAgB,aAAT2Q,GAAgC,WAATA,KAAuB3Q,GAIvDU,EAAE2E,MAAM,YAAa,WAAY,SAAU,SAAU,OAAQ,SAAU,SAAU,SAASuL,GACxFlQ,EAAE,KAAOkQ,GAAQ,SAAS5Q,GACxB,MAAOiD,GAAStB,KAAK3B,KAAS,WAAa4Q,EAAO,OAMjDlQ,EAAEyJ,YAAYxJ,aACjBD,EAAEyJ,YAAc,SAASnK,GACvB,MAAOU,GAAE4B,IAAItC,EAAK,YAMJ,kBAAP,KAAyC,gBAAb6Q,aACrCnQ,EAAEwB,WAAa,SAASlC,GACtB,MAAqB,kBAAPA,KAAqB,IAKvCU,EAAEoQ,SAAW,SAAS9Q,GACpB,MAAO8Q,UAAS9Q,KAAS4B,MAAMmP,WAAW/Q,KAI5CU,EAAEkB,MAAQ,SAAS5B,GACjB,MAAOU,GAAEsQ,SAAShR,IAAQA,KAASA,GAIrCU,EAAEiK,UAAY,SAAS3K,GACrB,MAAOA,MAAQ,GAAQA,KAAQ,GAAgC,qBAAvBiD,EAAStB,KAAK3B,IAIxDU,EAAEuQ,OAAS,SAASjR,GAClB,MAAe,QAARA,GAITU,EAAEwQ,YAAc,SAASlR,GACvB,MAAOA,SAAa,IAKtBU,EAAE4B,IAAM,SAAStC,EAAKgF,GACpB,MAAc,OAAPhF,GAAekD,EAAevB,KAAK3B,EAAKgF,IAQjDtE,EAAEyQ,WAAa,WAEb,MADA1O,GAAK/B,EAAIiC,EACFD,MAIThC,EAAE4D,SAAW,SAASL,GACpB,MAAOA,IAITvD,EAAE0Q,SAAW,SAASnN,GACpB,MAAO,YACL,MAAOA,KAIXvD,EAAE2Q,KAAO,aAET3Q,EAAE+D,SAAWA,EAGb/D,EAAE4Q,WAAa,SAAStR,GACtB,MAAc,OAAPA,EAAc,aAAe,SAASgF,GAC3C,MAAOhF,GAAIgF,KAMftE,EAAE8D,QAAU9D,EAAE6Q,QAAU,SAAS/J,GAE/B,MADAA,GAAQ9G,EAAEwO,aAAc1H,GACjB,SAASxH,GACd,MAAOU,GAAEmP,QAAQ7P,EAAKwH,KAK1B9G,EAAE2N,MAAQ,SAASnG,EAAGjI,EAAUM,GAC9B,GAAIiR,GAAQ3O,MAAMtB,KAAKC,IAAI,EAAG0G,GAC9BjI,GAAWO,EAAWP,EAAUM,EAAS,EACzC,KAAK,GAAIe,GAAI,EAAO4G,EAAJ5G,EAAOA,IAAKkQ,EAAMlQ,GAAKrB,EAASqB,EAChD,OAAOkQ,IAIT9Q,EAAEsH,OAAS,SAASvG,EAAKD,GAKvB,MAJW,OAAPA,IACFA,EAAMC,EACNA,EAAM,GAEDA,EAAMF,KAAKgK,MAAMhK,KAAKyG,UAAYxG,EAAMC,EAAM,KAIvDf,EAAE+M,IAAMgE,KAAKhE,KAAO,WAClB,OAAO,GAAIgE,OAAOC,UAIpB,IAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAcxR,EAAEmO,OAAO8C,GAGvBQ,EAAgB,SAAS5M,GAC3B,GAAI6M,GAAU,SAASC,GACrB,MAAO9M,GAAI8M,IAGTvN,EAAS,MAAQpE,EAAEP,KAAKoF,GAAK+M,KAAK,KAAO,IACzCC,EAAaC,OAAO1N,GACpB2N,EAAgBD,OAAO1N,EAAQ,IACnC,OAAO,UAAS4N,GAEd,MADAA,GAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BH,EAAWI,KAAKD,GAAUA,EAAOE,QAAQH,EAAeL,GAAWM,GAG9EhS,GAAEmS,OAASV,EAAcR,GACzBjR,EAAEoS,SAAWX,EAAcD,GAI3BxR,EAAEwE,OAAS,SAASgG,EAAQzG,EAAUsO,GACpC,GAAI9O,GAAkB,MAAViH,MAAsB,GAAIA,EAAOzG,EAI7C,OAHIR,SAAe,KACjBA,EAAQ8O,GAEHrS,EAAEwB,WAAW+B,GAASA,EAAMtC,KAAKuJ,GAAUjH,EAKpD,IAAI+O,GAAY,CAChBtS,GAAEuS,SAAW,SAASC,GACpB,GAAIC,KAAOH,EAAY,EACvB,OAAOE,GAASA,EAASC,EAAKA,GAKhCzS,EAAE0S,kBACAC,SAAc,kBACdC,YAAc,mBACdT,OAAc,mBAMhB,IAAIU,GAAU,OAIVC,GACFxB,IAAU,IACVyB,KAAU,KACVC,KAAU,IACVC,KAAU,IACVC,SAAU,QACVC,SAAU,SAGRzB,EAAU,4BAEV0B,EAAa,SAASzB,GACxB,MAAO,KAAOmB,EAAQnB,GAOxB3R,GAAEqT,SAAW,SAASC,EAAMC,EAAUC,IAC/BD,GAAYC,IAAaD,EAAWC,GACzCD,EAAWvT,EAAE8O,YAAayE,EAAUvT,EAAE0S,iBAGtC,IAAI5O,GAAUgO,SACXyB,EAASpB,QAAUU,GAASzO,QAC5BmP,EAASX,aAAeC,GAASzO,QACjCmP,EAASZ,UAAYE,GAASzO,QAC/BwN,KAAK,KAAO,KAAM,KAGhBlS,EAAQ,EACR0E,EAAS,QACbkP,GAAKpB,QAAQpO,EAAS,SAAS6N,EAAOQ,EAAQS,EAAaD,EAAUc,GAanE,MAZArP,IAAUkP,EAAKtS,MAAMtB,EAAO+T,GAAQvB,QAAQR,EAAS0B,GACrD1T,EAAQ+T,EAAS9B,EAAMhS,OAEnBwS,EACF/N,GAAU,cAAgB+N,EAAS,iCAC1BS,EACTxO,GAAU,cAAgBwO,EAAc,uBAC/BD,IACTvO,GAAU,OAASuO,EAAW,YAIzBhB,IAETvN,GAAU,OAGLmP,EAASG,WAAUtP,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,2CACP,oDACAA,EAAS,eAEX,KACE,GAAIuP,GAAS,GAAIrR,UAASiR,EAASG,UAAY,MAAO,IAAKtP,GAC3D,MAAOwP,GAEP,KADAA,GAAExP,OAASA,EACLwP,EAGR,GAAIP,GAAW,SAASQ,GACtB,MAAOF,GAAO1S,KAAKe,KAAM6R,EAAM7T,IAI7B8T,EAAWP,EAASG,UAAY,KAGpC,OAFAL,GAASjP,OAAS,YAAc0P,EAAW,OAAS1P,EAAS,IAEtDiP,GAITrT,EAAE+T,MAAQ,SAASzU,GACjB,GAAI0U,GAAWhU,EAAEV,EAEjB,OADA0U,GAASC,QAAS,EACXD,EAUT,IAAIxP,GAAS,SAASwP,EAAU1U,GAC9B,MAAO0U,GAASC,OAASjU,EAAEV,GAAKyU,QAAUzU,EAI5CU,GAAEkU,MAAQ,SAAS5U,GACjBU,EAAE2E,KAAK3E,EAAEoO,UAAU9O,GAAM,SAAS4Q,GAChC,GAAI7M,GAAOrD,EAAEkQ,GAAQ5Q,EAAI4Q,EACzBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAIxJ,IAAQ1E,KAAKiB,SAEjB,OADAnB,GAAK6B,MAAM+C,EAAMzG,WACVuE,EAAOxC,KAAMqB,EAAKM,MAAM3D,EAAG0G,QAMxC1G,EAAEkU,MAAMlU,GAGRA,EAAE2E,MAAM,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,WAAY,SAASuL,GAChF,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAI5Q,GAAM0C,KAAKiB,QAGf,OAFAwD,GAAO9C,MAAMrE,EAAKW,WACJ,UAATiQ,GAA6B,WAATA,GAAqC,IAAf5Q,EAAIK,cAAqBL,GAAI,GACrEkF,EAAOxC,KAAM1C,MAKxBU,EAAE2E,MAAM,SAAU,OAAQ,SAAU,SAASuL,GAC3C,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,MAAO1L,GAAOxC,KAAMyE,EAAO9C,MAAM3B,KAAKiB,SAAUhD,eAKpDD,EAAEyB,UAAU8B,MAAQ,WAClB,MAAOvB,MAAKiB,UAKdjD,EAAEyB,UAAU0S,QAAUnU,EAAEyB,UAAU2S,OAASpU,EAAEyB,UAAU8B,MAEvDvD,EAAEyB,UAAUc,SAAW,WACrB,MAAO,GAAKP,KAAKiB,UAUG,kBAAXoR,SAAyBA,OAAOC,KACzCD,OAAO,gBAAkB,WACvB,MAAOrU,OAGXiB,KAAKe"} \ No newline at end of file diff --git a/node_modules/underscore/underscore.js b/node_modules/underscore/underscore.js new file mode 100644 index 00000000..b29332f9 --- /dev/null +++ b/node_modules/underscore/underscore.js @@ -0,0 +1,1548 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); diff --git a/node_modules/uuid/.eslintrc.json b/node_modules/uuid/.eslintrc.json new file mode 100644 index 00000000..734a8e14 --- /dev/null +++ b/node_modules/uuid/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "root": true, + "env": { + "browser": true, + "commonjs": true, + "node": true, + "mocha": true + }, + "extends": ["eslint:recommended"], + "rules": { + "array-bracket-spacing": ["warn", "never"], + "arrow-body-style": ["warn", "as-needed"], + "arrow-parens": ["warn", "as-needed"], + "arrow-spacing": "warn", + "brace-style": ["warn", "1tbs"], + "camelcase": "warn", + "comma-spacing": ["warn", {"after": true}], + "dot-notation": "warn", + "eqeqeq": ["warn", "smart"], + "indent": ["warn", 2, { + "SwitchCase": 1, + "FunctionDeclaration": {"parameters": 1}, + "MemberExpression": 1, + "CallExpression": {"arguments": 1} + }], + "key-spacing": ["warn", {"beforeColon": false, "afterColon": true, "mode": "minimum"}], + "keyword-spacing": "warn", + "no-console": "off", + "no-empty": "off", + "no-multi-spaces": "warn", + "no-redeclare": "off", + "no-restricted-globals": ["warn", "Promise"], + "no-trailing-spaces": "warn", + "no-undef": "error", + "no-unused-vars": ["warn", {"args": "none"}], + "one-var": ["warn", "never"], + "padded-blocks": ["warn", "never"], + "object-curly-spacing": ["warn", "never"], + "quotes": ["warn", "single"], + "react/prop-types": "off", + "react/jsx-no-bind": "off", + "semi": ["warn", "always"], + "space-before-blocks": ["warn", "always"], + "space-before-function-paren": ["warn", "never"], + "space-in-parens": ["warn", "never"] + } +} diff --git a/node_modules/uuid/AUTHORS b/node_modules/uuid/AUTHORS new file mode 100644 index 00000000..5a105230 --- /dev/null +++ b/node_modules/uuid/AUTHORS @@ -0,0 +1,5 @@ +Robert Kieffer +Christoph Tavan +AJ ONeal +Vincent Voyer +Roman Shtylman diff --git a/node_modules/uuid/CHANGELOG.md b/node_modules/uuid/CHANGELOG.md new file mode 100644 index 00000000..f29d3991 --- /dev/null +++ b/node_modules/uuid/CHANGELOG.md @@ -0,0 +1,110 @@ +# Change Log + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + + +## [3.3.2](https://github.com/kelektiv/node-uuid/compare/v3.3.1...v3.3.2) (2018-06-28) + + +### Bug Fixes + +* typo ([305d877](https://github.com/kelektiv/node-uuid/commit/305d877)) + + + + +## [3.3.1](https://github.com/kelektiv/node-uuid/compare/v3.3.0...v3.3.1) (2018-06-28) + + +### Bug Fixes + +* fix [#284](https://github.com/kelektiv/node-uuid/issues/284) by setting function name in try-catch ([f2a60f2](https://github.com/kelektiv/node-uuid/commit/f2a60f2)) + + + + +# [3.3.0](https://github.com/kelektiv/node-uuid/compare/v3.2.1...v3.3.0) (2018-06-22) + + +### Bug Fixes + +* assignment to readonly property to allow running in strict mode ([#270](https://github.com/kelektiv/node-uuid/issues/270)) ([d062fdc](https://github.com/kelektiv/node-uuid/commit/d062fdc)) +* fix [#229](https://github.com/kelektiv/node-uuid/issues/229) ([c9684d4](https://github.com/kelektiv/node-uuid/commit/c9684d4)) +* Get correct version of IE11 crypto ([#274](https://github.com/kelektiv/node-uuid/issues/274)) ([153d331](https://github.com/kelektiv/node-uuid/commit/153d331)) +* mem issue when generating uuid ([#267](https://github.com/kelektiv/node-uuid/issues/267)) ([c47702c](https://github.com/kelektiv/node-uuid/commit/c47702c)) + +### Features + +* enforce Conventional Commit style commit messages ([#282](https://github.com/kelektiv/node-uuid/issues/282)) ([cc9a182](https://github.com/kelektiv/node-uuid/commit/cc9a182)) + + + +## [3.2.1](https://github.com/kelektiv/node-uuid/compare/v3.2.0...v3.2.1) (2018-01-16) + + +### Bug Fixes + +* use msCrypto if available. Fixes [#241](https://github.com/kelektiv/node-uuid/issues/241) ([#247](https://github.com/kelektiv/node-uuid/issues/247)) ([1fef18b](https://github.com/kelektiv/node-uuid/commit/1fef18b)) + + + + +# [3.2.0](https://github.com/kelektiv/node-uuid/compare/v3.1.0...v3.2.0) (2018-01-16) + + +### Bug Fixes + +* remove mistakenly added typescript dependency, rollback version (standard-version will auto-increment) ([09fa824](https://github.com/kelektiv/node-uuid/commit/09fa824)) +* use msCrypto if available. Fixes [#241](https://github.com/kelektiv/node-uuid/issues/241) ([#247](https://github.com/kelektiv/node-uuid/issues/247)) ([1fef18b](https://github.com/kelektiv/node-uuid/commit/1fef18b)) + + +### Features + +* Add v3 Support ([#217](https://github.com/kelektiv/node-uuid/issues/217)) ([d94f726](https://github.com/kelektiv/node-uuid/commit/d94f726)) + + +# [3.1.0](https://github.com/kelektiv/node-uuid/compare/v3.1.0...v3.0.1) (2017-06-17) + +### Bug Fixes + +* (fix) Add .npmignore file to exclude test/ and other non-essential files from packing. (#183) +* Fix typo (#178) +* Simple typo fix (#165) + +### Features +* v5 support in CLI (#197) +* V5 support (#188) + + +# 3.0.1 (2016-11-28) + +* split uuid versions into separate files + + +# 3.0.0 (2016-11-17) + +* remove .parse and .unparse + + +# 2.0.0 + +* Removed uuid.BufferClass + + +# 1.4.0 + +* Improved module context detection +* Removed public RNG functions + + +# 1.3.2 + +* Improve tests and handling of v1() options (Issue #24) +* Expose RNG option to allow for perf testing with different generators + + +# 1.3.0 + +* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! +* Support for node.js crypto API +* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/uuid/LICENSE.md b/node_modules/uuid/LICENSE.md new file mode 100644 index 00000000..8c84e398 --- /dev/null +++ b/node_modules/uuid/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010-2016 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/uuid/README.md b/node_modules/uuid/README.md new file mode 100644 index 00000000..9cbe1ac1 --- /dev/null +++ b/node_modules/uuid/README.md @@ -0,0 +1,293 @@ + + +# uuid [![Build Status](https://secure.travis-ci.org/kelektiv/node-uuid.svg?branch=master)](http://travis-ci.org/kelektiv/node-uuid) # + +Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. + +Features: + +* Support for version 1, 3, 4 and 5 UUIDs +* Cross-platform +* Uses cryptographically-strong random number APIs (when available) +* Zero-dependency, small footprint (... but not [this small](https://gist.github.com/982883)) + +[**Deprecation warning**: The use of `require('uuid')` is deprecated and will not be +supported after version 3.x of this module. Instead, use `require('uuid/[v1|v3|v4|v5]')` as shown in the examples below.] + +## Quickstart - CommonJS (Recommended) + +```shell +npm install uuid +``` + +Then generate your uuid version of choice ... + +Version 1 (timestamp): + +```javascript +const uuidv1 = require('uuid/v1'); +uuidv1(); // ⇨ '45745c60-7b1a-11e8-9c9c-2d42b21b1a3e' + +``` + +Version 3 (namespace): + +```javascript +const uuidv3 = require('uuid/v3'); + +// ... using predefined DNS namespace (for domain names) +uuidv3('hello.example.com', uuidv3.DNS); // ⇨ '9125a8dc-52ee-365b-a5aa-81b0b3681cf6' + +// ... using predefined URL namespace (for, well, URLs) +uuidv3('http://example.com/hello', uuidv3.URL); // ⇨ 'c6235813-3ba4-3801-ae84-e0a6ebb7d138' + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv3('Hello, World!', MY_NAMESPACE); // ⇨ 'e8b5a51d-11c8-3310-a6ab-367563f20686' + +``` + +Version 4 (random): + +```javascript +const uuidv4 = require('uuid/v4'); +uuidv4(); // ⇨ '10ba038e-48da-487b-96e8-8d3b99b6d18a' + +``` + +Version 5 (namespace): + +```javascript +const uuidv5 = require('uuid/v5'); + +// ... using predefined DNS namespace (for domain names) +uuidv5('hello.example.com', uuidv5.DNS); // ⇨ 'fdda765f-fc57-5604-a269-52a7df8164ec' + +// ... using predefined URL namespace (for, well, URLs) +uuidv5('http://example.com/hello', uuidv5.URL); // ⇨ '3bbcee75-cecc-5b56-8031-b6641c1ed1f1' + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681' + +``` + +## Quickstart - Browser-ready Versions + +Browser-ready versions of this module are available via [wzrd.in](https://github.com/jfhbrook/wzrd.in). + +For version 1 uuids: + +```html + + +``` + +For version 3 uuids: + +```html + + +``` + +For version 4 uuids: + +```html + + +``` + +For version 5 uuids: + +```html + + +``` + +## API + +### Version 1 + +```javascript +const uuidv1 = require('uuid/v1'); + +// Incantations +uuidv1(); +uuidv1(options); +uuidv1(options, buffer, offset); +``` + +Generate and return a RFC4122 v1 (timestamp-based) UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. + * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. + * `msecs` - (Number) Time in milliseconds since unix Epoch. Default: The current time is used. + * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Note: The id is generated guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) + +Example: Generate string UUID with fully-specified options + +```javascript +const v1options = { + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}; +uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab' + +``` + +Example: In-place generation of two binary IDs + +```javascript +// Generate two ids in an array +const arr = new Array(); +uuidv1(null, arr, 0); // ⇨ [ 69, 117, 109, 208, 123, 26, 17, 232, 146, 52, 45, 66, 178, 27, 26, 62 ] +uuidv1(null, arr, 16); // ⇨ [ 69, 117, 109, 208, 123, 26, 17, 232, 146, 52, 45, 66, 178, 27, 26, 62, 69, 117, 109, 209, 123, 26, 17, 232, 146, 52, 45, 66, 178, 27, 26, 62 ] + +``` + +### Version 3 + +```javascript +const uuidv3 = require('uuid/v3'); + +// Incantations +uuidv3(name, namespace); +uuidv3(name, namespace, buffer); +uuidv3(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v3 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript +uuidv3('hello world', MY_NAMESPACE); // ⇨ '042ffd34-d989-321c-ad06-f60826172424' + +``` + +### Version 4 + +```javascript +const uuidv4 = require('uuid/v4') + +// Incantations +uuidv4(); +uuidv4(options); +uuidv4(options, buffer, offset); +``` + +Generate and return a RFC4122 v4 UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values + * `rng` - (Function) Random # generator function that returns an Array[16] of byte values (0-255) +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: Generate string UUID with predefined `random` values + +```javascript +const v4options = { + random: [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + ] +}; +uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836' + +``` + +Example: Generate two IDs in a single buffer + +```javascript +const buffer = new Array(); +uuidv4(null, buffer, 0); // ⇨ [ 54, 122, 218, 70, 45, 70, 65, 24, 171, 53, 95, 130, 83, 195, 242, 45 ] +uuidv4(null, buffer, 16); // ⇨ [ 54, 122, 218, 70, 45, 70, 65, 24, 171, 53, 95, 130, 83, 195, 242, 45, 108, 204, 255, 103, 171, 86, 76, 94, 178, 225, 188, 236, 150, 20, 151, 87 ] + +``` + +### Version 5 + +```javascript +const uuidv5 = require('uuid/v5'); + +// Incantations +uuidv5(name, namespace); +uuidv5(name, namespace, buffer); +uuidv5(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v5 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript +uuidv5('hello world', MY_NAMESPACE); // ⇨ '9f282611-e0fd-5650-8953-89c8e342da0b' + +``` + +## Command Line + +UUIDs can be generated from the command line with the `uuid` command. + +```shell +$ uuid +ddeb27fb-d9a0-4624-be4d-4615062daed4 + +$ uuid v1 +02d37060-d446-11e7-a9fa-7bdae751ebe1 +``` + +Type `uuid --help` for usage details + +## Testing + +```shell +npm test +``` + +---- +Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd) \ No newline at end of file diff --git a/node_modules/uuid/README_js.md b/node_modules/uuid/README_js.md new file mode 100644 index 00000000..f34453be --- /dev/null +++ b/node_modules/uuid/README_js.md @@ -0,0 +1,280 @@ +```javascript --hide +runmd.onRequire = path => path.replace(/^uuid/, './'); +``` + +# uuid [![Build Status](https://secure.travis-ci.org/kelektiv/node-uuid.svg?branch=master)](http://travis-ci.org/kelektiv/node-uuid) # + +Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. + +Features: + +* Support for version 1, 3, 4 and 5 UUIDs +* Cross-platform +* Uses cryptographically-strong random number APIs (when available) +* Zero-dependency, small footprint (... but not [this small](https://gist.github.com/982883)) + +[**Deprecation warning**: The use of `require('uuid')` is deprecated and will not be +supported after version 3.x of this module. Instead, use `require('uuid/[v1|v3|v4|v5]')` as shown in the examples below.] + +## Quickstart - CommonJS (Recommended) + +```shell +npm install uuid +``` + +Then generate your uuid version of choice ... + +Version 1 (timestamp): + +```javascript --run v1 +const uuidv1 = require('uuid/v1'); +uuidv1(); // RESULT +``` + +Version 3 (namespace): + +```javascript --run v3 +const uuidv3 = require('uuid/v3'); + +// ... using predefined DNS namespace (for domain names) +uuidv3('hello.example.com', uuidv3.DNS); // RESULT + +// ... using predefined URL namespace (for, well, URLs) +uuidv3('http://example.com/hello', uuidv3.URL); // RESULT + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv3('Hello, World!', MY_NAMESPACE); // RESULT +``` + +Version 4 (random): + +```javascript --run v4 +const uuidv4 = require('uuid/v4'); +uuidv4(); // RESULT +``` + +Version 5 (namespace): + +```javascript --run v5 +const uuidv5 = require('uuid/v5'); + +// ... using predefined DNS namespace (for domain names) +uuidv5('hello.example.com', uuidv5.DNS); // RESULT + +// ... using predefined URL namespace (for, well, URLs) +uuidv5('http://example.com/hello', uuidv5.URL); // RESULT + +// ... using a custom namespace +// +// Note: Custom namespaces should be a UUID string specific to your application! +// E.g. the one here was generated using this modules `uuid` CLI. +const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341'; +uuidv5('Hello, World!', MY_NAMESPACE); // RESULT +``` + +## Quickstart - Browser-ready Versions + +Browser-ready versions of this module are available via [wzrd.in](https://github.com/jfhbrook/wzrd.in). + +For version 1 uuids: + +```html + + +``` + +For version 3 uuids: + +```html + + +``` + +For version 4 uuids: + +```html + + +``` + +For version 5 uuids: + +```html + + +``` + +## API + +### Version 1 + +```javascript +const uuidv1 = require('uuid/v1'); + +// Incantations +uuidv1(); +uuidv1(options); +uuidv1(options, buffer, offset); +``` + +Generate and return a RFC4122 v1 (timestamp-based) UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. + * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. + * `msecs` - (Number) Time in milliseconds since unix Epoch. Default: The current time is used. + * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Note: The id is generated guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) + +Example: Generate string UUID with fully-specified options + +```javascript --run v1 +const v1options = { + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}; +uuidv1(v1options); // RESULT +``` + +Example: In-place generation of two binary IDs + +```javascript --run v1 +// Generate two ids in an array +const arr = new Array(); +uuidv1(null, arr, 0); // RESULT +uuidv1(null, arr, 16); // RESULT +``` + +### Version 3 + +```javascript +const uuidv3 = require('uuid/v3'); + +// Incantations +uuidv3(name, namespace); +uuidv3(name, namespace, buffer); +uuidv3(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v3 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript --run v3 +uuidv3('hello world', MY_NAMESPACE); // RESULT +``` + +### Version 4 + +```javascript +const uuidv4 = require('uuid/v4') + +// Incantations +uuidv4(); +uuidv4(options); +uuidv4(options, buffer, offset); +``` + +Generate and return a RFC4122 v4 UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values + * `rng` - (Function) Random # generator function that returns an Array[16] of byte values (0-255) +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: Generate string UUID with predefined `random` values + +```javascript --run v4 +const v4options = { + random: [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + ] +}; +uuidv4(v4options); // RESULT +``` + +Example: Generate two IDs in a single buffer + +```javascript --run v4 +const buffer = new Array(); +uuidv4(null, buffer, 0); // RESULT +uuidv4(null, buffer, 16); // RESULT +``` + +### Version 5 + +```javascript +const uuidv5 = require('uuid/v5'); + +// Incantations +uuidv5(name, namespace); +uuidv5(name, namespace, buffer); +uuidv5(name, namespace, buffer, offset); +``` + +Generate and return a RFC4122 v5 UUID. + +* `name` - (String | Array[]) "name" to create UUID with +* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0 + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: + +```javascript --run v5 +uuidv5('hello world', MY_NAMESPACE); // RESULT +``` + +## Command Line + +UUIDs can be generated from the command line with the `uuid` command. + +```shell +$ uuid +ddeb27fb-d9a0-4624-be4d-4615062daed4 + +$ uuid v1 +02d37060-d446-11e7-a9fa-7bdae751ebe1 +``` + +Type `uuid --help` for usage details + +## Testing + +```shell +npm test +``` diff --git a/node_modules/uuid/bin/uuid b/node_modules/uuid/bin/uuid new file mode 100755 index 00000000..502626e6 --- /dev/null +++ b/node_modules/uuid/bin/uuid @@ -0,0 +1,65 @@ +#!/usr/bin/env node +var assert = require('assert'); + +function usage() { + console.log('Usage:'); + console.log(' uuid'); + console.log(' uuid v1'); + console.log(' uuid v3 '); + console.log(' uuid v4'); + console.log(' uuid v5 '); + console.log(' uuid --help'); + console.log('\nNote: may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122'); +} + +var args = process.argv.slice(2); + +if (args.indexOf('--help') >= 0) { + usage(); + process.exit(0); +} +var version = args.shift() || 'v4'; + +switch (version) { + case 'v1': + var uuidV1 = require('../v1'); + console.log(uuidV1()); + break; + + case 'v3': + var uuidV3 = require('../v3'); + + var name = args.shift(); + var namespace = args.shift(); + assert(name != null, 'v3 name not specified'); + assert(namespace != null, 'v3 namespace not specified'); + + if (namespace == 'URL') namespace = uuidV3.URL; + if (namespace == 'DNS') namespace = uuidV3.DNS; + + console.log(uuidV3(name, namespace)); + break; + + case 'v4': + var uuidV4 = require('../v4'); + console.log(uuidV4()); + break; + + case 'v5': + var uuidV5 = require('../v5'); + + var name = args.shift(); + var namespace = args.shift(); + assert(name != null, 'v5 name not specified'); + assert(namespace != null, 'v5 namespace not specified'); + + if (namespace == 'URL') namespace = uuidV5.URL; + if (namespace == 'DNS') namespace = uuidV5.DNS; + + console.log(uuidV5(name, namespace)); + break; + + default: + usage(); + process.exit(1); +} diff --git a/node_modules/uuid/index.js b/node_modules/uuid/index.js new file mode 100644 index 00000000..e96791ab --- /dev/null +++ b/node_modules/uuid/index.js @@ -0,0 +1,8 @@ +var v1 = require('./v1'); +var v4 = require('./v4'); + +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; + +module.exports = uuid; diff --git a/node_modules/uuid/lib/bytesToUuid.js b/node_modules/uuid/lib/bytesToUuid.js new file mode 100644 index 00000000..847c4828 --- /dev/null +++ b/node_modules/uuid/lib/bytesToUuid.js @@ -0,0 +1,24 @@ +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]]]).join(''); +} + +module.exports = bytesToUuid; diff --git a/node_modules/uuid/lib/md5-browser.js b/node_modules/uuid/lib/md5-browser.js new file mode 100644 index 00000000..9b3b6c7e --- /dev/null +++ b/node_modules/uuid/lib/md5-browser.js @@ -0,0 +1,216 @@ +/* + * Browser-compatible JavaScript MD5 + * + * Modification of JavaScript MD5 + * https://github.com/blueimp/JavaScript-MD5 + * + * Copyright 2011, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + * + * Based on + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009 + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +'use strict'; + +function md5(bytes) { + if (typeof(bytes) == 'string') { + var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + bytes = new Array(msg.length); + for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i); + } + + return md5ToHexEncodedArray( + wordsToMd5( + bytesToWords(bytes) + , bytes.length * 8) + ); +} + + +/* +* Convert an array of little-endian words to an array of bytes +*/ +function md5ToHexEncodedArray(input) { + var i; + var x; + var output = []; + var length32 = input.length * 32; + var hexTab = '0123456789abcdef'; + var hex; + + for (i = 0; i < length32; i += 8) { + x = (input[i >> 5] >>> (i % 32)) & 0xFF; + + hex = parseInt(hexTab.charAt((x >>> 4) & 0x0F) + hexTab.charAt(x & 0x0F), 16); + + output.push(hex); + } + return output; +} + +/* +* Calculate the MD5 of an array of little-endian words, and a bit length. +*/ +function wordsToMd5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = md5ff(a, b, c, d, x[i], 7, -680876936); + d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5gg(b, c, d, a, x[i], 20, -373897302); + a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5hh(d, a, b, c, x[i], 11, -358537222); + c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5ii(a, b, c, d, x[i], 6, -198630844); + d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safeAdd(a, olda); + b = safeAdd(b, oldb); + c = safeAdd(c, oldc); + d = safeAdd(d, oldd); + } + return [a, b, c, d]; +} + +/* +* Convert an array bytes to an array of little-endian words +* Characters >255 have their high-byte silently ignored. +*/ +function bytesToWords(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input[(i / 8)] & 0xFF) << (i % 32); + } + + return output; +} + +/* +* Add integers, wrapping at 2^32. This uses 16-bit operations internally +* to work around bugs in some JS interpreters. +*/ +function safeAdd(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* +* Bitwise rotate a 32-bit number to the left. +*/ +function bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* +* These functions implement the four basic operations the algorithm uses. +*/ +function md5cmn(q, a, b, x, s, t) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b); +} +function md5ff(a, b, c, d, x, s, t) { + return md5cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5gg(a, b, c, d, x, s, t) { + return md5cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5hh(a, b, c, d, x, s, t) { + return md5cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5ii(a, b, c, d, x, s, t) { + return md5cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +module.exports = md5; diff --git a/node_modules/uuid/lib/md5.js b/node_modules/uuid/lib/md5.js new file mode 100644 index 00000000..7044b872 --- /dev/null +++ b/node_modules/uuid/lib/md5.js @@ -0,0 +1,25 @@ +'use strict'; + +var crypto = require('crypto'); + +function md5(bytes) { + if (typeof Buffer.from === 'function') { + // Modern Buffer API + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + } else { + // Pre-v4 Buffer API + if (Array.isArray(bytes)) { + bytes = new Buffer(bytes); + } else if (typeof bytes === 'string') { + bytes = new Buffer(bytes, 'utf8'); + } + } + + return crypto.createHash('md5').update(bytes).digest(); +} + +module.exports = md5; diff --git a/node_modules/uuid/lib/rng-browser.js b/node_modules/uuid/lib/rng-browser.js new file mode 100644 index 00000000..6361fb81 --- /dev/null +++ b/node_modules/uuid/lib/rng-browser.js @@ -0,0 +1,34 @@ +// Unique ID creation requires a high quality random # generator. In the +// browser this is a little complicated due to unknown quality of Math.random() +// and inconsistent support for the `crypto` API. We do the best we can via +// feature-detection + +// getRandomValues needs to be invoked in a context where "this" is a Crypto +// implementation. Also, find the complete implementation of crypto on IE11. +var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) || + (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto)); + +if (getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef + + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; +} else { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); + + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; +} diff --git a/node_modules/uuid/lib/rng.js b/node_modules/uuid/lib/rng.js new file mode 100644 index 00000000..58f0dc9c --- /dev/null +++ b/node_modules/uuid/lib/rng.js @@ -0,0 +1,8 @@ +// Unique ID creation requires a high quality random # generator. In node.js +// this is pretty straight-forward - we use the crypto API. + +var crypto = require('crypto'); + +module.exports = function nodeRNG() { + return crypto.randomBytes(16); +}; diff --git a/node_modules/uuid/lib/sha1-browser.js b/node_modules/uuid/lib/sha1-browser.js new file mode 100644 index 00000000..5758ed75 --- /dev/null +++ b/node_modules/uuid/lib/sha1-browser.js @@ -0,0 +1,89 @@ +// Adapted from Chris Veness' SHA1 code at +// http://www.movable-type.co.uk/scripts/sha1.html +'use strict'; + +function f(s, x, y, z) { + switch (s) { + case 0: return (x & y) ^ (~x & z); + case 1: return x ^ y ^ z; + case 2: return (x & y) ^ (x & z) ^ (y & z); + case 3: return x ^ y ^ z; + } +} + +function ROTL(x, n) { + return (x << n) | (x>>> (32 - n)); +} + +function sha1(bytes) { + var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6]; + var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; + + if (typeof(bytes) == 'string') { + var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape + bytes = new Array(msg.length); + for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i); + } + + bytes.push(0x80); + + var l = bytes.length/4 + 2; + var N = Math.ceil(l/16); + var M = new Array(N); + + for (var i=0; i>> 0; + e = d; + d = c; + c = ROTL(b, 30) >>> 0; + b = a; + a = T; + } + + H[0] = (H[0] + a) >>> 0; + H[1] = (H[1] + b) >>> 0; + H[2] = (H[2] + c) >>> 0; + H[3] = (H[3] + d) >>> 0; + H[4] = (H[4] + e) >>> 0; + } + + return [ + H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, + H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, + H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, + H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, + H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff + ]; +} + +module.exports = sha1; diff --git a/node_modules/uuid/lib/sha1.js b/node_modules/uuid/lib/sha1.js new file mode 100644 index 00000000..0b54b250 --- /dev/null +++ b/node_modules/uuid/lib/sha1.js @@ -0,0 +1,25 @@ +'use strict'; + +var crypto = require('crypto'); + +function sha1(bytes) { + if (typeof Buffer.from === 'function') { + // Modern Buffer API + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + } else { + // Pre-v4 Buffer API + if (Array.isArray(bytes)) { + bytes = new Buffer(bytes); + } else if (typeof bytes === 'string') { + bytes = new Buffer(bytes, 'utf8'); + } + } + + return crypto.createHash('sha1').update(bytes).digest(); +} + +module.exports = sha1; diff --git a/node_modules/uuid/lib/v35.js b/node_modules/uuid/lib/v35.js new file mode 100644 index 00000000..8b066cc5 --- /dev/null +++ b/node_modules/uuid/lib/v35.js @@ -0,0 +1,57 @@ +var bytesToUuid = require('./bytesToUuid'); + +function uuidToBytes(uuid) { + // Note: We assume we're being passed a valid uuid string + var bytes = []; + uuid.replace(/[a-fA-F0-9]{2}/g, function(hex) { + bytes.push(parseInt(hex, 16)); + }); + + return bytes; +} + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + var bytes = new Array(str.length); + for (var i = 0; i < str.length; i++) { + bytes[i] = str.charCodeAt(i); + } + return bytes; +} + +module.exports = function(name, version, hashfunc) { + var generateUUID = function(value, namespace, buf, offset) { + var off = buf && offset || 0; + + if (typeof(value) == 'string') value = stringToBytes(value); + if (typeof(namespace) == 'string') namespace = uuidToBytes(namespace); + + if (!Array.isArray(value)) throw TypeError('value must be an array of bytes'); + if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); + + // Per 4.3 + var bytes = hashfunc(namespace.concat(value)); + bytes[6] = (bytes[6] & 0x0f) | version; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + + if (buf) { + for (var idx = 0; idx < 16; ++idx) { + buf[off+idx] = bytes[idx]; + } + } + + return buf || bytesToUuid(bytes); + }; + + // Function#name is not settable on some platforms (#270) + try { + generateUUID.name = name; + } catch (err) { + } + + // Pre-defined namespaces, per Appendix C + generateUUID.DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; + generateUUID.URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; + + return generateUUID; +}; diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json new file mode 100644 index 00000000..982c3328 --- /dev/null +++ b/node_modules/uuid/package.json @@ -0,0 +1,99 @@ +{ + "_args": [ + [ + "uuid@3.3.2", + "/home/rsora/code/projects/arduino/actions/setup-protoc" + ] + ], + "_from": "uuid@3.3.2", + "_id": "uuid@3.3.2", + "_inBundle": false, + "_integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "_location": "/uuid", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "uuid@3.3.2", + "name": "uuid", + "escapedName": "uuid", + "rawSpec": "3.3.2", + "saveSpec": null, + "fetchSpec": "3.3.2" + }, + "_requiredBy": [ + "/@actions/tool-cache", + "/request" + ], + "_resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "_spec": "3.3.2", + "_where": "/home/rsora/code/projects/arduino/actions/setup-protoc", + "bin": { + "uuid": "./bin/uuid" + }, + "browser": { + "./lib/rng.js": "./lib/rng-browser.js", + "./lib/sha1.js": "./lib/sha1-browser.js", + "./lib/md5.js": "./lib/md5-browser.js" + }, + "bugs": { + "url": "https://github.com/kelektiv/node-uuid/issues" + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "contributors": [ + { + "name": "Robert Kieffer", + "email": "robert@broofa.com" + }, + { + "name": "Christoph Tavan", + "email": "dev@tavan.de" + }, + { + "name": "AJ ONeal", + "email": "coolaj86@gmail.com" + }, + { + "name": "Vincent Voyer", + "email": "vincent@zeroload.net" + }, + { + "name": "Roman Shtylman", + "email": "shtylman@gmail.com" + } + ], + "description": "RFC4122 (v1, v4, and v5) UUIDs", + "devDependencies": { + "@commitlint/cli": "7.0.0", + "@commitlint/config-conventional": "7.0.1", + "eslint": "4.19.1", + "husky": "0.14.3", + "mocha": "5.2.0", + "runmd": "1.0.1", + "standard-version": "4.4.0" + }, + "homepage": "https://github.com/kelektiv/node-uuid#readme", + "keywords": [ + "uuid", + "guid", + "rfc4122" + ], + "license": "MIT", + "name": "uuid", + "repository": { + "type": "git", + "url": "git+https://github.com/kelektiv/node-uuid.git" + }, + "scripts": { + "commitmsg": "commitlint -E GIT_PARAMS", + "md": "runmd --watch --output=README.md README_js.md", + "prepare": "runmd --output=README.md README_js.md", + "release": "standard-version", + "test": "mocha test/test.js" + }, + "version": "3.3.2" +} diff --git a/node_modules/uuid/v1.js b/node_modules/uuid/v1.js new file mode 100644 index 00000000..d84c0f45 --- /dev/null +++ b/node_modules/uuid/v1.js @@ -0,0 +1,109 @@ +var rng = require('./lib/rng'); +var bytesToUuid = require('./lib/bytesToUuid'); + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +var _nodeId; +var _clockseq; + +// Previous uuid creation time +var _lastMSecs = 0; +var _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + if (node == null || clockseq == null) { + var seedBytes = rng(); + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [ + seedBytes[0] | 0x01, + seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5] + ]; + } + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ? buf : bytesToUuid(b); +} + +module.exports = v1; diff --git a/node_modules/uuid/v3.js b/node_modules/uuid/v3.js new file mode 100644 index 00000000..ee7e14c0 --- /dev/null +++ b/node_modules/uuid/v3.js @@ -0,0 +1,4 @@ +var v35 = require('./lib/v35.js'); +var md5 = require('./lib/md5'); + +module.exports = v35('v3', 0x30, md5); \ No newline at end of file diff --git a/node_modules/uuid/v4.js b/node_modules/uuid/v4.js new file mode 100644 index 00000000..1f07be1c --- /dev/null +++ b/node_modules/uuid/v4.js @@ -0,0 +1,29 @@ +var rng = require('./lib/rng'); +var bytesToUuid = require('./lib/bytesToUuid'); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; diff --git a/node_modules/uuid/v5.js b/node_modules/uuid/v5.js new file mode 100644 index 00000000..4945baf3 --- /dev/null +++ b/node_modules/uuid/v5.js @@ -0,0 +1,3 @@ +var v35 = require('./lib/v35.js'); +var sha1 = require('./lib/sha1'); +module.exports = v35('v5', 0x50, sha1); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..c0c123ea --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5423 @@ +{ + "name": "setup-protoc-action", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@actions/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.0.0.tgz", + "integrity": "sha512-aMIlkx96XH4E/2YZtEOeyrYQfhlas9jIRkfGPqMwXD095Rdkzo4lB6ZmbxPQSzD+e1M+Xsm98ZhuSMYGv/AlqA==" + }, + "@actions/exec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.0.tgz", + "integrity": "sha512-nquH0+XKng+Ll7rZfCojN7NWSbnGh+ltwUJhzfbLkmOJgxocGX2/yXcZLMyT9fa7+tByEow/NSTrBExNlEj9fw==" + }, + "@actions/io": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.0.tgz", + "integrity": "sha512-ezrJSRdqtXtdx1WXlfYL85+40F7gB39jCK9P0jZVODW3W6xUYmu6ZOEc/UmmElUwhRyDRm1R4yNZu1Joq2kuQg==" + }, + "@actions/tool-cache": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.0.tgz", + "integrity": "sha512-Oe/R1Gxv0G699OUL9ypxk9cTwHf1uXHhpcK7kpZt8d/Sbw915ktMkfxXt9+awOfLDwyl54sLi86KGCuSvnRuIQ==", + "requires": { + "@actions/core": "^1.0.0", + "@actions/exec": "^1.0.0", + "@actions/io": "^1.0.0", + "semver": "^6.1.0", + "typed-rest-client": "^1.4.0", + "uuid": "^3.3.2" + } + }, + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", + "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helpers": "^7.5.5", + "@babel/parser": "^7.5.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", + "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", + "dev": true, + "requires": { + "@babel/types": "^7.5.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helpers": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", + "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", + "dev": true, + "requires": { + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", + "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", + "dev": true + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/traverse": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", + "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.5.5", + "@babel/types": "^7.5.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@jest/console": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "dev": true, + "requires": { + "@jest/source-map": "^24.3.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/core": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz", + "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.8.0", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve-dependencies": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "jest-watcher": "^24.8.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "strip-ansi": "^5.0.0" + } + }, + "@jest/environment": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", + "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0" + } + }, + "@jest/fake-timers": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", + "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0" + } + }, + "@jest/reporters": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz", + "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.1.1", + "jest-haste-map": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.2.1", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", + "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", + "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.8.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz", + "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==", + "dev": true, + "requires": { + "@jest/test-result": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0" + } + }, + "@jest/transform": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", + "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.8.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-util": "^24.8.0", + "micromatch": "^3.1.10", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^12.0.9" + } + }, + "@types/babel__core": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz", + "integrity": "sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", + "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", + "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.16", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.16.tgz", + "integrity": "sha512-JrAiyV+PPGKZzw6uxbI761cHZ0G7QMOHXPhtSpcl08rZH6CswXaaejckn3goFKmF7M3nzEoJ0lwYCbqLMmjziQ==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "dev": true + }, + "@types/node": { + "version": "12.6.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", + "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==", + "dev": true + }, + "@types/semver": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.0.1.tgz", + "integrity": "sha512-ffCdcrEE5h8DqVxinQjo+2d1q+FV5z7iNtPofw3JsrltSoSVlOGaW0rY8XxtO9XukdTn8TaCGWmk2VFGhI70mg==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", + "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", + "dev": true + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", + "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz", + "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==", + "dev": true, + "requires": { + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.6.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.6.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", + "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff-sequences": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", + "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "exec-sh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", + "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expect": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", + "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-regex-util": "^24.3.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.8.0" + }, + "dependencies": { + "jest-cli": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz", + "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==", + "dev": true, + "requires": { + "@jest/core": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^12.0.2" + } + } + } + }, + "jest-changed-files": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz", + "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-circus": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-24.8.0.tgz", + "integrity": "sha512-2QASG3QuDdk0SMP2O73D8u3/lc/A/E2G7q23v5WhbUR+hCGzWZXwRMKif18f11dSLfL1wcrMbwE4IorvV0DRVw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.8.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0", + "stack-utils": "^1.0.1", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", + "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.8.0", + "@jest/types": "^24.8.0", + "babel-jest": "^24.8.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.8.0", + "jest-environment-node": "^24.8.0", + "jest-get-type": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.8.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", + "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.3.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-docblock": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", + "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", + "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-environment-jsdom": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", + "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", + "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0" + } + }, + "jest-get-type": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", + "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", + "dev": true + }, + "jest-haste-map": { + "version": "24.8.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.1.tgz", + "integrity": "sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.4.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", + "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.8.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", + "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", + "dev": true, + "requires": { + "pretty-format": "^24.8.0" + } + }, + "jest-matcher-utils": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", + "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.8.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-message-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", + "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "jest-mock": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", + "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", + "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", + "dev": true + }, + "jest-resolve": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz", + "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz", + "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.8.0" + } + }, + "jest-runner": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", + "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-leak-detector": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", + "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/yargs": "^12.0.2", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^12.0.2" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "jest-serializer": { + "version": "24.4.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", + "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==", + "dev": true + }, + "jest-snapshot": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", + "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "expect": "^24.8.0", + "jest-diff": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.8.0", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "jest-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", + "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", + "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "camelcase": "^5.0.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "leven": "^2.1.0", + "pretty-format": "^24.8.0" + } + }, + "jest-watcher": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz", + "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/yargs": "^12.0.9", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.8.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nock": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz", + "integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==", + "dev": true, + "requires": { + "chai": "^4.1.2", + "debug": "^4.1.0", + "deep-equal": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.5", + "mkdirp": "^0.5.0", + "propagate": "^1.0.0", + "qs": "^6.5.1", + "semver": "^5.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", + "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", + "dev": true + }, + "pretty-format": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", + "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "prompts": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.1.0.tgz", + "integrity": "sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==", + "dev": true, + "requires": { + "kleur": "^3.0.2", + "sisteransi": "^1.0.0" + } + }, + "propagate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", + "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", + "dev": true + }, + "psl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "dev": true + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "sisteransi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.2.tgz", + "integrity": "sha512-ZcYcZcT69nSLAR2oLN2JwNmLkJEKGooFMCdvOkFrToUt/WfcRWqhIg4P4KwY4dmLbuyXIx4o4YmPsvMRJYJd/w==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "ts-jest": { + "version": "24.0.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.2.tgz", + "integrity": "sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "tunnel": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", + "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "typed-rest-client": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz", + "integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==", + "requires": { + "tunnel": "0.0.4", + "underscore": "1.8.3" + } + }, + "typescript": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", + "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", + "dev": true + }, + "uglify-js": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..2848e61b --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "setup-protoc-action", + "version": "0.0.0", + "private": true, + "description": "Setup protoc action", + "main": "lib/main.js", + "scripts": { + "build": "tsc", + "format": "prettier --write **/*.ts", + "format-check": "prettier --check **/*.ts", + "test": "jest" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Arduino/actions.git" + }, + "keywords": [ + "actions", + "protobuf", + "protoc", + "setup" + ], + "author": "Arduino", + "license": "MIT", + "dependencies": { + "@actions/core": "^1.0.0", + "@actions/tool-cache": "^1.1.0", + "@actions/exec": "^1.0.0", + "semver": "^6.1.1" + }, + "devDependencies": { + "@actions/io": "^1.0.0", + "@types/jest": "^24.0.13", + "@types/node": "^12.0.4", + "@types/semver": "^6.0.0", + "jest": "^24.8.0", + "jest-circus": "^24.7.1", + "prettier": "^1.17.1", + "nock": "^10.0.6", + "ts-jest": "^24.0.2", + "typescript": "^3.5.1" + } +} diff --git a/src/installer.ts b/src/installer.ts new file mode 100644 index 00000000..26866a0a --- /dev/null +++ b/src/installer.ts @@ -0,0 +1,224 @@ +// Load tempDirectory before it gets wiped by tool-cache +let tempDirectory = process.env["RUNNER_TEMP"] || ""; + +import * as os from "os"; +import * as path from "path"; +import * as util from "util"; +import * as restm from "typed-rest-client/RestClient"; +import * as semver from "semver"; + +if (!tempDirectory) { + let baseLocation; + if (process.platform === "win32") { + // On windows use the USERPROFILE env variable + baseLocation = process.env["USERPROFILE"] || "C:\\"; + } else { + if (process.platform === "darwin") { + baseLocation = "/Users"; + } else { + baseLocation = "/home"; + } + } + tempDirectory = path.join(baseLocation, "actions", "temp"); +} + +import * as core from "@actions/core"; +import * as tc from "@actions/tool-cache"; +import * as exc from "@actions/exec"; +import * as io from "@actions/io"; + +let osPlat: string = os.platform(); +let osArch: string = os.arch(); + +interface IProtocRelease { + tag_name: string; + prerelease: boolean; +} + +export async function getProtoc(version: string, includePreReleases: boolean) { + // resolve the version number + const targetVersion = await computeVersion(version, includePreReleases); + if (targetVersion) { + version = targetVersion; + } + + // look if the binary is cached + let toolPath: string; + toolPath = tc.find("protoc", version); + + // if not: download, extract and cache + if (!toolPath) { + toolPath = await downloadRelease(version); + core.debug("Protoc cached under " + toolPath); + } + + // add the bin folder to the PATH + toolPath = path.join(toolPath, "bin"); + core.addPath(toolPath); + + // make available Go-specific compiler to the PATH, + // this is needed because of https://github.com/actions/setup-go/issues/14 + + const goBin: string = await io.which("go", false); + if (goBin) { + // Go is installed, add $GOPATH/bin to the $PATH because setup-go + // doesn't do it for us. + let stdOut = ""; + let options = { + listeners: { + stdout: (data: Buffer) => { + stdOut += data.toString(); + } + } + }; + + await exc.exec("go", ["env", "GOPATH"], options); + const goPath: string = stdOut.trim(); + core.debug("GOPATH: " + goPath); + + core.addPath(path.join(goPath, "bin")); + } +} + +async function downloadRelease(version: string): Promise { + // Download + let fileName: string = getFileName(version); + let downloadUrl: string = util.format( + "https://github.com/protocolbuffers/protobuf/releases/download/%s/%s", + version, + fileName + ); + let downloadPath: string | null = null; + try { + downloadPath = await tc.downloadTool(downloadUrl); + } catch (error) { + core.debug(error); + throw `Failed to download version ${version}: ${error}`; + } + + // Extract + let extPath: string = await tc.extractZip(downloadPath); + + // Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded + return await tc.cacheDir(extPath, "protoc", version); +} + +function getFileName(version: string): string { + // to compose the file name, strip the leading `v` char + if (version.startsWith("v")) { + version = version.slice(1, version.length); + } + + // The name of the Windows package has a different naming pattern + if (osPlat == "win32") { + const arch: string = osArch == "x64" ? "64" : "32"; + return util.format("protoc-%s-win%s.zip", version, arch); + } + + const arch: string = osArch == "x64" ? "x86_64" : "x86_32"; + + if (osPlat == "darwin") { + return util.format("protoc-%s-osx-%s.zip", version, arch); + } + + return util.format("protoc-%s-linux-%s.zip", version, arch); +} + +// Retrieve a list of versions scraping tags from the Github API +async function fetchVersions(includePreReleases: boolean): Promise { + let rest: restm.RestClient = new restm.RestClient("setup-protoc"); + let tags: IProtocRelease[] = + (await rest.get( + "https://api.github.com/repos/protocolbuffers/protobuf/releases" + )).result || []; + + return tags + .filter(tag => tag.tag_name.match(/v\d+\.[\w\.]+/g)) + .filter(tag => includePrerelease(tag.prerelease, includePreReleases)) + .map(tag => tag.tag_name.replace("v", "")); +} + +// Compute an actual version starting from the `version` configuration param. +async function computeVersion( + version: string, + includePreReleases: boolean +): Promise { + // strip leading `v` char (will be re-added later) + if (version.startsWith("v")) { + version = version.slice(1, version.length); + } + + // strip trailing .x chars + if (version.endsWith(".x")) { + version = version.slice(0, version.length - 2); + } + + const allVersions = await fetchVersions(includePreReleases); + const validVersions = allVersions.filter(v => semver.valid(v)); + const possibleVersions = validVersions.filter(v => v.startsWith(version)); + + const versionMap = new Map(); + possibleVersions.forEach(v => versionMap.set(normalizeVersion(v), v)); + + const versions = Array.from(versionMap.keys()) + .sort(semver.rcompare) + .map(v => versionMap.get(v)); + + core.debug(`evaluating ${versions.length} versions`); + + if (versions.length === 0) { + throw new Error("unable to get latest version"); + } + + core.debug(`matched: ${versions[0]}`); + + return "v" + versions[0]; +} + +// Make partial versions semver compliant. +function normalizeVersion(version: string): string { + const preStrings = ["beta", "rc", "preview"]; + + const versionPart = version.split("."); + // drop invalid + if (versionPart[1] == null) { + //append minor and patch version if not available + // e.g. 2 -> 2.0.0 + return version.concat(".0.0"); + } else { + // handle beta and rc + // e.g. 1.10beta1 -? 1.10.0-beta1, 1.10rc1 -> 1.10.0-rc1 + if (preStrings.some(el => versionPart[1].includes(el))) { + versionPart[1] = versionPart[1] + .replace("beta", ".0-beta") + .replace("rc", ".0-rc") + .replace("preview", ".0-preview"); + return versionPart.join("."); + } + } + + if (versionPart[2] == null) { + //append patch version if not available + // e.g. 2.1 -> 2.1.0 + return version.concat(".0"); + } else { + // handle beta and rc + // e.g. 1.8.5beta1 -> 1.8.5-beta1, 1.8.5rc1 -> 1.8.5-rc1 + if (preStrings.some(el => versionPart[2].includes(el))) { + versionPart[2] = versionPart[2] + .replace("beta", "-beta") + .replace("rc", "-rc") + .replace("preview", "-preview"); + return versionPart.join("."); + } + } + + return version; +} + +function includePrerelease( + isPrerelease: boolean, + includePrereleases: boolean +): boolean { + return includePrereleases || !isPrerelease; +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 00000000..8b9d5903 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,24 @@ +import * as core from "@actions/core"; +import * as installer from "./installer"; + +async function run() { + try { + let version = core.getInput("version"); + let includePreReleases = convertToBoolean( + core.getInput("include-pre-releases") + ); + await installer.getProtoc(version, includePreReleases); + } catch (error) { + core.setFailed(error.message); + } +} + +run(); + +function convertToBoolean(input: string): boolean { + try { + return JSON.parse(input); + } catch (e) { + return false; + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..960dc9fa --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,63 @@ +{ + "compilerOptions": { + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./lib", /* Redirect output structure to the directory. */ + "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + }, + "exclude": ["node_modules", "**/*.test.ts"] +}