{"action":"created","comment":{"url":"https://api.github.com/repos/eventum/eventum/pulls/comments/82500211","pull_request_review_id":3406374,"id":82500211,"diff_hunk":"@@ -0,0 +1,197 @@\n+<?php\n+\n+/*\n+ * This file is part of the Eventum (Issue Tracking System) package.\n+ *\n+ * @copyright (c) Eventum Team\n+ * @license GNU General Public License, version 2 or later (GPL-2+)\n+ *\n+ * For the full copyright and license information,\n+ * please see the COPYING and AUTHORS files\n+ * that were distributed with this source code.\n+ */\n+namespace Eventum\\Model\\Repository;\n+\n+use Eventum\\Model\\Entity;\n+use History;\n+use InvalidArgumentException;\n+use Issue;\n+use LogicException;\n+use User;\n+\n+class IssueAssociationRepository extends BaseRepository\n+{\n+    /**\n+     * Method used to get the list of issues associated to a specific issue.\n+     *\n+     * @param int $issue_id The issue ID\n+     * @return int[] The list of associated issues\n+     */\n+    public function getAssociatedIssues($issue_id)\n+    {\n+        $res = [];\n+        $isa = Entity\\IssueAssociation::create()->findByIssueId($issue_id);\n+        if (!$isa) {\n+            return $res;\n+        }\n+\n+        foreach ($isa as $ia) {\n+            // check which column to use\n+            if ($ia->getIssueId() == $issue_id) {\n+                $iss_id = $ia->getAssociatedId();\n+            } else {\n+                $iss_id = $ia->getIssueId();\n+            }\n+\n+            // can't be itself!\n+            if ($iss_id == $issue_id) {\n+                throw new LogicException();\n+                continue;\n+            }\n+\n+            $res[] = $iss_id;\n+        }\n+\n+        // make unique\n+        $res = array_unique($res);\n+\n+        // and sort\n+        asort($res);\n+\n+        return $res;\n+    }\n+\n+    /**\n+     * Method used to associate an existing issue with another one.\n+     *\n+     * @param int $usr_id User Id performing the operation\n+     * @param int $issue_id The issue ID\n+     * @param int $associated_issue_id The other issue ID\n+     */\n+    public function addIssueAssociation($usr_id, $issue_id, $associated_issue_id)\n+    {\n+        // see if there already is association\n+        $assoc = $this->getAssociatedIssues($issue_id);\n+        if (in_array($associated_issue_id, $assoc)) {\n+            throw new InvalidArgumentException(\"Issue $issue_id already associated to $associated_issue_id\");\n+        }\n+\n+        Entity\\IssueAssociation::create()\n+            ->setIssueId($issue_id)\n+            ->setAssociatedId($associated_issue_id)\n+            ->save();\n+\n+        History::add(\n+            $issue_id, $usr_id, 'issue_associated', 'Issue associated to Issue #{associated_id} by {user}', [\n+                'associated_id' => $associated_issue_id,\n+                'user' => User::getFullName($usr_id)\n+            ]\n+        );\n+    }\n+\n+    /**\n+     * Method used to remove an issue association from an issue.\n+     *\n+     * @param int $usr_id User Id performing the operation\n+     * @param int $issue_id The issue ID\n+     * @param int $associated_issue_id The associated issue ID to remove.\n+     */\n+    public function removeAssociation($usr_id, $issue_id, $associated_issue_id)\n+    {\n+        // see if there already is association\n+        $assoc = $this->getAssociatedIssues($issue_id);\n+        if (!in_array($associated_issue_id, $assoc)) {\n+            throw new InvalidArgumentException(\"Issue $issue_id not associated to $associated_issue_id\");\n+        }\n+\n+        Entity\\IssueAssociation::create()->removeAssociation($issue_id, $associated_issue_id);\n+\n+        $full_name = User::getFullName($usr_id);\n+        $pairs = [\n+            [$issue_id, $associated_issue_id],\n+            [$associated_issue_id, $issue_id],\n+        ];\n+\n+        foreach ($pairs as $pair) {\n+            list($issue_id, $associated_issue_id) = $pair;\n+            $params = [\n+                'issue_id' => $associated_issue_id,\n+                'user' => $full_name\n+            ];\n+            History::add(\n+                $issue_id, $usr_id, 'issue_unassociated',\n+                'Issue association to Issue #{issue_id} removed by {user}', $params\n+            );\n+        }\n+    }\n+\n+    /**\n+     * Update the issue associations\n+     *\n+     * @param int $usr_id User Id performing the operation\n+     * @param int $issue_id issue_id to update associations\n+     * @param int[] $issues issue_id's to associate with\n+     * @return string[] errors from operation\n+     */\n+    public function updateAssociations($usr_id, $issue_id, $issues)\n+    {\n+        list($issues, $errors) = $this->filterExistingIssues($issues, $issue_id);\n+        $existing_associations = $this->getAssociatedIssues($issue_id);\n+\n+        $add = array_diff($issues, $existing_associations);\n+        $remove = array_diff($existing_associations, $issues);\n+        if (!$add && !$remove) {\n+            return [];\n+        }\n+\n+        foreach ($add as $associated_id) {\n+            $this->addIssueAssociation($usr_id, $issue_id, $associated_id);\n+        }\n+        foreach ($remove as $associated_id) {\n+            $this->removeAssociation($usr_id, $issue_id, $associated_id);\n+        }\n+\n+        return $errors;\n+    }\n+\n+    /**\n+     * Filter issues for invalid input and issues that do not exist.\n+     *\n+     * XXX: check_project was false in old code even if it said it does check for project","path":"src/Model/Repository/IssueAssociationRepository.php","position":159,"original_position":160,"commit_id":"aa80e16acdc6534076b940b9cfc94e8a95984314","original_commit_id":"16a120d148406cad066f6b5b635a68fdd1b894a7","user":{"login":"glensc","id":199095,"avatar_url":"https://avatars.githubusercontent.com/u/199095?v=3","gravatar_id":"","url":"https://api.github.com/users/glensc","html_url":"https://github.com/glensc","followers_url":"https://api.github.com/users/glensc/followers","following_url":"https://api.github.com/users/glensc/following{/other_user}","gists_url":"https://api.github.com/users/glensc/gists{/gist_id}","starred_url":"https://api.github.com/users/glensc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glensc/subscriptions","organizations_url":"https://api.github.com/users/glensc/orgs","repos_url":"https://api.github.com/users/glensc/repos","events_url":"https://api.github.com/users/glensc/events{/privacy}","received_events_url":"https://api.github.com/users/glensc/received_events","type":"User","site_admin":false},"body":"well. i think verifying project is totally incorrect. because user who edits the issue, don't have cross project access, will be removing the issue. while other use who has access for that user all works well.\r\n\r\nand indeed, there is slight information leakage, but in different place: `issue title` and `issue status` because [Issue::getAssociatedIssuesDetails()](https://github.com/eventum/eventum/blob/v3.1.3/lib/eventum/class.issue.php#L3231-L3268) doesn't check such information at all","created_at":"2016-10-08T10:34:18Z","updated_at":"2016-10-08T10:34:18Z","html_url":"https://github.com/eventum/eventum/pull/207#discussion_r82500211","pull_request_url":"https://api.github.com/repos/eventum/eventum/pulls/207","_links":{"self":{"href":"https://api.github.com/repos/eventum/eventum/pulls/comments/82500211"},"html":{"href":"https://github.com/eventum/eventum/pull/207#discussion_r82500211"},"pull_request":{"href":"https://api.github.com/repos/eventum/eventum/pulls/207"}}},"pull_request":{"url":"https://api.github.com/repos/eventum/eventum/pulls/207","id":88342960,"html_url":"https://github.com/eventum/eventum/pull/207","diff_url":"https://github.com/eventum/eventum/pull/207.diff","patch_url":"https://github.com/eventum/eventum/pull/207.patch","issue_url":"https://api.github.com/repos/eventum/eventum/issues/207","number":207,"state":"open","locked":false,"title":"rewrite issue association code","user":{"login":"glensc","id":199095,"avatar_url":"https://avatars.githubusercontent.com/u/199095?v=3","gravatar_id":"","url":"https://api.github.com/users/glensc","html_url":"https://github.com/glensc","followers_url":"https://api.github.com/users/glensc/followers","following_url":"https://api.github.com/users/glensc/following{/other_user}","gists_url":"https://api.github.com/users/glensc/gists{/gist_id}","starred_url":"https://api.github.com/users/glensc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glensc/subscriptions","organizations_url":"https://api.github.com/users/glensc/orgs","repos_url":"https://api.github.com/users/glensc/repos","events_url":"https://api.github.com/users/glensc/events{/privacy}","received_events_url":"https://api.github.com/users/glensc/received_events","type":"User","site_admin":false},"body":"there's some bug that sometimes adding issue association shows up only one side of issue pair, and each time trying to fix that adds the associated issue id to the other issue that already had one, and the first issue stays without association.\r\n\r\ndecided to rewrite that portion of code and add unit tests to resolve this issue.\r\n\r\nthe change involves that into `issue_association` table only one row of association is inserted instead of current two, thus simplifying all logic.","created_at":"2016-10-06T21:18:05Z","updated_at":"2016-10-08T10:34:18Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4b83a6815ecd21b142f4208d85394ab80467315a","assignee":{"login":"glensc","id":199095,"avatar_url":"https://avatars.githubusercontent.com/u/199095?v=3","gravatar_id":"","url":"https://api.github.com/users/glensc","html_url":"https://github.com/glensc","followers_url":"https://api.github.com/users/glensc/followers","following_url":"https://api.github.com/users/glensc/following{/other_user}","gists_url":"https://api.github.com/users/glensc/gists{/gist_id}","starred_url":"https://api.github.com/users/glensc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glensc/subscriptions","organizations_url":"https://api.github.com/users/glensc/orgs","repos_url":"https://api.github.com/users/glensc/repos","events_url":"https://api.github.com/users/glensc/events{/privacy}","received_events_url":"https://api.github.com/users/glensc/received_events","type":"User","site_admin":false},"assignees":[{"login":"glensc","id":199095,"avatar_url":"https://avatars.githubusercontent.com/u/199095?v=3","gravatar_id":"","url":"https://api.github.com/users/glensc","html_url":"https://github.com/glensc","followers_url":"https://api.github.com/users/glensc/followers","following_url":"https://api.github.com/users/glensc/following{/other_user}","gists_url":"https://api.github.com/users/glensc/gists{/gist_id}","starred_url":"https://api.github.com/users/glensc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glensc/subscriptions","organizations_url":"https://api.github.com/users/glensc/orgs","repos_url":"https://api.github.com/users/glensc/repos","events_url":"https://api.github.com/users/glensc/events{/privacy}","received_events_url":"https://api.github.com/users/glensc/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/eventum/eventum/milestones/18","html_url":"https://github.com/eventum/eventum/milestones/3.1.4","labels_url":"https://api.github.com/repos/eventum/eventum/milestones/18/labels","id":2027126,"number":18,"title":"3.1.4","description":"","creator":{"login":"glensc","id":199095,"avatar_url":"https://avatars.githubusercontent.com/u/199095?v=3","gravatar_id":"","url":"https://api.github.com/users/glensc","html_url":"https://github.com/glensc","followers_url":"https://api.github.com/users/glensc/followers","following_url":"https://api.github.com/users/glensc/following{/other_user}","gists_url":"https://api.github.com/users/glensc/gists{/gist_id}","starred_url":"https://api.github.com/users/glensc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glensc/subscriptions","organizations_url":"https://api.github.com/users/glensc/orgs","repos_url":"https://api.github.com/users/glensc/repos","events_url":"https://api.github.com/users/glensc/events{/privacy}","received_events_url":"https://api.github.com/users/glensc/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":3,"state":"open","created_at":"2016-09-25T18:34:11Z","updated_at":"2016-10-07T20:28:56Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/eventum/eventum/pulls/207/commits","review_comments_url":"https://api.github.com/repos/eventum/eventum/pulls/207/comments","review_comment_url":"https://api.github.com/repos/eventum/eventum/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eventum/eventum/issues/207/comments","statuses_url":"https://api.github.com/repos/eventum/eventum/statuses/aa80e16acdc6534076b940b9cfc94e8a95984314","head":{"label":"glensc:issue-88510","ref":"issue-88510","sha":"aa80e16acdc6534076b940b9cfc94e8a95984314","user":{"login":"glensc","id":199095,"avatar_url":"https://avatars.githubusercontent.com/u/199095?v=3","gravatar_id":"","url":"https://api.github.com/users/glensc","html_url":"https://github.com/glensc","followers_url":"https://api.github.com/users/glensc/followers","following_url":"https://api.github.com/users/glensc/following{/other_user}","gists_url":"https://api.github.com/users/glensc/gists{/gist_id}","starred_url":"https://api.github.com/users/glensc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glensc/subscriptions","organizations_url":"https://api.github.com/users/glensc/orgs","repos_url":"https://api.github.com/users/glensc/repos","events_url":"https://api.github.com/users/glensc/events{/privacy}","received_events_url":"https://api.github.com/users/glensc/received_events","type":"User","site_admin":false},"repo":{"id":23351482,"name":"eventum","full_name":"glensc/eventum","owner":{"login":"glensc","id":199095,"avatar_url":"https://avatars.githubusercontent.com/u/199095?v=3","gravatar_id":"","url":"https://api.github.com/users/glensc","html_url":"https://github.com/glensc","followers_url":"https://api.github.com/users/glensc/followers","following_url":"https://api.github.com/users/glensc/following{/other_user}","gists_url":"https://api.github.com/users/glensc/gists{/gist_id}","starred_url":"https://api.github.com/users/glensc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glensc/subscriptions","organizations_url":"https://api.github.com/users/glensc/orgs","repos_url":"https://api.github.com/users/glensc/repos","events_url":"https://api.github.com/users/glensc/events{/privacy}","received_events_url":"https://api.github.com/users/glensc/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/glensc/eventum","description":"Issue tracking system","fork":true,"url":"https://api.github.com/repos/glensc/eventum","forks_url":"https://api.github.com/repos/glensc/eventum/forks","keys_url":"https://api.github.com/repos/glensc/eventum/keys{/key_id}","collaborators_url":"https://api.github.com/repos/glensc/eventum/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/glensc/eventum/teams","hooks_url":"https://api.github.com/repos/glensc/eventum/hooks","issue_events_url":"https://api.github.com/repos/glensc/eventum/issues/events{/number}","events_url":"https://api.github.com/repos/glensc/eventum/events","assignees_url":"https://api.github.com/repos/glensc/eventum/assignees{/user}","branches_url":"https://api.github.com/repos/glensc/eventum/branches{/branch}","tags_url":"https://api.github.com/repos/glensc/eventum/tags","blobs_url":"https://api.github.com/repos/glensc/eventum/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/glensc/eventum/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/glensc/eventum/git/refs{/sha}","trees_url":"https://api.github.com/repos/glensc/eventum/git/trees{/sha}","statuses_url":"https://api.github.com/repos/glensc/eventum/statuses/{sha}","languages_url":"https://api.github.com/repos/glensc/eventum/languages","stargazers_url":"https://api.github.com/repos/glensc/eventum/stargazers","contributors_url":"https://api.github.com/repos/glensc/eventum/contributors","subscribers_url":"https://api.github.com/repos/glensc/eventum/subscribers","subscription_url":"https://api.github.com/repos/glensc/eventum/subscription","commits_url":"https://api.github.com/repos/glensc/eventum/commits{/sha}","git_commits_url":"https://api.github.com/repos/glensc/eventum/git/commits{/sha}","comments_url":"https://api.github.com/repos/glensc/eventum/comments{/number}","issue_comment_url":"https://api.github.com/repos/glensc/eventum/issues/comments{/number}","contents_url":"https://api.github.com/repos/glensc/eventum/contents/{+path}","compare_url":"https://api.github.com/repos/glensc/eventum/compare/{base}...{head}","merges_url":"https://api.github.com/repos/glensc/eventum/merges","archive_url":"https://api.github.com/repos/glensc/eventum/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/glensc/eventum/downloads","issues_url":"https://api.github.com/repos/glensc/eventum/issues{/number}","pulls_url":"https://api.github.com/repos/glensc/eventum/pulls{/number}","milestones_url":"https://api.github.com/repos/glensc/eventum/milestones{/number}","notifications_url":"https://api.github.com/repos/glensc/eventum/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/glensc/eventum/labels{/name}","releases_url":"https://api.github.com/repos/glensc/eventum/releases{/id}","deployments_url":"https://api.github.com/repos/glensc/eventum/deployments","created_at":"2014-08-26T12:50:31Z","updated_at":"2015-10-17T17:11:16Z","pushed_at":"2016-10-07T18:40:15Z","git_url":"git://github.com/glensc/eventum.git","ssh_url":"git@github.com:glensc/eventum.git","clone_url":"https://github.com/glensc/eventum.git","svn_url":"https://github.com/glensc/eventum","homepage":"https://launchpad.net/eventum","size":18669,"stargazers_count":1,"watchers_count":1,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"eventum-2.3"}},"base":{"label":"eventum:master","ref":"master","sha":"c179a8ddfed25d1202fdb16db07dae4ea3021201","user":{"login":"eventum","id":1901668,"avatar_url":"https://avatars.githubusercontent.com/u/1901668?v=3","gravatar_id":"","url":"https://api.github.com/users/eventum","html_url":"https://github.com/eventum","followers_url":"https://api.github.com/users/eventum/followers","following_url":"https://api.github.com/users/eventum/following{/other_user}","gists_url":"https://api.github.com/users/eventum/gists{/gist_id}","starred_url":"https://api.github.com/users/eventum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eventum/subscriptions","organizations_url":"https://api.github.com/users/eventum/orgs","repos_url":"https://api.github.com/users/eventum/repos","events_url":"https://api.github.com/users/eventum/events{/privacy}","received_events_url":"https://api.github.com/users/eventum/received_events","type":"Organization","site_admin":false},"repo":{"id":16154146,"name":"eventum","full_name":"eventum/eventum","owner":{"login":"eventum","id":1901668,"avatar_url":"https://avatars.githubusercontent.com/u/1901668?v=3","gravatar_id":"","url":"https://api.github.com/users/eventum","html_url":"https://github.com/eventum","followers_url":"https://api.github.com/users/eventum/followers","following_url":"https://api.github.com/users/eventum/following{/other_user}","gists_url":"https://api.github.com/users/eventum/gists{/gist_id}","starred_url":"https://api.github.com/users/eventum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eventum/subscriptions","organizations_url":"https://api.github.com/users/eventum/orgs","repos_url":"https://api.github.com/users/eventum/repos","events_url":"https://api.github.com/users/eventum/events{/privacy}","received_events_url":"https://api.github.com/users/eventum/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/eventum/eventum","description":"Issue tracking system","fork":false,"url":"https://api.github.com/repos/eventum/eventum","forks_url":"https://api.github.com/repos/eventum/eventum/forks","keys_url":"https://api.github.com/repos/eventum/eventum/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eventum/eventum/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eventum/eventum/teams","hooks_url":"https://api.github.com/repos/eventum/eventum/hooks","issue_events_url":"https://api.github.com/repos/eventum/eventum/issues/events{/number}","events_url":"https://api.github.com/repos/eventum/eventum/events","assignees_url":"https://api.github.com/repos/eventum/eventum/assignees{/user}","branches_url":"https://api.github.com/repos/eventum/eventum/branches{/branch}","tags_url":"https://api.github.com/repos/eventum/eventum/tags","blobs_url":"https://api.github.com/repos/eventum/eventum/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eventum/eventum/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eventum/eventum/git/refs{/sha}","trees_url":"https://api.github.com/repos/eventum/eventum/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eventum/eventum/statuses/{sha}","languages_url":"https://api.github.com/repos/eventum/eventum/languages","stargazers_url":"https://api.github.com/repos/eventum/eventum/stargazers","contributors_url":"https://api.github.com/repos/eventum/eventum/contributors","subscribers_url":"https://api.github.com/repos/eventum/eventum/subscribers","subscription_url":"https://api.github.com/repos/eventum/eventum/subscription","commits_url":"https://api.github.com/repos/eventum/eventum/commits{/sha}","git_commits_url":"https://api.github.com/repos/eventum/eventum/git/commits{/sha}","comments_url":"https://api.github.com/repos/eventum/eventum/comments{/number}","issue_comment_url":"https://api.github.com/repos/eventum/eventum/issues/comments{/number}","contents_url":"https://api.github.com/repos/eventum/eventum/contents/{+path}","compare_url":"https://api.github.com/repos/eventum/eventum/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eventum/eventum/merges","archive_url":"https://api.github.com/repos/eventum/eventum/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eventum/eventum/downloads","issues_url":"https://api.github.com/repos/eventum/eventum/issues{/number}","pulls_url":"https://api.github.com/repos/eventum/eventum/pulls{/number}","milestones_url":"https://api.github.com/repos/eventum/eventum/milestones{/number}","notifications_url":"https://api.github.com/repos/eventum/eventum/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eventum/eventum/labels{/name}","releases_url":"https://api.github.com/repos/eventum/eventum/releases{/id}","deployments_url":"https://api.github.com/repos/eventum/eventum/deployments","created_at":"2014-01-22T22:08:18Z","updated_at":"2016-09-30T06:29:13Z","pushed_at":"2016-10-07T22:49:57Z","git_url":"git://github.com/eventum/eventum.git","ssh_url":"git@github.com:eventum/eventum.git","clone_url":"https://github.com/eventum/eventum.git","svn_url":"https://github.com/eventum/eventum","homepage":"https://wiki.github.com/eventum/eventum/","size":18788,"stargazers_count":44,"watchers_count":44,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":27,"mirror_url":null,"open_issues_count":32,"forks":27,"open_issues":32,"watchers":44,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/eventum/eventum/pulls/207"},"html":{"href":"https://github.com/eventum/eventum/pull/207"},"issue":{"href":"https://api.github.com/repos/eventum/eventum/issues/207"},"comments":{"href":"https://api.github.com/repos/eventum/eventum/issues/207/comments"},"review_comments":{"href":"https://api.github.com/repos/eventum/eventum/pulls/207/comments"},"review_comment":{"href":"https://api.github.com/repos/eventum/eventum/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eventum/eventum/pulls/207/commits"},"statuses":{"href":"https://api.github.com/repos/eventum/eventum/statuses/aa80e16acdc6534076b940b9cfc94e8a95984314"}}}}
{"actor":{"display_login":"glensc"}}