{"action":"created","comment":{"url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/comments/32813242","id":32813242,"diff_hunk":"@@ -292,204 +134,103 @@ Dash.dependencies.BaseURLExtensions = function () {\n             self.log(\"Perform init search: \" + info.url);\n         },\n \n-        findSIDX = function (data, info, representation, callback) {\n-            var segments,\n-                d = new DataView(data),\n+        loadSegments = function (representation, type, theRange, loadingInfo, callback) {\n+            var self = this,\n+                hasRange = theRange !== null,\n                 request = new XMLHttpRequest(),\n-                pos = 0,\n-                type = \"\",\n-                size = 0,\n-                bytesAvailable,\n-                sidxBytes,\n-                sidxSlice,\n-                sidxOut,\n-                i,\n-                c,\n-                needFailureReport = true,\n-                parsed,\n-                ref,\n-                loadMultiSidx = false,\n-                self = this;\n-\n-            self.log(\"Searching for SIDX box.\");\n-            self.log(info.bytesLoaded + \" bytes loaded.\");\n-\n-            while (type !== \"sidx\" && pos < d.byteLength) {\n-                size = d.getUint32(pos); // subtract 8 for including the size and type\n-                pos += 4;\n-\n-                type = \"\";\n-                for (i = 0; i < 4; i += 1) {\n-                    c = d.getInt8(pos);\n-                    type += String.fromCharCode(c);\n-                    pos += 1;\n-                }\n-\n-                if (type !== \"sidx\") {\n-                    pos += size - 8;\n-                }\n-            }\n-\n-            bytesAvailable = d.byteLength - pos;\n-\n-            if (type !== \"sidx\") {\n-                // Case 1\n-                // We didn't download enough bytes to find the sidx.\n-                // TODO : Load more bytes.\n-                //        Be sure to detect EOF.\n-                //        Throw error is no sidx is found in the entire file.\n-                //        Protection from loading the entire file?\n-                callback.call(self);\n-            } else if (bytesAvailable < (size - 8)) {\n-                // Case 2\n-                // We don't have the entire box.\n-                // Increase the number of bytes to read and load again.\n-                self.log(\"Found SIDX but we don't have all of it.\");\n-\n-                info.range.start = 0;\n-                info.range.end = info.bytesLoaded + (size - bytesAvailable);\n-\n-                request.onload = function () {\n-                    if (request.status < 200 || request.status > 299)\n-                    {\n-                      return;\n-                    }\n-                    needFailureReport = false;\n-\n-                    info.bytesLoaded = info.range.end;\n-                    findSIDX.call(self, request.response, info, representation, callback);\n-                };\n-\n-                request.onloadend = request.onerror = function () {\n-                    if (!needFailureReport)\n-                    {\n-                      return;\n-                    }\n-                    needFailureReport = false;\n-\n-                    self.errHandler.downloadError(\"SIDX\", info.url, request);\n-                    callback.call(self);\n-                };\n-\n-                sendRequest.call(self, request, info);\n-            } else {\n-                // Case 3\n-                // We have the entire box, so parse it and continue.\n-                info.range.start = pos - 8;\n-                info.range.end = info.range.start + size;\n-\n-                self.log(\"Found the SIDX box.  Start: \" + info.range.start + \" | End: \" + info.range.end);\n-//                sidxBytes = data.slice(info.range.start, info.range.end);\n-                sidxBytes = new ArrayBuffer(info.range.end - info.range.start);\n-                sidxOut = new Uint8Array(sidxBytes);\n-                sidxSlice = new Uint8Array(data, info.range.start, info.range.end - info.range.start);\n-                sidxOut.set(sidxSlice);\n-\n-                parsed = this.parseSIDX.call(this, sidxBytes, info.range.start);\n-\n-                // We need to check to see if we are loading multiple sidx.\n-                // For now just check the first reference and assume they are all the same.\n-                // TODO : Can the referenceTypes be mixed?\n-                // TODO : Load them all now, or do it as needed?\n-\n-                ref = parsed.references;\n-                if (ref !== null && ref !== undefined && ref.length > 0) {\n-                    loadMultiSidx = (ref[0].type === 1);\n-                }\n-\n-                if (loadMultiSidx) {\n-                    self.log(\"Initiate multiple SIDX load.\");\n-\n-                    var j, len, ss, se, r, segs = [],\n-                        count = 0,\n-                        tmpCallback = function(segments) {\n-                            if (segments) {\n-                                segs = segs.concat(segments);\n-                                count += 1;\n-\n-                                if (count >= len) {\n-                                    callback.call(self, segs);\n-                                }\n-                            } else {\n-                                callback.call(self);\n-                            }\n-                        };\n-\n-                    for (j = 0, len = ref.length; j < len; j += 1) {\n-                        ss = ref[j].offset;\n-                        se = ref[j].offset + ref[j].size - 1;\n-                        r = ss + \"-\" + se;\n-\n-                        loadSegments.call(self, representation, null, r, tmpCallback);\n-                    }\n-\n-                } else {\n-                    self.log(\"Parsing segments from SIDX.\");\n-                    segments = parseSegments.call(self, sidxBytes, info.url, info.range.start);\n-                    callback.call(self, segments);\n-                }\n-            }\n-        },\n-\n-        loadSegments = function (representation, type, theRange, callback) {\n-            var request = new XMLHttpRequest(),\n-                segments,\n-                parts,\n                 media = representation.adaptation.period.mpd.manifest.Period_asArray[representation.adaptation.period.index].\n                     AdaptationSet_asArray[representation.adaptation.index].Representation_asArray[representation.index].BaseURL,\n                 needFailureReport = true,\n-                self = this,\n+                isoFile = null,\n+                sidx = null,\n                 info = {\n                     url: media,\n-                    range: {},\n-                    searching: false,\n-                    bytesLoaded: 0,\n+                    range: hasRange ? theRange : {start: 0, end: 1500},\n+                    searching: !hasRange,\n+                    bytesLoaded: loadingInfo ? loadingInfo.bytesLoaded : 0,\n                     bytesToLoad: 1500,\n                     request: request\n                 };\n \n-            // We might not know exactly where the sidx box is.\n-            // Load the first n bytes (say 1500) and look for it.\n-            if (theRange === null) {\n-                self.log(\"No known range for SIDX request.\");\n-                info.searching = true;\n-                info.range.start = 0;\n-                info.range.end = info.bytesToLoad;\n-            } else {\n-                parts = theRange.split(\"-\");\n-                info.range.start = parseFloat(parts[0]);\n-                info.range.end = parseFloat(parts[1]);\n-            }\n-\n             request.onload = function () {\n-                if (request.status < 200 || request.status > 299)\n-                {\n-                  return;\n-                }\n-                needFailureReport = false;\n+                if (request.status < 200 || request.status > 299) return;\n \n-                // If we didn't know where the SIDX box was, we have to look for it.\n-                // Iterate over the data checking out the boxes to find it.\n-                if (info.searching) {\n-                    info.bytesLoaded = info.range.end;\n-                    findSIDX.call(self, request.response, info, representation, function (segments) {\n-                        if (segments) {\n-                            callback.call(self, segments, representation, type);\n+                var extraBytes = info.bytesToLoad,\n+                    loadedLength = request.response.byteLength;\n+\n+                needFailureReport = false;\n+                info.bytesLoaded = info.range.end - info.range.start;\n+                isoFile = self.boxParser.parse(request.response);\n+                sidx = isoFile.getBox(\"sidx\");\n+\n+                if (!sidx || !sidx.isComplete) {\n+                    if (sidx) {\n+                        info.range.start = sidx.offset || info.range.start;\n+                        info.range.end = info.range.start + (sidx.size || extraBytes);\n+                    } else if (loadedLength < info.bytesLoaded) {\n+                        // if we have reached a search limit or if we have reached the end of the file we have to stop trying to find sidx\n+                        callback.call(self, null, representation, type);\n+                        return;\n+                    } else {\n+                        var lastBox = isoFile.getLastBox();\n+\n+                        if (lastBox && lastBox.size) {\n+                            info.range.start = lastBox.offset + lastBox.size;\n+                            info.range.end = info.range.start + extraBytes;\n+                        } else {\n+                            info.range.end += extraBytes;\n                         }\n-                    });\n+                    }\n+                    loadSegments.call(self, representation, type, info.range, info, callback);\n                 } else {\n-                    segments = parseSegments.call(self, request.response, info.url, info.range.start);\n-                    callback.call(self, segments, representation, type);\n+                    var ref = sidx.references,\n+                        loadMultiSidx,\n+                        segments;\n+\n+                    if (ref !== null && ref !== undefined && ref.length > 0) {\n+                        loadMultiSidx = (ref[0].reference_type === 1);\n+                    }\n+\n+                    if (loadMultiSidx) {\n+                        self.log(\"Initiate multiple SIDX load.\");\n+                        info.range.end = info.range.start + sidx.size;\n+\n+                        var j, len, ss, se, r, segs = [],\n+                            count = 0,\n+                            offset = (sidx.offset || info.range.start) + sidx.size,\n+                            tmpCallback = function(segments) {\n+                                if (segments) {","path":"src/dash/extensions/BaseURLExtensions.js","position":552,"original_position":552,"commit_id":"e19a2eeea9f514f852bbe97695c0af60d4626890","original_commit_id":"e19a2eeea9f514f852bbe97695c0af60d4626890","user":{"login":"JibberJim","id":5435022,"avatar_url":"https://avatars.githubusercontent.com/u/5435022?v=3","gravatar_id":"","url":"https://api.github.com/users/JibberJim","html_url":"https://github.com/JibberJim","followers_url":"https://api.github.com/users/JibberJim/followers","following_url":"https://api.github.com/users/JibberJim/following{/other_user}","gists_url":"https://api.github.com/users/JibberJim/gists{/gist_id}","starred_url":"https://api.github.com/users/JibberJim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JibberJim/subscriptions","organizations_url":"https://api.github.com/users/JibberJim/orgs","repos_url":"https://api.github.com/users/JibberJim/repos","events_url":"https://api.github.com/users/JibberJim/events{/privacy}","received_events_url":"https://api.github.com/users/JibberJim/received_events","type":"User","site_admin":false},"body":"Can we rename segments here in the callback to not hide / override segments in the outside?  Inverting segs / segments is probably enough.","created_at":"2015-06-19T09:16:39Z","updated_at":"2015-06-19T09:16:39Z","html_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/594#discussion_r32813242","pull_request_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594","_links":{"self":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/comments/32813242"},"html":{"href":"https://github.com/Dash-Industry-Forum/dash.js/pull/594#discussion_r32813242"},"pull_request":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594"}}},"pull_request":{"url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594","id":38086846,"html_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/594","diff_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/594.diff","patch_url":"https://github.com/Dash-Industry-Forum/dash.js/pull/594.patch","issue_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/594","number":594,"state":"open","locked":false,"title":"Integrates codem isoboxer into dash.js","user":{"login":"KozhinM","id":1681697,"avatar_url":"https://avatars.githubusercontent.com/u/1681697?v=3","gravatar_id":"","url":"https://api.github.com/users/KozhinM","html_url":"https://github.com/KozhinM","followers_url":"https://api.github.com/users/KozhinM/followers","following_url":"https://api.github.com/users/KozhinM/following{/other_user}","gists_url":"https://api.github.com/users/KozhinM/gists{/gist_id}","starred_url":"https://api.github.com/users/KozhinM/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KozhinM/subscriptions","organizations_url":"https://api.github.com/users/KozhinM/orgs","repos_url":"https://api.github.com/users/KozhinM/repos","events_url":"https://api.github.com/users/KozhinM/events{/privacy}","received_events_url":"https://api.github.com/users/KozhinM/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-06-19T08:32:42Z","updated_at":"2015-06-19T09:16:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8352fc1ad1548d635c9c97c02b8166f4104b913d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594/commits","review_comments_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594/comments","review_comment_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/594/comments","statuses_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/statuses/e19a2eeea9f514f852bbe97695c0af60d4626890","head":{"label":"MSOpenTech:box-parsing-codem-isoboxer","ref":"box-parsing-codem-isoboxer","sha":"e19a2eeea9f514f852bbe97695c0af60d4626890","user":{"login":"MSOpenTech","id":1638184,"avatar_url":"https://avatars.githubusercontent.com/u/1638184?v=3","gravatar_id":"","url":"https://api.github.com/users/MSOpenTech","html_url":"https://github.com/MSOpenTech","followers_url":"https://api.github.com/users/MSOpenTech/followers","following_url":"https://api.github.com/users/MSOpenTech/following{/other_user}","gists_url":"https://api.github.com/users/MSOpenTech/gists{/gist_id}","starred_url":"https://api.github.com/users/MSOpenTech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MSOpenTech/subscriptions","organizations_url":"https://api.github.com/users/MSOpenTech/orgs","repos_url":"https://api.github.com/users/MSOpenTech/repos","events_url":"https://api.github.com/users/MSOpenTech/events{/privacy}","received_events_url":"https://api.github.com/users/MSOpenTech/received_events","type":"Organization","site_admin":false},"repo":{"id":9761214,"name":"dash.js","full_name":"MSOpenTech/dash.js","owner":{"login":"MSOpenTech","id":1638184,"avatar_url":"https://avatars.githubusercontent.com/u/1638184?v=3","gravatar_id":"","url":"https://api.github.com/users/MSOpenTech","html_url":"https://github.com/MSOpenTech","followers_url":"https://api.github.com/users/MSOpenTech/followers","following_url":"https://api.github.com/users/MSOpenTech/following{/other_user}","gists_url":"https://api.github.com/users/MSOpenTech/gists{/gist_id}","starred_url":"https://api.github.com/users/MSOpenTech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MSOpenTech/subscriptions","organizations_url":"https://api.github.com/users/MSOpenTech/orgs","repos_url":"https://api.github.com/users/MSOpenTech/repos","events_url":"https://api.github.com/users/MSOpenTech/events{/privacy}","received_events_url":"https://api.github.com/users/MSOpenTech/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/MSOpenTech/dash.js","description":"A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.","fork":true,"url":"https://api.github.com/repos/MSOpenTech/dash.js","forks_url":"https://api.github.com/repos/MSOpenTech/dash.js/forks","keys_url":"https://api.github.com/repos/MSOpenTech/dash.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/MSOpenTech/dash.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/MSOpenTech/dash.js/teams","hooks_url":"https://api.github.com/repos/MSOpenTech/dash.js/hooks","issue_events_url":"https://api.github.com/repos/MSOpenTech/dash.js/issues/events{/number}","events_url":"https://api.github.com/repos/MSOpenTech/dash.js/events","assignees_url":"https://api.github.com/repos/MSOpenTech/dash.js/assignees{/user}","branches_url":"https://api.github.com/repos/MSOpenTech/dash.js/branches{/branch}","tags_url":"https://api.github.com/repos/MSOpenTech/dash.js/tags","blobs_url":"https://api.github.com/repos/MSOpenTech/dash.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/MSOpenTech/dash.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/MSOpenTech/dash.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/MSOpenTech/dash.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/MSOpenTech/dash.js/statuses/{sha}","languages_url":"https://api.github.com/repos/MSOpenTech/dash.js/languages","stargazers_url":"https://api.github.com/repos/MSOpenTech/dash.js/stargazers","contributors_url":"https://api.github.com/repos/MSOpenTech/dash.js/contributors","subscribers_url":"https://api.github.com/repos/MSOpenTech/dash.js/subscribers","subscription_url":"https://api.github.com/repos/MSOpenTech/dash.js/subscription","commits_url":"https://api.github.com/repos/MSOpenTech/dash.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/MSOpenTech/dash.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/MSOpenTech/dash.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/MSOpenTech/dash.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/MSOpenTech/dash.js/contents/{+path}","compare_url":"https://api.github.com/repos/MSOpenTech/dash.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/MSOpenTech/dash.js/merges","archive_url":"https://api.github.com/repos/MSOpenTech/dash.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/MSOpenTech/dash.js/downloads","issues_url":"https://api.github.com/repos/MSOpenTech/dash.js/issues{/number}","pulls_url":"https://api.github.com/repos/MSOpenTech/dash.js/pulls{/number}","milestones_url":"https://api.github.com/repos/MSOpenTech/dash.js/milestones{/number}","notifications_url":"https://api.github.com/repos/MSOpenTech/dash.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/MSOpenTech/dash.js/labels{/name}","releases_url":"https://api.github.com/repos/MSOpenTech/dash.js/releases{/id}","created_at":"2013-04-30T00:38:21Z","updated_at":"2015-06-16T23:15:36Z","pushed_at":"2015-06-19T07:01:58Z","git_url":"git://github.com/MSOpenTech/dash.js.git","ssh_url":"git@github.com:MSOpenTech/dash.js.git","clone_url":"https://github.com/MSOpenTech/dash.js.git","svn_url":"https://github.com/MSOpenTech/dash.js","homepage":null,"size":14602,"stargazers_count":26,"watchers_count":26,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":12,"mirror_url":null,"open_issues_count":3,"forks":12,"open_issues":3,"watchers":26,"default_branch":"development"}},"base":{"label":"Dash-Industry-Forum:development","ref":"development","sha":"dd894338be2040a96752e7c96a867284809f8475","user":{"login":"Dash-Industry-Forum","id":2762280,"avatar_url":"https://avatars.githubusercontent.com/u/2762280?v=3","gravatar_id":"","url":"https://api.github.com/users/Dash-Industry-Forum","html_url":"https://github.com/Dash-Industry-Forum","followers_url":"https://api.github.com/users/Dash-Industry-Forum/followers","following_url":"https://api.github.com/users/Dash-Industry-Forum/following{/other_user}","gists_url":"https://api.github.com/users/Dash-Industry-Forum/gists{/gist_id}","starred_url":"https://api.github.com/users/Dash-Industry-Forum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dash-Industry-Forum/subscriptions","organizations_url":"https://api.github.com/users/Dash-Industry-Forum/orgs","repos_url":"https://api.github.com/users/Dash-Industry-Forum/repos","events_url":"https://api.github.com/users/Dash-Industry-Forum/events{/privacy}","received_events_url":"https://api.github.com/users/Dash-Industry-Forum/received_events","type":"Organization","site_admin":false},"repo":{"id":6621471,"name":"dash.js","full_name":"Dash-Industry-Forum/dash.js","owner":{"login":"Dash-Industry-Forum","id":2762280,"avatar_url":"https://avatars.githubusercontent.com/u/2762280?v=3","gravatar_id":"","url":"https://api.github.com/users/Dash-Industry-Forum","html_url":"https://github.com/Dash-Industry-Forum","followers_url":"https://api.github.com/users/Dash-Industry-Forum/followers","following_url":"https://api.github.com/users/Dash-Industry-Forum/following{/other_user}","gists_url":"https://api.github.com/users/Dash-Industry-Forum/gists{/gist_id}","starred_url":"https://api.github.com/users/Dash-Industry-Forum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Dash-Industry-Forum/subscriptions","organizations_url":"https://api.github.com/users/Dash-Industry-Forum/orgs","repos_url":"https://api.github.com/users/Dash-Industry-Forum/repos","events_url":"https://api.github.com/users/Dash-Industry-Forum/events{/privacy}","received_events_url":"https://api.github.com/users/Dash-Industry-Forum/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Dash-Industry-Forum/dash.js","description":"A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.","fork":false,"url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js","forks_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/forks","keys_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/teams","hooks_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/hooks","issue_events_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/events{/number}","events_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/events","assignees_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/assignees{/user}","branches_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/branches{/branch}","tags_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/tags","blobs_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/statuses/{sha}","languages_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/languages","stargazers_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/stargazers","contributors_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/contributors","subscribers_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/subscribers","subscription_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/subscription","commits_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/contents/{+path}","compare_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/merges","archive_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/downloads","issues_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues{/number}","pulls_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls{/number}","milestones_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/milestones{/number}","notifications_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/labels{/name}","releases_url":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/releases{/id}","created_at":"2012-11-09T22:28:37Z","updated_at":"2015-06-17T23:29:41Z","pushed_at":"2015-06-19T08:33:41Z","git_url":"git://github.com/Dash-Industry-Forum/dash.js.git","ssh_url":"git@github.com:Dash-Industry-Forum/dash.js.git","clone_url":"https://github.com/Dash-Industry-Forum/dash.js.git","svn_url":"https://github.com/Dash-Industry-Forum/dash.js","homepage":null,"size":17526,"stargazers_count":610,"watchers_count":610,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":324,"mirror_url":null,"open_issues_count":85,"forks":324,"open_issues":85,"watchers":610,"default_branch":"development"}},"_links":{"self":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594"},"html":{"href":"https://github.com/Dash-Industry-Forum/dash.js/pull/594"},"issue":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/594"},"comments":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/issues/594/comments"},"review_comments":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594/comments"},"review_comment":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/pulls/594/commits"},"statuses":{"href":"https://api.github.com/repos/Dash-Industry-Forum/dash.js/statuses/e19a2eeea9f514f852bbe97695c0af60d4626890"}}}}