{"action":"created","comment":{"url":"https://api.github.com/repos/ethereum/remix/pulls/comments/87216960","pull_request_review_id":7837272,"id":87216960,"diff_hunk":"@@ -0,0 +1,301 @@\n+'use strict'\n+/**\n+  * Uint decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g uint256, uint32)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName}\n+  */\n+function Uint (type) {\n+  type === 'uint' ? 'uint256' : type\n+  return {\n+    needsFreeStorageSlot: false,\n+    storageBytes: parseInt(type.replace('uint', '')) / 8,\n+    typeName: type\n+  }\n+}\n+\n+/**\n+  * Int decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g int256, int32)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName}\n+  */\n+function Int (type) {\n+  type === 'int' ? 'int256' : type\n+  return {\n+    needsFreeStorageSlot: false,\n+    storageBytes: parseInt(type.replace('int', '')) / 8,\n+    typeName: type\n+  }\n+}\n+\n+/**\n+  * Address decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g address)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName}\n+  */\n+function Address (type) {\n+  return {\n+    needsFreeStorageSlot: false,\n+    storageBytes: 20,\n+    typeName: 'address'\n+  }\n+}\n+\n+/**\n+  * Bool decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g bool)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName}\n+  */\n+function Bool (type) {\n+  return {\n+    needsFreeStorageSlot: false,\n+    storageBytes: 1,\n+    typeName: 'bool'\n+  }\n+}\n+\n+/**\n+  * DynamicByteArray decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g bytes storage ref)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName}\n+  */\n+function DynamicByteArray (type) {\n+  return {\n+    needsFreeStorageSlot: true,\n+    storageBytes: 32,\n+    typeName: 'bytes'\n+  }\n+}\n+\n+/**\n+  * FixedByteArray decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g bytes16)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName}\n+  */\n+function FixedByteArray (type) {\n+  return {\n+    needsFreeStorageSlot: false,\n+    storageBytes: parseInt(type.replace('bytes', '')),\n+    typeName: type\n+  }\n+}\n+\n+/**\n+  * StringType decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g string storage ref)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName}\n+  */\n+function StringType (type) {\n+  return {\n+    needsFreeStorageSlot: true,\n+    storageBytes: 32,\n+    typeName: 'string'\n+  }\n+}\n+\n+/**\n+  * ArrayType decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g int256[] storage ref, int256[] storage ref[] storage ref)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName, arraySize, subArray}\n+  */\n+function ArrayType (type, stateDefinitions) {\n+  var arraySize\n+  var storageBytes\n+\n+  var match = type.match(/(.*)\\[(.*?)\\]( storage ref| storage pointer| memory| calldata)?$/)\n+  if (!match || match.length < 3) {\n+    console.log('unable to parse type ' + type)\n+    return null\n+  }\n+\n+  arraySize = match[2] === '' ? 'dynamic' : parseInt(match[2])\n+\n+  var underlyingType = decode(match[1], stateDefinitions)\n+  if (underlyingType === null) {\n+    console.log('unable to parse type ' + type)\n+    return null\n+  }\n+\n+  if (arraySize === 'dynamic') {\n+    storageBytes = 32\n+  } else {\n+    storageBytes = underlyingType.storageBytes\n+    if (storageBytes > 32) {\n+      storageBytes = 32 * arraySize * Math.ceil(storageBytes / 32)\n+    } else {\n+      storageBytes = 32 * (arraySize / Math.floor(32 / storageBytes))\n+    }\n+  }\n+\n+  return {\n+    needsFreeStorageSlot: true,\n+    storageBytes: storageBytes,\n+    typeName: type,\n+    arraySize: arraySize,\n+    underlyingType: underlyingType\n+  }\n+}\n+\n+/**\n+  * Enum decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g enum enumDef)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName, enum}\n+  */\n+function Enum (type, stateDefinitions) {\n+  var enumDef = getEnum(type, stateDefinitions)\n+  if (enumDef === null) {\n+    console.log('unable to retrieve decode info of ' + type)\n+    return null\n+  }\n+  var length = enumDef.children.length\n+  var storageBytes = 0\n+  while (length > 1) {\n+    length = length / 256\n+    storageBytes++\n+  }\n+  return {\n+    needsFreeStorageSlot: false,\n+    storageBytes: storageBytes,\n+    typeName: type,\n+    enum: enumDef\n+  }\n+}\n+\n+/**\n+  * Struct decode the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g struct structDef storage ref)\n+  * @return {Object} returns decoded info about the current type: { needsFreeStorageSlot, storageBytes, typeName, members}\n+  */\n+function Struct (type, stateDefinitions) {\n+  var match = type.match(/struct (.*?)( storage ref| storage pointer| memory| calldata)?$/)\n+  if (!match) {\n+    return null\n+  }\n+  var memberDetails = getStructMembers(match[1], stateDefinitions) // type is used to extract the ast struct definition\n+  return {\n+    needsFreeStorageSlot: true,\n+    storageBytes: memberDetails.storageBytes,\n+    typeName: type,\n+    members: memberDetails.members\n+  }\n+}\n+\n+/**\n+  * retrieve enum declaration of the given @arg type\n+  *\n+  * @param {String} type - type given by the AST (e.g enum enumDef)\n+  * @param {Object} stateDefinitions  - all state declarations given by the AST (including struct and enum type declaration)\n+  * @return {Array} - containing all value declaration of the current enum type\n+  */\n+function getEnum (type, stateDefinitions) {\n+  for (var k in stateDefinitions) {\n+    var dec = stateDefinitions[k]\n+    if (type === 'enum ' + dec.attributes.name) {\n+      return dec\n+    }\n+  }\n+  return null\n+}\n+\n+/**\n+  * retrieve memebers declared in the given @arg tye\n+  *\n+  * @param {String} typeName - name of the struct type (e.g struct <name>)\n+  * @param {Object} stateDefinitions  - all state definition given by the AST (including struct and enum type declaration)\n+  * @return {Array} containing all members of the current struct type\n+  */\n+function getStructMembers (typeName, stateDefinitions) {\n+  var members = []\n+  var storageBytes = 0\n+  for (var k in stateDefinitions) {\n+    var dec = stateDefinitions[k]\n+    if (dec.name === 'StructDefinition' && typeName === dec.attributes.name) {\n+      for (var i in dec.children) {\n+        var member = dec.children[i]\n+        var decoded = decode(member.attributes.type, stateDefinitions)\n+        if (!decoded) {\n+          console.log('unable to retrieve decode info of ' + member.attributes.type)\n+          continue","path":"src/solidity/decodeInfo.js","position":227,"original_position":227,"commit_id":"679e24f279aa04637f840de6055dde1bb06412ae","original_commit_id":"679e24f279aa04637f840de6055dde1bb06412ae","user":{"login":"chriseth","id":9073706,"avatar_url":"https://avatars.githubusercontent.com/u/9073706?v=3","gravatar_id":"","url":"https://api.github.com/users/chriseth","html_url":"https://github.com/chriseth","followers_url":"https://api.github.com/users/chriseth/followers","following_url":"https://api.github.com/users/chriseth/following{/other_user}","gists_url":"https://api.github.com/users/chriseth/gists{/gist_id}","starred_url":"https://api.github.com/users/chriseth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chriseth/subscriptions","organizations_url":"https://api.github.com/users/chriseth/orgs","repos_url":"https://api.github.com/users/chriseth/repos","events_url":"https://api.github.com/users/chriseth/events{/privacy}","received_events_url":"https://api.github.com/users/chriseth/received_events","type":"User","site_admin":false},"body":"return null","created_at":"2016-11-09T15:44:23Z","updated_at":"2016-11-09T15:44:23Z","html_url":"https://github.com/ethereum/remix/pull/130#discussion_r87216960","pull_request_url":"https://api.github.com/repos/ethereum/remix/pulls/130","_links":{"self":{"href":"https://api.github.com/repos/ethereum/remix/pulls/comments/87216960"},"html":{"href":"https://github.com/ethereum/remix/pull/130#discussion_r87216960"},"pull_request":{"href":"https://api.github.com/repos/ethereum/remix/pulls/130"}}},"pull_request":{"url":"https://api.github.com/repos/ethereum/remix/pulls/130","id":91595371,"html_url":"https://github.com/ethereum/remix/pull/130","diff_url":"https://github.com/ethereum/remix/pull/130.diff","patch_url":"https://github.com/ethereum/remix/pull/130.patch","issue_url":"https://api.github.com/repos/ethereum/remix/issues/130","number":130,"state":"open","locked":false,"title":"Extract state info from AST","user":{"login":"yann300","id":6940742,"avatar_url":"https://avatars.githubusercontent.com/u/6940742?v=3","gravatar_id":"","url":"https://api.github.com/users/yann300","html_url":"https://github.com/yann300","followers_url":"https://api.github.com/users/yann300/followers","following_url":"https://api.github.com/users/yann300/following{/other_user}","gists_url":"https://api.github.com/users/yann300/gists{/gist_id}","starred_url":"https://api.github.com/users/yann300/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yann300/subscriptions","organizations_url":"https://api.github.com/users/yann300/orgs","repos_url":"https://api.github.com/users/yann300/repos","events_url":"https://api.github.com/users/yann300/events{/privacy}","received_events_url":"https://api.github.com/users/yann300/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-10-31T11:43:11Z","updated_at":"2016-11-09T15:44:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":"841dea8ccc67314618b97417ffec12714bd81dec","assignee":{"login":"yann300","id":6940742,"avatar_url":"https://avatars.githubusercontent.com/u/6940742?v=3","gravatar_id":"","url":"https://api.github.com/users/yann300","html_url":"https://github.com/yann300","followers_url":"https://api.github.com/users/yann300/followers","following_url":"https://api.github.com/users/yann300/following{/other_user}","gists_url":"https://api.github.com/users/yann300/gists{/gist_id}","starred_url":"https://api.github.com/users/yann300/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yann300/subscriptions","organizations_url":"https://api.github.com/users/yann300/orgs","repos_url":"https://api.github.com/users/yann300/repos","events_url":"https://api.github.com/users/yann300/events{/privacy}","received_events_url":"https://api.github.com/users/yann300/received_events","type":"User","site_admin":false},"assignees":[{"login":"yann300","id":6940742,"avatar_url":"https://avatars.githubusercontent.com/u/6940742?v=3","gravatar_id":"","url":"https://api.github.com/users/yann300","html_url":"https://github.com/yann300","followers_url":"https://api.github.com/users/yann300/followers","following_url":"https://api.github.com/users/yann300/following{/other_user}","gists_url":"https://api.github.com/users/yann300/gists{/gist_id}","starred_url":"https://api.github.com/users/yann300/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yann300/subscriptions","organizations_url":"https://api.github.com/users/yann300/orgs","repos_url":"https://api.github.com/users/yann300/repos","events_url":"https://api.github.com/users/yann300/events{/privacy}","received_events_url":"https://api.github.com/users/yann300/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ethereum/remix/pulls/130/commits","review_comments_url":"https://api.github.com/repos/ethereum/remix/pulls/130/comments","review_comment_url":"https://api.github.com/repos/ethereum/remix/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ethereum/remix/issues/130/comments","statuses_url":"https://api.github.com/repos/ethereum/remix/statuses/679e24f279aa04637f840de6055dde1bb06412ae","head":{"label":"ethereum:storagedecoder","ref":"storagedecoder","sha":"679e24f279aa04637f840de6055dde1bb06412ae","user":{"login":"ethereum","id":6250754,"avatar_url":"https://avatars.githubusercontent.com/u/6250754?v=3","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"repo":{"id":55957418,"name":"remix","full_name":"ethereum/remix","owner":{"login":"ethereum","id":6250754,"avatar_url":"https://avatars.githubusercontent.com/u/6250754?v=3","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ethereum/remix","description":"Ethereum IDE and tools for the web","fork":false,"url":"https://api.github.com/repos/ethereum/remix","forks_url":"https://api.github.com/repos/ethereum/remix/forks","keys_url":"https://api.github.com/repos/ethereum/remix/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ethereum/remix/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ethereum/remix/teams","hooks_url":"https://api.github.com/repos/ethereum/remix/hooks","issue_events_url":"https://api.github.com/repos/ethereum/remix/issues/events{/number}","events_url":"https://api.github.com/repos/ethereum/remix/events","assignees_url":"https://api.github.com/repos/ethereum/remix/assignees{/user}","branches_url":"https://api.github.com/repos/ethereum/remix/branches{/branch}","tags_url":"https://api.github.com/repos/ethereum/remix/tags","blobs_url":"https://api.github.com/repos/ethereum/remix/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ethereum/remix/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ethereum/remix/git/refs{/sha}","trees_url":"https://api.github.com/repos/ethereum/remix/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ethereum/remix/statuses/{sha}","languages_url":"https://api.github.com/repos/ethereum/remix/languages","stargazers_url":"https://api.github.com/repos/ethereum/remix/stargazers","contributors_url":"https://api.github.com/repos/ethereum/remix/contributors","subscribers_url":"https://api.github.com/repos/ethereum/remix/subscribers","subscription_url":"https://api.github.com/repos/ethereum/remix/subscription","commits_url":"https://api.github.com/repos/ethereum/remix/commits{/sha}","git_commits_url":"https://api.github.com/repos/ethereum/remix/git/commits{/sha}","comments_url":"https://api.github.com/repos/ethereum/remix/comments{/number}","issue_comment_url":"https://api.github.com/repos/ethereum/remix/issues/comments{/number}","contents_url":"https://api.github.com/repos/ethereum/remix/contents/{+path}","compare_url":"https://api.github.com/repos/ethereum/remix/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ethereum/remix/merges","archive_url":"https://api.github.com/repos/ethereum/remix/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ethereum/remix/downloads","issues_url":"https://api.github.com/repos/ethereum/remix/issues{/number}","pulls_url":"https://api.github.com/repos/ethereum/remix/pulls{/number}","milestones_url":"https://api.github.com/repos/ethereum/remix/milestones{/number}","notifications_url":"https://api.github.com/repos/ethereum/remix/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ethereum/remix/labels{/name}","releases_url":"https://api.github.com/repos/ethereum/remix/releases{/id}","deployments_url":"https://api.github.com/repos/ethereum/remix/deployments","created_at":"2016-04-11T09:05:03Z","updated_at":"2016-11-09T07:58:33Z","pushed_at":"2016-11-09T15:22:37Z","git_url":"git://github.com/ethereum/remix.git","ssh_url":"git@github.com:ethereum/remix.git","clone_url":"https://github.com/ethereum/remix.git","svn_url":"https://github.com/ethereum/remix","homepage":null,"size":560,"stargazers_count":65,"watchers_count":65,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":25,"mirror_url":null,"open_issues_count":21,"forks":25,"open_issues":21,"watchers":65,"default_branch":"master"}},"base":{"label":"ethereum:master","ref":"master","sha":"54581749e36144db5c615481e59688a6e8a89cd6","user":{"login":"ethereum","id":6250754,"avatar_url":"https://avatars.githubusercontent.com/u/6250754?v=3","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"repo":{"id":55957418,"name":"remix","full_name":"ethereum/remix","owner":{"login":"ethereum","id":6250754,"avatar_url":"https://avatars.githubusercontent.com/u/6250754?v=3","gravatar_id":"","url":"https://api.github.com/users/ethereum","html_url":"https://github.com/ethereum","followers_url":"https://api.github.com/users/ethereum/followers","following_url":"https://api.github.com/users/ethereum/following{/other_user}","gists_url":"https://api.github.com/users/ethereum/gists{/gist_id}","starred_url":"https://api.github.com/users/ethereum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ethereum/subscriptions","organizations_url":"https://api.github.com/users/ethereum/orgs","repos_url":"https://api.github.com/users/ethereum/repos","events_url":"https://api.github.com/users/ethereum/events{/privacy}","received_events_url":"https://api.github.com/users/ethereum/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ethereum/remix","description":"Ethereum IDE and tools for the web","fork":false,"url":"https://api.github.com/repos/ethereum/remix","forks_url":"https://api.github.com/repos/ethereum/remix/forks","keys_url":"https://api.github.com/repos/ethereum/remix/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ethereum/remix/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ethereum/remix/teams","hooks_url":"https://api.github.com/repos/ethereum/remix/hooks","issue_events_url":"https://api.github.com/repos/ethereum/remix/issues/events{/number}","events_url":"https://api.github.com/repos/ethereum/remix/events","assignees_url":"https://api.github.com/repos/ethereum/remix/assignees{/user}","branches_url":"https://api.github.com/repos/ethereum/remix/branches{/branch}","tags_url":"https://api.github.com/repos/ethereum/remix/tags","blobs_url":"https://api.github.com/repos/ethereum/remix/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ethereum/remix/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ethereum/remix/git/refs{/sha}","trees_url":"https://api.github.com/repos/ethereum/remix/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ethereum/remix/statuses/{sha}","languages_url":"https://api.github.com/repos/ethereum/remix/languages","stargazers_url":"https://api.github.com/repos/ethereum/remix/stargazers","contributors_url":"https://api.github.com/repos/ethereum/remix/contributors","subscribers_url":"https://api.github.com/repos/ethereum/remix/subscribers","subscription_url":"https://api.github.com/repos/ethereum/remix/subscription","commits_url":"https://api.github.com/repos/ethereum/remix/commits{/sha}","git_commits_url":"https://api.github.com/repos/ethereum/remix/git/commits{/sha}","comments_url":"https://api.github.com/repos/ethereum/remix/comments{/number}","issue_comment_url":"https://api.github.com/repos/ethereum/remix/issues/comments{/number}","contents_url":"https://api.github.com/repos/ethereum/remix/contents/{+path}","compare_url":"https://api.github.com/repos/ethereum/remix/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ethereum/remix/merges","archive_url":"https://api.github.com/repos/ethereum/remix/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ethereum/remix/downloads","issues_url":"https://api.github.com/repos/ethereum/remix/issues{/number}","pulls_url":"https://api.github.com/repos/ethereum/remix/pulls{/number}","milestones_url":"https://api.github.com/repos/ethereum/remix/milestones{/number}","notifications_url":"https://api.github.com/repos/ethereum/remix/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ethereum/remix/labels{/name}","releases_url":"https://api.github.com/repos/ethereum/remix/releases{/id}","deployments_url":"https://api.github.com/repos/ethereum/remix/deployments","created_at":"2016-04-11T09:05:03Z","updated_at":"2016-11-09T07:58:33Z","pushed_at":"2016-11-09T15:22:37Z","git_url":"git://github.com/ethereum/remix.git","ssh_url":"git@github.com:ethereum/remix.git","clone_url":"https://github.com/ethereum/remix.git","svn_url":"https://github.com/ethereum/remix","homepage":null,"size":560,"stargazers_count":65,"watchers_count":65,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":25,"mirror_url":null,"open_issues_count":21,"forks":25,"open_issues":21,"watchers":65,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ethereum/remix/pulls/130"},"html":{"href":"https://github.com/ethereum/remix/pull/130"},"issue":{"href":"https://api.github.com/repos/ethereum/remix/issues/130"},"comments":{"href":"https://api.github.com/repos/ethereum/remix/issues/130/comments"},"review_comments":{"href":"https://api.github.com/repos/ethereum/remix/pulls/130/comments"},"review_comment":{"href":"https://api.github.com/repos/ethereum/remix/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ethereum/remix/pulls/130/commits"},"statuses":{"href":"https://api.github.com/repos/ethereum/remix/statuses/679e24f279aa04637f840de6055dde1bb06412ae"}}}}
{"actor":{"display_login":"chriseth"}}