<commit_before>/**
 * Copyright (C) 2016-2019 Lightbend Inc. <https://www.lightbend.com>
 */
import sbt.Keys._
import sbt._

object Dependencies {

  object Versions {
    // Version numbers

    // If you update the version of Play, you probably need to update the other Play* variables.
    // Also be sure to update PlayVersion in docs/build.sbt.
    val Play = "2.7.0-RC8"
    val PlayJson = "2.7.0-RC2"
    val PlayStandaloneWs = "2.0.0-RC2"
    val Twirl = "1.4.0-RC4"
    val PlayFileWatch = "1.1.8"

    // Also be sure to update AkkaVersion in docs/build.sbt.
    val Akka: String = sys.props.getOrElse("lagom.build.akka.version", "2.5.20")
    val AkkaHttp = "10.1.5"
    val Aeron = "1.12.0"

    // Also be sure to update ScalaVersion in docs/build.sbt.
    val Scala = Seq("2.12.8", "2.11.12")
    val SbtScala = Seq("2.10.7", "2.12.8")
    val AkkaPersistenceCassandra = "0.61"
    val AkkaPersistenceJdbc = "3.4.0"

    val Disruptor = "3.3.11"

    // Also be sure to update ScalaTestVersion in docs/build.sbt.
    val ScalaTest = "3.0.5"
    val Jackson = "2.9.7"
    val JacksonCore = Jackson
    val JacksonDatatype = Jackson
    val JacksonDatabind = Jackson
    val Guava = "27.0-jre"
    val Maven = "3.3.9"
    val Netty = "4.1.32.Final"
    val NettyReactiveStreams = "2.0.0"
    val Kafka = "2.1.0"
    val AlpakkaKafka = "1.0-RC1"
    val Curator = "2.12.0"
    val Immutables = "2.3.10"
    val HibernateCore = "5.3.7.Final"
    val PCollections = "2.2.0"

    val ScalaJava8Compat = "0.9.0"
    val ScalaXml = "1.1.1"
    val Slick = "3.2.3"
    // Also be sure to update JUnitVersion in docs/build.sbt.
    val JUnit = "4.12"
    // Also be sure to update JUnitInterfaceVersion in docs/build.sbt.
    val JUnitInterface = "0.11"

    val Slf4j = "1.7.25"
    val Logback = "1.2.3"
    // Also be sure to update Log4jVersion in docs/build.sbt.
    val Log4j = "2.11.1"

    val jetty = "9.4.12.v20180830"

    val Selenium = "3.141.59"

  }

  // Some setup before we start creating ModuleID vals
  private val slf4jApi = "org.slf4j" % "slf4j-api" % Versions.Slf4j
  private val slf4j: Seq[ModuleID] = Seq("jcl-over-slf4j", "jul-to-slf4j", "log4j-over-slf4j").map {
    "org.slf4j" % _ % Versions.Slf4j
  } ++ Seq(slf4jApi)
  private val excludeSlf4j = slf4j.map { moduleId => ExclusionRule(moduleId.organization, moduleId.name) }
  private val log4jModules = Seq(
    "log4j-api",
    "log4j-core",
    "log4j-slf4j-impl"
  ).map("org.apache.logging.log4j" % _ % Versions.Log4j excludeAll (excludeSlf4j: _*))


  // Specific libraries that get reused
  private val scalaTest: ModuleID = "org.scalatest" %% "scalatest" % Versions.ScalaTest excludeAll (excludeSlf4j: _*)
  private val guava = "com.google.guava" % "guava" % Versions.Guava
  private val scalaJava8Compat = "org.scala-lang.modules" %% "scala-java8-compat" % Versions.ScalaJava8Compat
  private val scalaXml = "org.scala-lang.modules" %% "scala-xml" % Versions.ScalaXml
  private val javassist = "org.javassist" % "javassist" % "3.24.0-GA"
  private val byteBuddy = "net.bytebuddy" % "byte-buddy" % "1.8.17"
  private val scalaParserCombinators = "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.1"
  private val typesafeConfig = "com.typesafe" % "config" % "1.3.3"
  private val sslConfig = "com.typesafe" %% "ssl-config-core" % "0.3.7"
  private val h2 = "com.h2database" % "h2" % "1.4.192"
  private val cassandraDriverCore = "com.datastax.cassandra" % "cassandra-driver-core" % "3.6.0" excludeAll (excludeSlf4j: _*)

