<commit_before>{
  "dependencies": {
    "proto": {
      "oppiaMlProto": {
        "version": "0.0.0",
        "downloadFormat": "zip",
        "url": "https://github.com/oppia/oppia-ml-proto/archive/0.0.0.zip",
        "rootDirPrefix": "oppia-ml-proto-",
        "targetDirPrefix": "oppia-ml-proto-"
      }
    },
    "frontend": {
      "angular": {
        "version": "1.8.2",
        "downloadFormat": "files",
        "url": "https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2",
        "targetDirPrefix": "angularjs-",
        "files": [
          "angular.js", "angular.min.js", "angular.min.js.map", "angular-animate.js",
          "angular-animate.min.js", "angular-animate.min.js.map", "angular-resource.js",
          "angular-resource.min.js", "angular-resource.min.js.map", "angular-route.js",
          "angular-route.min.js", "angular-route.min.js.map", "angular-sanitize.js",
          "angular-sanitize.min.js", "angular-sanitize.min.js.map", "angular-aria.js",
          "angular-aria.min.js", "angular-aria.min.js.map", "angular-touch.js",
          "angular-touch.min.js", "angular-touch.min.js.map"
        ],
        "bundle": {
          "js": [
            "angular-animate.js", "angular-sanitize.js",
            "angular-touch.js", "angular-aria.js"
          ]
        }
      },
      "lamejs": {
        "version": "1.2.0",
        "downloadFormat": "zip",
        "url": "https://github.com/zhuker/lamejs/archive/1.2.0.zip",
        "rootDirPrefix": "lamejs-",
        "targetDirPrefix": "lamejs-"
      },
      "angularTest": {
        "version": "1.8.2",
        "downloadFormat": "files",
        "url": "https://code.angularjs.org/1.8.2",
        "targetDirPrefix": "angularjs-",
        "files": ["angular-mocks.js"]
      },
      "angularTranslate": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1",
        "rootDirPrefix": "bower-angular-translate-",
        "targetDirPrefix": "bower-angular-translate-",
        "files": ["angular-translate.min.js"],
        "bundle": {
          "js": ["angular-translate.min.js"]
        }
      },
      "angularTranslateLoader": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-loader-static-files",
        "rootDirPrefix": "bower-angular-translate-loader-static-files-",
        "targetDirPrefix": "bower-angular-translate-loader-static-files-",
        "files": ["angular-translate-loader-static-files.min.js"],
        "bundle": {
          "js": ["angular-translate-loader-static-files.min.js"]
        }
      },
      "angularDragAndDrop": {
        "version": "2.1.0",
        "downloadFormat": "zip",
        "url": "https://github.com/marceljuenemann/angular-drag-and-drop-lists/archive/2.1.0.zip",
        "rootDirPrefix": "angular-drag-and-drop-lists-",
        "targetDirPrefix": "angular-drag-and-drop-lists-"
      },
      "angularStorageCookiesRev": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-storage-cookie",
        "rootDirPrefix": "bower-angular-translate-storage-cookie-",
        "targetDirPrefix": "bower-angular-translate-storage-cookie-",
        "files": ["angular-translate-storage-cookie.min.js"],
        "bundle": {
          "js": ["angular-translate-storage-cookie.min.js"]
        }
      },
      "messageFormat": {
        "version": "2.0.5",
        "downloadFormat": "zip",
        "url": "https://github.com/messageformat/messageformat/archive/v2.0.5.zip",
        "targetDirPrefix": "messageformat-",
        "rootDirPrefix": "messageformat-",
        "bundle": {
          "js": ["messageformat.js"]
        }
      },
      "angularTranslateInterpolationMessageFormat": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-interpolation-messageformat",
        "rootDirPrefix": "bower-angular-translate-interpolation-messageformat-",
        "targetDirPrefix": "bower-angular-translate-interpolation-messageformat-",
        "files": ["angular-translate-interpolation-messageformat.min.js"],
        "bundle": {
          "js": ["angular-translate-interpolation-messageformat.min.js"]
        }
      },
      "popperJs": {
        "version": "1.15.0",
        "downloadFormat": "zip",
        "url": "https://github.com/floating-ui/floating-ui/archive/v1.15.0.zip",
        "rootDirPrefix": "floating-ui-",
        "targetDirPrefix": "popperJs-",
        "bundle": {
          "js": ["dist/umd/popper.js"]
        }
      },
      "bootstrap": {
        "version": "4.3.1",
        "downloadFormat": "zip",
        "url": "https://github.com/twbs/bootstrap/releases/download/v4.3.1/bootstrap-4.3.1-dist.zip",
        "rootDir": "bootstrap-4.3.1-dist",
        "targetDirPrefix": "bootstrap-",
        "bundle": {
          "css": ["css/bootstrap.css"],
          "js": ["js/bootstrap.js"]
        }
      },
      "bowerAngularTranslateLoaderPartial": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-loader-partial",
        "rootDirPrefix": "bower-angular-translate-loader-partial-",
        "targetDirPrefix": "bower-angular-translate-loader-partial-",
        "files": ["angular-translate-loader-partial.min.js"],
        "bundle": {
          "js": ["angular-translate-loader-partial.min.js"]
        }
      },
      "bowerMaterial": {
        "version": "1.1.19",
        "downloadFormat": "zip",
        "url": "https://github.com/angular/bower-material/archive/v1.1.19.zip",
        "rootDirPrefix": "bower-material-",
        "targetDirPrefix": "bower-material-",
        "files": ["angular-material.css", "angular-material.js"],
        "bundle": {
          "css": ["angular-material.css"],
          "js": ["angular-material.js"]
        }
      },
      "codemirror": {
        "version": "5.17.0",
        "downloadFormat": "zip",
        "url": "https://github.com/codemirror/CodeMirror/archive/5.17.0.zip",
        "rootDirPrefix": "CodeMirror-",
        "targetDirPrefix": "code-mirror-",
        "bundle": {
          "css": ["lib/codemirror.css", "addon/merge/merge.css"]
        }
      },
      "diff-match-patch": {
        "version": "1.0.0",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/diff_match_patch/20121119",
        "targetDirPrefix": "diff-match-patch-",
        "files": ["diff_match_patch.js"]
      },
      "fontAwesome": {
        "version": "5.9.0",
        "downloadFormat": "zip",
        "url": "https://github.com/FortAwesome/Font-Awesome/releases/download/5.9.0/fontawesome-free-5.9.0-web.zip",
        "rootDir": "fontawesome-free-5.9.0-web",
        "targetDir": "fontawesome-free-5.9.0-web",
        "bundle": {
          "css": [
            "css/fontawesome.min.css",
            "css/brands.min.css",
            "css/regular.min.css",<commit_msg>Fix codemirror (#15555)<commit_after>{
  "dependencies": {
    "proto": {
      "oppiaMlProto": {
        "version": "0.0.0",
        "downloadFormat": "zip",
        "url": "https://github.com/oppia/oppia-ml-proto/archive/0.0.0.zip",
        "rootDirPrefix": "oppia-ml-proto-",
        "targetDirPrefix": "oppia-ml-proto-"
      }
    },
    "frontend": {
      "angular": {
        "version": "1.8.2",
        "downloadFormat": "files",
        "url": "https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2",
        "targetDirPrefix": "angularjs-",
        "files": [
          "angular.js", "angular.min.js", "angular.min.js.map", "angular-animate.js",
          "angular-animate.min.js", "angular-animate.min.js.map", "angular-resource.js",
          "angular-resource.min.js", "angular-resource.min.js.map", "angular-route.js",
          "angular-route.min.js", "angular-route.min.js.map", "angular-sanitize.js",
          "angular-sanitize.min.js", "angular-sanitize.min.js.map", "angular-aria.js",
          "angular-aria.min.js", "angular-aria.min.js.map", "angular-touch.js",
          "angular-touch.min.js", "angular-touch.min.js.map"
        ],
        "bundle": {
          "js": [
            "angular-animate.js", "angular-sanitize.js",
            "angular-touch.js", "angular-aria.js"
          ]
        }
      },
      "lamejs": {
        "version": "1.2.0",
        "downloadFormat": "zip",
        "url": "https://github.com/zhuker/lamejs/archive/1.2.0.zip",
        "rootDirPrefix": "lamejs-",
        "targetDirPrefix": "lamejs-"
      },
      "angularTest": {
        "version": "1.8.2",
        "downloadFormat": "files",
        "url": "https://code.angularjs.org/1.8.2",
        "targetDirPrefix": "angularjs-",
        "files": ["angular-mocks.js"]
      },
      "angularTranslate": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1",
        "rootDirPrefix": "bower-angular-translate-",
        "targetDirPrefix": "bower-angular-translate-",
        "files": ["angular-translate.min.js"],
        "bundle": {
          "js": ["angular-translate.min.js"]
        }
      },
      "angularTranslateLoader": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-loader-static-files",
        "rootDirPrefix": "bower-angular-translate-loader-static-files-",
        "targetDirPrefix": "bower-angular-translate-loader-static-files-",
        "files": ["angular-translate-loader-static-files.min.js"],
        "bundle": {
          "js": ["angular-translate-loader-static-files.min.js"]
        }
      },
      "angularDragAndDrop": {
        "version": "2.1.0",
        "downloadFormat": "zip",
        "url": "https://github.com/marceljuenemann/angular-drag-and-drop-lists/archive/2.1.0.zip",
        "rootDirPrefix": "angular-drag-and-drop-lists-",
        "targetDirPrefix": "angular-drag-and-drop-lists-"
      },
      "angularStorageCookiesRev": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-storage-cookie",
        "rootDirPrefix": "bower-angular-translate-storage-cookie-",
        "targetDirPrefix": "bower-angular-translate-storage-cookie-",
        "files": ["angular-translate-storage-cookie.min.js"],
        "bundle": {
          "js": ["angular-translate-storage-cookie.min.js"]
        }
      },
      "messageFormat": {
        "version": "2.0.5",
        "downloadFormat": "zip",
        "url": "https://github.com/messageformat/messageformat/archive/v2.0.5.zip",
        "targetDirPrefix": "messageformat-",
        "rootDirPrefix": "messageformat-",
        "bundle": {
          "js": ["messageformat.js"]
        }
      },
      "angularTranslateInterpolationMessageFormat": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-interpolation-messageformat",
        "rootDirPrefix": "bower-angular-translate-interpolation-messageformat-",
        "targetDirPrefix": "bower-angular-translate-interpolation-messageformat-",
        "files": ["angular-translate-interpolation-messageformat.min.js"],
        "bundle": {
          "js": ["angular-translate-interpolation-messageformat.min.js"]
        }
      },
      "popperJs": {
        "version": "1.15.0",
        "downloadFormat": "zip",
        "url": "https://github.com/floating-ui/floating-ui/archive/v1.15.0.zip",
        "rootDirPrefix": "floating-ui-",
        "targetDirPrefix": "popperJs-",
        "bundle": {
          "js": ["dist/umd/popper.js"]
        }
      },
      "bootstrap": {
        "version": "4.3.1",
        "downloadFormat": "zip",
        "url": "https://github.com/twbs/bootstrap/releases/download/v4.3.1/bootstrap-4.3.1-dist.zip",
        "rootDir": "bootstrap-4.3.1-dist",
        "targetDirPrefix": "bootstrap-",
        "bundle": {
          "css": ["css/bootstrap.css"],
          "js": ["js/bootstrap.js"]
        }
      },
      "bowerAngularTranslateLoaderPartial": {
        "version": "2.18.1",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/angular-translate/2.18.1/angular-translate-loader-partial",
        "rootDirPrefix": "bower-angular-translate-loader-partial-",
        "targetDirPrefix": "bower-angular-translate-loader-partial-",
        "files": ["angular-translate-loader-partial.min.js"],
        "bundle": {
          "js": ["angular-translate-loader-partial.min.js"]
        }
      },
      "bowerMaterial": {
        "version": "1.1.19",
        "downloadFormat": "zip",
        "url": "https://github.com/angular/bower-material/archive/v1.1.19.zip",
        "rootDirPrefix": "bower-material-",
        "targetDirPrefix": "bower-material-",
        "files": ["angular-material.css", "angular-material.js"],
        "bundle": {
          "css": ["angular-material.css"],
          "js": ["angular-material.js"]
        }
      },
      "codemirror": {
        "version": "5.17.0",
        "downloadFormat": "zip",
        "url": "https://github.com/codemirror/CodeMirror/archive/5.17.0.zip",
        "rootDirPrefix": "codemirror5-",
        "targetDirPrefix": "code-mirror-",
        "bundle": {
          "css": ["lib/codemirror.css", "addon/merge/merge.css"]
        }
      },
      "diff-match-patch": {
        "version": "1.0.0",
        "downloadFormat": "files",
        "url": "https://cdnjs.cloudflare.com/ajax/libs/diff_match_patch/20121119",
        "targetDirPrefix": "diff-match-patch-",
        "files": ["diff_match_patch.js"]
      },
      "fontAwesome": {
        "version": "5.9.0",
        "downloadFormat": "zip",
        "url": "https://github.com/FortAwesome/Font-Awesome/releases/download/5.9.0/fontawesome-free-5.9.0-web.zip",
        "rootDir": "fontawesome-free-5.9.0-web",
        "targetDir": "fontawesome-free-5.9.0-web",
        "bundle": {
          "css": [
            "css/fontawesome.min.css",
            "css/brands.min.css",
            "css/regular.min.css",
{'fraction_non_alphanumeric': 0.19729113399212217, 'fraction_numerical': 0.019487250362794556, 'mean_word_length': 2.229636241910288, 'pattern_counts': {'":': 274, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 34, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 38, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6370863', 'n_tokens_mistral': 4917, 'n_tokens_neox': 4804, 'n_words': 541}