{"action":"created","comment":{"url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments/74807213","id":74807213,"diff_hunk":"@@ -9,23 +9,62 @@ package object callcaching {\n   case class HashValue(value: String)\n   case class HashResult(hashKey: HashKey, hashValue: HashValue)\n \n+  object HashValue {\n+    implicit class StringMd5er(unhashedString: String) {\n+      def md5HashValue: HashValue = {\n+        val hashBytes = java.security.MessageDigest.getInstance(\"MD5\").digest(unhashedString.getBytes)\n+        HashValue(javax.xml.bind.DatatypeConverter.printHexBinary(hashBytes))\n+      }\n+    }\n+  }\n+\n   private[callcaching] case class CacheResultMatchesForHashes(hashResults: Set[HashResult], cacheResultIds: Set[MetaInfoId])\n   private[callcaching] case class CacheResultLookupFailure(reason: Throwable)\n \n-  sealed trait CallCachingMode { def activity: Option[CallCachingActivity]; def readFromCache = false; def writeToCache = false; def lookupDockerHashes: Boolean = false }\n+  sealed trait CallCachingMode {\n+    def activity: Option[CallCachingActivity]\n+\n+    def readFromCache = false\n+    def writeToCache = false\n+    def hashDockerNames = false\n+    def lookupDockerHashes: Boolean = false\n+    def hashFilePaths: Boolean = false\n+    def hashFileContents: Boolean = false\n+\n+    /**\n+      * Return an equivalent of this call caching mode with READ disabled.\n+      */\n+    def withoutRead: CallCachingMode\n+  }\n+\n   object CallCachingMode {\n-    def apply(read: Boolean, write: Boolean, lookupDockerHashes: Boolean): CallCachingMode = (read, write) match {\n+    def apply(read: Boolean, write: Boolean, hashDockerNames: Boolean, lookupDockerHashes: Boolean, hashFilePaths: Boolean, hashFileContents: Boolean): CallCachingMode = (read, write) match {\n       case (false, false) => CallCachingOff\n-      case (false, true) => WriteCache(lookupDockerHashes)\n-      case (true, false) => ReadCache(lookupDockerHashes)\n-      case (true, true) => ReadAndWriteCache(lookupDockerHashes)\n+      case (false, true) => WriteCache(hashDockerNames, lookupDockerHashes, hashFilePaths, hashFileContents)\n+      case (true, false) => ReadCache(hashDockerNames, lookupDockerHashes, hashFilePaths, hashFileContents)\n+      case (true, true) => ReadAndWriteCache(hashDockerNames, lookupDockerHashes, hashFilePaths, hashFileContents)\n     }\n   }\n \n-  case object CallCachingOff extends CallCachingMode { override def activity = None; }\n+  case object CallCachingOff extends CallCachingMode {\n+    override def activity = None\n+    override def withoutRead = this\n+  }\n \n-  sealed trait CallCachingActivity extends CallCachingMode { override def activity = Option(this); }\n-  case class ReadCache(override val lookupDockerHashes: Boolean) extends CallCachingActivity { override def readFromCache = true }\n-  case class WriteCache(override val lookupDockerHashes: Boolean) extends CallCachingActivity { override def writeToCache = true }\n-  case class ReadAndWriteCache(override val lookupDockerHashes: Boolean) extends CallCachingActivity { override def readFromCache = true; override def writeToCache = true }\n+  sealed trait CallCachingActivity extends CallCachingMode {\n+    override def activity = Option(this)\n+  }\n+  case class ReadCache(override val hashDockerNames: Boolean, override val lookupDockerHashes: Boolean, override val hashFilePaths: Boolean, override val hashFileContents: Boolean) extends CallCachingActivity {\n+    override def readFromCache = true\n+    override def withoutRead = CallCachingOff\n+  }\n+  case class WriteCache(override val hashDockerNames: Boolean, override val lookupDockerHashes: Boolean, override val hashFilePaths: Boolean, override val hashFileContents: Boolean) extends CallCachingActivity {\n+    override def writeToCache = true","path":"engine/src/main/scala/cromwell/engine/workflow/lifecycle/execution/callcaching/package.scala","position":64,"original_position":64,"commit_id":"2f9e6a00c5d4099314b09867061bd0483fccd841","original_commit_id":"2f9e6a00c5d4099314b09867061bd0483fccd841","user":{"login":"geoffjentry","id":961771,"avatar_url":"https://avatars.githubusercontent.com/u/961771?v=3","gravatar_id":"","url":"https://api.github.com/users/geoffjentry","html_url":"https://github.com/geoffjentry","followers_url":"https://api.github.com/users/geoffjentry/followers","following_url":"https://api.github.com/users/geoffjentry/following{/other_user}","gists_url":"https://api.github.com/users/geoffjentry/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffjentry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffjentry/subscriptions","organizations_url":"https://api.github.com/users/geoffjentry/orgs","repos_url":"https://api.github.com/users/geoffjentry/repos","events_url":"https://api.github.com/users/geoffjentry/events{/privacy}","received_events_url":"https://api.github.com/users/geoffjentry/received_events","type":"User","site_admin":false},"body":"these should be vals","created_at":"2016-08-15T18:19:03Z","updated_at":"2016-08-15T18:19:03Z","html_url":"https://github.com/broadinstitute/cromwell/pull/1291#discussion_r74807213","pull_request_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291","_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments/74807213"},"html":{"href":"https://github.com/broadinstitute/cromwell/pull/1291#discussion_r74807213"},"pull_request":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291"}}},"pull_request":{"url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291","id":81185215,"html_url":"https://github.com/broadinstitute/cromwell/pull/1291","diff_url":"https://github.com/broadinstitute/cromwell/pull/1291.diff","patch_url":"https://github.com/broadinstitute/cromwell/pull/1291.patch","issue_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/1291","number":1291,"state":"open","locked":false,"title":"Call caching hashing rebased on Call Cache reading","user":{"login":"cjllanwarne","id":13006282,"avatar_url":"https://avatars.githubusercontent.com/u/13006282?v=3","gravatar_id":"","url":"https://api.github.com/users/cjllanwarne","html_url":"https://github.com/cjllanwarne","followers_url":"https://api.github.com/users/cjllanwarne/followers","following_url":"https://api.github.com/users/cjllanwarne/following{/other_user}","gists_url":"https://api.github.com/users/cjllanwarne/gists{/gist_id}","starred_url":"https://api.github.com/users/cjllanwarne/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cjllanwarne/subscriptions","organizations_url":"https://api.github.com/users/cjllanwarne/orgs","repos_url":"https://api.github.com/users/cjllanwarne/repos","events_url":"https://api.github.com/users/cjllanwarne/events{/privacy}","received_events_url":"https://api.github.com/users/cjllanwarne/received_events","type":"User","site_admin":false},"body":"With compliments to @mcovarr for the rebase base.\r\n\r\nCreates hashes for the following:\r\n\r\n- command\r\n- backend name\r\n- output expression\r\n- non-file inputs (as simpletons)\r\n- file input paths (according to config)\r\n\r\nNot included in this PR:\r\n\r\n- backend specific hashes (runtime attributes, docker, file contents)\r\n\r\nNote that if you want anything to actually be written you'll want the following options (to avoid a hashing failure)\r\n\r\n- `lookup-docker-hash=false`\r\n- `hash-docker-names=false`\r\n- `hash-file-paths=true` -- actually you could leave this false but... then you'd always cache hit regardless of what files you're using!\r\n- `hash-file-contents=false`","created_at":"2016-08-12T21:24:06Z","updated_at":"2016-08-15T18:19:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7c1cd3e4bfa18ad386e15076ee28d7da9d08a0ed","assignee":{"login":"geoffjentry","id":961771,"avatar_url":"https://avatars.githubusercontent.com/u/961771?v=3","gravatar_id":"","url":"https://api.github.com/users/geoffjentry","html_url":"https://github.com/geoffjentry","followers_url":"https://api.github.com/users/geoffjentry/followers","following_url":"https://api.github.com/users/geoffjentry/following{/other_user}","gists_url":"https://api.github.com/users/geoffjentry/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffjentry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffjentry/subscriptions","organizations_url":"https://api.github.com/users/geoffjentry/orgs","repos_url":"https://api.github.com/users/geoffjentry/repos","events_url":"https://api.github.com/users/geoffjentry/events{/privacy}","received_events_url":"https://api.github.com/users/geoffjentry/received_events","type":"User","site_admin":false},"assignees":[{"login":"geoffjentry","id":961771,"avatar_url":"https://avatars.githubusercontent.com/u/961771?v=3","gravatar_id":"","url":"https://api.github.com/users/geoffjentry","html_url":"https://github.com/geoffjentry","followers_url":"https://api.github.com/users/geoffjentry/followers","following_url":"https://api.github.com/users/geoffjentry/following{/other_user}","gists_url":"https://api.github.com/users/geoffjentry/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffjentry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffjentry/subscriptions","organizations_url":"https://api.github.com/users/geoffjentry/orgs","repos_url":"https://api.github.com/users/geoffjentry/repos","events_url":"https://api.github.com/users/geoffjentry/events{/privacy}","received_events_url":"https://api.github.com/users/geoffjentry/received_events","type":"User","site_admin":false},{"login":"mcovarr","id":10790523,"avatar_url":"https://avatars.githubusercontent.com/u/10790523?v=3","gravatar_id":"","url":"https://api.github.com/users/mcovarr","html_url":"https://github.com/mcovarr","followers_url":"https://api.github.com/users/mcovarr/followers","following_url":"https://api.github.com/users/mcovarr/following{/other_user}","gists_url":"https://api.github.com/users/mcovarr/gists{/gist_id}","starred_url":"https://api.github.com/users/mcovarr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcovarr/subscriptions","organizations_url":"https://api.github.com/users/mcovarr/orgs","repos_url":"https://api.github.com/users/mcovarr/repos","events_url":"https://api.github.com/users/mcovarr/events{/privacy}","received_events_url":"https://api.github.com/users/mcovarr/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291/commits","review_comments_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291/comments","review_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments{/number}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/1291/comments","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/2f9e6a00c5d4099314b09867061bd0483fccd841","head":{"label":"broadinstitute:cjl_call_caching_hashing_rebased","ref":"cjl_call_caching_hashing_rebased","sha":"2f9e6a00c5d4099314b09867061bd0483fccd841","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":34136406,"name":"cromwell","full_name":"broadinstitute/cromwell","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/cromwell","description":"Workflow Execution Engine using WDL","fork":false,"url":"https://api.github.com/repos/broadinstitute/cromwell","forks_url":"https://api.github.com/repos/broadinstitute/cromwell/forks","keys_url":"https://api.github.com/repos/broadinstitute/cromwell/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/cromwell/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/cromwell/teams","hooks_url":"https://api.github.com/repos/broadinstitute/cromwell/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/cromwell/events","assignees_url":"https://api.github.com/repos/broadinstitute/cromwell/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/cromwell/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/cromwell/tags","blobs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/cromwell/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/cromwell/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/cromwell/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/cromwell/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/cromwell/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/cromwell/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/cromwell/subscription","commits_url":"https://api.github.com/repos/broadinstitute/cromwell/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/cromwell/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/cromwell/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/cromwell/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/cromwell/merges","archive_url":"https://api.github.com/repos/broadinstitute/cromwell/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/cromwell/downloads","issues_url":"https://api.github.com/repos/broadinstitute/cromwell/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/cromwell/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/cromwell/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/cromwell/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/cromwell/releases{/id}","deployments_url":"https://api.github.com/repos/broadinstitute/cromwell/deployments","created_at":"2015-04-17T19:39:36Z","updated_at":"2016-08-13T13:20:28Z","pushed_at":"2016-08-15T15:48:15Z","git_url":"git://github.com/broadinstitute/cromwell.git","ssh_url":"git@github.com:broadinstitute/cromwell.git","clone_url":"https://github.com/broadinstitute/cromwell.git","svn_url":"https://github.com/broadinstitute/cromwell","homepage":"","size":8452,"stargazers_count":79,"watchers_count":79,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19,"mirror_url":null,"open_issues_count":148,"forks":19,"open_issues":148,"watchers":79,"default_branch":"develop"}},"base":{"label":"broadinstitute:develop","ref":"develop","sha":"6e12ac854036740be323e1aa12cebc543411efe6","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":34136406,"name":"cromwell","full_name":"broadinstitute/cromwell","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/cromwell","description":"Workflow Execution Engine using WDL","fork":false,"url":"https://api.github.com/repos/broadinstitute/cromwell","forks_url":"https://api.github.com/repos/broadinstitute/cromwell/forks","keys_url":"https://api.github.com/repos/broadinstitute/cromwell/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/cromwell/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/cromwell/teams","hooks_url":"https://api.github.com/repos/broadinstitute/cromwell/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/cromwell/events","assignees_url":"https://api.github.com/repos/broadinstitute/cromwell/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/cromwell/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/cromwell/tags","blobs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/cromwell/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/cromwell/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/cromwell/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/cromwell/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/cromwell/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/cromwell/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/cromwell/subscription","commits_url":"https://api.github.com/repos/broadinstitute/cromwell/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/cromwell/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/cromwell/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/cromwell/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/cromwell/merges","archive_url":"https://api.github.com/repos/broadinstitute/cromwell/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/cromwell/downloads","issues_url":"https://api.github.com/repos/broadinstitute/cromwell/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/cromwell/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/cromwell/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/cromwell/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/cromwell/releases{/id}","deployments_url":"https://api.github.com/repos/broadinstitute/cromwell/deployments","created_at":"2015-04-17T19:39:36Z","updated_at":"2016-08-13T13:20:28Z","pushed_at":"2016-08-15T15:48:15Z","git_url":"git://github.com/broadinstitute/cromwell.git","ssh_url":"git@github.com:broadinstitute/cromwell.git","clone_url":"https://github.com/broadinstitute/cromwell.git","svn_url":"https://github.com/broadinstitute/cromwell","homepage":"","size":8452,"stargazers_count":79,"watchers_count":79,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19,"mirror_url":null,"open_issues_count":148,"forks":19,"open_issues":148,"watchers":79,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291"},"html":{"href":"https://github.com/broadinstitute/cromwell/pull/1291"},"issue":{"href":"https://api.github.com/repos/broadinstitute/cromwell/issues/1291"},"comments":{"href":"https://api.github.com/repos/broadinstitute/cromwell/issues/1291/comments"},"review_comments":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291/comments"},"review_comment":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/1291/commits"},"statuses":{"href":"https://api.github.com/repos/broadinstitute/cromwell/statuses/2f9e6a00c5d4099314b09867061bd0483fccd841"}}}}
{"actor":{"display_login":"geoffjentry"}}