  private val akkaActor = "com.typesafe.akka" %% "akka-actor" % Versions.Akka
  private val akkaRemote = "com.typesafe.akka" %% "akka-remote" % Versions.Akka
  private val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % Versions.Akka
  private val akkaClusterSharding = "com.typesafe.akka" %% "akka-cluster-sharding" % Versions.Akka
  private val akkaClusterTools = "com.typesafe.akka" %% "akka-cluster-tools" % Versions.Akka
  private val akkaMultiNodeTestkit = "com.typesafe.akka" %% "akka-multi-node-testkit" % Versions.Akka
  private val akkaPersistence = "com.typesafe.akka" %% "akka-persistence" % Versions.Akka
  private val akkaPersistenceQuery = "com.typesafe.akka" %% "akka-persistence-query" % Versions.Akka
  private val akkaSlf4j = "com.typesafe.akka" %% "akka-slf4j" % Versions.Akka excludeAll (excludeSlf4j: _*)
  private val akkaStream = "com.typesafe.akka" %% "akka-stream" % Versions.Akka
  private val akkaProfobuf = "com.typesafe.akka" %% "akka-protobuf" % Versions.Akka

  private val akkaStreamTestkit = "com.typesafe.akka" %% "akka-stream-testkit" % Versions.Akka
  private val akkaTestkit = "com.typesafe.akka" %% "akka-testkit" % Versions.Akka
  private val reactiveStreams = "org.reactivestreams" % "reactive-streams" % "1.0.2"

  private val akkaDiscovery = "com.typesafe.akka" %% "akka-discovery" % Versions.Akka

  private val akkaPersistenceJdbc = "com.github.dnvriend" %% "akka-persistence-jdbc" % Versions.AkkaPersistenceJdbc excludeAll (excludeSlf4j: _*)

  // latest version of APC depend on a Cassandra driver core that's not compatible with Lagom (newer netty/guava/etc... under the covers)
  private val akkaPersistenceCassandra = "com.typesafe.akka" %% "akka-persistence-cassandra" % Versions.AkkaPersistenceCassandra
  private val akkaPersistenceCassandraLauncher = "com.typesafe.akka" %% "akka-persistence-cassandra-launcher" % Versions.AkkaPersistenceCassandra
  private val akkaStreamKafka = "com.typesafe.akka" %% "akka-stream-kafka" % Versions.AlpakkaKafka
  private val kafkaClients = "org.apache.kafka" % "kafka-clients" % Versions.Kafka

  private val akkaHttpCore = "com.typesafe.akka" %% "akka-http-core" % Versions.AkkaHttp
  private val akkaParsing = "com.typesafe.akka" %% "akka-parsing" % Versions.AkkaHttp

  private val play = "com.typesafe.play" %% "play" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playBuildLink = "com.typesafe.play" % "build-link" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playExceptions = "com.typesafe.play" % "play-exceptions" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playGuice = "com.typesafe.play" %% "play-guice" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playJava = "com.typesafe.play" %% "play-java" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playJdbc = "com.typesafe.play" %% "play-jdbc" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playNettyServer = "com.typesafe.play" %% "play-netty-server" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playAkkaHttpServer = "com.typesafe.play" %% "play-akka-http-server" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playServer = "com.typesafe.play" %% "play-server" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playTest = "com.typesafe.play" %% "play-test" % Versions.Play excludeAll (excludeSlf4j: _*)

  private val playWs = "com.typesafe.play" %% "play-ws" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playAhcWs = "com.typesafe.play" %% "play-ahc-ws" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playJson = "com.typesafe.play" %% "play-json" % Versions.PlayJson excludeAll (excludeSlf4j: _*)
  private val playFunctional = "com.typesafe.play" %% "play-functional" % Versions.PlayJson excludeAll (excludeSlf4j: _*)
  private val playFileWatch = "com.lightbend.play" %% "play-file-watch" % Versions.PlayFileWatch excludeAll (excludeSlf4j: _*)

  private val pcollections = "org.pcollections" % "pcollections" % Versions.PCollections

  private val junit = "junit" % "junit" % Versions.JUnit
  private val commonsLang = "org.apache.commons" % "commons-lang3" % "3.8.1"

  private val dropwizardMetricsCore = "io.dropwizard.metrics" % "metrics-core" % "3.2.6" excludeAll (excludeSlf4j: _*)

  private val okhttp3 = "com.squareup.okhttp3" % "okhttp" % "3.11.0"
  private val okio = "com.squareup.okio" % "okio" % "1.14.1"

