{"action":"created","comment":{"url":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/comments/208073786","pull_request_review_id":143810563,"id":208073786,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwODA3Mzc4Ng==","diff_hunk":"@@ -0,0 +1,227 @@\n+#!/usr/bin/env node\n+\n+const fs      = require('fs');\n+const path    = require('path');\n+const yaml    = require('js-yaml');\n+const logger  = require('winston');\n+const request = require('request-promise');\n+const cheerio = require('cheerio')\n+\n+const compareVersions = require('compare-versions');\n+\n+const INCREMENTALS = 'https://repo.jenkins-ci.org/incrementals/';\n+const RELEASES     = 'https://repo.jenkins-ci.org/releases/';\n+const updates      = JSON.parse(fs.readFileSync('./update-center.json'));\n+const essentials   = yaml.safeLoad(fs.readFileSync('./essentials.yaml'));\n+\n+logger.level = process.env.LOG_LEVEL || 'info';\n+\n+// Arbitrary bucket to wait for promises to resolve at the end of the script\n+let tasks = [];\n+// Resulting manifest to be output as JSON\n+let ingest = {\n+  timestamp: (new Date()).toISOString(),\n+  core: {\n+    url: `http://mirrors.jenkins.io/war/${essentials.spec.core.version}/jenkins.war`,\n+    checksum: {},\n+  },\n+  plugins: [],\n+  environments: {},\n+}\n+\n+// Fetch and fill out the core checksum\n+tasks.push(\n+  request(`http://mirrors.jenkins.io/war/${essentials.spec.core.version}/jenkins.war.sha256`)\n+    .then((res) => {\n+      Object.assign(ingest.core.checksum, {\n+          signature: res.split(' ')[0],\n+          type: 'sha256',\n+      })\n+    })\n+);\n+\n+\n+/*\n+ * processManifest will parse the Plugin-Dependencies out of the\n+ * META-INF/MANIFEST.MF files fetched from Artifactory\n+ */\n+const processManifest = (manifest) => {\n+  let dependencies = [];\n+  // Set to true if the next line is awrapped set of dependencies\n+  let depWrap = false;\n+  manifest.split('\\n').forEach((line) => {\n+    if ((depWrap) && (!line.startsWith(' '))) {\n+      depWrap = false;\n+    }\n+\n+    const matches = line.match(/^Plugin-Dependencies: (.*)?/);\n+\n+    if (matches) {\n+      dependencies.push(matches[1])\n+      depWrap = true;\n+    }\n+    else if (depWrap) {\n+      dependencies.push(line.trim());\n+    }\n+  });\n+\n+  dependencies = dependencies.join('').split(',');\n+\n+  // Returning an array of dependency tuples [artifactId, version]\n+  return dependencies\n+    .filter(entry => !entry.match(/\\=optional/))\n+    .map(entry => entry.split(':'));\n+};\n+\n+/*\n+ * Fetch a specified plugin manifest\n+ *\n+ * @return Promise\n+ */\n+const fetchPluginManifest = async (pluginUrl) => {\n+  try {\n+    let start = Date.now();\n+    const response = await request(`${pluginUrl}!META-INF/MANIFEST.MF`);\n+    logger.info(`Fetching ${pluginUrl} took ${Date.now() - start}`);\n+    return processManifest(response);\n+  } catch (err) {\n+    if (err.statusCode == 404) {\n+      logger.error(`Could not find ${pluginUrl}`);\n+    }\n+    else {\n+      logger.warn(err);\n+    }\n+    return null;\n+  }\n+};\n+\n+/*\n+ * processPlugin will generate the appropriate ingest metadata for the given\n+ * plugin based on its version\n+ */\n+const processPlugin = (plugin, into) => {\n+  logger.info('Processing', plugin.artifactId);\n+\n+  const pluginFilename = path.join(plugin.artifactId, plugin.version, `${plugin.artifactId}-${plugin.version}.hpi`);\n+  const groupPath = plugin.groupId.replace(/\\./g, '/');\n+  let url = `${RELEASES}${groupPath}/`;\n+\n+  if (plugin.version.match(/(.*?)-rc(\\d+)\\.(.*)?/)) {\n+    logger.debug(`${plugin.artifactId} looks incremental`);\n+    url = `${INCREMENTALS}${groupPath}/`;\n+  }\n+  url = url + pluginFilename;\n+\n+  let record = {\n+    groupId: plugin.groupId,\n+    artifactId: plugin.artifactId,\n+    url: url,\n+    checksum: {},\n+  };\n+\n+  into.push(record);\n+\n+  tasks.push(\n+    request({\n+        method: 'HEAD',\n+        uri: url,\n+        resolveWithFullResponse: true,\n+    }).then((response) => {\n+      Object.assign(record.checksum, {\n+          type: 'sha256',\n+          signature: response.headers['x-checksum-sha256'],\n+      });\n+    })\n+  );\n+\n+  return fetchPluginManifest(url).then(d => d);\n+};\n+\n+// The plugin name map will help us later determine what has been specified in\n+// the ssentials.yaml compared to an implied dependency\n+const pluginNameMap = new Map(essentials.spec.plugins.map(entry => [entry.artifactId, entry]));\n+// Perform a first pass on the plugins needed for all Evergreen installations\n+const firstPass = essentials.spec.plugins.map(plugin => processPlugin(plugin, ingest.plugins));\n+\n+// Collection of plugins which are needed but not specified in essentials.yaml\n+let needed = {};\n+\n+\n+const resolvePlugin = (name, inventory) => {\n+  // We don't have the plugin in essentials.yaml, so it's dependencies\n+  // should be resolved through the update center unless otherwise","path":"services/process-dependencies","position":152,"original_position":152,"commit_id":"c02ec1fd7fb37409e6955813d013991567f9e26e","original_commit_id":"c02ec1fd7fb37409e6955813d013991567f9e26e","user":{"login":"jglick","id":154109,"node_id":"MDQ6VXNlcjE1NDEwOQ==","avatar_url":"https://avatars1.githubusercontent.com/u/154109?v=4","gravatar_id":"","url":"https://api.github.com/users/jglick","html_url":"https://github.com/jglick","followers_url":"https://api.github.com/users/jglick/followers","following_url":"https://api.github.com/users/jglick/following{/other_user}","gists_url":"https://api.github.com/users/jglick/gists{/gist_id}","starred_url":"https://api.github.com/users/jglick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jglick/subscriptions","organizations_url":"https://api.github.com/users/jglick/orgs","repos_url":"https://api.github.com/users/jglick/repos","events_url":"https://api.github.com/users/jglick/events{/privacy}","received_events_url":"https://api.github.com/users/jglick/received_events","type":"User","site_admin":false},"body":"This is a bad policy—nondeterministic! Use the least upper bound instead.","created_at":"2018-08-07T01:23:00Z","updated_at":"2018-08-07T01:24:48Z","html_url":"https://github.com/jenkins-infra/evergreen/pull/169#discussion_r208073786","pull_request_url":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/comments/208073786"},"html":{"href":"https://github.com/jenkins-infra/evergreen/pull/169#discussion_r208073786"},"pull_request":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169"}}},"pull_request":{"url":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169","id":206154497,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MTU0NDk3","html_url":"https://github.com/jenkins-infra/evergreen/pull/169","diff_url":"https://github.com/jenkins-infra/evergreen/pull/169.diff","patch_url":"https://github.com/jenkins-infra/evergreen/pull/169.patch","issue_url":"https://api.github.com/repos/jenkins-infra/evergreen/issues/169","number":169,"state":"open","locked":false,"title":"Pull incremental updates falling back to the Update Center","user":{"login":"rtyler","id":26594,"node_id":"MDQ6VXNlcjI2NTk0","avatar_url":"https://avatars0.githubusercontent.com/u/26594?v=4","gravatar_id":"","url":"https://api.github.com/users/rtyler","html_url":"https://github.com/rtyler","followers_url":"https://api.github.com/users/rtyler/followers","following_url":"https://api.github.com/users/rtyler/following{/other_user}","gists_url":"https://api.github.com/users/rtyler/gists{/gist_id}","starred_url":"https://api.github.com/users/rtyler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtyler/subscriptions","organizations_url":"https://api.github.com/users/rtyler/orgs","repos_url":"https://api.github.com/users/rtyler/repos","events_url":"https://api.github.com/users/rtyler/events{/privacy}","received_events_url":"https://api.github.com/users/rtyler/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-08-03T22:45:08Z","updated_at":"2018-08-07T01:24:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"878fa18cb930aa0580bdc2d053b23820b1b0bbae","assignee":null,"assignees":[],"requested_reviewers":[{"login":"batmat","id":223853,"node_id":"MDQ6VXNlcjIyMzg1Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/223853?v=4","gravatar_id":"","url":"https://api.github.com/users/batmat","html_url":"https://github.com/batmat","followers_url":"https://api.github.com/users/batmat/followers","following_url":"https://api.github.com/users/batmat/following{/other_user}","gists_url":"https://api.github.com/users/batmat/gists{/gist_id}","starred_url":"https://api.github.com/users/batmat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/batmat/subscriptions","organizations_url":"https://api.github.com/users/batmat/orgs","repos_url":"https://api.github.com/users/batmat/repos","events_url":"https://api.github.com/users/batmat/events{/privacy}","received_events_url":"https://api.github.com/users/batmat/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169/commits","review_comments_url":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169/comments","review_comment_url":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/comments{/number}","comments_url":"https://api.github.com/repos/jenkins-infra/evergreen/issues/169/comments","statuses_url":"https://api.github.com/repos/jenkins-infra/evergreen/statuses/c02ec1fd7fb37409e6955813d013991567f9e26e","head":{"label":"rtyler:pull-real-versions-50197","ref":"pull-real-versions-50197","sha":"c02ec1fd7fb37409e6955813d013991567f9e26e","user":{"login":"rtyler","id":26594,"node_id":"MDQ6VXNlcjI2NTk0","avatar_url":"https://avatars0.githubusercontent.com/u/26594?v=4","gravatar_id":"","url":"https://api.github.com/users/rtyler","html_url":"https://github.com/rtyler","followers_url":"https://api.github.com/users/rtyler/followers","following_url":"https://api.github.com/users/rtyler/following{/other_user}","gists_url":"https://api.github.com/users/rtyler/gists{/gist_id}","starred_url":"https://api.github.com/users/rtyler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtyler/subscriptions","organizations_url":"https://api.github.com/users/rtyler/orgs","repos_url":"https://api.github.com/users/rtyler/repos","events_url":"https://api.github.com/users/rtyler/events{/privacy}","received_events_url":"https://api.github.com/users/rtyler/received_events","type":"User","site_admin":false},"repo":{"id":120771445,"node_id":"MDEwOlJlcG9zaXRvcnkxMjA3NzE0NDU=","name":"evergreen","full_name":"rtyler/evergreen","owner":{"login":"rtyler","id":26594,"node_id":"MDQ6VXNlcjI2NTk0","avatar_url":"https://avatars0.githubusercontent.com/u/26594?v=4","gravatar_id":"","url":"https://api.github.com/users/rtyler","html_url":"https://github.com/rtyler","followers_url":"https://api.github.com/users/rtyler/followers","following_url":"https://api.github.com/users/rtyler/following{/other_user}","gists_url":"https://api.github.com/users/rtyler/gists{/gist_id}","starred_url":"https://api.github.com/users/rtyler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtyler/subscriptions","organizations_url":"https://api.github.com/users/rtyler/orgs","repos_url":"https://api.github.com/users/rtyler/repos","events_url":"https://api.github.com/users/rtyler/events{/privacy}","received_events_url":"https://api.github.com/users/rtyler/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rtyler/evergreen","description":"An automatically self-updating Jenkins distribution","fork":true,"url":"https://api.github.com/repos/rtyler/evergreen","forks_url":"https://api.github.com/repos/rtyler/evergreen/forks","keys_url":"https://api.github.com/repos/rtyler/evergreen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rtyler/evergreen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rtyler/evergreen/teams","hooks_url":"https://api.github.com/repos/rtyler/evergreen/hooks","issue_events_url":"https://api.github.com/repos/rtyler/evergreen/issues/events{/number}","events_url":"https://api.github.com/repos/rtyler/evergreen/events","assignees_url":"https://api.github.com/repos/rtyler/evergreen/assignees{/user}","branches_url":"https://api.github.com/repos/rtyler/evergreen/branches{/branch}","tags_url":"https://api.github.com/repos/rtyler/evergreen/tags","blobs_url":"https://api.github.com/repos/rtyler/evergreen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rtyler/evergreen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rtyler/evergreen/git/refs{/sha}","trees_url":"https://api.github.com/repos/rtyler/evergreen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rtyler/evergreen/statuses/{sha}","languages_url":"https://api.github.com/repos/rtyler/evergreen/languages","stargazers_url":"https://api.github.com/repos/rtyler/evergreen/stargazers","contributors_url":"https://api.github.com/repos/rtyler/evergreen/contributors","subscribers_url":"https://api.github.com/repos/rtyler/evergreen/subscribers","subscription_url":"https://api.github.com/repos/rtyler/evergreen/subscription","commits_url":"https://api.github.com/repos/rtyler/evergreen/commits{/sha}","git_commits_url":"https://api.github.com/repos/rtyler/evergreen/git/commits{/sha}","comments_url":"https://api.github.com/repos/rtyler/evergreen/comments{/number}","issue_comment_url":"https://api.github.com/repos/rtyler/evergreen/issues/comments{/number}","contents_url":"https://api.github.com/repos/rtyler/evergreen/contents/{+path}","compare_url":"https://api.github.com/repos/rtyler/evergreen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rtyler/evergreen/merges","archive_url":"https://api.github.com/repos/rtyler/evergreen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rtyler/evergreen/downloads","issues_url":"https://api.github.com/repos/rtyler/evergreen/issues{/number}","pulls_url":"https://api.github.com/repos/rtyler/evergreen/pulls{/number}","milestones_url":"https://api.github.com/repos/rtyler/evergreen/milestones{/number}","notifications_url":"https://api.github.com/repos/rtyler/evergreen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rtyler/evergreen/labels{/name}","releases_url":"https://api.github.com/repos/rtyler/evergreen/releases{/id}","deployments_url":"https://api.github.com/repos/rtyler/evergreen/deployments","created_at":"2018-02-08T14:25:48Z","updated_at":"2018-06-22T17:49:55Z","pushed_at":"2018-08-06T19:10:23Z","git_url":"git://github.com/rtyler/evergreen.git","ssh_url":"git@github.com:rtyler/evergreen.git","clone_url":"https://github.com/rtyler/evergreen.git","svn_url":"https://github.com/rtyler/evergreen","homepage":null,"size":1863,"stargazers_count":1,"watchers_count":1,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"jenkins-infra:master","ref":"master","sha":"3deb1c7a6bb81a66112671996661e0985f14d8f5","user":{"login":"jenkins-infra","id":7422698,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc0MjI2OTg=","avatar_url":"https://avatars2.githubusercontent.com/u/7422698?v=4","gravatar_id":"","url":"https://api.github.com/users/jenkins-infra","html_url":"https://github.com/jenkins-infra","followers_url":"https://api.github.com/users/jenkins-infra/followers","following_url":"https://api.github.com/users/jenkins-infra/following{/other_user}","gists_url":"https://api.github.com/users/jenkins-infra/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkins-infra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkins-infra/subscriptions","organizations_url":"https://api.github.com/users/jenkins-infra/orgs","repos_url":"https://api.github.com/users/jenkins-infra/repos","events_url":"https://api.github.com/users/jenkins-infra/events{/privacy}","received_events_url":"https://api.github.com/users/jenkins-infra/received_events","type":"Organization","site_admin":false},"repo":{"id":119078647,"node_id":"MDEwOlJlcG9zaXRvcnkxMTkwNzg2NDc=","name":"evergreen","full_name":"jenkins-infra/evergreen","owner":{"login":"jenkins-infra","id":7422698,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc0MjI2OTg=","avatar_url":"https://avatars2.githubusercontent.com/u/7422698?v=4","gravatar_id":"","url":"https://api.github.com/users/jenkins-infra","html_url":"https://github.com/jenkins-infra","followers_url":"https://api.github.com/users/jenkins-infra/followers","following_url":"https://api.github.com/users/jenkins-infra/following{/other_user}","gists_url":"https://api.github.com/users/jenkins-infra/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkins-infra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkins-infra/subscriptions","organizations_url":"https://api.github.com/users/jenkins-infra/orgs","repos_url":"https://api.github.com/users/jenkins-infra/repos","events_url":"https://api.github.com/users/jenkins-infra/events{/privacy}","received_events_url":"https://api.github.com/users/jenkins-infra/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/jenkins-infra/evergreen","description":"An automatically self-updating Jenkins distribution","fork":false,"url":"https://api.github.com/repos/jenkins-infra/evergreen","forks_url":"https://api.github.com/repos/jenkins-infra/evergreen/forks","keys_url":"https://api.github.com/repos/jenkins-infra/evergreen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jenkins-infra/evergreen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jenkins-infra/evergreen/teams","hooks_url":"https://api.github.com/repos/jenkins-infra/evergreen/hooks","issue_events_url":"https://api.github.com/repos/jenkins-infra/evergreen/issues/events{/number}","events_url":"https://api.github.com/repos/jenkins-infra/evergreen/events","assignees_url":"https://api.github.com/repos/jenkins-infra/evergreen/assignees{/user}","branches_url":"https://api.github.com/repos/jenkins-infra/evergreen/branches{/branch}","tags_url":"https://api.github.com/repos/jenkins-infra/evergreen/tags","blobs_url":"https://api.github.com/repos/jenkins-infra/evergreen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jenkins-infra/evergreen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jenkins-infra/evergreen/git/refs{/sha}","trees_url":"https://api.github.com/repos/jenkins-infra/evergreen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jenkins-infra/evergreen/statuses/{sha}","languages_url":"https://api.github.com/repos/jenkins-infra/evergreen/languages","stargazers_url":"https://api.github.com/repos/jenkins-infra/evergreen/stargazers","contributors_url":"https://api.github.com/repos/jenkins-infra/evergreen/contributors","subscribers_url":"https://api.github.com/repos/jenkins-infra/evergreen/subscribers","subscription_url":"https://api.github.com/repos/jenkins-infra/evergreen/subscription","commits_url":"https://api.github.com/repos/jenkins-infra/evergreen/commits{/sha}","git_commits_url":"https://api.github.com/repos/jenkins-infra/evergreen/git/commits{/sha}","comments_url":"https://api.github.com/repos/jenkins-infra/evergreen/comments{/number}","issue_comment_url":"https://api.github.com/repos/jenkins-infra/evergreen/issues/comments{/number}","contents_url":"https://api.github.com/repos/jenkins-infra/evergreen/contents/{+path}","compare_url":"https://api.github.com/repos/jenkins-infra/evergreen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jenkins-infra/evergreen/merges","archive_url":"https://api.github.com/repos/jenkins-infra/evergreen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jenkins-infra/evergreen/downloads","issues_url":"https://api.github.com/repos/jenkins-infra/evergreen/issues{/number}","pulls_url":"https://api.github.com/repos/jenkins-infra/evergreen/pulls{/number}","milestones_url":"https://api.github.com/repos/jenkins-infra/evergreen/milestones{/number}","notifications_url":"https://api.github.com/repos/jenkins-infra/evergreen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jenkins-infra/evergreen/labels{/name}","releases_url":"https://api.github.com/repos/jenkins-infra/evergreen/releases{/id}","deployments_url":"https://api.github.com/repos/jenkins-infra/evergreen/deployments","created_at":"2018-01-26T16:56:35Z","updated_at":"2018-08-06T02:38:52Z","pushed_at":"2018-08-06T19:10:24Z","git_url":"git://github.com/jenkins-infra/evergreen.git","ssh_url":"git@github.com:jenkins-infra/evergreen.git","clone_url":"https://github.com/jenkins-infra/evergreen.git","svn_url":"https://github.com/jenkins-infra/evergreen","homepage":null,"size":1832,"stargazers_count":23,"watchers_count":23,"language":"JavaScript","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":10,"mirror_url":null,"archived":false,"open_issues_count":3,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":10,"open_issues":3,"watchers":23,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169"},"html":{"href":"https://github.com/jenkins-infra/evergreen/pull/169"},"issue":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/issues/169"},"comments":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/issues/169/comments"},"review_comments":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169/comments"},"review_comment":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/pulls/169/commits"},"statuses":{"href":"https://api.github.com/repos/jenkins-infra/evergreen/statuses/c02ec1fd7fb37409e6955813d013991567f9e26e"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"jglick"}}