  private val jacksonFamily =
    libraryFamily("com.fasterxml.jackson.core", Versions.JacksonCore)(
      "jackson-annotations", "jackson-core"
    ) ++ libraryFamily("com.fasterxml.jackson.core", Versions.JacksonDatabind)(
      "jackson-databind"
    ) ++ libraryFamily("com.fasterxml.jackson.datatype", Versions.JacksonDatatype)(
      "jackson-datatype-jdk8", "jackson-datatype-jsr310", "jackson-datatype-guava", "jackson-datatype-pcollections"
    )

  val scalaParserCombinatorOverrides = Set(scalaParserCombinators)

  // A whitelist of dependencies that Lagom is allowed to depend on, either directly or transitively.
  // This list is used to validate all of Lagom's dependencies.
  // By maintaining this whitelist, we can be absolutely sure of what we depend on, that we consistently depend on the
  // same versions of libraries across our modules, we can ensure also that we have no partial upgrades of families of
  // libraries (such as Play or Akka), and we will also be alerted when a transitive dependency is upgraded (because
  // the validation task will fail) which means we can manually check that it is safe to upgrade that dependency.
  val DependencyWhitelist: Def.Initialize[Seq[ModuleID]] = Def.setting {
    val scalaVersion = Keys.scalaVersion.value

    Seq(
      "aopalliance" % "aopalliance" % "1.0",
      cassandraDriverCore,
      "com.fasterxml.jackson.module" % "jackson-module-parameter-names" % Versions.Jackson,
      akkaPersistenceJdbc,
      "com.github.jnr" % "jffi" % "1.2.16",
      "com.github.jnr" % "jnr-constants" % "0.9.9",
      "com.github.jnr" % "jnr-ffi" % "2.1.7",
      "com.github.jnr" % "jnr-posix" % "3.0.44",
      "com.github.jnr" % "jnr-x86asm" % "1.0.2",
      "com.google.code.findbugs" % "jsr305" % "3.0.2",
      "com.google.errorprone" % "error_prone_annotations" % "2.2.0",
      guava,
      "com.google.j2objc" % "j2objc-annotations" % "1.1",
      "com.google.inject" % "guice" % "4.2.2",
      "com.google.inject.extensions" % "guice-assistedinject" % "4.2.2",
      "com.googlecode.usc" % "jdbcdslog" % "1.0.6.2",
      "org.checkerframework" % "checker-qual" % "2.5.2",
      "javax.xml.bind" % "jaxb-api" % "2.3.1",
      h2,
      "com.jolbox" % "bonecp" % "0.8.0.RELEASE",
      "com.lmax" % "disruptor" % Versions.Disruptor,
      "com.novocode" % "junit-interface" % Versions.JUnitInterface,
      typesafeConfig,
      sslConfig,
      akkaDiscovery,
      akkaHttpCore,
      akkaStreamKafka,
      akkaParsing,
      akkaPersistenceCassandra,
      akkaPersistenceCassandraLauncher,
      "com.typesafe.netty" % "netty-reactive-streams" % Versions.NettyReactiveStreams,
      "com.typesafe.netty" % "netty-reactive-streams-http" % Versions.NettyReactiveStreams,
      "com.typesafe.play" %% "cachecontrol" % "1.1.4",
      playJson,
      playFunctional,
      // play client libs
      playWs,
      playAhcWs,
      "com.typesafe.play" %% "play-ws-standalone" % Versions.PlayStandaloneWs,
      "com.typesafe.play" %% "play-ws-standalone-xml" % Versions.PlayStandaloneWs,
      "com.typesafe.play" %% "play-ws-standalone-json" % Versions.PlayStandaloneWs,
      "com.typesafe.play" %% "play-ahc-ws-standalone" % Versions.PlayStandaloneWs,
      "com.typesafe.play" % "shaded-asynchttpclient" % Versions.PlayStandaloneWs,
      "com.typesafe.play" % "shaded-oauth" % Versions.PlayStandaloneWs,
      playTest,
      // dependencies added by play-test
      "org.fluentlenium" % "fluentlenium-core" % "3.7.1",
      "org.seleniumhq.selenium" % "selenium-support" % Versions.Selenium,
      "org.seleniumhq.selenium" % "selenium-api" % Versions.Selenium,
      "org.seleniumhq.selenium" % "selenium-remote-driver" % Versions.Selenium,
      "org.seleniumhq.selenium" % "selenium-firefox-driver" % Versions.Selenium,
      byteBuddy,
      "org.apache.commons" % "commons-exec" % "1.3",
      "commons-logging" % "commons-logging" % "1.2",
      "com.google.code.gson" % "gson" % "2.8.4",
      okhttp3,
      okio,
      "org.atteo.classindex" % "classindex" % "3.4",
      "org.seleniumhq.selenium" % "htmlunit-driver" % "2.33.3",
      "xalan" % "xalan" % "2.7.2",
      "xalan" % "serializer" % "2.7.2",
      "org.apache.commons" % "commons-text" % "1.4",
      "org.apache.httpcomponents" % "httpmime" % "4.5.6",
      "org.apache.httpcomponents" % "httpclient" % "4.5.6",
      "org.apache.httpcomponents" % "httpcore" % "4.4.10",
      "net.sourceforge.htmlunit" % "htmlunit" % "2.33",
      "net.sourceforge.htmlunit" % "htmlunit-core-js" % "2.33",
      "net.sourceforge.htmlunit" % "neko-htmlunit" % "2.33",
      "xerces" % "xercesImpl" % "2.12.0",
      "xml-apis" % "xml-apis" % "1.4.01",
      "net.sourceforge.htmlunit" % "htmlunit-cssparser" % "1.2.0",
      "commons-io" % "commons-io" % "2.6",
      "commons-net" % "commons-net" % "3.6",
      "org.eclipse.jetty.websocket" % "websocket-client" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-client" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-http" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-util" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-io" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-xml" % Versions.jetty,
      "org.eclipse.jetty.websocket" % "websocket-common" % Versions.jetty,
      "org.eclipse.jetty.websocket" % "websocket-api" % Versions.jetty,

      "com.typesafe.play" %% "twirl-api" % Versions.Twirl,
      "com.typesafe.slick" %% "slick" % Versions.Slick,
      "com.typesafe.slick" %% "slick-hikaricp" % Versions.Slick,
      "com.zaxxer" % "HikariCP" % "3.2.0",
      "commons-codec" % "commons-codec" % "1.10",
      "io.aeron" % "aeron-client" % Versions.Aeron,
      "io.aeron" % "aeron-driver" % Versions.Aeron,
      dropwizardMetricsCore,
      "io.jsonwebtoken" % "jjwt" % "0.9.1",
      // Netty 3 uses a different package to Netty 4, and a different artifact ID, so can safely coexist
      "io.netty" % "netty" % "3.10.6.Final",
      "javax.cache" % "cache-api" % "1.0.0",
      "javax.inject" % "javax.inject" % "1",
      "javax.transaction" % "jta" % "1.1",
      "joda-time" % "joda-time" % "2.9.9",
      "junit" % "junit" % Versions.JUnit,
      "net.jodah" % "typetools" % "0.5.0",
      "org.lz4" % "lz4-java" % "1.5.0",
      "com.github.luben" % "zstd-jni" % "1.3.5-4",
      "org.agrona" % "agrona" % "0.9.27",
      commonsLang,
      kafkaClients,
      "org.codehaus.mojo" % "animal-sniffer-annotations" % "1.17",
      "org.hibernate" % "hibernate-validator" % "5.2.4.Final",
      "org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.2.Final",
      "org.immutables" % "value" % Versions.Immutables,
      javassist,
      "org.joda" % "joda-convert" % "1.9.2",
      "org.hamcrest" % "hamcrest-core" % "1.3",
      "org.lmdbjava" % "lmdbjava" % "0.6.1",
      pcollections,
      reactiveStreams,
      "org.scalactic" %% "scalactic" % Versions.ScalaTest,
      scalaTest,
      "org.scala-lang.modules" %% "scala-java8-compat" % Versions.ScalaJava8Compat,
      scalaParserCombinators,
      scalaXml,
      "org.scala-sbt" % "test-interface" % "1.0",
      "org.typelevel" %% "macro-compat" % "1.1.1",
      "org.xerial.snappy" % "snappy-java" % "1.1.7.2",
      "tyrex" % "tyrex" % "1.0.1",

      "org.scala-lang.modules" %% "scala-collection-compat" % "0.1.1",
      "com.google.guava" % "failureaccess" % "1.0",
      "com.google.guava" % "listenablefuture" % "9999.0-empty-to-avoid-conflict-with-guava",<commit_msg>Update to Play 2.7.0 and dependencies (#1722)<commit_after>/**
 * Copyright (C) 2016-2019 Lightbend Inc. <https://www.lightbend.com>
 */
import sbt.Keys._
import sbt._

object Dependencies {

  object Versions {
    // Version numbers

    // If you update the version of Play, you probably need to update the other Play* variables.
    // Also be sure to update PlayVersion in docs/build.sbt.
    val Play = "2.7.0"
    val PlayJson = "2.7.0"
    val PlayStandaloneWs = "2.0.1"
    val Twirl = "1.4.0"
    val PlayFileWatch = "1.1.8"

    // Also be sure to update AkkaVersion in docs/build.sbt.
    val Akka: String = sys.props.getOrElse("lagom.build.akka.version", "2.5.20")
    val AkkaHttp = "10.1.7"
    val Aeron = "1.12.0"

    // Also be sure to update ScalaVersion in docs/build.sbt.
    val Scala = Seq("2.12.8", "2.11.12")
    val SbtScala = Seq("2.10.7", "2.12.8")
    val AkkaPersistenceCassandra = "0.61"
    val AkkaPersistenceJdbc = "3.4.0"

    val Disruptor = "3.3.11"

    // Also be sure to update ScalaTestVersion in docs/build.sbt.
    val ScalaTest = "3.0.5"
    val Jackson = "2.9.8"
    val JacksonCore = Jackson
    val JacksonDatatype = Jackson
    val JacksonDatabind = Jackson
    val Guava = "27.0-jre"
    val Maven = "3.3.9"
    val Netty = "4.1.32.Final"
    val NettyReactiveStreams = "2.0.0"
    val Kafka = "2.1.0"
    val AlpakkaKafka = "1.0-RC1"
    val Curator = "2.12.0"
    val Immutables = "2.3.10"
    val HibernateCore = "5.3.7.Final"
    val PCollections = "2.2.0"

    val ScalaJava8Compat = "0.9.0"
    val ScalaXml = "1.1.1"
    val Slick = "3.2.3"
    // Also be sure to update JUnitVersion in docs/build.sbt.
    val JUnit = "4.12"
    // Also be sure to update JUnitInterfaceVersion in docs/build.sbt.
    val JUnitInterface = "0.11"

    val Slf4j = "1.7.25"
    val Logback = "1.2.3"
    // Also be sure to update Log4jVersion in docs/build.sbt.
    val Log4j = "2.11.1"

    val jetty = "9.4.12.v20180830"

    val Selenium = "3.141.59"

  }

  // Some setup before we start creating ModuleID vals
  private val slf4jApi = "org.slf4j" % "slf4j-api" % Versions.Slf4j
  private val slf4j: Seq[ModuleID] = Seq("jcl-over-slf4j", "jul-to-slf4j", "log4j-over-slf4j").map {
    "org.slf4j" % _ % Versions.Slf4j
  } ++ Seq(slf4jApi)
  private val excludeSlf4j = slf4j.map { moduleId => ExclusionRule(moduleId.organization, moduleId.name) }
  private val log4jModules = Seq(
    "log4j-api",
    "log4j-core",
    "log4j-slf4j-impl"
  ).map("org.apache.logging.log4j" % _ % Versions.Log4j excludeAll (excludeSlf4j: _*))


  // Specific libraries that get reused
  private val scalaTest: ModuleID = "org.scalatest" %% "scalatest" % Versions.ScalaTest excludeAll (excludeSlf4j: _*)
  private val guava = "com.google.guava" % "guava" % Versions.Guava
  private val scalaJava8Compat = "org.scala-lang.modules" %% "scala-java8-compat" % Versions.ScalaJava8Compat
  private val scalaXml = "org.scala-lang.modules" %% "scala-xml" % Versions.ScalaXml
  private val javassist = "org.javassist" % "javassist" % "3.24.0-GA"
  private val byteBuddy = "net.bytebuddy" % "byte-buddy" % "1.8.17"
  private val scalaParserCombinators = "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.1"
  private val typesafeConfig = "com.typesafe" % "config" % "1.3.3"
  private val sslConfig = "com.typesafe" %% "ssl-config-core" % "0.3.7"
  private val h2 = "com.h2database" % "h2" % "1.4.192"
  private val cassandraDriverCore = "com.datastax.cassandra" % "cassandra-driver-core" % "3.6.0" excludeAll (excludeSlf4j: _*)

  private val akkaActor = "com.typesafe.akka" %% "akka-actor" % Versions.Akka
  private val akkaRemote = "com.typesafe.akka" %% "akka-remote" % Versions.Akka
  private val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % Versions.Akka
  private val akkaClusterSharding = "com.typesafe.akka" %% "akka-cluster-sharding" % Versions.Akka
  private val akkaClusterTools = "com.typesafe.akka" %% "akka-cluster-tools" % Versions.Akka
  private val akkaMultiNodeTestkit = "com.typesafe.akka" %% "akka-multi-node-testkit" % Versions.Akka
  private val akkaPersistence = "com.typesafe.akka" %% "akka-persistence" % Versions.Akka
  private val akkaPersistenceQuery = "com.typesafe.akka" %% "akka-persistence-query" % Versions.Akka
  private val akkaSlf4j = "com.typesafe.akka" %% "akka-slf4j" % Versions.Akka excludeAll (excludeSlf4j: _*)
  private val akkaStream = "com.typesafe.akka" %% "akka-stream" % Versions.Akka
  private val akkaProfobuf = "com.typesafe.akka" %% "akka-protobuf" % Versions.Akka

  private val akkaStreamTestkit = "com.typesafe.akka" %% "akka-stream-testkit" % Versions.Akka
  private val akkaTestkit = "com.typesafe.akka" %% "akka-testkit" % Versions.Akka
  private val reactiveStreams = "org.reactivestreams" % "reactive-streams" % "1.0.2"

  private val akkaDiscovery = "com.typesafe.akka" %% "akka-discovery" % Versions.Akka

  private val akkaPersistenceJdbc = "com.github.dnvriend" %% "akka-persistence-jdbc" % Versions.AkkaPersistenceJdbc excludeAll (excludeSlf4j: _*)

  // latest version of APC depend on a Cassandra driver core that's not compatible with Lagom (newer netty/guava/etc... under the covers)
  private val akkaPersistenceCassandra = "com.typesafe.akka" %% "akka-persistence-cassandra" % Versions.AkkaPersistenceCassandra
  private val akkaPersistenceCassandraLauncher = "com.typesafe.akka" %% "akka-persistence-cassandra-launcher" % Versions.AkkaPersistenceCassandra
  private val akkaStreamKafka = "com.typesafe.akka" %% "akka-stream-kafka" % Versions.AlpakkaKafka
  private val kafkaClients = "org.apache.kafka" % "kafka-clients" % Versions.Kafka

  private val akkaHttpCore = "com.typesafe.akka" %% "akka-http-core" % Versions.AkkaHttp
  private val akkaParsing = "com.typesafe.akka" %% "akka-parsing" % Versions.AkkaHttp

  private val play = "com.typesafe.play" %% "play" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playBuildLink = "com.typesafe.play" % "build-link" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playExceptions = "com.typesafe.play" % "play-exceptions" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playGuice = "com.typesafe.play" %% "play-guice" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playJava = "com.typesafe.play" %% "play-java" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playJdbc = "com.typesafe.play" %% "play-jdbc" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playNettyServer = "com.typesafe.play" %% "play-netty-server" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playAkkaHttpServer = "com.typesafe.play" %% "play-akka-http-server" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playServer = "com.typesafe.play" %% "play-server" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playTest = "com.typesafe.play" %% "play-test" % Versions.Play excludeAll (excludeSlf4j: _*)

  private val playWs = "com.typesafe.play" %% "play-ws" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playAhcWs = "com.typesafe.play" %% "play-ahc-ws" % Versions.Play excludeAll (excludeSlf4j: _*)
  private val playJson = "com.typesafe.play" %% "play-json" % Versions.PlayJson excludeAll (excludeSlf4j: _*)
  private val playFunctional = "com.typesafe.play" %% "play-functional" % Versions.PlayJson excludeAll (excludeSlf4j: _*)
  private val playFileWatch = "com.lightbend.play" %% "play-file-watch" % Versions.PlayFileWatch excludeAll (excludeSlf4j: _*)

  private val pcollections = "org.pcollections" % "pcollections" % Versions.PCollections

  private val junit = "junit" % "junit" % Versions.JUnit
  private val commonsLang = "org.apache.commons" % "commons-lang3" % "3.8.1"

  private val dropwizardMetricsCore = "io.dropwizard.metrics" % "metrics-core" % "3.2.6" excludeAll (excludeSlf4j: _*)

  private val okhttp3 = "com.squareup.okhttp3" % "okhttp" % "3.11.0"
  private val okio = "com.squareup.okio" % "okio" % "1.14.1"

  private val jacksonFamily =
    libraryFamily("com.fasterxml.jackson.core", Versions.JacksonCore)(
      "jackson-annotations", "jackson-core"
    ) ++ libraryFamily("com.fasterxml.jackson.core", Versions.JacksonDatabind)(
      "jackson-databind"
    ) ++ libraryFamily("com.fasterxml.jackson.datatype", Versions.JacksonDatatype)(
      "jackson-datatype-jdk8", "jackson-datatype-jsr310", "jackson-datatype-guava", "jackson-datatype-pcollections"
    )

  val scalaParserCombinatorOverrides = Set(scalaParserCombinators)

  // A whitelist of dependencies that Lagom is allowed to depend on, either directly or transitively.
  // This list is used to validate all of Lagom's dependencies.
  // By maintaining this whitelist, we can be absolutely sure of what we depend on, that we consistently depend on the
  // same versions of libraries across our modules, we can ensure also that we have no partial upgrades of families of
  // libraries (such as Play or Akka), and we will also be alerted when a transitive dependency is upgraded (because
  // the validation task will fail) which means we can manually check that it is safe to upgrade that dependency.
  val DependencyWhitelist: Def.Initialize[Seq[ModuleID]] = Def.setting {
    val scalaVersion = Keys.scalaVersion.value

    Seq(
      "aopalliance" % "aopalliance" % "1.0",
      cassandraDriverCore,
      "com.fasterxml.jackson.module" % "jackson-module-parameter-names" % Versions.Jackson,
      akkaPersistenceJdbc,
      "com.github.jnr" % "jffi" % "1.2.16",
      "com.github.jnr" % "jnr-constants" % "0.9.9",
      "com.github.jnr" % "jnr-ffi" % "2.1.7",
      "com.github.jnr" % "jnr-posix" % "3.0.44",
      "com.github.jnr" % "jnr-x86asm" % "1.0.2",
      "com.google.code.findbugs" % "jsr305" % "3.0.2",
      "com.google.errorprone" % "error_prone_annotations" % "2.2.0",
      guava,
      "com.google.j2objc" % "j2objc-annotations" % "1.1",
      "com.google.inject" % "guice" % "4.2.2",
      "com.google.inject.extensions" % "guice-assistedinject" % "4.2.2",
      "com.googlecode.usc" % "jdbcdslog" % "1.0.6.2",
      "org.checkerframework" % "checker-qual" % "2.5.2",
      "javax.xml.bind" % "jaxb-api" % "2.3.1",
      h2,
      "com.jolbox" % "bonecp" % "0.8.0.RELEASE",
      "com.lmax" % "disruptor" % Versions.Disruptor,
      "com.novocode" % "junit-interface" % Versions.JUnitInterface,
      typesafeConfig,
      sslConfig,
      akkaDiscovery,
      akkaHttpCore,
      akkaStreamKafka,
      akkaParsing,
      akkaPersistenceCassandra,
      akkaPersistenceCassandraLauncher,
      "com.typesafe.netty" % "netty-reactive-streams" % Versions.NettyReactiveStreams,
      "com.typesafe.netty" % "netty-reactive-streams-http" % Versions.NettyReactiveStreams,
      "com.typesafe.play" %% "cachecontrol" % "1.1.5",
      playJson,
      playFunctional,
      // play client libs
      playWs,
      playAhcWs,
      "com.typesafe.play" %% "play-ws-standalone" % Versions.PlayStandaloneWs,
      "com.typesafe.play" %% "play-ws-standalone-xml" % Versions.PlayStandaloneWs,
      "com.typesafe.play" %% "play-ws-standalone-json" % Versions.PlayStandaloneWs,
      "com.typesafe.play" %% "play-ahc-ws-standalone" % Versions.PlayStandaloneWs,
      "com.typesafe.play" % "shaded-asynchttpclient" % Versions.PlayStandaloneWs,
      "com.typesafe.play" % "shaded-oauth" % Versions.PlayStandaloneWs,
      playTest,
      // dependencies added by play-test
      "org.fluentlenium" % "fluentlenium-core" % "3.7.1",
      "org.seleniumhq.selenium" % "selenium-support" % Versions.Selenium,
      "org.seleniumhq.selenium" % "selenium-api" % Versions.Selenium,
      "org.seleniumhq.selenium" % "selenium-remote-driver" % Versions.Selenium,
      "org.seleniumhq.selenium" % "selenium-firefox-driver" % Versions.Selenium,
      byteBuddy,
      "org.apache.commons" % "commons-exec" % "1.3",
      "commons-logging" % "commons-logging" % "1.2",
      "com.google.code.gson" % "gson" % "2.8.4",
      okhttp3,
      okio,
      "org.atteo.classindex" % "classindex" % "3.4",
      "org.seleniumhq.selenium" % "htmlunit-driver" % "2.33.3",
      "xalan" % "xalan" % "2.7.2",
      "xalan" % "serializer" % "2.7.2",
      "org.apache.commons" % "commons-text" % "1.4",
      "org.apache.httpcomponents" % "httpmime" % "4.5.6",
      "org.apache.httpcomponents" % "httpclient" % "4.5.6",
      "org.apache.httpcomponents" % "httpcore" % "4.4.10",
      "net.sourceforge.htmlunit" % "htmlunit" % "2.33",
      "net.sourceforge.htmlunit" % "htmlunit-core-js" % "2.33",
      "net.sourceforge.htmlunit" % "neko-htmlunit" % "2.33",
      "xerces" % "xercesImpl" % "2.12.0",
      "xml-apis" % "xml-apis" % "1.4.01",
      "net.sourceforge.htmlunit" % "htmlunit-cssparser" % "1.2.0",
      "commons-io" % "commons-io" % "2.6",
      "commons-net" % "commons-net" % "3.6",
      "org.eclipse.jetty.websocket" % "websocket-client" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-client" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-http" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-util" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-io" % Versions.jetty,
      "org.eclipse.jetty" % "jetty-xml" % Versions.jetty,
      "org.eclipse.jetty.websocket" % "websocket-common" % Versions.jetty,
      "org.eclipse.jetty.websocket" % "websocket-api" % Versions.jetty,

      "com.typesafe.play" %% "twirl-api" % Versions.Twirl,
      "com.typesafe.slick" %% "slick" % Versions.Slick,
      "com.typesafe.slick" %% "slick-hikaricp" % Versions.Slick,
      "com.zaxxer" % "HikariCP" % "3.3.0",
      "commons-codec" % "commons-codec" % "1.10",
      "io.aeron" % "aeron-client" % Versions.Aeron,
      "io.aeron" % "aeron-driver" % Versions.Aeron,
      dropwizardMetricsCore,
      "io.jsonwebtoken" % "jjwt" % "0.9.1",
      // Netty 3 uses a different package to Netty 4, and a different artifact ID, so can safely coexist
      "io.netty" % "netty" % "3.10.6.Final",
      "javax.cache" % "cache-api" % "1.0.0",
      "javax.inject" % "javax.inject" % "1",
      "javax.transaction" % "jta" % "1.1",
      "joda-time" % "joda-time" % "2.10.1",
      "junit" % "junit" % Versions.JUnit,
      "net.jodah" % "typetools" % "0.5.0",
      "org.lz4" % "lz4-java" % "1.5.0",
      "com.github.luben" % "zstd-jni" % "1.3.5-4",
      "org.agrona" % "agrona" % "0.9.27",
      commonsLang,
      kafkaClients,
      "org.codehaus.mojo" % "animal-sniffer-annotations" % "1.17",
      "org.hibernate" % "hibernate-validator" % "5.2.4.Final",
      "org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.2.Final",
      "org.immutables" % "value" % Versions.Immutables,
      javassist,
      "org.joda" % "joda-convert" % "1.9.2",
      "org.hamcrest" % "hamcrest-core" % "1.3",
      "org.lmdbjava" % "lmdbjava" % "0.6.1",
      pcollections,
      reactiveStreams,
      "org.scalactic" %% "scalactic" % Versions.ScalaTest,
      scalaTest,
      "org.scala-lang.modules" %% "scala-java8-compat" % Versions.ScalaJava8Compat,
      scalaParserCombinators,
      scalaXml,
      "org.scala-sbt" % "test-interface" % "1.0",
      "org.typelevel" %% "macro-compat" % "1.1.1",
      "org.xerial.snappy" % "snappy-java" % "1.1.7.2",
      "tyrex" % "tyrex" % "1.0.1",

      "org.scala-lang.modules" %% "scala-collection-compat" % "0.1.1",
      "com.google.guava" % "failureaccess" % "1.0",
      "com.google.guava" % "listenablefuture" % "9999.0-empty-to-avoid-conflict-with-guava",
{'fraction_non_alphanumeric': 0.15817763818281902, 'fraction_numerical': 0.029336528187028463, 'mean_word_length': 3.3152158725723067, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 20}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1652483', 'n_tokens_mistral': 12467, 'n_tokens_neox': 11728, 'n_words': 2209}