You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2015/08/03 22:30:45 UTC

[01/21] incubator-usergrid git commit: USERGRID-871: refactor Gatling load testing code

Repository: incubator-usergrid
Updated Branches:
  refs/heads/two-dot-o-dev 151527f63 -> c99fe385f


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala
deleted file mode 100644
index 6a55ace..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.simulations
-
-import com.ning.http.client.AsyncHttpClient
-import io.gatling.core.Predef._
-import io.gatling.http.Predef._
-import org.apache.usergrid.scenarios._
-import org.apache.usergrid.settings.Settings
-import scala.concurrent.duration._
-import org.apache.usergrid.helpers.Setup
-
-class PushNotificationTargetUserSimulation extends Simulation {
-
-
-  before{
-    Setup.setupOrg()
-    Setup.setupApplication()
-    Setup.setupNotifier()
-    Setup.setupUsers()
-  }
-  setUp(
-    NotificationScenarios.createScenario
-      .inject(
-        rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-        constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration)
-      .protocols( Settings.httpConf.acceptHeader("application/json"))
-  )
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutCustomEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutCustomEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutCustomEntitySimulation.scala
deleted file mode 100644
index 2b129fc..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutCustomEntitySimulation.scala
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import io.gatling.core.scenario.Simulation
-import org.apache.usergrid.datagenerators.FeederGenerator
-import org.apache.usergrid.scenarios.EntityScenarios
-import org.apache.usergrid.settings.Settings
-
-/**
- * PostCustomEntitySimulation - creates lots of custom entities
- *
- * Run this way:
- * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.PostCustomEntitySimulation -DcollectionType=yourcollection
- *
- *
- */
-class PutCustomEntitySimulation extends Simulation {
-
-  if(!Settings.skipSetup) {
-    println("Begin setup")
-    println("These aren't the droids you are looking for...")
-    //exec(TokenScenarios.getManagementToken)
-    println("End Setup")
-  }else{
-    println("Skipping Setup")
-  }
-
-  val numEntities:Int = Settings.numEntities
-  val collectionType = Settings.collectionType
-  println("collection type = " + collectionType)
-  val rampTime:Int = Settings.rampTime
-  val throttle:Int = Settings.throttle
-  val feeder = FeederGenerator.generateCustomEntityPutInfinite(0)
-  val httpConf = Settings.httpConf
-
-  val scnToRun = scenario("PUT custom entities")
-    .feed(feeder)
-    .exec(EntityScenarios.putEntity)
-
-  /*
-  val scnToRun = scenario("POST custom entities")
-    .feed(feeder)
-    .doIfOrElse(session => session("token").as[String].nonEmpty(session)) {
-      exec(EntityScenarios.postEntityWithToken)
-    } {
-      exec(EntityScenarios.postEntity)
-    }
-*/
-
-
-  setUp(scnToRun.inject(
-    rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-    constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration
-  ).protocols(httpConf)).maxDuration(Settings.duration)
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutUsersSimulation.scala
deleted file mode 100644
index f89952c..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PutUsersSimulation.scala
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one or more
- *  *  contributor license agreements.  The ASF licenses this file to You
- *  * under the Apache License, Version 2.0 (the "License"); you may not
- *  * use this file except in compliance with the License.
- *  * You may obtain a copy of the License at
- *  *
- *  *     http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing, software
- *  * distributed under the License is distributed on an "AS IS" BASIS,
- *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  * See the License for the specific language governing permissions and
- *  * limitations under the License.  For additional information regarding
- *  * copyright in this work, please see the NOTICE file in the top level
- *  * directory of this distribution.
- *
- */
-
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import io.gatling.core.scenario.Simulation
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.UserScenarios
-import org.apache.usergrid.settings.Settings
-
-/**
- * PUTS application users continually to an application.  Expects the following parameters
- *
- * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
- * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
- * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
- */
-class PutUsersSimulation extends Simulation {
-
-  println("Begin setup")
-  Setup.setupOrg()
-  Setup.setupApplication()
-  println("End Setup")
-
-
-  setUp(
-    UserScenarios.putUsersInfinitely
-      .inject(
-        /**
-         * injection steps take from this forum post
-         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
-         */
-        rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-        constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration
-
-      )).protocols(Settings.httpConf.acceptHeader("application/json"))
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/SetupSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/SetupSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/SetupSimulation.scala
deleted file mode 100644
index 567a510..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/SetupSimulation.scala
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one or more
- *  *  contributor license agreements.  The ASF licenses this file to You
- *  * under the Apache License, Version 2.0 (the "License"); you may not
- *  * use this file except in compliance with the License.
- *  * You may obtain a copy of the License at
- *  *
- *  *     http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing, software
- *  * distributed under the License is distributed on an "AS IS" BASIS,
- *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  * See the License for the specific language governing permissions and
- *  * limitations under the License.  For additional information regarding
- *  * copyright in this work, please see the NOTICE file in the top level
- *  * directory of this distribution.
- *
- */
-
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.{UserScenarios}
-import org.apache.usergrid.settings.Settings
-import scala.concurrent.duration._
-
-/**
- * Classy class class.
- */
-class SetupSimulation extends Simulation{
-
-  println("Begin setup")
-  Setup.setupOrg()
-  Setup.setupApplication()
-  Setup.setupNotifier()
-  println("End Setup")
-
-  setUp(
-    UserScenarios.createUsersWithDevicesScenario
-      .inject(splitUsers(Settings.maxPossibleUsers) into( rampUsers(10) over (10 seconds)) separatedBy (10 seconds))
-      .protocols(Settings.httpConf.acceptHeader("application/json"))
-  )
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
new file mode 100644
index 0000000..7f1af08
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
@@ -0,0 +1,44 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import io.gatling.core.scenario.Simulation
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.NotificationScenarios
+import org.apache.usergrid.settings.Settings
+
+import scala.concurrent.duration._
+
+/**
+ * Classy class class.
+ */
+class AppSimulation extends Simulation {
+  println("Begin setup")
+  Setup.setupNotifier()
+  println("End Setup")
+
+  setUp(
+    NotificationScenarios.createScenario
+      .inject(constantUsersPerSec(Settings.constantUsersPerSec) during (Settings.constantUsersDuration))
+      .protocols(Settings.httpConf.acceptHeader("application/json"))
+  ).throttle(reachRps(Settings.throttle) in (Settings.rampTime seconds), holdFor(Settings.holdDuration))
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
new file mode 100644
index 0000000..8e3cd57
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
@@ -0,0 +1,54 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import io.gatling.core.scenario.Simulation
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.ConnectionScenarios
+import org.apache.usergrid.settings.Settings
+
+import scala.concurrent.duration._
+
+/**
+ * Classy class class.
+ */
+class ConnectionsSimulation extends Simulation{
+
+  if(!Settings.skipSetup) {
+    println("Begin setup")
+    Setup.setupOrg()
+    Setup.setupApplication()
+    Setup.setupNotifier()
+    Setup.setupUsers()
+    println("End Setup")
+  }else{
+    println("Skipping Setup")
+  }
+
+  setUp(
+    ConnectionScenarios.createScenario
+      .inject(constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration) // wait for 15 seconds so create org can finish, need to figure out coordination
+      .throttle(reachRps(Settings.throttle) in Settings.rampTime.seconds)
+      .protocols( Settings.httpConf.acceptHeader("application/json"))
+  )
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/DeleteUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/DeleteUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/DeleteUsersSimulation.scala
new file mode 100644
index 0000000..444f67a
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/DeleteUsersSimulation.scala
@@ -0,0 +1,56 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import io.gatling.core.scenario.Simulation
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.UserScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * Deletes application users continually to an application.  Expects the following parameters
+ *
+ * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
+ * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
+ * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
+ */
+class DeleteUsersSimulation extends Simulation {
+
+  println("Begin setup")
+  Setup.setupOrg()
+  Setup.setupApplication()
+  println("End Setup")
+
+
+  setUp(
+    UserScenarios.deleteUsersInfinitely
+      .inject(
+        /**
+         * injection steps take from this forum post
+         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
+         */
+        rampUsers(Settings.rampUsers) over Settings.rampTime,
+        constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+      )).protocols(Settings.httpConf.acceptHeader("application/json"))
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetEntitySimulation.scala
new file mode 100644
index 0000000..4f160c9
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetEntitySimulation.scala
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.scenarios.UserScenarios
+import org.apache.usergrid.settings.Settings
+
+import scala.concurrent.duration._
+
+class GetEntitySimulation extends Simulation {
+
+  // Target settings
+  val httpConf = Settings.httpConf
+
+  // Simulation settings
+  val numUsers:Int = Settings.rampUsers
+  val numEntities:Int = Settings.numEntities
+  val rampTime:Int = Settings.rampTime
+  val throttle:Int = Settings.throttle
+
+  val feeder = FeederGenerator.generateEntityNameFeeder("user", numEntities)
+
+  val scnToRun = scenario("GET entity")
+    .exec(UserScenarios.getRandomUser)
+
+  setUp(scnToRun.inject(atOnceUsers(numUsers)).throttle(reachRps(throttle) in (rampTime.seconds)).protocols(httpConf)).maxDuration(Settings.holdDuration)
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUserPagesSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUserPagesSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUserPagesSimulation.scala
new file mode 100755
index 0000000..c4fadc0
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUserPagesSimulation.scala
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.UserScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * Posts application users continually to an application.  Expects the following parameters
+ *
+ * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
+ * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
+ * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
+ */
+class GetUserPagesSimulation extends Simulation {
+
+  println("Begin setup")
+  Setup.setupOrg()
+  Setup.setupApplication()
+  println("End Setup")
+
+
+  setUp(
+    UserScenarios.getUserPagesToEnd
+      .inject(
+        /**
+         * injection steps take from this forum post
+         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
+         */
+        rampUsers(Settings.rampUsers) over Settings.rampTime,
+        constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+      )).protocols(Settings.httpConf.acceptHeader("application/json"))
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUsersSimulation.scala
new file mode 100755
index 0000000..5077fe9
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/GetUsersSimulation.scala
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.UserScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * Posts application users continually to an application.  Expects the following parameters
+ *
+ * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
+ * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
+ * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
+ */
+class GetUsersSimulation extends Simulation {
+
+  println("Begin setup")
+  Setup.setupOrg()
+  Setup.setupApplication()
+  println("End Setup")
+
+
+  setUp(
+    UserScenarios.getUsersByUsername
+      .inject(
+        /**
+         * injection steps take from this forum post
+         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
+         */
+        rampUsers(Settings.rampUsers) over Settings.rampTime,
+        constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+      )).protocols(Settings.httpConf.acceptHeader("application/json"))
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala
new file mode 100644
index 0000000..9369489
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala
@@ -0,0 +1,76 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import io.gatling.core.scenario.Simulation
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.scenarios.EntityScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * PostCustomEntitySimulation - creates lots of custom entities
+ *
+ * Run this way:
+ * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.PostCustomEntitySimulation -DcollectionType=yourcollection
+ *
+ *
+ */
+class PostCustomEntitySimulation extends Simulation {
+
+  if(!Settings.skipSetup) {
+    println("Begin setup")
+    println("These aren't the droids you are looking for...")
+    //exec(TokenScenarios.getManagementToken)
+    println("End Setup")
+  }else{
+    println("Skipping Setup")
+  }
+
+  val numEntities:Int = Settings.numEntities
+  val collectionType = Settings.collectionType
+  println("collection type = " + collectionType)
+  val rampTime:Int = Settings.rampTime
+  val throttle:Int = Settings.throttle
+  val feeder = FeederGenerator.generateCustomEntityInfinite(0)
+  val httpConf = Settings.httpConf
+
+  val scnToRun = scenario("POST custom entities")
+    .feed(feeder)
+    .exec(EntityScenarios.postEntity)
+
+  /*
+  val scnToRun = scenario("POST custom entities")
+    .feed(feeder)
+    .doIfOrElse(session => session("token").as[String].nonEmpty(session)) {
+      exec(EntityScenarios.postEntityWithToken)
+    } {
+      exec(EntityScenarios.postEntity)
+    }
+*/
+
+
+  setUp(scnToRun.inject(
+    rampUsers(Settings.rampUsers) over Settings.rampTime,
+    constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+  ).protocols(httpConf)).maxDuration(Settings.holdDuration)
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostUsersSimulation.scala
new file mode 100755
index 0000000..c46a92b
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostUsersSimulation.scala
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.UserScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * Posts application users continually to an application.  Expects the following parameters
+ *
+ * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
+ * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
+ * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
+ */
+class PostUsersSimulation extends Simulation {
+
+  println("Begin setup")
+  Setup.setupOrg()
+  Setup.setupApplication()
+  println("End Setup")
+
+
+  setUp(
+    UserScenarios.postUsersInfinitely
+      .inject(
+        /**
+         * injection steps take from this forum post
+         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
+         */
+        rampUsers(Settings.rampUsers) over Settings.rampTime,
+        constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+      )).protocols(Settings.httpConf.acceptHeader("application/json"))
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PushNotificationTargetUserSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PushNotificationTargetUserSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PushNotificationTargetUserSimulation.scala
new file mode 100644
index 0000000..cc39a6f
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PushNotificationTargetUserSimulation.scala
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios._
+import org.apache.usergrid.settings.Settings
+
+class PushNotificationTargetUserSimulation extends Simulation {
+
+
+  before{
+    if (!Settings.skipSetup) {
+      Setup.setupOrg()
+      Setup.setupApplication()
+      Setup.setupNotifier()
+      Setup.setupUsers()
+    } else {
+      println("Skipping setup")
+    }
+  }
+  setUp(
+    NotificationScenarios.createScenario
+      .inject(
+        rampUsers(Settings.rampUsers) over Settings.rampTime,
+        constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration)
+      .protocols( Settings.httpConf.acceptHeader("application/json"))
+  )
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala
new file mode 100644
index 0000000..bffed0f
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import io.gatling.core.scenario.Simulation
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.scenarios.EntityScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * PostCustomEntitySimulation - creates lots of custom entities
+ *
+ * Run this way:
+ * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.PostCustomEntitySimulation -DcollectionType=yourcollection
+ *
+ *
+ */
+class PutCustomEntitySimulation extends Simulation {
+
+  if(!Settings.skipSetup) {
+    println("Begin setup")
+    println("These aren't the droids you are looking for...")
+    //exec(TokenScenarios.getManagementToken)
+    println("End Setup")
+  }else{
+    println("Skipping Setup")
+  }
+
+  val numEntities:Int = Settings.numEntities
+  val collectionType = Settings.collectionType
+  println("collection type = " + collectionType)
+  val rampTime:Int = Settings.rampTime
+  val throttle:Int = Settings.throttle
+  val feeder = FeederGenerator.generateCustomEntityPutInfinite(0)
+  val httpConf = Settings.httpConf
+
+  val scnToRun = scenario("PUT custom entities")
+    .feed(feeder)
+    .exec(EntityScenarios.putEntity)
+
+  /*
+  val scnToRun = scenario("POST custom entities")
+    .feed(feeder)
+    .doIfOrElse(session => session("token").as[String].nonEmpty(session)) {
+      exec(EntityScenarios.postEntityWithToken)
+    } {
+      exec(EntityScenarios.postEntity)
+    }
+*/
+
+
+  setUp(scnToRun.inject(
+    rampUsers(Settings.rampUsers) over Settings.rampTime,
+    constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+  ).protocols(httpConf)).maxDuration(Settings.holdDuration)
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutUsersSimulation.scala
new file mode 100644
index 0000000..ca65ab9
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutUsersSimulation.scala
@@ -0,0 +1,56 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import io.gatling.core.scenario.Simulation
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.UserScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * PUTS application users continually to an application.  Expects the following parameters
+ *
+ * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
+ * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
+ * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
+ */
+class PutUsersSimulation extends Simulation {
+
+  println("Begin setup")
+  Setup.setupOrg()
+  Setup.setupApplication()
+  println("End Setup")
+
+
+  setUp(
+    UserScenarios.putUsersInfinitely
+      .inject(
+        /**
+         * injection steps take from this forum post
+         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
+         */
+        rampUsers(Settings.rampUsers) over Settings.rampTime,
+        constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+      )).protocols(Settings.httpConf.acceptHeader("application/json"))
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
new file mode 100644
index 0000000..484fb32
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
@@ -0,0 +1,46 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  The ASF licenses this file to You
+ *  * under the Apache License, Version 2.0 (the "License"); you may not
+ *  * use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.  For additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+
+package org.apache.usergrid.simulations.deprecated
+
+import io.gatling.core.Predef._
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.UserScenarios
+import org.apache.usergrid.settings.Settings
+
+import scala.concurrent.duration._
+
+/**
+ * Classy class class.
+ */
+class SetupSimulation extends Simulation{
+
+  println("Begin setup")
+  Setup.setupOrg()
+  Setup.setupApplication()
+  Setup.setupNotifier()
+  println("End Setup")
+
+  setUp(
+    UserScenarios.createUsersWithDevicesScenario
+      .inject(splitUsers(Settings.rampUsers) into( rampUsers(10) over (10 seconds)) separatedBy (10 seconds))
+      .protocols(Settings.httpConf.acceptHeader("application/json"))
+  )
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/test/scala/Engine.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/scala/Engine.scala b/stack/loadtests/src/test/scala/Engine.scala
index 0914589..353b80c 100644
--- a/stack/loadtests/src/test/scala/Engine.scala
+++ b/stack/loadtests/src/test/scala/Engine.scala
@@ -25,7 +25,7 @@ object Engine extends App {
 	props.resultsDirectory(IDEPathHelper.resultsDirectory.toString)
 	props.requestBodiesDirectory(IDEPathHelper.requestBodiesDirectory.toString)
 	props.binariesDirectory(IDEPathHelper.mavenBinariesDirectory.toString)
-  val simName = if(System.getProperty("gatling.simulationClass")!=null) System.getProperty("gatling.simulationClass") else "org.apache.usergrid.simulations.AppSimulation";
+  val simName = if(System.getProperty("gatling.simulationClass")!=null) System.getProperty("gatling.simulationClass") else "org.apache.usergrid.simulations.deprecated.AppSimulation";
   props.simulationClass(simName)
 
 	Gatling.fromMap(props.build)


[17/21] incubator-usergrid git commit: USERGRID-871: fix cursor query test

Posted by to...@apache.org.
USERGRID-871: fix cursor query test


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/3976ff98
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/3976ff98
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/3976ff98

Branch: refs/heads/two-dot-o-dev
Commit: 3976ff98f12b38c223a2d618824da83161c1d055
Parents: 15c1c59
Author: Mike Dunker <md...@apigee.com>
Authored: Fri Jul 31 10:41:20 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Fri Jul 31 10:41:20 2015 -0700

----------------------------------------------------------------------
 stack/loadtests/runCollectionQueryTest.sh       |  10 +-
 stack/loadtests/runLoadSortableEntities.sh      | 107 +++++++++++++++++++
 .../datagenerators/EntityDataGenerator.scala    |  33 +++---
 .../org/apache/usergrid/enums/EntityType.scala  |   3 +-
 .../apache/usergrid/helpers/Extractors.scala    |   2 +-
 .../src/test/resources/logback-test.xml         |   5 +-
 6 files changed, 138 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3976ff98/stack/loadtests/runCollectionQueryTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runCollectionQueryTest.sh b/stack/loadtests/runCollectionQueryTest.sh
index 9882cf2..85910e6 100755
--- a/stack/loadtests/runCollectionQueryTest.sh
+++ b/stack/loadtests/runCollectionQueryTest.sh
@@ -41,14 +41,14 @@ ORG=gatling
 CREATE_APP=false
 #APP=$(date +%s)
 APP=millionentities
-COLLECTION=basicentities
+COLLECTION=sortableentities
 SCENARIO_TYPE=getAllByCursor
 LOAD_ENTITIES=false
 NUM_ENTITIES=10000
 SKIP_SETUP=false
-SEARCH_QUERY=order%20by%20specials%20desc
-ENTITY_TYPE=basic
-ENTITY_PREFIX=basic
+SEARCH_QUERY=order%20by%20sortField%20desc
+ENTITY_TYPE=trivialSortable
+ENTITY_PREFIX=sortable
 ENTITY_SEED=1
 AUTH_TYPE=token
 TOKEN_TYPE=management
@@ -72,6 +72,8 @@ mvn gatling:execute -Dorg=usergrid \
 -DentityType=${ENTITY_TYPE} \
 -DentityPrefix=${ENTITY_PREFIX} \
 -DentitySeed=${ENTITY_SEED} \
+-DsearchQuery=${SEARCH_QUERY} \
+-DsearchLimit=${SEARCH_LIMIT} \
 -DrampUsers=${RAMP_USERS}  \
 -DrampTime=${RAMP_TIME}  \
 -DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3976ff98/stack/loadtests/runLoadSortableEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadSortableEntities.sh b/stack/loadtests/runLoadSortableEntities.sh
new file mode 100755
index 0000000..5289b6a
--- /dev/null
+++ b/stack/loadtests/runLoadSortableEntities.sh
@@ -0,0 +1,107 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 8 ] || die "At least 8 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES ENTITY_WORKER_NUM ENTITY_WORKER_COUNT [UUID_FILENAME]"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+NUM_ENTITIES="$6"
+ENTITY_WORKER_NUM="$7"
+ENTITY_WORKER_COUNT="$8"
+UUID_FILENAME="$9"
+
+shift 9
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION=sortableentities
+SANDBOX_COLLECTION=true
+SCENARIO_TYPE=loadEntities
+# don't load entities as part of setup
+LOAD_ENTITIES=false
+
+SKIP_SETUP=false
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivialSortable
+ENTITY_PREFIX=sortable
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-Dcollection=${COLLECTION} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-DentityWorkerCount=${ENTITY_WORKER_COUNT} \
+-DentityWorkerNum=${ENTITY_WORKER_NUM} \
+-DuuidFilename=${UUID_FILENAME} \
+-DsandboxCollection=${SANDBOX_COLLECTION} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3976ff98/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
index cd359b7..5b5c612 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
@@ -87,16 +87,24 @@ object EntityDataGenerator {
 
    /* --------------------------- */
 
-   def generateTrivialEntity(name: String = null): String = {
+  def generateTrivialEntity(name: String = null): String = {
 
-     val nameKey = if (name != null) "name" else "noname"
-     val nameVal = if (name != null) name else Utils.generateRandomInt(1,10000000).toString
+    val nameKey = if (name != null) "name" else "noname"
+    val nameVal = if (name != null) name else Utils.generateRandomInt(1,10000000).toString
 
-     val entity: Map[String, String] = Map(
-       nameKey -> nameVal
-     )
+    val entity: Map[String, String] = Map(
+      nameKey -> nameVal
+    )
 
-     new JSONObject(entity).toString()
+    new JSONObject(entity).toString()
+  }
+
+   def generateTrivialSortableEntity(name: String = null): String = {
+
+     if (name != null)
+       new JSONObject(Map("name" -> name, "sortField" -> Utils.generateRandomInt(1,10000000))).toString()
+     else
+       new JSONObject(Map("sortField" -> Utils.generateRandomInt(1,10000000))).toString()
    }
 
    def generateBasicEntity(name: String = null): String = {
@@ -127,13 +135,12 @@ object EntityDataGenerator {
    }
 
    def generateEntity(entityType: String = EntityType.Basic, entityName: String = null): String = {
-     val entity: String =
-       if (entityType == EntityType.Trivial)
-         generateTrivialEntity(entityName)
-       else // default is basic
-         generateBasicEntity(entityName)
 
-     entity
+     entityType match {
+       case EntityType.Trivial => generateTrivialEntity(entityName)
+       case EntityType.TrivialSortable => generateTrivialSortableEntity(entityName)
+       case EntityType.Basic => generateBasicEntity(entityName)
+     }
    }
 
    def generateUserEntity(userId: String = "user" + System.currentTimeMillis().toString): String = {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3976ff98/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
index dfb378c..214d48c 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
@@ -2,9 +2,10 @@ package org.apache.usergrid.enums
 
 object EntityType {
   val Trivial = "trivial"
+  val TrivialSortable = "trivialSortable"
   val Basic = "basic"
 
-  val Values = Seq(Trivial,Basic)
+  val Values = Seq(Trivial,TrivialSortable,Basic)
 
   def isValid(str: String): Boolean = {
     Values.contains(str)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3976ff98/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index 120d790..e970fbd 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -34,7 +34,7 @@ object Extractors {
    * Will extract the cursor from the response.  If the cursor is not present, an empty string will be set
    */
   def maybeExtractCursor(saveAsName: String) = {
-    jsonPath("$..cursor").transformOption(extract => {
+    jsonPath("$.cursor").transformOption(extract => {
       //it may or may not be present.  If it is, save it, otherwise save it as an empty string
       extract.orElse(Some(""))
     }).saveAs(saveAsName)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3976ff98/stack/loadtests/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/logback-test.xml b/stack/loadtests/src/test/resources/logback-test.xml
index 646582b..35a4688 100644
--- a/stack/loadtests/src/test/resources/logback-test.xml
+++ b/stack/loadtests/src/test/resources/logback-test.xml
@@ -28,10 +28,9 @@
 	<!-- Uncomment for logging ALL HTTP request and responses -->
 	 	<!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" /> -->
 	<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
-        <!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" /> -->
+        <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" />
 
-<!-- <logger name="io.gatling.http" level="TRACE" /> -->
-        <!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
+    <!-- <logger name="io.gatling.http" level="TRACE" /> -->
 
 	<root level="WARN">
 		<appender-ref ref="CONSOLE" />


[21/21] incubator-usergrid git commit: Merge branch 'two-dot-o-dev' of https://github.com/mdunker/incubator-usergrid into two-dot-o-dev

Posted by to...@apache.org.
Merge branch 'two-dot-o-dev' of https://github.com/mdunker/incubator-usergrid into two-dot-o-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/c99fe385
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/c99fe385
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/c99fe385

Branch: refs/heads/two-dot-o-dev
Commit: c99fe385f5a8fc754a41afdd2da89784f4c6c874
Parents: 151527f b038b46
Author: Todd Nine <tn...@apigee.com>
Authored: Mon Aug 3 14:30:26 2015 -0600
Committer: Todd Nine <tn...@apigee.com>
Committed: Mon Aug 3 14:30:26 2015 -0600

----------------------------------------------------------------------
 stack/loadtests/README.md                       |    50 +-
 stack/loadtests/pom.xml                         |    26 +-
 .../loadtests/runAuditGetCollectionEntities.sh  |    74 +
 .../runAuditVerifyCollectionEntities.sh         |    71 +
 stack/loadtests/runCollectionQueryTest.sh       |    99 +
 stack/loadtests/runDeleteEntities.sh            |    99 +
 .../loadtests/runGetEntitiesByNameSequential.sh |   106 +
 stack/loadtests/runLoadEntities.sh              |   107 +
 stack/loadtests/runLoadSortableEntities.sh      |   107 +
 stack/loadtests/runRandomEntityByNameTest.sh    |    97 +
 stack/loadtests/runRandomEntityByUuidTest.sh    |    99 +
 stack/loadtests/runUpdateEntities.sh            |    99 +
 stack/loadtests/runtests.sh                     |    12 +-
 .../datagenerators/EntityDataGenerator.scala    |    91 +-
 .../datagenerators/FeederGenerator.scala        |   208 +-
 .../datagenerators/datafiles/dist.all.last.txt  | 88799 +++++++++++++++++
 .../datafiles/dist.female.first.txt             |  4275 +
 .../datafiles/dist.male.first.txt               |  1219 +
 .../usergrid/datagenerators/firstNames.txt      |  5494 +
 .../usergrid/datagenerators/lastNames.txt       | 88799 +++++++++++++++++
 .../org/apache/usergrid/enums/AuthType.scala    |    15 +
 .../usergrid/enums/ConfigProperties.scala       |   128 +
 .../usergrid/enums/EndConditionType.scala       |    12 +
 .../org/apache/usergrid/enums/EntityType.scala  |    13 +
 .../apache/usergrid/enums/ScenarioType.scala    |    20 +
 .../org/apache/usergrid/enums/TokenType.scala   |    13 +
 .../apache/usergrid/helpers/Extractors.scala    |    57 +-
 .../org/apache/usergrid/helpers/Setup.scala     |   267 +-
 .../org/apache/usergrid/helpers/Utils.scala     |   101 +
 .../scenarios/ApplicationScenarios.scala        |    12 +-
 .../usergrid/scenarios/AuditScenarios.scala     |   134 +
 .../scenarios/ConnectionScenarios.scala         |    16 +-
 .../usergrid/scenarios/DeviceScenarios.scala    |    23 +-
 .../scenarios/EntityCollectionScenarios.scala   |   322 +
 .../usergrid/scenarios/EntityScenarios.scala    |    39 +-
 .../usergrid/scenarios/GeoScenarios.scala       |    19 +-
 .../scenarios/NotificationScenarios.scala       |    26 +-
 .../usergrid/scenarios/NotifierScenarios.scala  |    19 +-
 .../scenarios/OrganizationScenarios.scala       |    17 +-
 .../usergrid/scenarios/TokenScenarios.scala     |    19 +-
 .../usergrid/scenarios/UserScenarios.scala      |    43 +-
 .../org/apache/usergrid/settings/Headers.scala  |    25 +-
 .../org/apache/usergrid/settings/Settings.scala |   356 +-
 .../org/apache/usergrid/settings/Utils.scala    |    91 -
 .../usergrid/simulations/AppSimulation.scala    |    44 -
 .../usergrid/simulations/AuditSimulation.scala  |    68 +
 .../simulations/ConfigurableSimulation.scala    |    83 +
 .../simulations/ConnectionsSimulation.scala     |    53 -
 .../simulations/DeleteUsersSimulation.scala     |    56 -
 .../simulations/GetEntitySimulation.scala       |    44 -
 .../simulations/GetUserPagesSimulation.scala    |    51 -
 .../simulations/GetUsersSimulation.scala        |    51 -
 .../PostCustomEntitySimulation.scala            |    80 -
 .../simulations/PostUsersSimulation.scala       |    51 -
 .../PushNotificationTargetUserSimulation.scala  |    44 -
 .../simulations/PutCustomEntitySimulation.scala |    75 -
 .../simulations/PutUsersSimulation.scala        |    56 -
 .../usergrid/simulations/SetupSimulation.scala  |    45 -
 .../simulations/deprecated/AppSimulation.scala  |    41 +
 .../deprecated/ConnectionsSimulation.scala      |    51 +
 .../deprecated/DeleteUsersSimulation.scala      |    56 +
 .../deprecated/GetEntitySimulation.scala        |    44 +
 .../deprecated/GetUserPagesSimulation.scala     |    51 +
 .../deprecated/GetUsersSimulation.scala         |    51 +
 .../deprecated/PostCustomEntitySimulation.scala |    76 +
 .../deprecated/PostUsersSimulation.scala        |    51 +
 .../PushNotificationTargetUserSimulation.scala  |    45 +
 .../deprecated/PutCustomEntitySimulation.scala  |    75 +
 .../deprecated/PutUsersSimulation.scala         |    56 +
 .../deprecated/SetupSimulation.scala            |    43 +
 .../src/test/resources/dummyAuditUuid.csv       |     1 +
 .../loadtests/src/test/resources/dummyUuid.csv  |     1 +
 .../src/test/resources/logback-test.xml         |     7 +-
 stack/loadtests/src/test/resources/logback.xml  |     4 +-
 stack/loadtests/src/test/scala/Engine.scala     |     2 +-
 75 files changed, 192057 insertions(+), 1117 deletions(-)
----------------------------------------------------------------------



[07/21] incubator-usergrid git commit: USERGRID-871: refactor Gatling load testing code

Posted by to...@apache.org.
USERGRID-871: refactor Gatling load testing code


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/c499e421
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/c499e421
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/c499e421

Branch: refs/heads/two-dot-o-dev
Commit: c499e421554d88485b712e65a14c33007de0acd3
Parents: f62f053
Author: Mike Dunker <md...@apigee.com>
Authored: Tue Jul 21 16:13:50 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Tue Jul 21 16:13:50 2015 -0700

----------------------------------------------------------------------
 stack/loadtests/README.md                       |    50 +-
 stack/loadtests/pom.xml                         |    26 +-
 stack/loadtests/runCollectionQueryTest.sh       |    95 +
 stack/loadtests/runRandomEntityByNameTest.sh    |    95 +
 stack/loadtests/runtests.sh                     |    12 +-
 .../datagenerators/EntityDataGenerator.scala    |    74 +-
 .../datagenerators/FeederGenerator.scala        |   122 +-
 .../datagenerators/datafiles/dist.all.last.txt  | 88799 +++++++++++++++++
 .../datafiles/dist.female.first.txt             |  4275 +
 .../datafiles/dist.male.first.txt               |  1219 +
 .../usergrid/datagenerators/firstNames.txt      |  5494 +
 .../usergrid/datagenerators/lastNames.txt       | 88799 +++++++++++++++++
 .../org/apache/usergrid/enums/AuthType.scala    |    10 +
 .../usergrid/enums/ConfigProperties.scala       |    47 +
 .../usergrid/enums/EndConditionType.scala       |     9 +
 .../org/apache/usergrid/enums/EntityType.scala  |     9 +
 .../apache/usergrid/enums/ScenarioType.scala    |     9 +
 .../org/apache/usergrid/enums/TokenType.scala   |    10 +
 .../apache/usergrid/helpers/Extractors.scala    |    67 +-
 .../org/apache/usergrid/helpers/Setup.scala     |   193 +-
 .../org/apache/usergrid/helpers/Utils.scala     |   100 +
 .../scenarios/ApplicationScenarios.scala        |     4 +-
 .../scenarios/ConnectionScenarios.scala         |     6 +-
 .../usergrid/scenarios/DeviceScenarios.scala    |     6 +-
 .../scenarios/EntityCollectionScenarios.scala   |   131 +
 .../usergrid/scenarios/EntityScenarios.scala    |    36 +-
 .../usergrid/scenarios/GeoScenarios.scala       |    17 +-
 .../scenarios/NotificationScenarios.scala       |     5 +-
 .../usergrid/scenarios/NotifierScenarios.scala  |     6 +-
 .../scenarios/OrganizationScenarios.scala       |     4 +-
 .../usergrid/scenarios/TokenScenarios.scala     |     4 +-
 .../usergrid/scenarios/UserScenarios.scala      |    29 +-
 .../org/apache/usergrid/settings/Headers.scala  |    22 +-
 .../org/apache/usergrid/settings/Settings.scala |    96 +-
 .../org/apache/usergrid/settings/Utils.scala    |    91 -
 .../usergrid/simulations/AppSimulation.scala    |    44 -
 .../simulations/ConfigurableSimulation.scala    |    73 +
 .../simulations/ConnectionsSimulation.scala     |    53 -
 .../simulations/DeleteUsersSimulation.scala     |    56 -
 .../simulations/GetEntitySimulation.scala       |    44 -
 .../simulations/GetUserPagesSimulation.scala    |    51 -
 .../simulations/GetUsersSimulation.scala        |    51 -
 .../PostCustomEntitySimulation.scala            |    80 -
 .../simulations/PostUsersSimulation.scala       |    51 -
 .../PushNotificationTargetUserSimulation.scala  |    44 -
 .../simulations/PutCustomEntitySimulation.scala |    75 -
 .../simulations/PutUsersSimulation.scala        |    56 -
 .../usergrid/simulations/SetupSimulation.scala  |    45 -
 .../simulations/deprecated/AppSimulation.scala  |    44 +
 .../deprecated/ConnectionsSimulation.scala      |    54 +
 .../deprecated/DeleteUsersSimulation.scala      |    56 +
 .../deprecated/GetEntitySimulation.scala        |    44 +
 .../deprecated/GetUserPagesSimulation.scala     |    51 +
 .../deprecated/GetUsersSimulation.scala         |    51 +
 .../deprecated/PostCustomEntitySimulation.scala |    76 +
 .../deprecated/PostUsersSimulation.scala        |    51 +
 .../PushNotificationTargetUserSimulation.scala  |    45 +
 .../deprecated/PutCustomEntitySimulation.scala  |    75 +
 .../deprecated/PutUsersSimulation.scala         |    56 +
 .../deprecated/SetupSimulation.scala            |    46 +
 stack/loadtests/src/test/scala/Engine.scala     |     2 +-
 61 files changed, 190329 insertions(+), 1016 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/README.md
----------------------------------------------------------------------
diff --git a/stack/loadtests/README.md b/stack/loadtests/README.md
index 14514c6..d497a10 100644
--- a/stack/loadtests/README.md
+++ b/stack/loadtests/README.md
@@ -5,41 +5,41 @@ Gatling will run through mvn
 
 1. execute mvn gatling:execute with these options
 
-	*Required
-	> -Dthrottle={maxReqsSec} -Dduration={durationInSecs} -Dorg={org}  -Dapp={appName} -Dbaseurl={uriNoProceedingSlash} -DnumEntities={numberOfEntitiesYouWantToCreateInteger} -DmaxPossibleUsers={totalUsersInteger} -DrampTime={rampTimeIntegerSeconds} -DadminUser={username} -DadminPassword={pwd} -Dgatling.simulationClass={simulationFQDN}
-
-	*Addional optional settings 
-		
-	>-DpushNotifier={notifierName} -DpushProvider={noop_apns_or_gcm} -DskipSetup={boolean}
-
-	skipSetup will skip the setup steps
-
-	So running will look something like this
-	>mvn gatling:execute -Dthrottle=100 -Dduration=300 -Dorg=usergrid  -Dapp=load -Dbaseurl=http://load.usergrid.com -DnumEntities=300 -DmaxPossibleUsers=600 -DrampTime=30 -DadminUser=usergrid -DadminPassword=test -Dgatling.simulationClass=org.apache.usergrid.simulations.AppSimulation
-	
-	Setting the users and duration => Injects a given number of users with a linear ramp over a given duration. users must be greater than duration
-	
-	Setting the throttle and ramptime => will attempt to hit a set reqs/sec over a given time period.  If users and duration are not great enough then you will never hit your throttle
-	
-	Values for simulation are 'all','connections'
-	
-	Also see http://gatling.io/docs/2.0.2/general/simulation_setup.html
-	
-	Additional docs can be found here http://gatling.io/docs/2.0.2/
+    *Required
+    > -Dthrottle={maxReqsSec} -Dduration={durationInSecs} -Dorg={org}  -Dapp={appName} -Dbaseurl={uriNoProceedingSlash} -DnumEntities={numberOfEntitiesYouWantToCreateInteger} -DmaxPossibleUsers={totalUsersInteger} -DrampTime={rampTimeIntegerSeconds} -DadminUser={username} -DadminPassword={pwd} -Dgatling.simulationClass={simulationFQDN}
+
+    *Addional optional settings 
+        
+    >-DpushNotifier={notifierName} -DpushProvider={noop_apns_or_gcm} -DskipSetup={boolean}
+
+    skipSetup will skip the setup steps
+
+    So running will look something like this
+    >mvn gatling:execute -Dthrottle=100 -Dduration=300 -Dorg=usergrid  -Dapp=load -Dbaseurl=http://load.usergrid.com -DnumEntities=300 -DmaxPossibleUsers=600 -DrampTime=30 -DadminUser=usergrid -DadminPassword=test -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.AppSimulation
+    
+    Setting the users and duration => Injects a given number of users with a linear ramp over a given duration. users must be greater than duration
+    
+    Setting the throttle and ramptime => will attempt to hit a set reqs/sec over a given time period.  If users and duration are not great enough then you will never hit your throttle
+    
+    Values for simulation are 'all','connections'
+    
+    Also see http://gatling.io/docs/2.0.2/general/simulation_setup.html
+    
+    Additional docs can be found here http://gatling.io/docs/2.0.2/
 
 ##Running a Push Notification Simulation
 
 1. Set up all users in the system with 2 devices each.
 
-	>mvn compile gatling:execute -Dgatling.simulationClass=org.apache.usergrid.simulations.SetupSimulation -DadminUser=usergrid -DadminPassword=test -Dorg=usergrid  -Dapp=load -Dthrottle=100 -Dbaseurl=http://loadtest.usergrid.com -DmaxPossibleUsers=1000
+    >mvn compile gatling:execute -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.SetupSimulation -DadminUser=usergrid -DadminPassword=test -Dorg=usergrid  -Dapp=load -Dthrottle=100 -Dbaseurl=http://loadtest.usergrid.com -DmaxPossibleUsers=1000
 
 
-	Note the following.
+    Note the following.
 
 
-	**throttle:**  The max number of users + devices per second to create
+    **throttle:**  The max number of users + devices per second to create
 
-	**maxPossibleUsers:**  The maximum number of users the simulation will create before exiting
+    **maxPossibleUsers:**  The maximum number of users the simulation will create before exiting
 
 
 1. No

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/pom.xml
----------------------------------------------------------------------
diff --git a/stack/loadtests/pom.xml b/stack/loadtests/pom.xml
index 0389eda..6605602 100644
--- a/stack/loadtests/pom.xml
+++ b/stack/loadtests/pom.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
+	Licensed to the Apache Software Foundation (ASF) under one or more
+	contributor license agreements.  See the NOTICE file distributed with
+	this work for additional information regarding copyright ownership.
+	The ASF licenses this file to You under the Apache License, Version 2.0
+	(the "License"); you may not use this file except in compliance with
+	the License.  You may obtain a copy of the License at
 
-        http://www.apache.org/licenses/LICENSE-2.0
+		http://www.apache.org/licenses/LICENSE-2.0
 
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-        See the License for the specific language governing permissions and
-        limitations under the License.
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+		See the License for the specific language governing permissions and
+		limitations under the License.
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -53,7 +53,7 @@
 		<encoding>UTF-8</encoding>
 
 		<gatling.version>2.0.3</gatling.version>
-    <gatling.plugin.version>2.0.0</gatling.plugin.version>
+	<gatling.plugin.version>2.0.0</gatling.plugin.version>
 		<gatling-highcharts.version>2.0.3</gatling-highcharts.version>
 
 		<scala-maven-plugin.version>3.1.6</scala-maven-plugin.version>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/runCollectionQueryTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runCollectionQueryTest.sh b/stack/loadtests/runCollectionQueryTest.sh
new file mode 100755
index 0000000..8137d2e
--- /dev/null
+++ b/stack/loadtests/runCollectionQueryTest.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 6 ] || die "At least 6 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) SEARCH_LIMIT"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+SEARCH_LIMIT="$6"
+
+shift 6
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+#APP=$(date +%s)
+APP=millionentities
+COLLECTION_TYPE=basicentities
+SCENARIO_TYPE=getAllByCursor
+LOAD_ENTITIES=false
+NUM_ENTITIES=10000
+SKIP_SETUP=false
+SEARCH_QUERY=order%20by%20specials%20desc
+ENTITY_TYPE=basic
+ENTITY_PREFIX=basic
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute -Dorg=usergrid \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=usergrid  \
+-DadminPassword=test  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-DcollectionType=${COLLECTION_TYPE} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/runRandomEntityByNameTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runRandomEntityByNameTest.sh b/stack/loadtests/runRandomEntityByNameTest.sh
new file mode 100755
index 0000000..474acfe
--- /dev/null
+++ b/stack/loadtests/runRandomEntityByNameTest.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 5 ] || die "At least 5 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds)"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+
+shift 5
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION_TYPE=trivialentities
+SCENARIO_TYPE=nameRandomInfinite
+LOAD_ENTITIES=false
+NUM_ENTITIES=10000
+SKIP_SETUP=false
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivial
+ENTITY_PREFIX=trivial
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute -Dorg=usergrid \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=usergrid  \
+-DadminPassword=test  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-DcollectionType=${COLLECTION_TYPE} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/runtests.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runtests.sh b/stack/loadtests/runtests.sh
index 0897d25..ea9658c 100755
--- a/stack/loadtests/runtests.sh
+++ b/stack/loadtests/runtests.sh
@@ -40,7 +40,7 @@ APP1=$(date +%s)
 mvn gatling:execute -Dorg=usergrid \
 -Dbaseurl=${URL} \
 -DmaxPossibleUsers=${MAX_CONCURRENT_USERS}  \
--DmaxPossibleUsers=${RAMP_TIME}  \
+-DrampTime=${RAMP_TIME}  \
 -DadminUser=usergrid  \
 -DadminPassword=test  \
 -Dduration=${DURATION_TIME}    \
@@ -52,7 +52,7 @@ mvn gatling:execute -Dorg=usergrid \
 mvn gatling:execute -Dorg=usergrid \
 -Dbaseurl=${URL} \
 -DmaxPossibleUsers=${MAX_CONCURRENT_USERS}  \
--DmaxPossibleUsers=${RAMP_TIME}  \
+-DrampTime=${RAMP_TIME}  \
 -DadminUser=usergrid  \
 -DadminPassword=test  \
 -Dduration=${DURATION_TIME}    \
@@ -64,7 +64,7 @@ mvn gatling:execute -Dorg=usergrid \
 mvn gatling:execute -Dorg=usergrid \
 -Dbaseurl=${URL} \
 -DmaxPossibleUsers=${MAX_CONCURRENT_USERS}  \
--DmaxPossibleUsers=${RAMP_TIME}  \
+-DrampTime=${RAMP_TIME}  \
 -DadminUser=usergrid  \
 -DadminPassword=test  \
 -Dduration=${DURATION_TIME}    \
@@ -78,7 +78,7 @@ APP2=$(date +%s)
 mvn gatling:execute -Dorg=usergrid \
 -Dbaseurl=${URL} \
 -DmaxPossibleUsers=${MAX_CONCURRENT_USERS}  \
--DmaxPossibleUsers=${RAMP_TIME}  \
+-DrampTime=${RAMP_TIME}  \
 -DadminUser=usergrid  \
 -DadminPassword=test  \
 -Dduration=${DURATION_TIME}    \
@@ -89,7 +89,7 @@ mvn gatling:execute -Dorg=usergrid \
 mvn gatling:execute -Dorg=usergrid \
 -Dbaseurl=${URL} \
 -DmaxPossibleUsers=${MAX_CONCURRENT_USERS}  \
--DmaxPossibleUsers=${RAMP_TIME}  \
+-rampTime=${RAMP_TIME}  \
 -DadminUser=usergrid  \
 -DadminPassword=test  \
 -Dduration=${DURATION_TIME}    \
@@ -101,7 +101,7 @@ mvn gatling:execute -Dorg=usergrid \
 mvn gatling:execute -Dorg=usergrid \
 -Dbaseurl=${URL} \
 -DmaxPossibleUsers=${MAX_CONCURRENT_USERS}  \
--DmaxPossibleUsers=${RAMP_TIME}  \
+-DrampTime=${RAMP_TIME}  \
 -DadminUser=usergrid  \
 -DadminPassword=test  \
 -Dduration=${DURATION_TIME}    \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
index cb024d3..88b81c8 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
@@ -16,9 +16,8 @@
  */
  package org.apache.usergrid.datagenerators
 
- import java.util.UUID
-
- import org.apache.usergrid.settings.Utils
+ import org.apache.usergrid.enums.EntityType
+ import org.apache.usergrid.helpers.Utils
 
  import scala.collection.mutable.ArrayBuffer
  import scala.util.parsing.json.JSONObject
@@ -44,7 +43,7 @@
 
   def generateUser(userId: String): Map[String,String] = {
 
-    return Map(
+    Map(
 
       "username" -> "user".concat(userId.toString),
       "profileId" -> Utils.generateRandomInt(10000, 1000000).toString,
@@ -64,7 +63,7 @@
 
   def generateCustomEntity(): Map[String,String] = {
 
-    var entity: Map[String, String] = Map(
+    val entity: Map[String, String] = Map(
       // "name" -> "fdsa",
       "address" -> Utils.generateRandomInt(10000, 1000000).toString,
       "city" -> Utils.generateRandomInt(10000, 1000000).toString,
@@ -82,14 +81,31 @@
       "tables" -> Utils.generateRandomInt(50, 100000).toString,
       "outdoor" -> Utils.generateRandomInt(50, 100000).toString
       )
-    return Map("entity" -> new JSONObject(entity).toString())
 
+    Map("entity" -> new JSONObject(entity).toString())
   }
 
-   def generateCustomEntityJSONString(): String = {
+   /* --------------------------- */
+
+   def generateTrivialEntity(name: String = null): String = {
+
+     val nameKey = if (name != null) "name" else "noname"
+     val nameVal = if (name != null) name else Utils.generateRandomInt(1,10000000).toString
+
+     val entity: Map[String, String] = Map(
+       nameKey -> nameVal
+     )
+
+     new JSONObject(entity).toString()
+   }
 
-      var entity: Map[String, String] = Map(
-        // "name" -> "fdsa",
+   def generateBasicEntity(name: String = null): String = {
+
+     val nameKey = if (name != null) "name" else "noname"
+     val nameVal = if (name != null) name else Utils.generateRandomInt(1,10000000).toString
+
+     val entity: Map[String, String] = Map(
+        nameKey -> nameVal,
         "address" -> Utils.generateRandomInt(10000, 1000000).toString,
         "city" -> Utils.generateRandomInt(10000, 1000000).toString,
         "state" -> Utils.generateRandomInt(10000, 1000000).toString,
@@ -105,9 +121,39 @@
         "bar" -> Utils.generateRandomInt(120, 350).toString,
         "tables" -> Utils.generateRandomInt(50, 100000).toString,
         "outdoor" -> Utils.generateRandomInt(50, 100000).toString
-        )
-
-     return new JSONObject(entity).toString();
-
-    }
+     )
+
+     new JSONObject(entity).toString()
+   }
+
+   def generateEntity(entityType: String = EntityType.Basic, entityName: String = null): String = {
+     val entity: String =
+       if (entityType == EntityType.Trivial)
+         generateTrivialEntity(entityName)
+       else // default is basic
+         generateBasicEntity(entityName)
+
+     entity
+   }
+
+   def generateUserEntity(userId: String = "user" + System.currentTimeMillis().toString): String = {
+
+     val entity: Map[String, Any] = Map(
+       "username" -> userId,
+       "profileId" -> Utils.generateRandomInt(10000, 1000000),
+       "displayName" -> Utils.generateRandomInt(10000, 1000000).toString,
+       "showAge" -> Utils.generateRandomInt(0, 1),
+       "ethnicity" -> Utils.generateRandomInt(1, 15),
+       "relationshipStatus" -> Utils.generateRandomInt(1, 4),
+       "headline" -> "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
+       "aboutMe" -> "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
+       "age" -> Utils.generateRandomInt(18, 65),
+       "height" -> Utils.generateRandomInt(48, 84),
+       "weight" -> Utils.generateRandomInt(120, 350),
+       "seen" -> Utils.generateRandomInt(50, 100000).toString,
+       "password" -> "password"
+     )
+
+     new JSONObject(entity).toString()
+   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
index 97be06a..63091a7 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
@@ -20,7 +20,8 @@
  import java.util.UUID
  import java.util.concurrent.atomic.{AtomicInteger, AtomicLong}
  import io.gatling.core.Predef._
- import org.apache.usergrid.settings.Utils
+ import org.apache.usergrid.helpers.Utils
+ import org.apache.usergrid.settings.Settings
  import scala.collection.mutable.ArrayBuffer
  import scala.util.Random
 
@@ -30,29 +31,27 @@
     var userArray: ArrayBuffer[Map[String, String]] = new ArrayBuffer[Map[String, String]]
     for (userCount <- 1 to numUsers) {
       var user: Map[String, String] = EntityDataGenerator.generateUser(userCount.toString)
-      var geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
-      var blockLists: Map[String, String] = EntityDataGenerator.generateBlockUserLists(numUsers)
+      val geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
+      val blockLists: Map[String, String] = EntityDataGenerator.generateBlockUserLists(numUsers)
 
       user = user ++ geolocation ++ blockLists
 
       userArray += user
     }
-    return userArray.toArray
-  }
-
 
+    userArray.toArray
+  }
 
   /**
    * Generate users forever
+   * @param seed
    * @param radius
    * @param centerLatitude
    * @param centerLongitude
    * @return
    */
-  def generateUserWithGeolocationFeederInfinite(seed:Int,radius: Double, centerLatitude: Double, centerLongitude: Double, maxPossible: Int): Iterator[Map[String, String]] = {
-    val userFeeder = Iterator.from(seed).map(i=>generateUserData(i.toString, radius, centerLatitude, centerLongitude))
-    return userFeeder
-
+  def generateUserWithGeolocationFeederInfinite(seed:Int,radius: Double, centerLatitude: Double, centerLongitude: Double): Iterator[Map[String, String]] = {
+    Iterator.from(seed).map(i=>generateUserData(i.toString, radius, centerLatitude, centerLongitude))
   }
 
   /**
@@ -64,14 +63,11 @@
    */
   def generateUserData(id: String, radius: Double, centerLatitude: Double, centerLongitude: Double): Map[String, String] = {
 
+    val user: Map[String, String] = EntityDataGenerator.generateUser(id)
+    val geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
+    val blockLists: Map[String, String] = EntityDataGenerator.generateBlockUserLists(1)
 
-    var user: Map[String, String] = EntityDataGenerator.generateUser(id)
-    var geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
-    var blockLists: Map[String, String] = EntityDataGenerator.generateBlockUserLists(1)
-
-    user = user ++ geolocation ++ blockLists
-
-    return user
+    user ++ geolocation ++ blockLists
   }
 
 
@@ -82,14 +78,13 @@
       // always return true as this feeder can be polled infinitively
       override def hasNext = true
 
-      override def next: Map[String, String] = {
-        var geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
+      override def next(): Map[String, String] = {
+        val geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
         Map("latitude" -> geolocation("latitude"), "longitude" -> geolocation("longitude"))
       }
     }
 
-    return geolocationFeeder
-
+    geolocationFeeder
   }
 
   def generateGeolocationWithQueryFeeder(radius: Double, centerLatitude: Double, centerLongitude: Double): Feeder[String] = {
@@ -99,36 +94,33 @@
       // always return true as this feeder can be polled infinitively
       override def hasNext = true
 
-      override def next: Map[String, String] = {
-        var geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
-        var queryParams = Utils.generateRandomQueryString
+      override def next(): Map[String, String] = {
+        val geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
+        val queryParams = Utils.generateRandomQueryString
         Map("latitude" -> geolocation("latitude"), "longitude" -> geolocation("longitude"), "queryParams" -> queryParams)
       }
     }
 
-    return geolocationFeeder
-
+    geolocationFeeder
   }
 
   def generateUserConnectionFeeder(numUsers: Int): Feeder[String] = {
 
     val userIdFeeder = new Feeder[String] {
 
-      // always return true as this feeder can be polled infinitively
+      // always return true as this feeder can be polled infinitely
       override def hasNext = true
 
-      override def next: Map[String, String] = {
+      override def next(): Map[String, String] = {
         Map("user1" -> "user".concat(Utils.generateRandomInt(1, numUsers).toString), "user2" -> "user".concat(Utils.generateRandomInt(1, numUsers).toString))
       }
     }
 
-    return userIdFeeder
-
+    userIdFeeder
   }
 
   def generateEntityNameFeeder(prefix: String, numEntities: Int): Iterator[Map[String, String]]  = {
-    val itr = Iterator.from(1).map(i=> Map("entityName" -> prefix.concat(i.toString).concat(UUID.randomUUID().toString)))
-    return itr
+    Iterator.from(1).map(i=> Map("entityName" -> prefix.concat(i.toString).concat(UUID.randomUUID().toString)))
   }
 
   def generateRandomEntityNameFeeder(prefix: String, numEntities: Int): Array[Map[String, String]] = {
@@ -139,8 +131,7 @@
       nameArray += Map("entityName" -> prefix.concat(Utils.generateRandomInt(0, 100000000).toString))
     }
 
-    return nameArray.toArray
-
+    nameArray.toArray
   }
 
 
@@ -166,32 +157,57 @@
     */
    def generateCustomEntityPutInfinite(seed:Int): Iterator[Map[String, Any]] = {
      //val rod = "rod"
-     val userFeeder = Iterator.from(seed).map(i=>Map("entityName" -> i.toString.concat(UUID.randomUUID().toString), "entity" -> EntityDataGenerator.generateCustomEntityJSONString()));
+     val userFeeder = Iterator.from(seed).map(i=>Map("entityName" -> i.toString.concat(UUID.randomUUID().toString), "entity" -> EntityDataGenerator.generateCustomEntity()));
      return userFeeder
    }
 
 
-   def testFeeder(seed:Int): Iterator[Map[String, String]] = {
-     var entity: Map[String, String] = EntityDataGenerator.generateCustomEntity();
-     Map("entity" -> entity)
-     val userFeeder = Iterator.from(seed).map(i=>EntityDataGenerator.generateCustomEntity())
-     return userFeeder
-   }
+   /*
+      def testFeeder(seed:Int): Iterator[Map[String, String]] = {
+        var entity: Map[String, String] = EntityDataGenerator.generateCustomEntity();
+        Map("entity" -> entity)
+        val userFeeder = Iterator.from(seed).map(i=>EntityDataGenerator.generateCustomEntity())
+        return userFeeder
+      }
 
-/*
 
-   def testFeeder(): Array[Map[String, String]] = {
-     var userArray: ArrayBuffer[Map[String, String]] = new ArrayBuffer[Map[String, String]]
-     for (userCount <- 1 to numUsers) {
-       var user: Map[String, String] = EntityDataGenerator.generateUser(userCount.toString)
-       var geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
-       var blockLists: Map[String, String] = EntityDataGenerator.generateBlockUserLists(numUsers)
+      def testFeeder(): Array[Map[String, String]] = {
+        var userArray: ArrayBuffer[Map[String, String]] = new ArrayBuffer[Map[String, String]]
+        for (userCount <- 1 to numUsers) {
+          var user: Map[String, String] = EntityDataGenerator.generateUser(userCount.toString)
+          var geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
+          var blockLists: Map[String, String] = EntityDataGenerator.generateBlockUserLists(numUsers)
 
-       user = user ++ geolocation ++ blockLists
+          user = user ++ geolocation ++ blockLists
 
-       userArray += user
-     }
-     return userArray.toArray
-   }
+          userArray += user
+        }
+        return userArray.toArray
+      }
+     */
+
+ /* --------------------------- */
+
+ /**
+  * Generate specified number of custom entities
+  * @param numEntities Number of entities to create
+  * @param entityType Type of entity to create
+  * @param prefix Prefix for entities
+  * @return
   */
+ def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Array[String] = {
+   //val entityFeeder = Iterator.from(1).take(numEntities).map(i=>Map("entity" -> EntityDataGenerator.generateNamedCustomEntityJSONString(prefix.concat(i.toString()))))
+   var entityArray: ArrayBuffer[String] = new ArrayBuffer[String]
+   for (i <- seed to numEntities+seed-1) {
+     var entity = EntityDataGenerator.generateEntity(entityType, prefix.concat(i.toString))
+     entityArray += entity
+   }
+
+   entityArray.toArray
+ }
+
+ def generateCustomEntityInfiniteFeeder(seed: Int = Settings.entitySeed, entityType: String = Settings.entityType, prefix: String = Settings.entityPrefix): Iterator[String] = {
+   Iterator.from(seed).map(i=>EntityDataGenerator.generateEntity(entityType, prefix.concat(i.toString)))
+ }
+
 }


[04/21] incubator-usergrid git commit: USERGRID-871: refactor Gatling load testing code

Posted by to...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.male.first.txt
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.male.first.txt b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.male.first.txt
new file mode 100644
index 0000000..c31b458
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.male.first.txt
@@ -0,0 +1,1219 @@
+JAMES          3.318  3.318      1
+JOHN           3.271  6.589      2
+ROBERT         3.143  9.732      3
+MICHAEL        2.629 12.361      4
+WILLIAM        2.451 14.812      5
+DAVID          2.363 17.176      6
+RICHARD        1.703 18.878      7
+CHARLES        1.523 20.401      8
+JOSEPH         1.404 21.805      9
+THOMAS         1.380 23.185     10
+CHRISTOPHER    1.035 24.220     11
+DANIEL         0.974 25.194     12
+PAUL           0.948 26.142     13
+MARK           0.938 27.081     14
+DONALD         0.931 28.012     15
+GEORGE         0.927 28.939     16
+KENNETH        0.826 29.766     17
+STEVEN         0.780 30.546     18
+EDWARD         0.779 31.325     19
+BRIAN          0.736 32.061     20
+RONALD         0.725 32.787     21
+ANTHONY        0.721 33.508     22
+KEVIN          0.671 34.179     23
+JASON          0.660 34.839     24
+MATTHEW        0.657 35.496     25
+GARY           0.650 36.147     26
+TIMOTHY        0.640 36.786     27
+JOSE           0.613 37.399     28
+LARRY          0.598 37.997     29
+JEFFREY        0.591 38.588     30
+FRANK          0.581 39.169     31
+SCOTT          0.546 39.715     32
+ERIC           0.544 40.259     33
+STEPHEN        0.540 40.799     34
+ANDREW         0.537 41.335     35
+RAYMOND        0.488 41.824     36
+GREGORY        0.441 42.265     37
+JOSHUA         0.435 42.700     38
+JERRY          0.432 43.132     39
+DENNIS         0.415 43.547     40
+WALTER         0.399 43.946     41
+PATRICK        0.389 44.335     42
+PETER          0.381 44.716     43
+HAROLD         0.371 45.087     44
+DOUGLAS        0.367 45.454     45
+HENRY          0.365 45.819     46
+CARL           0.346 46.165     47
+ARTHUR         0.335 46.500     48
+RYAN           0.328 46.828     49
+ROGER          0.322 47.150     50
+JOE            0.321 47.471     51
+JUAN           0.316 47.786     52
+JACK           0.315 48.102     53
+ALBERT         0.314 48.415     54
+JONATHAN       0.313 48.729     55
+JUSTIN         0.311 49.040     56
+TERRY          0.311 49.351     57
+GERALD         0.309 49.660     58
+KEITH          0.308 49.968     59
+SAMUEL         0.306 50.274     60
+WILLIE         0.302 50.576     61
+RALPH          0.282 50.859     62
+LAWRENCE       0.282 51.141     63
+NICHOLAS       0.275 51.415     64
+ROY            0.273 51.688     65
+BENJAMIN       0.270 51.958     66
+BRUCE          0.263 52.221     67
+BRANDON        0.260 52.480     68
+ADAM           0.259 52.740     69
+HARRY          0.251 52.991     70
+FRED           0.251 53.241     71
+WAYNE          0.249 53.490     72
+BILLY          0.248 53.738     73
+STEVE          0.246 53.984     74
+LOUIS          0.243 54.227     75
+JEREMY         0.242 54.469     76
+AARON          0.240 54.710     77
+RANDY          0.232 54.942     78
+HOWARD         0.230 55.172     79
+EUGENE         0.230 55.402     80
+CARLOS         0.229 55.630     81
+RUSSELL        0.224 55.854     82
+BOBBY          0.223 56.077     83
+VICTOR         0.222 56.299     84
+MARTIN         0.216 56.515     85
+ERNEST         0.215 56.730     86
+PHILLIP        0.213 56.942     87
+TODD           0.213 57.155     88
+JESSE          0.209 57.364     89
+CRAIG          0.206 57.570     90
+ALAN           0.204 57.774     91
+SHAWN          0.200 57.973     92
+CLARENCE       0.197 58.170     93
+SEAN           0.197 58.368     94
+PHILIP         0.197 58.565     95
+CHRIS          0.197 58.761     96
+JOHNNY         0.195 58.957     97
+EARL           0.193 59.149     98
+JIMMY          0.191 59.340     99
+ANTONIO        0.190 59.531    100
+DANNY          0.190 59.720    101
+BRYAN          0.190 59.910    102
+TONY           0.190 60.100    103
+LUIS           0.189 60.289    104
+MIKE           0.189 60.478    105
+STANLEY        0.186 60.665    106
+LEONARD        0.186 60.850    107
+NATHAN         0.185 61.035    108
+DALE           0.184 61.219    109
+MANUEL         0.181 61.400    110
+RODNEY         0.180 61.581    111
+CURTIS         0.180 61.761    112
+NORMAN         0.177 61.938    113
+ALLEN          0.174 62.112    114
+MARVIN         0.171 62.283    115
+VINCENT        0.168 62.450    116
+GLENN          0.167 62.617    117
+JEFFERY        0.166 62.783    118
+TRAVIS         0.166 62.949    119
+JEFF           0.166 63.114    120
+CHAD           0.165 63.279    121
+JACOB          0.165 63.444    122
+LEE            0.162 63.606    123
+MELVIN         0.162 63.768    124
+ALFRED         0.162 63.930    125
+KYLE           0.160 64.090    126
+FRANCIS        0.160 64.250    127
+BRADLEY        0.159 64.409    128
+JESUS          0.155 64.564    129
+HERBERT        0.155 64.719    130
+FREDERICK      0.154 64.873    131
+RAY            0.153 65.026    132
+JOEL           0.152 65.177    133
+EDWIN          0.148 65.326    134
+DON            0.145 65.471    135
+EDDIE          0.144 65.615    136
+RICKY          0.141 65.756    137
+TROY           0.138 65.895    138
+RANDALL        0.138 66.032    139
+BARRY          0.134 66.167    140
+ALEXANDER      0.132 66.299    141
+BERNARD        0.127 66.427    142
+MARIO          0.125 66.552    143
+LEROY          0.125 66.676    144
+FRANCISCO      0.124 66.801    145
+MARCUS         0.124 66.925    146
+MICHEAL        0.123 67.048    147
+THEODORE       0.123 67.171    148
+CLIFFORD       0.123 67.293    149
+MIGUEL         0.122 67.415    150
+OSCAR          0.122 67.538    151
+JAY            0.118 67.656    152
+JIM            0.118 67.773    153
+TOM            0.117 67.890    154
+CALVIN         0.115 68.006    155
+ALEX           0.115 68.120    156
+JON            0.115 68.235    157
+RONNIE         0.113 68.348    158
+BILL           0.112 68.461    159
+LLOYD          0.112 68.573    160
+TOMMY          0.112 68.685    161
+LEON           0.112 68.797    162
+DEREK          0.112 68.908    163
+WARREN         0.110 69.018    164
+DARRELL        0.108 69.126    165
+JEROME         0.108 69.234    166
+FLOYD          0.107 69.340    167
+LEO            0.106 69.446    168
+ALVIN          0.105 69.551    169
+TIM            0.104 69.656    170
+WESLEY         0.104 69.760    171
+GORDON         0.104 69.864    172
+DEAN           0.104 69.968    173
+GREG           0.104 70.071    174
+JORGE          0.104 70.175    175
+DUSTIN         0.103 70.278    176
+PEDRO          0.103 70.381    177
+DERRICK        0.103 70.484    178
+DAN            0.101 70.585    179
+LEWIS          0.099 70.684    180
+ZACHARY        0.099 70.782    181
+COREY          0.098 70.880    182
+HERMAN         0.097 70.977    183
+MAURICE        0.097 71.074    184
+VERNON         0.097 71.171    185
+ROBERTO        0.097 71.268    186
+CLYDE          0.095 71.363    187
+GLEN           0.094 71.457    188
+HECTOR         0.094 71.551    189
+SHANE          0.093 71.645    190
+RICARDO        0.093 71.738    191
+SAM            0.092 71.830    192
+RICK           0.091 71.921    193
+LESTER         0.091 72.011    194
+BRENT          0.090 72.102    195
+RAMON          0.090 72.192    196
+CHARLIE        0.090 72.281    197
+TYLER          0.089 72.371    198
+GILBERT        0.089 72.460    199
+GENE           0.087 72.547    200
+MARC           0.087 72.634    201
+REGINALD       0.084 72.717    202
+RUBEN          0.082 72.800    203
+BRETT          0.082 72.882    204
+ANGEL          0.082 72.964    205
+NATHANIEL      0.081 73.045    206
+RAFAEL         0.081 73.126    207
+LESLIE         0.081 73.207    208
+EDGAR          0.080 73.287    209
+MILTON         0.080 73.367    210
+RAUL           0.079 73.446    211
+BEN            0.078 73.524    212
+CHESTER        0.078 73.602    213
+CECIL          0.078 73.680    214
+DUANE          0.077 73.757    215
+FRANKLIN       0.077 73.834    216
+ANDRE          0.076 73.910    217
+ELMER          0.074 73.984    218
+BRAD           0.073 74.057    219
+GABRIEL        0.073 74.130    220
+RON            0.072 74.202    221
+MITCHELL       0.072 74.274    222
+ROLAND         0.072 74.347    223
+ARNOLD         0.072 74.419    224
+HARVEY         0.072 74.491    225
+JARED          0.071 74.562    226
+ADRIAN         0.069 74.631    227
+KARL           0.069 74.699    228
+CORY           0.068 74.767    229
+CLAUDE         0.068 74.835    230
+ERIK           0.068 74.903    231
+DARRYL         0.067 74.970    232
+JAMIE          0.066 75.037    233
+NEIL           0.066 75.102    234
+JESSIE         0.065 75.168    235
+CHRISTIAN      0.065 75.233    236
+JAVIER         0.065 75.297    237
+FERNANDO       0.065 75.362    238
+CLINTON        0.065 75.427    239
+TED            0.064 75.491    240
+MATHEW         0.064 75.555    241
+TYRONE         0.064 75.619    242
+DARREN         0.064 75.683    243
+LONNIE         0.064 75.746    244
+LANCE          0.063 75.810    245
+CODY           0.063 75.873    246
+JULIO          0.063 75.936    247
+KELLY          0.063 75.998    248
+KURT           0.062 76.061    249
+ALLAN          0.061 76.122    250
+NELSON         0.061 76.182    251
+GUY            0.060 76.243    252
+CLAYTON        0.060 76.303    253
+HUGH           0.060 76.363    254
+MAX            0.059 76.421    255
+DWAYNE         0.059 76.480    256
+DWIGHT         0.058 76.538    257
+ARMANDO        0.058 76.596    258
+FELIX          0.058 76.654    259
+JIMMIE         0.058 76.711    260
+EVERETT        0.057 76.768    261
+JORDAN         0.056 76.824    262
+IAN            0.056 76.880    263
+WALLACE        0.056 76.936    264
+KEN            0.055 76.991    265
+BOB            0.055 77.047    266
+JAIME          0.055 77.102    267
+CASEY          0.054 77.156    268
+ALFREDO        0.054 77.210    269
+ALBERTO        0.053 77.263    270
+DAVE           0.053 77.316    271
+IVAN           0.053 77.369    272
+JOHNNIE        0.052 77.421    273
+SIDNEY         0.052 77.474    274
+BYRON          0.052 77.526    275
+JULIAN         0.052 77.578    276
+ISAAC          0.051 77.629    277
+MORRIS         0.051 77.680    278
+CLIFTON        0.050 77.730    279
+WILLARD        0.050 77.780    280
+DARYL          0.050 77.831    281
+ROSS           0.050 77.880    282
+VIRGIL         0.049 77.929    283
+ANDY           0.049 77.979    284
+MARSHALL       0.049 78.028    285
+SALVADOR       0.049 78.077    286
+PERRY          0.049 78.126    287
+KIRK           0.049 78.175    288
+SERGIO         0.049 78.224    289
+MARION         0.048 78.272    290
+TRACY          0.048 78.320    291
+SETH           0.048 78.368    292
+KENT           0.048 78.416    293
+TERRANCE       0.048 78.464    294
+RENE           0.048 78.512    295
+EDUARDO        0.047 78.559    296
+TERRENCE       0.047 78.606    297
+ENRIQUE        0.046 78.652    298
+FREDDIE        0.046 78.698    299
+WADE           0.045 78.743    300
+AUSTIN         0.044 78.786    301
+STUART         0.044 78.830    302
+FREDRICK       0.043 78.873    303
+ARTURO         0.043 78.917    304
+ALEJANDRO      0.043 78.960    305
+JACKIE         0.043 79.002    306
+JOEY           0.043 79.045    307
+NICK           0.043 79.088    308
+LUTHER         0.043 79.130    309
+WENDELL        0.042 79.172    310
+JEREMIAH       0.042 79.215    311
+EVAN           0.042 79.257    312
+JULIUS         0.042 79.298    313
+DANA           0.042 79.340    314
+DONNIE         0.041 79.381    315
+OTIS           0.041 79.422    316
+SHANNON        0.040 79.462    317
+TREVOR         0.040 79.503    318
+OLIVER         0.040 79.543    319
+LUKE           0.040 79.583    320
+HOMER          0.040 79.623    321
+GERARD         0.040 79.663    322
+DOUG           0.040 79.703    323
+KENNY          0.039 79.742    324
+HUBERT         0.039 79.782    325
+ANGELO         0.039 79.821    326
+SHAUN          0.039 79.859    327
+LYLE           0.038 79.898    328
+MATT           0.038 79.936    329
+LYNN           0.038 79.974    330
+ALFONSO        0.038 80.012    331
+ORLANDO        0.037 80.049    332
+REX            0.037 80.086    333
+CARLTON        0.037 80.123    334
+ERNESTO        0.037 80.160    335
+CAMERON        0.037 80.197    336
+NEAL           0.037 80.233    337
+PABLO          0.036 80.270    338
+LORENZO        0.036 80.306    339
+OMAR           0.036 80.342    340
+WILBUR         0.036 80.378    341
+BLAKE          0.036 80.414    342
+GRANT          0.036 80.450    343
+HORACE         0.036 80.486    344
+RODERICK       0.036 80.521    345
+KERRY          0.036 80.557    346
+ABRAHAM        0.035 80.592    347
+WILLIS         0.035 80.627    348
+RICKEY         0.035 80.662    349
+JEAN           0.035 80.696    350
+IRA            0.035 80.731    351
+ANDRES         0.034 80.766    352
+CESAR          0.034 80.800    353
+JOHNATHAN      0.034 80.834    354
+MALCOLM        0.034 80.868    355
+RUDOLPH        0.034 80.902    356
+DAMON          0.034 80.936    357
+KELVIN         0.034 80.970    358
+RUDY           0.034 81.004    359
+PRESTON        0.034 81.037    360
+ALTON          0.033 81.071    361
+ARCHIE         0.033 81.104    362
+MARCO          0.033 81.137    363
+WM             0.033 81.170    364
+PETE           0.032 81.202    365
+RANDOLPH       0.032 81.234    366
+GARRY          0.032 81.267    367
+GEOFFREY       0.032 81.299    368
+JONATHON       0.032 81.331    369
+FELIPE         0.032 81.363    370
+BENNIE         0.032 81.395    371
+GERARDO        0.032 81.427    372
+ED             0.032 81.458    373
+DOMINIC        0.032 81.490    374
+ROBIN          0.032 81.522    375
+LOREN          0.032 81.553    376
+DELBERT        0.031 81.585    377
+COLIN          0.031 81.616    378
+GUILLERMO      0.031 81.647    379
+EARNEST        0.031 81.678    380
+LUCAS          0.031 81.709    381
+BENNY          0.030 81.739    382
+NOEL           0.030 81.769    383
+SPENCER        0.030 81.799    384
+RODOLFO        0.030 81.828    385
+MYRON          0.030 81.858    386
+EDMUND         0.030 81.887    387
+GARRETT        0.029 81.917    388
+SALVATORE      0.029 81.946    389
+CEDRIC         0.029 81.975    390
+LOWELL         0.029 82.004    391
+GREGG          0.029 82.032    392
+SHERMAN        0.028 82.061    393
+WILSON         0.028 82.089    394
+DEVIN          0.028 82.117    395
+SYLVESTER      0.028 82.145    396
+KIM            0.028 82.173    397
+ROOSEVELT      0.028 82.201    398
+ISRAEL         0.028 82.229    399
+JERMAINE       0.028 82.257    400
+FORREST        0.027 82.284    401
+WILBERT        0.027 82.310    402
+LELAND         0.027 82.337    403
+SIMON          0.026 82.363    404
+GUADALUPE      0.026 82.390    405
+CLARK          0.026 82.416    406
+IRVING         0.026 82.442    407
+CARROLL        0.026 82.468    408
+BRYANT         0.026 82.494    409
+OWEN           0.026 82.519    410
+RUFUS          0.025 82.545    411
+WOODROW        0.025 82.570    412
+SAMMY          0.025 82.595    413
+KRISTOPHER     0.025 82.620    414
+MACK           0.025 82.645    415
+LEVI           0.025 82.670    416
+MARCOS         0.025 82.695    417
+GUSTAVO        0.025 82.720    418
+JAKE           0.025 82.744    419
+LIONEL         0.024 82.769    420
+MARTY          0.024 82.793    421
+TAYLOR         0.024 82.817    422
+ELLIS          0.024 82.842    423
+DALLAS         0.024 82.866    424
+GILBERTO       0.024 82.890    425
+CLINT          0.024 82.914    426
+NICOLAS        0.024 82.938    427
+LAURENCE       0.024 82.962    428
+ISMAEL         0.024 82.985    429
+ORVILLE        0.024 83.009    430
+DREW           0.024 83.033    431
+JODY           0.024 83.056    432
+ERVIN          0.023 83.080    433
+DEWEY          0.023 83.103    434
+AL             0.023 83.126    435
+WILFRED        0.023 83.150    436
+JOSH           0.023 83.173    437
+HUGO           0.023 83.196    438
+IGNACIO        0.023 83.219    439
+CALEB          0.023 83.241    440
+TOMAS          0.023 83.264    441
+SHELDON        0.023 83.287    442
+ERICK          0.023 83.310    443
+FRANKIE        0.023 83.332    444
+STEWART        0.022 83.354    445
+DOYLE          0.022 83.377    446
+DARREL         0.022 83.399    447
+ROGELIO        0.022 83.421    448
+TERENCE        0.022 83.443    449
+SANTIAGO       0.022 83.465    450
+ALONZO         0.022 83.487    451
+ELIAS          0.022 83.508    452
+BERT           0.022 83.530    453
+ELBERT         0.022 83.552    454
+RAMIRO         0.022 83.573    455
+CONRAD         0.022 83.595    456
+PAT            0.022 83.616    457
+NOAH           0.022 83.638    458
+GRADY          0.021 83.659    459
+PHIL           0.021 83.681    460
+CORNELIUS      0.021 83.702    461
+LAMAR          0.021 83.723    462
+ROLANDO        0.021 83.744    463
+CLAY           0.021 83.765    464
+PERCY          0.021 83.786    465
+DEXTER         0.021 83.806    466
+BRADFORD       0.021 83.827    467
+MERLE          0.021 83.848    468
+DARIN          0.020 83.868    469
+AMOS           0.020 83.888    470
+TERRELL        0.020 83.909    471
+MOSES          0.020 83.929    472
+IRVIN          0.020 83.949    473
+SAUL           0.020 83.968    474
+ROMAN          0.020 83.988    475
+DARNELL        0.020 84.008    476
+RANDAL         0.020 84.027    477
+TOMMIE         0.020 84.047    478
+TIMMY          0.019 84.066    479
+DARRIN         0.019 84.086    480
+WINSTON        0.019 84.105    481
+BRENDAN        0.019 84.124    482
+TOBY           0.019 84.144    483
+VAN            0.019 84.163    484
+ABEL           0.019 84.182    485
+DOMINICK       0.019 84.201    486
+BOYD           0.019 84.220    487
+COURTNEY       0.019 84.240    488
+JAN            0.019 84.259    489
+EMILIO         0.019 84.277    490
+ELIJAH         0.019 84.296    491
+CARY           0.019 84.315    492
+DOMINGO        0.019 84.334    493
+SANTOS         0.019 84.353    494
+AUBREY         0.019 84.372    495
+EMMETT         0.019 84.390    496
+MARLON         0.019 84.409    497
+EMANUEL        0.019 84.428    498
+JERALD         0.019 84.446    499
+EDMOND         0.019 84.465    500
+EMIL           0.019 84.483    501
+DEWAYNE        0.018 84.502    502
+WILL           0.018 84.520    503
+OTTO           0.018 84.538    504
+TEDDY          0.018 84.556    505
+REYNALDO       0.018 84.574    506
+BRET           0.018 84.592    507
+MORGAN         0.018 84.610    508
+JESS           0.018 84.628    509
+TRENT          0.018 84.646    510
+HUMBERTO       0.018 84.664    511
+EMMANUEL       0.018 84.681    512
+STEPHAN        0.018 84.699    513
+LOUIE          0.018 84.717    514
+VICENTE        0.017 84.734    515
+LAMONT         0.017 84.751    516
+STACY          0.017 84.769    517
+GARLAND        0.017 84.786    518
+MILES          0.017 84.803    519
+MICAH          0.017 84.820    520
+EFRAIN         0.017 84.837    521
+BILLIE         0.017 84.854    522
+LOGAN          0.017 84.871    523
+HEATH          0.017 84.887    524
+RODGER         0.017 84.904    525
+HARLEY         0.017 84.921    526
+DEMETRIUS      0.017 84.937    527
+ETHAN          0.017 84.954    528
+ELDON          0.017 84.970    529
+ROCKY          0.016 84.987    530
+PIERRE         0.016 85.003    531
+JUNIOR         0.016 85.020    532
+FREDDY         0.016 85.036    533
+ELI            0.016 85.052    534
+BRYCE          0.016 85.068    535
+ANTOINE        0.016 85.084    536
+ROBBIE         0.016 85.100    537
+KENDALL        0.016 85.116    538
+ROYCE          0.016 85.132    539
+STERLING       0.016 85.148    540
+MICKEY         0.016 85.164    541
+CHASE          0.016 85.180    542
+GROVER         0.016 85.196    543
+ELTON          0.016 85.212    544
+CLEVELAND      0.016 85.228    545
+DYLAN          0.016 85.243    546
+CHUCK          0.016 85.259    547
+DAMIAN         0.016 85.274    548
+REUBEN         0.015 85.290    549
+STAN           0.015 85.305    550
+AUGUST         0.015 85.321    551
+LEONARDO       0.015 85.336    552
+JASPER         0.015 85.351    553
+RUSSEL         0.015 85.367    554
+ERWIN          0.015 85.382    555
+BENITO         0.015 85.397    556
+HANS           0.015 85.412    557
+MONTE          0.015 85.427    558
+BLAINE         0.015 85.442    559
+ERNIE          0.015 85.456    560
+CURT           0.015 85.471    561
+QUENTIN        0.015 85.486    562
+AGUSTIN        0.015 85.500    563
+MURRAY         0.015 85.515    564
+JAMAL          0.014 85.529    565
+DEVON          0.014 85.544    566
+ADOLFO         0.014 85.558    567
+HARRISON       0.014 85.573    568
+TYSON          0.014 85.587    569
+BURTON         0.014 85.601    570
+BRADY          0.014 85.616    571
+ELLIOTT        0.014 85.630    572
+WILFREDO       0.014 85.644    573
+BART           0.014 85.658    574
+JARROD         0.014 85.672    575
+VANCE          0.014 85.686    576
+DENIS          0.014 85.700    577
+DAMIEN         0.014 85.714    578
+JOAQUIN        0.014 85.728    579
+HARLAN         0.014 85.742    580
+DESMOND        0.014 85.756    581
+ELLIOT         0.014 85.770    582
+DARWIN         0.014 85.783    583
+ASHLEY         0.014 85.797    584
+GREGORIO       0.014 85.811    585
+BUDDY          0.014 85.824    586
+XAVIER         0.013 85.838    587
+KERMIT         0.013 85.851    588
+ROSCOE         0.013 85.865    589
+ESTEBAN        0.013 85.878    590
+ANTON          0.013 85.891    591
+SOLOMON        0.013 85.904    592
+SCOTTY         0.013 85.917    593
+NORBERT        0.013 85.930    594
+ELVIN          0.013 85.943    595
+WILLIAMS       0.013 85.956    596
+NOLAN          0.013 85.969    597
+CAREY          0.013 85.982    598
+ROD            0.013 85.994    599
+QUINTON        0.013 86.007    600
+HAL            0.013 86.020    601
+BRAIN          0.013 86.033    602
+ROB            0.013 86.045    603
+ELWOOD         0.013 86.058    604
+KENDRICK       0.013 86.070    605
+DARIUS         0.013 86.083    606
+MOISES         0.013 86.096    607
+SON            0.012 86.108    608
+MARLIN         0.012 86.120    609
+FIDEL          0.012 86.133    610
+THADDEUS       0.012 86.145    611
+CLIFF          0.012 86.158    612
+MARCEL         0.012 86.170    613
+ALI            0.012 86.182    614
+JACKSON        0.012 86.195    615
+RAPHAEL        0.012 86.207    616
+BRYON          0.012 86.219    617
+ARMAND         0.012 86.231    618
+ALVARO         0.012 86.244    619
+JEFFRY         0.012 86.256    620
+DANE           0.012 86.268    621
+JOESPH         0.012 86.280    622
+THURMAN        0.012 86.292    623
+NED            0.012 86.304    624
+SAMMIE         0.012 86.316    625
+RUSTY          0.012 86.328    626
+MICHEL         0.012 86.339    627
+MONTY          0.012 86.351    628
+RORY           0.012 86.363    629
+FABIAN         0.012 86.374    630
+REGGIE         0.012 86.386    631
+MASON          0.012 86.397    632
+GRAHAM         0.012 86.409    633
+KRIS           0.011 86.420    634
+ISAIAH         0.011 86.432    635
+VAUGHN         0.011 86.443    636
+GUS            0.011 86.454    637
+AVERY          0.011 86.466    638
+LOYD           0.011 86.477    639
+DIEGO          0.011 86.488    640
+ALEXIS         0.011 86.499    641
+ADOLPH         0.011 86.511    642
+NORRIS         0.011 86.522    643
+MILLARD        0.011 86.533    644
+ROCCO          0.011 86.544    645
+GONZALO        0.011 86.555    646
+DERICK         0.011 86.566    647
+RODRIGO        0.011 86.577    648
+GERRY          0.011 86.588    649
+STACEY         0.011 86.599    650
+CARMEN         0.011 86.610    651
+WILEY          0.011 86.621    652
+RIGOBERTO      0.011 86.632    653
+ALPHONSO       0.011 86.643    654
+TY             0.011 86.654    655
+SHELBY         0.011 86.664    656
+RICKIE         0.011 86.675    657
+NOE            0.011 86.686    658
+VERN           0.010 86.696    659
+BOBBIE         0.010 86.707    660
+REED           0.010 86.717    661
+JEFFERSON      0.010 86.727    662
+ELVIS          0.010 86.738    663
+BERNARDO       0.010 86.748    664
+MAURICIO       0.010 86.758    665
+HIRAM          0.010 86.768    666
+DONOVAN        0.010 86.778    667
+BASIL          0.010 86.789    668
+RILEY          0.010 86.799    669
+OLLIE          0.010 86.809    670
+NICKOLAS       0.010 86.819    671
+MAYNARD        0.010 86.829    672
+SCOT           0.010 86.840    673
+VINCE          0.010 86.850    674
+QUINCY         0.010 86.860    675
+EDDY           0.010 86.870    676
+SEBASTIAN      0.010 86.880    677
+FEDERICO       0.010 86.890    678
+ULYSSES        0.010 86.900    679
+HERIBERTO      0.010 86.910    680
+DONNELL        0.010 86.920    681
+COLE           0.010 86.929    682
+DENNY          0.010 86.939    683
+DAVIS          0.010 86.949    684
+GAVIN          0.010 86.959    685
+EMERY          0.010 86.969    686
+WARD           0.010 86.979    687
+ROMEO          0.010 86.989    688
+JAYSON         0.010 86.998    689
+DION           0.010 87.008    690
+DANTE          0.010 87.018    691
+CLEMENT        0.010 87.028    692
+COY            0.010 87.037    693
+ODELL          0.010 87.047    694
+MAXWELL        0.010 87.057    695
+JARVIS         0.010 87.066    696
+BRUNO          0.010 87.076    697
+ISSAC          0.010 87.086    698
+MARY           0.009 87.095    699
+DUDLEY         0.009 87.104    700
+BROCK          0.009 87.114    701
+SANFORD        0.009 87.123    702
+COLBY          0.009 87.133    703
+CARMELO        0.009 87.142    704
+BARNEY         0.009 87.152    705
+NESTOR         0.009 87.161    706
+HOLLIS         0.009 87.170    707
+STEFAN         0.009 87.180    708
+DONNY          0.009 87.189    709
+ART            0.009 87.198    710
+LINWOOD        0.009 87.208    711
+BEAU           0.009 87.217    712
+WELDON         0.009 87.226    713
+GALEN          0.009 87.235    714
+ISIDRO         0.009 87.244    715
+TRUMAN         0.009 87.253    716
+DELMAR         0.009 87.262    717
+JOHNATHON      0.009 87.271    718
+SILAS          0.009 87.280    719
+FREDERIC       0.009 87.289    720
+DICK           0.009 87.298    721
+KIRBY          0.009 87.307    722
+IRWIN          0.009 87.316    723
+CRUZ           0.009 87.325    724
+MERLIN         0.009 87.334    725
+MERRILL        0.009 87.343    726
+CHARLEY        0.009 87.351    727
+MARCELINO      0.009 87.360    728
+LANE           0.009 87.369    729
+HARRIS         0.009 87.378    730
+CLEO           0.009 87.386    731
+CARLO          0.009 87.395    732
+TRENTON        0.009 87.404    733
+KURTIS         0.009 87.413    734
+HUNTER         0.009 87.421    735
+AURELIO        0.009 87.430    736
+WINFRED        0.009 87.438    737
+VITO           0.009 87.447    738
+COLLIN         0.009 87.456    739
+DENVER         0.009 87.464    740
+CARTER         0.009 87.473    741
+LEONEL         0.008 87.481    742
+EMORY          0.008 87.490    743
+PASQUALE       0.008 87.498    744
+MOHAMMAD       0.008 87.506    745
+MARIANO        0.008 87.514    746
+DANIAL         0.008 87.523    747
+BLAIR          0.008 87.531    748
+LANDON         0.008 87.539    749
+DIRK           0.008 87.548    750
+BRANDEN        0.008 87.556    751
+ADAN           0.008 87.564    752
+NUMBERS        0.008 87.572    753
+CLAIR          0.008 87.581    754
+BUFORD         0.008 87.589    755
+GERMAN         0.008 87.597    756
+BERNIE         0.008 87.605    757
+WILMER         0.008 87.613    758
+JOAN           0.008 87.621    759
+EMERSON        0.008 87.629    760
+ZACHERY        0.008 87.637    761
+FLETCHER       0.008 87.645    762
+JACQUES        0.008 87.653    763
+ERROL          0.008 87.661    764
+DALTON         0.008 87.669    765
+MONROE         0.008 87.676    766
+JOSUE          0.008 87.684    767
+DOMINIQUE      0.008 87.692    768
+EDWARDO        0.008 87.700    769
+BOOKER         0.008 87.708    770
+WILFORD        0.008 87.715    771
+SONNY          0.008 87.723    772
+SHELTON        0.008 87.731    773
+CARSON         0.008 87.739    774
+THERON         0.008 87.746    775
+RAYMUNDO       0.008 87.754    776
+DAREN          0.008 87.762    777
+TRISTAN        0.008 87.769    778
+HOUSTON        0.008 87.777    779
+ROBBY          0.008 87.785    780
+LINCOLN        0.008 87.792    781
+JAME           0.008 87.800    782
+GENARO         0.008 87.807    783
+GALE           0.008 87.815    784
+BENNETT        0.008 87.822    785
+OCTAVIO        0.008 87.830    786
+CORNELL        0.008 87.838    787
+LAVERNE        0.008 87.845    788
+HUNG           0.008 87.853    789
+ARRON          0.008 87.860    790
+ANTONY         0.008 87.868    791
+HERSCHEL       0.007 87.875    792
+ALVA           0.007 87.883    793
+GIOVANNI       0.007 87.890    794
+GARTH          0.007 87.897    795
+CYRUS          0.007 87.905    796
+CYRIL          0.007 87.912    797
+RONNY          0.007 87.920    798
+STEVIE         0.007 87.927    799
+LON            0.007 87.934    800
+FREEMAN        0.007 87.941    801
+ERIN           0.007 87.949    802
+DUNCAN         0.007 87.956    803
+KENNITH        0.007 87.963    804
+CARMINE        0.007 87.970    805
+AUGUSTINE      0.007 87.978    806
+YOUNG          0.007 87.985    807
+ERICH          0.007 87.992    808
+CHADWICK       0.007 87.999    809
+WILBURN        0.007 88.006    810
+RUSS           0.007 88.013    811
+REID           0.007 88.021    812
+MYLES          0.007 88.028    813
+ANDERSON       0.007 88.035    814
+MORTON         0.007 88.042    815
+JONAS          0.007 88.049    816
+FOREST         0.007 88.056    817
+MITCHEL        0.007 88.063    818
+MERVIN         0.007 88.070    819
+ZANE           0.007 88.077    820
+RICH           0.007 88.084    821
+JAMEL          0.007 88.091    822
+LAZARO         0.007 88.098    823
+ALPHONSE       0.007 88.105    824
+RANDELL        0.007 88.112    825
+MAJOR          0.007 88.119    826
+JOHNIE         0.007 88.126    827
+JARRETT        0.007 88.133    828
+BROOKS         0.007 88.140    829
+ARIEL          0.007 88.147    830
+ABDUL          0.007 88.154    831
+DUSTY          0.007 88.161    832
+LUCIANO        0.007 88.168    833
+LINDSEY        0.007 88.174    834
+TRACEY         0.007 88.181    835
+SEYMOUR        0.007 88.188    836
+SCOTTIE        0.007 88.195    837
+EUGENIO        0.007 88.202    838
+MOHAMMED       0.007 88.208    839
+SANDY          0.007 88.215    840
+VALENTIN       0.007 88.222    841
+CHANCE         0.007 88.228    842
+ARNULFO        0.007 88.235    843
+LUCIEN         0.007 88.242    844
+FERDINAND      0.007 88.248    845
+THAD           0.007 88.255    846
+EZRA           0.007 88.262    847
+SYDNEY         0.007 88.268    848
+ALDO           0.007 88.275    849
+RUBIN          0.006 88.281    850
+ROYAL          0.006 88.288    851
+MITCH          0.006 88.294    852
+EARLE          0.006 88.301    853
+ABE            0.006 88.307    854
+WYATT          0.006 88.314    855
+MARQUIS        0.006 88.320    856
+LANNY          0.006 88.326    857
+KAREEM         0.006 88.333    858
+JAMAR          0.006 88.339    859
+BORIS          0.006 88.346    860
+ISIAH          0.006 88.352    861
+EMILE          0.006 88.358    862
+ELMO           0.006 88.365    863
+ARON           0.006 88.371    864
+LEOPOLDO       0.006 88.377    865
+EVERETTE       0.006 88.384    866
+JOSEF          0.006 88.390    867
+GAIL           0.006 88.396    868
+ELOY           0.006 88.403    869
+DORIAN         0.006 88.409    870
+RODRICK        0.006 88.415    871
+REINALDO       0.006 88.421    872
+LUCIO          0.006 88.427    873
+JERROD         0.006 88.434    874
+WESTON         0.006 88.440    875
+HERSHEL        0.006 88.446    876
+BARTON         0.006 88.452    877
+PARKER         0.006 88.458    878
+LEMUEL         0.006 88.464    879
+LAVERN         0.006 88.470    880
+BURT           0.006 88.477    881
+JULES          0.006 88.483    882
+GIL            0.006 88.489    883
+ELISEO         0.006 88.495    884
+AHMAD          0.006 88.501    885
+NIGEL          0.006 88.507    886
+EFREN          0.006 88.513    887
+ANTWAN         0.006 88.519    888
+ALDEN          0.006 88.525    889
+MARGARITO      0.006 88.531    890
+COLEMAN        0.006 88.537    891
+REFUGIO        0.006 88.543    892
+DINO           0.006 88.549    893
+OSVALDO        0.006 88.555    894
+LES            0.006 88.560    895
+DEANDRE        0.006 88.566    896
+NORMAND        0.006 88.572    897
+KIETH          0.006 88.578    898
+IVORY          0.006 88.584    899
+ANDREA         0.006 88.590    900
+TREY           0.006 88.595    901
+NORBERTO       0.006 88.601    902
+NAPOLEON       0.006 88.607    903
+JEROLD         0.006 88.613    904
+FRITZ          0.006 88.619    905
+ROSENDO        0.006 88.624    906
+MILFORD        0.006 88.630    907
+SANG           0.006 88.636    908
+DEON           0.006 88.641    909
+CHRISTOPER     0.006 88.647    910
+ALFONZO        0.006 88.653    911
+LYMAN          0.006 88.658    912
+JOSIAH         0.006 88.664    913
+BRANT          0.006 88.670    914
+WILTON         0.006 88.675    915
+RICO           0.006 88.681    916
+JAMAAL         0.006 88.687    917
+DEWITT         0.006 88.692    918
+CAROL          0.006 88.698    919
+BRENTON        0.006 88.704    920
+YONG           0.006 88.709    921
+OLIN           0.006 88.715    922
+FOSTER         0.006 88.720    923
+FAUSTINO       0.006 88.726    924
+CLAUDIO        0.006 88.731    925
+JUDSON         0.006 88.737    926
+GINO           0.006 88.743    927
+EDGARDO        0.006 88.748    928
+BERRY          0.006 88.754    929
+ALEC           0.006 88.759    930
+TANNER         0.006 88.765    931
+JARRED         0.006 88.770    932
+DONN           0.006 88.776    933
+TRINIDAD       0.005 88.781    934
+TAD            0.005 88.787    935
+SHIRLEY        0.005 88.792    936
+PRINCE         0.005 88.798    937
+PORFIRIO       0.005 88.803    938
+ODIS           0.005 88.809    939
+MARIA          0.005 88.814    940
+LENARD         0.005 88.820    941
+CHAUNCEY       0.005 88.825    942
+CHANG          0.005 88.831    943
+TOD            0.005 88.836    944
+MEL            0.005 88.842    945
+MARCELO        0.005 88.847    946
+KORY           0.005 88.853    947
+AUGUSTUS       0.005 88.858    948
+KEVEN          0.005 88.864    949
+HILARIO        0.005 88.869    950
+BUD            0.005 88.874    951
+SAL            0.005 88.880    952
+ROSARIO        0.005 88.885    953
+ORVAL          0.005 88.891    954
+MAURO          0.005 88.896    955
+DANNIE         0.005 88.901    956
+ZACHARIAH      0.005 88.907    957
+OLEN           0.005 88.912    958
+ANIBAL         0.005 88.917    959
+MILO           0.005 88.923    960
+JED            0.005 88.928    961
+FRANCES        0.005 88.933    962
+THANH          0.005 88.939    963
+DILLON         0.005 88.944    964
+AMADO          0.005 88.949    965
+NEWTON         0.005 88.955    966
+CONNIE         0.005 88.960    967
+LENNY          0.005 88.965    968
+TORY           0.005 88.970    969
+RICHIE         0.005 88.975    970
+LUPE           0.005 88.981    971
+HORACIO        0.005 88.986    972
+BRICE          0.005 88.991    973
+MOHAMED        0.005 88.996    974
+DELMER         0.005 89.001    975
+DARIO          0.005 89.006    976
+REYES          0.005 89.012    977
+DEE            0.005 89.017    978
+MAC            0.005 89.022    979
+JONAH          0.005 89.027    980
+JERROLD        0.005 89.032    981
+ROBT           0.005 89.037    982
+HANK           0.005 89.042    983
+SUNG           0.005 89.047    984
+RUPERT         0.005 89.052    985
+ROLLAND        0.005 89.057    986
+KENTON         0.005 89.062    987
+DAMION         0.005 89.067    988
+CHI            0.005 89.072    989
+ANTONE         0.005 89.077    990
+WALDO          0.005 89.082    991
+FREDRIC        0.005 89.087    992
+BRADLY         0.005 89.092    993
+QUINN          0.005 89.097    994
+KIP            0.005 89.102    995
+BURL           0.005 89.107    996
+WALKER         0.005 89.112    997
+TYREE          0.005 89.117    998
+JEFFEREY       0.005 89.122    999
+AHMED          0.005 89.127   1000
+WILLY          0.005 89.132   1001
+STANFORD       0.005 89.137   1002
+OREN           0.005 89.142   1003
+NOBLE          0.005 89.146   1004
+MOSHE          0.005 89.151   1005
+MIKEL          0.005 89.156   1006
+ENOCH          0.005 89.161   1007
+BRENDON        0.005 89.166   1008
+QUINTIN        0.005 89.171   1009
+JAMISON        0.005 89.176   1010
+FLORENCIO      0.005 89.181   1011
+DARRICK        0.005 89.185   1012
+TOBIAS         0.005 89.190   1013
+MINH           0.005 89.195   1014
+HASSAN         0.005 89.200   1015
+GIUSEPPE       0.005 89.205   1016
+DEMARCUS       0.005 89.210   1017
+CLETUS         0.005 89.214   1018
+TYRELL         0.005 89.219   1019
+LYNDON         0.005 89.224   1020
+KEENAN         0.005 89.229   1021
+WERNER         0.005 89.234   1022
+THEO           0.005 89.238   1023
+GERALDO        0.005 89.243   1024
+LOU            0.005 89.248   1025
+COLUMBUS       0.005 89.253   1026
+CHET           0.005 89.257   1027
+BERTRAM        0.005 89.262   1028
+MARKUS         0.005 89.267   1029
+HUEY           0.005 89.271   1030
+HILTON         0.005 89.276   1031
+DWAIN          0.005 89.281   1032
+DONTE          0.005 89.285   1033
+TYRON          0.005 89.290   1034
+OMER           0.005 89.295   1035
+ISAIAS         0.005 89.299   1036
+HIPOLITO       0.005 89.304   1037
+FERMIN         0.005 89.309   1038
+CHUNG          0.005 89.313   1039
+ADALBERTO      0.005 89.318   1040
+VALENTINE      0.005 89.323   1041
+JAMEY          0.005 89.327   1042
+BO             0.005 89.332   1043
+BARRETT        0.005 89.336   1044
+WHITNEY        0.005 89.341   1045
+TEODORO        0.005 89.345   1046
+MCKINLEY       0.005 89.350   1047
+MAXIMO         0.005 89.355   1048
+GARFIELD       0.005 89.359   1049
+SOL            0.005 89.364   1050
+RALEIGH        0.005 89.368   1051
+LAWERENCE      0.005 89.373   1052
+ABRAM          0.005 89.377   1053
+RASHAD         0.004 89.382   1054
+KING           0.004 89.386   1055
+EMMITT         0.004 89.391   1056
+DARON          0.004 89.395   1057
+CHONG          0.004 89.400   1058
+SAMUAL         0.004 89.404   1059
+PARIS          0.004 89.409   1060
+OTHA           0.004 89.413   1061
+MIQUEL         0.004 89.418   1062
+LACY           0.004 89.422   1063
+EUSEBIO        0.004 89.426   1064
+DONG           0.004 89.431   1065
+DOMENIC        0.004 89.435   1066
+DARRON         0.004 89.440   1067
+BUSTER         0.004 89.444   1068
+ANTONIA        0.004 89.449   1069
+WILBER         0.004 89.453   1070
+RENATO         0.004 89.458   1071
+JC             0.004 89.462   1072
+HOYT           0.004 89.466   1073
+HAYWOOD        0.004 89.471   1074
+EZEKIEL        0.004 89.475   1075
+CHAS           0.004 89.480   1076
+FLORENTINO     0.004 89.484   1077
+ELROY          0.004 89.489   1078
+CLEMENTE       0.004 89.493   1079
+ARDEN          0.004 89.497   1080
+NEVILLE        0.004 89.502   1081
+KELLEY         0.004 89.506   1082
+EDISON         0.004 89.510   1083
+DESHAWN        0.004 89.515   1084
+CARROL         0.004 89.519   1085
+SHAYNE         0.004 89.523   1086
+NATHANIAL      0.004 89.528   1087
+JORDON         0.004 89.532   1088
+DANILO         0.004 89.536   1089
+CLAUD          0.004 89.541   1090
+VAL            0.004 89.545   1091
+SHERWOOD       0.004 89.549   1092
+RAYMON         0.004 89.554   1093
+RAYFORD        0.004 89.558   1094
+CRISTOBAL      0.004 89.562   1095
+AMBROSE        0.004 89.567   1096
+TITUS          0.004 89.571   1097
+HYMAN          0.004 89.575   1098
+FELTON         0.004 89.579   1099
+EZEQUIEL       0.004 89.584   1100
+ERASMO         0.004 89.588   1101
+STANTON        0.004 89.592   1102
+LONNY          0.004 89.596   1103
+LEN            0.004 89.601   1104
+IKE            0.004 89.605   1105
+MILAN          0.004 89.609   1106
+LINO           0.004 89.613   1107
+JAROD          0.004 89.617   1108
+HERB           0.004 89.622   1109
+ANDREAS        0.004 89.626   1110
+WALTON         0.004 89.630   1111
+RHETT          0.004 89.634   1112
+PALMER         0.004 89.638   1113
+JUDE           0.004 89.642   1114
+DOUGLASS       0.004 89.647   1115
+CORDELL        0.004 89.651   1116
+OSWALDO        0.004 89.655   1117
+ELLSWORTH      0.004 89.659   1118
+VIRGILIO       0.004 89.663   1119
+TONEY          0.004 89.667   1120
+NATHANAEL      0.004 89.671   1121
+DEL            0.004 89.675   1122
+BRITT          0.004 89.679   1123
+BENEDICT       0.004 89.684   1124
+MOSE           0.004 89.688   1125
+HONG           0.004 89.692   1126
+LEIGH          0.004 89.696   1127
+JOHNSON        0.004 89.700   1128
+ISREAL         0.004 89.704   1129
+GAYLE          0.004 89.708   1130
+GARRET         0.004 89.712   1131
+FAUSTO         0.004 89.716   1132
+ASA            0.004 89.720   1133
+ARLEN          0.004 89.724   1134
+ZACK           0.004 89.728   1135
+WARNER         0.004 89.732   1136
+MODESTO        0.004 89.736   1137
+FRANCESCO      0.004 89.740   1138
+MANUAL         0.004 89.744   1139
+JAE            0.004 89.748   1140
+GAYLORD        0.004 89.752   1141
+GASTON         0.004 89.756   1142
+FILIBERTO      0.004 89.759   1143
+DEANGELO       0.004 89.763   1144
+MICHALE        0.004 89.767   1145
+GRANVILLE      0.004 89.771   1146
+WES            0.004 89.775   1147
+MALIK          0.004 89.779   1148
+ZACKARY        0.004 89.783   1149
+TUAN           0.004 89.787   1150
+NICKY          0.004 89.790   1151
+ELDRIDGE       0.004 89.794   1152
+CRISTOPHER     0.004 89.798   1153
+CORTEZ         0.004 89.802   1154
+ANTIONE        0.004 89.806   1155
+MALCOM         0.004 89.809   1156
+LONG           0.004 89.813   1157
+KOREY          0.004 89.817   1158
+JOSPEH         0.004 89.821   1159
+COLTON         0.004 89.825   1160
+WAYLON         0.004 89.828   1161
+VON            0.004 89.832   1162
+HOSEA          0.004 89.836   1163
+SHAD           0.004 89.840   1164
+SANTO          0.004 89.843   1165
+RUDOLF         0.004 89.847   1166
+ROLF           0.004 89.851   1167
+REY            0.004 89.855   1168
+RENALDO        0.004 89.858   1169
+MARCELLUS      0.004 89.862   1170
+LUCIUS         0.004 89.866   1171
+LESLEY         0.004 89.870   1172
+KRISTOFER      0.004 89.873   1173
+BOYCE          0.004 89.877   1174
+BENTON         0.004 89.881   1175
+MAN            0.004 89.884   1176
+KASEY          0.004 89.888   1177
+JEWELL         0.004 89.892   1178
+HAYDEN         0.004 89.895   1179
+HARLAND        0.004 89.899   1180
+ARNOLDO        0.004 89.903   1181
+RUEBEN         0.004 89.907   1182
+LEANDRO        0.004 89.910   1183
+KRAIG          0.004 89.914   1184
+JERRELL        0.004 89.918   1185
+JEROMY         0.004 89.921   1186
+HOBERT         0.004 89.925   1187
+CEDRICK        0.004 89.929   1188
+ARLIE          0.004 89.932   1189
+WINFORD        0.004 89.936   1190
+WALLY          0.004 89.939   1191
+PATRICIA       0.004 89.943   1192
+LUIGI          0.004 89.947   1193
+KENETH         0.004 89.950   1194
+JACINTO        0.004 89.954   1195
+GRAIG          0.004 89.958   1196
+FRANKLYN       0.004 89.961   1197
+EDMUNDO        0.004 89.965   1198
+SID            0.004 89.968   1199
+PORTER         0.004 89.972   1200
+LEIF           0.004 89.976   1201
+LAUREN         0.004 89.979   1202
+JERAMY         0.004 89.983   1203
+ELISHA         0.004 89.986   1204
+BUCK           0.004 89.990   1205
+WILLIAN        0.004 89.994   1206
+VINCENZO       0.004 89.997   1207
+SHON           0.004 90.001   1208
+MICHAL         0.004 90.004   1209
+LYNWOOD        0.004 90.008   1210
+LINDSAY        0.004 90.011   1211
+JEWEL          0.004 90.015   1212
+JERE           0.004 90.018   1213
+HAI            0.004 90.022   1214
+ELDEN          0.004 90.026   1215
+DORSEY         0.004 90.029   1216
+DARELL         0.004 90.033   1217
+BRODERICK      0.004 90.036   1218
+ALONSO         0.004 90.040   1219

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/firstNames.txt
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/firstNames.txt b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/firstNames.txt
new file mode 100644
index 0000000..f027f1f
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/firstNames.txt
@@ -0,0 +1,5494 @@
+James
+John
+Robert
+Mary
+Michael
+William
+David
+Richard
+Charles
+Joseph
+Thomas
+Patricia
+Christopher
+Linda
+Barbara
+Daniel
+Paul
+Mark
+Elizabeth
+Jennifer
+Donald
+George
+Maria
+Kenneth
+Susan
+Steven
+Edward
+Margaret
+Brian
+Dorothy
+Ronald
+Anthony
+Lisa
+Kevin
+Nancy
+Karen
+Betty
+Helen
+Jason
+Matthew
+Gary
+Timothy
+Sandra
+Jose
+Larry
+Jeffrey
+Donna
+Frank
+Carol
+Ruth
+Scott
+Eric
+Stephen
+Andrew
+Sharon
+Michelle
+Laura
+Sarah
+Kimberly
+Deborah
+Jessica
+Raymond
+Shirley
+Cynthia
+Angela
+Melissa
+Brenda
+Amy
+Gregory
+Anna
+Joshua
+Jerry
+Rebecca
+Virginia
+Kathleen
+Pamela
+Dennis
+Martha
+Debra
+Amanda
+Stephanie
+Walter
+Patrick
+Carolyn
+Christine
+Peter
+Janet
+Marie
+Catherine
+Harold
+Frances
+Douglas
+Henry
+Ann
+Joyce
+Diane
+Alice
+Julie
+Carl
+Heather
+Teresa
+Arthur
+Doris
+Gloria
+Ryan
+Evelyn
+Roger
+Joe
+Juan
+Cheryl
+Jack
+Jean
+Albert
+Jonathan
+Katherine
+Mildred
+Justin
+Terry
+Gerald
+Keith
+Joan
+Samuel
+Ashley
+Willie
+Judith
+Rose
+Janice
+Kelly
+Lawrence
+Ralph
+Nicole
+Judy
+Christina
+Nicholas
+Roy
+Kathy
+Theresa
+Benjamin
+Beverly
+Denise
+Bruce
+Brandon
+Adam
+Tammy
+Irene
+Fred
+Harry
+Jane
+Wayne
+Billy
+Lori
+Steve
+Louis
+Jeremy
+Rachel
+Marilyn
+Aaron
+Andrea
+Kathryn
+Randy
+Eugene
+Howard
+Carlos
+Louise
+Sara
+Anne
+Jacqueline
+Wanda
+Russell
+Bobby
+Bonnie
+Julia
+Victor
+Ruby
+Lois
+Tina
+Phyllis
+Norma
+Paula
+Annie
+Diana
+Martin
+Ernest
+Phillip
+Todd
+Lillian
+Jesse
+Emily
+Peggy
+Robin
+Crystal
+Craig
+Gladys
+Alan
+Rita
+Dawn
+Connie
+Florence
+Shawn
+Chris
+Clarence
+Edna
+Philip
+Sean
+Tracy
+Carmen
+Johnny
+Tiffany
+Rosa
+Earl
+Cindy
+Jimmy
+Antonio
+Bryan
+Danny
+Tony
+Grace
+Luis
+Mike
+Leonard
+Stanley
+Nathan
+Wendy
+Dale
+Manuel
+Curtis
+Rodney
+Victoria
+Edith
+Kim
+Sherry
+Josephine
+Norman
+Sylvia
+Shannon
+Sheila
+Thelma
+Allen
+Ethel
+Elaine
+Ellen
+Marjorie
+Carrie
+Marvin
+Charlotte
+Vincent
+Glenn
+Esther
+Jeff
+Jeffery
+Monica
+Travis
+Chad
+Emma
+Jacob
+Pauline
+Juanita
+Alfred
+Anita
+Lee
+Melvin
+Rhonda
+Hazel
+Amber
+Francis
+Kyle
+Bradley
+Eva
+Debbie
+Herbert
+Jesus
+April
+Frederick
+Leslie
+Clara
+Jamie
+Lucille
+Ray
+Joel
+Eleanor
+Joanne
+Danielle
+Valerie
+Edwin
+Megan
+Alicia
+Don
+Gail
+Michele
+Suzanne
+Eddie
+Bertha
+Darlene
+Jill
+Veronica
+Erin
+Geraldine
+Ricky
+Randall
+Troy
+Cathy
+Lauren
+Joann
+Lorraine
+Lynn
+Sally
+Barry
+Regina
+Alexander
+Beatrice
+Erica
+Dolores
+Bernice
+Audrey
+Bernard
+Yvonne
+Annette
+June
+Leroy
+Mario
+Francisco
+Marcus
+Samantha
+Clifford
+Micheal
+Theodore
+Dana
+Marion
+Miguel
+Oscar
+Stacy
+Ana
+Renee
+Ida
+Jay
+Jim
+Vivian
+Brittany
+Holly
+Roberta
+Tom
+Melanie
+Alex
+Calvin
+Jeanette
+Jon
+Loretta
+Yolanda
+Laurie
+Katie
+Ronnie
+Bill
+Derek
+Leon
+Lloyd
+Tommy
+Alma
+Kristen
+Sue
+Vanessa
+Beth
+Elsie
+Warren
+Jeanne
+Vicki
+Darrell
+Jerome
+Carla
+Floyd
+Rosemary
+Tara
+Leo
+Alvin
+Eileen
+Terri
+Dean
+Gordon
+Greg
+Jorge
+Tim
+Wesley
+Derrick
+Dustin
+Gertrude
+Lucy
+Pedro
+Tonya
+Dan
+Ella
+Stacey
+Gina
+Kristin
+Lewis
+Wilma
+Zachary
+Agnes
+Corey
+Jessie
+Natalie
+Vera
+Charlene
+Herman
+Maurice
+Roberto
+Vernon
+Willie
+Bessie
+Clyde
+Delores
+Arlene
+Glen
+Hector
+Melinda
+Pearl
+Ricardo
+Shane
+Allison
+Colleen
+Maureen
+Sam
+Tamara
+Constance
+Georgia
+Joy
+Lester
+Rick
+Brent
+Charlie
+Claudia
+Jackie
+Lillie
+Marcia
+Ramon
+Gilbert
+Minnie
+Nellie
+Tanya
+Tyler
+Glenda
+Heidi
+Marlene
+Gene
+Marc
+Courtney
+Lydia
+Marian
+Viola
+Caroline
+Stella
+Dora
+Reginald
+Jo
+Angel
+Brett
+Ruben
+Vickie
+Leslie
+Mattie
+Nathaniel
+Rafael
+Edgar
+Milton
+Terry
+Irma
+Maxine
+Raul
+Ben
+Cecil
+Chester
+Mabel
+Marsha
+Myrtle
+Christy
+Duane
+Franklin
+Lena
+Andre
+Deanna
+Patsy
+Hilda
+Elmer
+Gwendolyn
+Brad
+Gabriel
+Jennie
+Nora
+Arnold
+Cassandra
+Harvey
+Leah
+Margie
+Mitchell
+Nina
+Roland
+Ron
+Carole
+Jared
+Kay
+Naomi
+Penny
+Priscilla
+Brandy
+Olga
+Adrian
+Billie
+Dianne
+Karl
+Leona
+Tracey
+Claude
+Cory
+Erik
+Felicia
+Jenny
+Sonia
+Darryl
+Becky
+Jamie
+Miriam
+Neil
+Velma
+Bobbie
+Christian
+Clinton
+Fernando
+Javier
+Jessie
+Kristina
+Violet
+Darren
+Lonnie
+Mathew
+Ted
+Toni
+Tyrone
+Cody
+Julio
+Kelly
+Lance
+Mae
+Misty
+Daisy
+Kurt
+Ramona
+Shelly
+Sherri
+Allan
+Claire
+Erika
+Katrina
+Nelson
+Clayton
+Guy
+Hugh
+Lindsay
+Lindsey
+Belinda
+Dwayne
+Geneva
+Guadalupe
+Margarita
+Max
+Sheryl
+Armando
+Cora
+Dwight
+Faye
+Felix
+Jimmie
+Ada
+Everett
+Isabel
+Natasha
+Sabrina
+Harriet
+Hattie
+Ian
+Jordan
+Marguerite
+Wallace
+Blanche
+Bob
+Brandi
+Cecilia
+Iris
+Jaime
+Joanna
+Ken
+Kristi
+Molly
+Rosie
+Sandy
+Alfredo
+Angie
+Casey
+Eunice
+Alberto
+Dave
+Inez
+Ivan
+Lynda
+Alberta
+Amelia
+Byron
+Johnnie
+Julian
+Madeline
+Sidney
+Candace
+Genevieve
+Isaac
+Jan
+Janie
+Jodi
+Kayla
+Kristine
+Lee
+Maggie
+Monique
+Morris
+Sonya
+Alison
+Clifton
+Daryl
+Fannie
+Maryann
+Melody
+Opal
+Ross
+Willard
+Yvette
+Andy
+Flora
+Kirk
+Luz
+Marshall
+Olivia
+Perry
+Salvador
+Sergio
+Shelley
+Susie
+Virgil
+Antoinette
+Beulah
+Kent
+Kristy
+Lola
+Lula
+Mamie
+Marion
+Rene
+Seth
+Terrance
+Tracy
+Verna
+Eduardo
+Terrence
+Candice
+Enrique
+Freddie
+Jeannette
+Juana
+Kelli
+Pam
+Bridget
+Hannah
+Wade
+Whitney
+Austin
+Celia
+Karla
+Stuart
+Alejandro
+Arturo
+Della
+Fredrick
+Gayle
+Jackie
+Joey
+Latoya
+Luther
+Lynne
+Nick
+Patty
+Shelia
+Vicky
+Dana
+Evan
+Jeremiah
+Julius
+Marianne
+Sheri
+Wendell
+Blanca
+Donnie
+Erma
+Jacquelyn
+Kara
+Otis
+Doug
+Gerard
+Homer
+Krista
+Leticia
+Luke
+Myra
+Oliver
+Pat
+Roxanne
+Shannon
+Trevor
+Adrienne
+Alexandra
+Angelica
+Angelo
+Bernadette
+Bethany
+Brooke
+Francis
+Hubert
+Johnnie
+Kenny
+Robyn
+Rosalie
+Sadie
+Shaun
+Alfonso
+Chelsea
+Ernestine
+Jasmine
+Jody
+Kendra
+Lyle
+Lynn
+Mable
+Matt
+Muriel
+Nichole
+Rachael
+Traci
+Angelina
+Cameron
+Carlton
+Elena
+Ernesto
+Krystal
+Marcella
+Neal
+Orlando
+Rex
+Blake
+Dianna
+Estelle
+Grant
+Horace
+Kari
+Kerry
+Lora
+Lorenzo
+Nadine
+Omar
+Pablo
+Paulette
+Roderick
+Wilbur
+Abraham
+Angel
+Antonia
+Desiree
+Doreen
+Ira
+Jean
+Mona
+Rickey
+Rosemarie
+Willis
+Andres
+Betsy
+Cesar
+Christie
+Damon
+Freda
+Ginger
+Hope
+Janis
+Johnathan
+Kelvin
+Malcolm
+Preston
+Rudolph
+Rudy
+Alton
+Archie
+Cristina
+Eula
+Lynette
+Marco
+Mercedes
+Meredith
+Teri
+Wm
+Bennie
+Cecelia
+Dominic
+Ed
+Eloise
+Felipe
+Garry
+Geoffrey
+Gerardo
+Gretchen
+Jonathon
+Leigh
+Loren
+Meghan
+Pete
+Randolph
+Robin
+Rochelle
+Sophia
+Alyssa
+Colin
+Delbert
+Earnest
+Guillermo
+Gwen
+Henrietta
+Jana
+Kelley
+Kerry
+Lucas
+Raquel
+Alexis
+Benny
+Edmund
+Jenna
+Laverne
+Myron
+Noel
+Olive
+Rodolfo
+Spencer
+Tasha
+Tricia
+Casey
+Cedric
+Darla
+Delia
+Elvira
+Essie
+Garrett
+Gregg
+Kate
+Kellie
+Lana
+Lila
+Lorena
+Lowell
+Mandy
+May
+Mindy
+Patti
+Salvatore
+Silvia
+Sonja
+Sophie
+Camille
+Devin
+Dixie
+Elsa
+Faith
+Israel
+Jeannie
+Jermaine
+Johanna
+Josefina
+Kim
+Lela
+Lorene
+Lucia
+Marta
+Miranda
+Roosevelt
+Shari
+Sherman
+Sylvester
+Wilson
+Aimee
+Alisha
+Ebony
+Elisa
+Forrest
+Jaime
+Kristie
+Leland
+Marina
+Melba
+Nettie
+Ollie
+Ora
+Rena
+Shawna
+Tabitha
+Tami
+Wilbert
+Winifred
+Addie
+Bonita
+Bryant
+Carroll
+Clark
+Guadalupe
+Irving
+Latasha
+Marla
+Myrna
+Owen
+Patrice
+Ronda
+Sherrie
+Simon
+Tammie
+Abigail
+Adele
+Adriana
+Cara
+Celeste
+Cheri
+Deloris
+Dorthy
+Francine
+Gustavo
+Jake
+Jewel
+Kristopher
+Levi
+Lucinda
+Mack
+Marcos
+Rebekah
+Rufus
+Sammy
+Shelby
+Stacie
+Woodrow
+Aurora
+Brittney
+Chris
+Clint
+Corinne
+Dallas
+Drew
+Effie
+Ellis
+Elva
+Estella
+Etta
+Fern
+Francisca
+Gilberto
+Helene
+Ismael
+Janelle
+Jody
+Josie
+Karin
+Kelsey
+Kerri
+Laurel
+Laurence
+Lenora
+Lionel
+Lottie
+Lourdes
+Marissa
+Marty
+Nicolas
+Nikki
+Orville
+Reba
+Sallie
+Shawn
+Taylor
+Tracie
+Trina
+Trisha
+Aida
+Al
+Bettie
+Caitlin
+Caleb
+Cassie
+Christa
+Dewey
+Elisabeth
+Erick
+Ervin
+Eugenia
+Frankie
+Goldie
+Hugo
+Ignacio
+Ina
+Ingrid
+Iva
+Jenifer
+Josh
+Maude
+Sheldon
+Tomas
+Wilfred
+Alonzo
+Bert
+Candy
+Cherie
+Conrad
+Consuelo
+Darrel
+Debora
+Dena
+Dina
+Doyle
+Elbert
+Elias
+Frankie
+Janette
+Latonya
+Lorna
+Morgan
+Noah
+Pat
+Polly
+Ramiro
+Rogelio
+Rosetta
+Santiago
+Stewart
+Tamika
+Terence
+Therese
+Bradford
+Carolina
+Clay
+Cleo
+Cornelius
+Dexter
+Dorothea
+Esperanza
+Fay
+Grady
+Helena
+Jewell
+Jillian
+Kimberley
+Lamar
+Merle
+Nell
+Patrica
+Percy
+Phil
+Rolando
+Shanna
+Stefanie
+Trudy
+Alisa
+Amos
+Darin
+Darnell
+Irvin
+Janine
+Lou
+Lupe
+Maribel
+Mollie
+Moses
+Ola
+Randal
+Roman
+Rosario
+Saul
+Susanne
+Terrell
+Tommie
+Abel
+Alta
+Aubrey
+Bette
+Boyd
+Brendan
+Cary
+Cecile
+Courtney
+Daphne
+Darrin
+Domingo
+Dominick
+Edmond
+Elijah
+Elise
+Emanuel
+Emil
+Emilio
+Emmett
+Ester
+Graciela
+Imogene
+Isabelle
+Jan
+Jerald
+Jocelyn
+Jolene
+Joni
+Keisha
+Leola
+Lesley
+Marlon
+Paige
+Petra
+Rachelle
+Santos
+Susana
+Timmy
+Toby
+Van
+Winston
+Adeline
+Beatriz
+Bret
+Carmela
+Charity
+Clarice
+Dewayne
+Emmanuel
+Gabriela
+Glenna
+Gracie
+Humberto
+Jaclyn
+Jayne
+Jess
+Keri
+Kirsten
+Lacey
+Lizzie
+Louie
+Marisa
+Marisol
+Mayra
+Morgan
+Otto
+Reynaldo
+Rosalind
+Shana
+Sondra
+Stephan
+Teddy
+Tonia
+Trent
+Ursula
+Will
+Angelia
+Angeline
+Autumn
+Billie
+Cathleen
+Christi
+Claudette
+Demetrius
+Efrain
+Eldon
+Elma
+Ethan
+Frieda
+Gabrielle
+Garland
+Harley
+Heath
+Jeanine
+Jimmie
+Jodie
+Justine
+Katharine
+Lamont
+Lea
+Lily
+Logan
+Luella
+Margret
+Micah
+Miles
+Millie
+Robbie
+Rodger
+Shauna
+Sheena
+Staci
+Stacy
+Summer
+Vicente
+Abby
+Aileen
+Antoine
+Bobbi
+Bryce
+Callie
+Chase
+Chuck
+Cleveland
+Dale
+Damian
+Deana
+Dee
+Dolly
+Dominique
+Dylan
+Eli
+Elton
+Freddy
+Gale
+Grover
+Ivy
+Jeannine
+Junior
+Kendall
+Ladonna
+Lara
+Leanne
+Lorie
+Lucile
+Luisa
+Manuela
+Marcy
+Margo
+Maritza
+Martina
+Mavis
+Mickey
+Pierre
+Rene
+Robbie
+Rocky
+Royce
+Selma
+Socorro
+Sterling
+Sybil
+Willa
+Winnie
+Agustin
+Audra
+August
+Barbra
+Benito
+Bettye
+Bianca
+Blaine
+Bridgette
+Cornelia
+Curt
+Eliza
+Ernie
+Erwin
+Georgina
+Hans
+Jasper
+Jeri
+Latisha
+Leann
+Leila
+Leonardo
+Magdalena
+Matilda
+Meagan
+Monte
+Murray
+Ofelia
+Quentin
+Randi
+Reuben
+Russel
+Simone
+Stan
+Virgie
+Adela
+Adolfo
+Alexandria
+Ashley
+Ava
+Bart
+Bernadine
+Brady
+Brianna
+Buddy
+Burton
+Catalina
+Chandra
+Clarissa
+Concepcion
+Corrine
+Damien
+Darwin
+Denis
+Desmond
+Devon
+Dona
+Earline
+Elliot
+Elliott
+Elnora
+Ericka
+Estela
+Flossie
+Gregorio
+Greta
+Haley
+Harlan
+Harrison
+Hilary
+Ila
+Jamal
+Jami
+Jarrod
+Joaquin
+Lenore
+Letha
+Lidia
+Lilly
+Mia
+Minerva
+Nelda
+Nola
+Rae
+Rhoda
+Rosalyn
+Ruthie
+Sharron
+Terrie
+Tia
+Tyson
+Valarie
+Vance
+Wilfredo
+Allie
+Allyson
+Amie
+Anton
+Ashlee
+Avis
+Benita
+Brain
+Carey
+Darius
+Elvin
+Elwood
+Emilia
+Esmeralda
+Esteban
+Eve
+Hal
+Harriett
+Hillary
+Jeanie
+Karina
+Kendrick
+Kermit
+Loraine
+Malinda
+Marylou
+Melisa
+Milagros
+Moises
+Nannie
+Neva
+Nolan
+Norbert
+Noreen
+Odessa
+Pearlie
+Penelope
+Quinton
+Rob
+Rod
+Roscoe
+Saundra
+Scotty
+Serena
+Sofia
+Solomon
+Tabatha
+Tameka
+Tania
+Tommie
+Williams
+Xavier
+Zelma
+Alana
+Alejandra
+Ali
+Althea
+Alvaro
+Annabelle
+Armand
+Bryon
+Carlene
+Carmella
+Clare
+Cliff
+Dane
+Darcy
+Earlene
+Earnestine
+Elinor
+Fabian
+Fidel
+Gay
+Graham
+Jackson
+Jeffry
+Jerri
+Joesph
+John
+Jordan
+Julianne
+Katy
+Lilia
+Liza
+Lorrie
+Louisa
+Mallory
+Marcel
+Marcie
+Marlin
+Mason
+Michael
+Michel
+Monty
+Ned
+Nita
+Noemi
+Raphael
+Reggie
+Rory
+Rosalinda
+Rusty
+Sammie
+Selena
+Son
+Tanisha
+Taylor
+Thaddeus
+Thurman
+Adolph
+Alexis
+Aline
+Alissa
+Alphonso
+Avery
+Carmen
+Charmaine
+Chrystal
+Claudine
+Colette
+Corine
+Deanne
+Derick
+Diego
+Dollie
+Eddie
+Edwina
+Evangeline
+Fran
+Georgette
+Gerry
+Gonzalo
+Gus
+Ilene
+Isaiah
+Jerry
+Juliana
+Kasey
+Kathie
+Kathrine
+Kaye
+Kenya
+Kris
+Kris
+Lakisha
+Lavonne
+Lawanda
+Lilian
+Lina
+Loyd
+Luann
+Madge
+Margery
+Mari
+Maricela
+Maryanne
+Melva
+Merle
+Millard
+Mitzi
+Nadia
+Nanette
+Noe
+Nona
+Norris
+Ophelia
+Rickie
+Rigoberto
+Rocco
+Rodrigo
+Roslyn
+Roxie
+Shelby
+Stacey
+Suzette
+Tammi
+Ty
+Valeria
+Vaughn
+Wiley
+Yesenia
+Alyce
+Amalia
+Anastasia
+Araceli
+Arline
+Augusta
+Aurelia
+Basil
+Bernardo
+Berta
+Bobbie
+Briana
+Bruno
+Carly
+Chasity
+Christian
+Clement
+Cole
+Corina
+Coy
+Dante
+Davis
+Deena
+Deidre
+Deirdre
+Denny
+Dion
+Donnell
+Donovan
+Eddy
+Elvia
+Elvis
+Emery
+Federico
+Gavin
+Gena
+Heriberto
+Hiram
+Imelda
+Issac
+James
+Janna
+Jarvis
+Jayson
+Jefferson
+Josefa
+Juliette
+Katelyn
+Lakeisha
+Leonor
+Lessie
+Liliana
+Lynnette
+Madelyn
+Marci
+Marietta
+Marva
+Mauricio
+Maxwell
+Maynard
+Natalia
+Nickolas
+Odell
+Ollie
+Quincy
+Reed
+Reva
+Riley
+Romeo
+Rosanne
+Roseann
+Rosella
+Sasha
+Savannah
+Scot
+Sebastian
+Sheree
+Susanna
+Tessa
+Ulysses
+Vern
+Vilma
+Vince
+Ward
+Wendi
+Young
+Adrian
+Aisha
+Alba
+Alfreda
+Alyson
+Amparo
+Angelique
+Angelita
+Annmarie
+Art
+Aurelio
+Barney
+Beau
+Bertie
+Beryl
+Bridgett
+Brigitte
+Britney
+Brock
+Carey
+Carissa
+Carlo
+Carmelo
+Carter
+Casandra
+Cathryn
+Charley
+Cherry
+Cleo
+Colby
+Coleen
+Collin
+Concetta
+Cruz
+Delmar
+Denver
+Diann
+Dick
+Dionne
+Donny
+Dudley
+Enid
+Erna
+Evangelina
+Fanny
+Florine
+Francesca
+Frederic
+Freida
+Galen
+Gilda
+Hallie
+Harris
+Helga
+Hester
+Hollie
+Hollis
+Hunter
+Ines
+Irwin
+Isidro
+Jacklyn
+Janell
+Jannie
+Johnathon
+Juliet
+Kaitlin
+Karyn
+Katheryn
+Katina
+Kirby
+Kurtis
+Lacy
+Lane
+Lauri
+Leanna
+Lelia
+Linwood
+Liz
+Lolita
+Madeleine
+Mai
+Mara
+Marcelino
+Mariana
+Marquita
+Mary
+Maryellen
+Maura
+Merlin
+Merrill
+Millicent
+Nestor
+Phoebe
+Queen
+Reyna
+Rhea
+Rosanna
+Rowena
+Sanford
+Silas
+Stefan
+Tamera
+Tamra
+Tisha
+Trenton
+Truman
+Twila
+Vito
+Weldon
+Wilda
+Winfred
+Abbie
+Adan
+Adelaide
+Allene
+Antionette
+Antony
+Arron
+Ashleigh
+Bennett
+Bernie
+Beverley
+Blair
+Bobby
+Booker
+Branden
+Brandie
+Buford
+Camilla
+Carson
+Caryn
+Celina
+Chelsey
+Clair
+Cornell
+Cortney
+Dalton
+Danial
+Daren
+Dayna
+Deann
+Deidra
+Denice
+Dessie
+Dirk
+Dominique
+Doretha
+Edwardo
+Edythe
+Elba
+Elda
+Elisha
+Emerson
+Emilie
+Emory
+Errol
+Felecia
+Fletcher
+Gale
+Gayla
+Genaro
+Geri
+Germaine
+German
+Gussie
+Herminia
+Houston
+Hung
+Isabella
+Jacques
+Jade
+Jame
+Jasmin
+Jesse
+Joan
+Josue
+Judi
+Justina
+Kaitlyn
+Kathi
+Kimberlee
+Kitty
+Lakesha
+Landon
+Lashonda
+Latanya
+Laverne
+Leeann
+Leonel
+Lesa
+Leta
+Letitia
+Libby
+Lincoln
+Louella
+Ma
+Margot
+Mariano
+Mellisa
+Michaela
+Michell
+Mina
+Mohammad
+Monika
+Monroe
+Nan
+Nelly
+Noelle
+Numbers
+Octavia
+Octavio
+Pamala
+Pansy
+Pasquale
+Raymundo
+Renae
+Robby
+Robert
+Rocio
+Rosalia
+Selina
+Sharlene
+Shelton
+Sierra
+Sonny
+Sydney
+Terra
+Theron
+Tori
+Tristan
+Vonda
+Wilford
+Wilmer
+Zachery
+Zelda
+Abdul
+Adelina
+Adrianne
+Agatha
+Aldo
+Alecia
+Alene
+Alphonse
+Alva
+Anderson
+Ariel
+Ariel
+Arleen
+Arnulfo
+Athena
+Aubrey
+Augustine
+Belle
+Bennie
+Bess
+Birdie
+Brianne
+Brooks
+Caren
+Cari
+Carmine
+Catrina
+Celestine
+Chadwick
+Chance
+Chantel
+Chloe
+Chong
+Christen
+Christin
+Cindi
+Cyril
+Cyrus
+Danette
+Daniela
+Danna
+Dara
+Debby
+Delilah
+Delma
+Delphine
+Demetria
+Destiny
+Devon
+Dinah
+Dottie
+Duncan
+Dusty
+Eleanore
+Elia
+Elida
+Eloisa
+Erich
+Erin
+Ernestina
+Eugenio
+Ezra
+Fatima
+Ferdinand
+Forest
+Freddie
+Freeman
+Garth
+Giovanni
+Griselda
+Guillermina
+Hanna
+Herschel
+Hortencia
+Iola
+Iona
+Ivette
+Jacquline
+Jamel
+Janel
+Jaqueline
+Jarrett
+Jeanna
+Jena
+Johnie
+Jonas
+Karrie
+Kennith
+Krystle
+Lashawn
+Latrice
+Lazaro
+Leora
+Lindsey
+Lon
+Lona
+Luciano
+Lucien
+Lucretia
+Major
+Malissa
+Marianna
+Marilynn
+Marisela
+Marybeth
+Maryjane
+Maudie
+Maurine
+Merry
+Mervin
+Migdalia
+Mitchel
+Mohammed
+Morton
+Myles
+Nilda
+Oma
+Pattie
+Portia
+Racheal
+Randell
+Rebeca
+Reid
+Retha
+Rich
+Robbin
+Ronny
+Rosalee
+Rosita
+Russ
+Sandy
+Scottie
+Seymour
+Shellie
+Shiela
+Shonda
+Soledad
+Stevie
+Sun
+Sydney
+Taryn
+Tawana
+Tera
+Teresita
+Tessie
+Thad
+Theodora
+Tillie
+Tracey
+Treva
+Valentin
+Veda
+Verda
+Vernice
+Vida
+Virgina
+Wilburn
+Wilhelmina
+William
+Winona
+Yong
+Young
+Zane
+Abe
+Ahmad
+Alden
+Alec
+Aletha
+Alexa
+Alfonzo
+Alina
+Alva
+Alvina
+Andrea
+Annemarie
+Annetta
+Antwan
+Aretha
+Aron
+Barb
+Barton
+Bella
+Belva
+Berniece
+Berry
+Bettina
+Boris
+Brant
+Breanna
+Brenton
+Burt
+Candida
+Caridad
+Carmel
+Carmelita
+Carol
+Carroll
+Catharine
+Cathrine
+Charla
+Charles
+Charlie
+Christal
+Christoper
+Claudio
+Coleman
+Cori
+Cristy
+Cruz
+Dalia
+Damaris
+David
+Deandre
+Delois
+Deon
+Dewitt
+Dino
+Dominga
+Donn
+Dorian
+Dorris
+Earle
+Edgardo
+Efren
+Eliseo
+Elissa
+Ellie
+Elmo
+Elouise
+Eloy
+Elyse
+Emile
+Erlinda
+Everette
+Evette
+Faustino
+Felicita
+Filomena
+Flor
+Foster
+Fritz
+Gail
+Gil
+Gillian
+Gino
+Gisela
+Harriette
+Haydee
+Hershel
+India
+Ione
+Isabell
+Isiah
+Ivory
+Jamaal
+Jamar
+Jarred
+Jayme
+Jerold
+Jerrod
+Josef
+Josiah
+Judson
+Jules
+Jung
+Kareem
+Kerrie
+Kieth
+Kira
+Kisha
+Kristal
+Kylie
+Lanny
+Larissa
+Lauretta
+Lavern
+Lemuel
+Leopoldo
+Leota
+Les
+Lettie
+Lorri
+Lucio
+Lura
+Lyman
+Lyn
+Madonna
+Mandi
+Marcela
+Margarito
+Marge
+Marjory
+Marquis
+Matilde
+Maya
+Mayme
+Mellissa
+Melodie
+Milford
+Mirna
+Missy
+Mitch
+Napoleon
+Nigel
+Noel
+Norberto
+Normand
+Olin
+Oralia
+Osvaldo
+Parker
+Paulina
+Pearline
+Phillis
+Pilar
+Pricilla
+Rafaela
+Refugio
+Reina
+Reinaldo
+Renita
+Reta
+Rico
+Rodrick
+Roseanne
+Rosendo
+Roxana
+Roxanna
+Royal
+Rubin
+Ryan
+Samatha
+Sandi
+Sang
+Santa
+Shanda
+Shayla
+Suzan
+Tamela
+Tana
+Tanner
+Tiara
+Tiffani
+Tomasa
+Trey
+Trinidad
+Una
+Vada
+Valencia
+Venus
+Vernell
+Vesta
+Weston
+Wilton
+Wyatt
+Yong
+Zella
+Zenaida
+Zoe
+Zoila
+Abram
+Adalberto
+Adell
+Ahmed
+Alaina
+Alpha
+Amado
+Andra
+Andria
+Anibal
+Anissa
+Annamarie
+Antone
+Antonette
+Ariana
+Asia
+Augustus
+Aura
+Barrett
+Belen
+Bertram
+Blair
+Bo
+Bradly
+Brendon
+Brenna
+Brice
+Bud
+Burl
+Candi
+Carrol
+Cecil
+Chanel
+Chang
+Chantal
+Charleen
+Charline
+Chastity
+Chauncey
+Chet
+Chi
+Chiquita
+Chung
+Clementine
+Cletus
+Collette
+Columbus
+Connie
+Cordelia
+Corey
+Corrie
+Cristal
+Damion
+Danelle
+Daniel
+Danita
+Dannie
+Dario
+Darleen
+Darrick
+Debi
+Debrah
+Dee
+Delfina
+Delmer
+Demarcus
+Dillon
+Donnie
+Donte
+Dorcas
+Dorene
+Dortha
+Dovie
+Dulce
+Dwain
+Easter
+Enoch
+Eulalia
+Fabiola
+Fermin
+Florencio
+Floy
+Frances
+Fredric
+Gabriella
+Garfield
+Gaye
+Gene
+Genoveva
+George
+Georgiana
+Georgianna
+Geraldo
+Gerri
+Gerry
+Gertie
+Ginny
+Giuseppe
+Gregoria
+Hank
+Hassan
+Hayley
+Hellen
+Herlinda
+Hilario
+Hildegard
+Hilton
+Hipolito
+Horacio
+Huey
+Idella
+Ima
+Isaias
+Ivonne
+Ivory
+Jacque
+Jacquelin
+Jamey
+Jamison
+Jannette
+Jeana
+Jed
+Jefferey
+Jerrold
+Jesica
+Joe
+Joelle
+Johnna
+Jonah
+Joseph
+Josette
+Jovita
+Juli
+Julianna
+Karol
+Karon
+Keenan
+Kenton
+Kesha
+Keshia
+Keven
+Kia
+Kip
+Kory
+Kyla
+Lan
+Laquita
+Latonia
+Latricia
+Lavern
+Lawerence
+Leilani
+Lenard
+Lenny
+Leone
+Leonora
+Lia
+Lindy
+Lizette
+Lonnie
+Loren
+Lorine
+Lou
+Louann
+Louis
+Luanne
+Lucila
+Lupe
+Lyndon
+Mac
+Magda
+Majorie
+Marcelle
+Marcelo
+Maria
+Mariah
+Mariam
+Markus
+Marlena
+Marlyn
+Marlys
+Maud
+Mauro
+Maximo
+Mckinley
+Mei
+Mel
+Melvina
+Mi
+Micaela
+Mikel
+Milo
+Mimi
+Minh
+Misti
+Mohamed
+Moshe
+Mozelle
+Myrtis
+Nakia
+Nathalie
+Nedra
+Nereida
+Newton
+Nicki
+Niki
+Nikita
+Noble
+Odis
+Olen
+Oleta
+Omer
+Ona
+Oren
+Orval
+Perla
+Philomena
+Porfirio
+Precious
+Prince
+Princess
+Quinn
+Quintin
+Raleigh
+Raven
+Ray
+Renata
+Renate
+Reyes
+Richelle
+Richie
+Robt
+Rolland
+Roma
+Romona
+Rosalba
+Rosalina
+Rosario
+Roselyn
+Roxann
+Rupert
+Sabina
+Sal
+Sammie
+Shanon
+Shantel
+Sharonda
+Sharyn
+Shelli
+Shirley
+Sol
+Stacia
+Stanford
+Stephany
+Stephenie
+Sung
+Sunny
+Suzanna
+Tad
+Tatiana
+Tena
+Teodoro
+Thanh
+Thea
+Theda
+Theo
+Tiana
+Tobias
+Tod
+Tonja
+Tory
+Tosha
+Trinidad
+Trista
+Twyla
+Tyra
+Tyree
+Tyrell
+Tyron
+Valentina
+Valentine
+Valorie
+Velda
+Venessa
+Verla
+Vikki
+Violeta
+Viviana
+Waldo
+Walker
+Werner
+Whitney
+Willy
+Yadira
+Zachariah
+Abbey
+Adelaida
+Adriane
+Adrianna
+Alanna
+Albina
+Alda
+Alesha
+Alesia
+Aleta
+Alonso
+Altagracia
+Ambrose
+Ami
+Anabel
+Andreas
+Anh
+Antione
+Antonia
+Aracely
+Arden
+Ardis
+Ardith
+Arlen
+Arlie
+Armida
+Arnoldo
+Artie
+Asa
+Ashton
+Astrid
+Bambi
+Benedict
+Benton
+Bernita
+Billy
+Blanch
+Bonny
+Boyce
+Brigette
+Britt
+Brittani
+Broderick
+Brook
+Buck
+Buster
+Caitlyn
+Candelaria
+Carina
+Carleen
+Carlotta
+Carman
+Carolee
+Carrol
+Cary
+Caryl
+Cathie
+Catina
+Cedrick
+Chanda
+Charisse
+Chas
+Chelsie
+Cherly
+Cheryle
+Chong
+Chrissy
+Cinthia
+Claud
+Clemente
+Colton
+Coral
+Cordell
+Corinna
+Cortez
+Cory
+Cristine
+Cristobal
+Cristopher
+Daniella
+Danilo
+Darci
+Darell
+Daria
+Daron
+Darron
+Dawna
+Deangelo
+Del
+Deshawn
+Devin
+Dian
+Domenic
+Dong
+Donita
+Dori
+Dorinda
+Dorsey
+Douglass
+Edie
+Edison
+Edmundo
+Elaina
+Elden
+Eldridge
+Elenor
+Elisha
+Elizebeth
+Ellsworth
+Elroy
+Emmitt
+Ena
+Enriqueta
+Era
+Erasmo
+Eusebio
+Evie
+Evonne
+Ezekiel
+Ezequiel
+Farrah
+Fausto
+Fawn
+Felicitas
+Felipa
+Felisha
+Felton
+Filiberto
+Florentino
+Florida
+Francesco
+Franklyn
+Garnet
+Garret
+Gaston
+Gayle
+Gaylord
+Georgie
+Gerda
+Giselle
+Graig
+Granville
+Hai
+Hailey
+Harland
+Hayden
+Haywood
+Herb
+Hermelinda
+Hobert
+Holli
+Hong
+Hong
+Hortense
+Hosea
+Hoyt
+Hyman
+Ike
+Ileana
+Ilse
+Inge
+Ira
+Isreal
+Jacinto
+Jada
+Jae
+Jaimie
+Jamila
+Janeen
+Janina
+Jarod
+Jc
+Jeane
+Jeanetta
+Jenelle
+Jeniffer
+Jennette
+Jenni
+Jeramy
+Jere
+Jeromy
+Jerrell
+Jerrie
+Jewel
+Jewell
+Joanie
+Joellen
+Johnson
+Joleen
+Jonnie
+Jordon
+Josephina
+Jospeh
+Joycelyn
+Jude
+Kala
+Kami
+Karissa
+Karolyn
+Kasey
+Kassandra
+Keely
+Kelley
+Kendall
+Keneth
+King
+Korey
+Kori
+Kraig
+Kristofer
+Kyle
+Kyong
+Kyra
+Kyung
+Lacie
+Lacy
+Lakeshia
+Lashanda
+Latosha
+Laureen
+Lauren
+Laurette
+Lavina
+Lavon
+Leandro
+Leatrice
+Leif
+Leigh
+Leisa
+Len
+Lesley
+Lida
+Lindsay
+Linnea
+Linnie
+Lino
+Lise
+Lisette
+Lissette
+Lizabeth
+Lizbeth
+Long
+Lonny
+Lorenza
+Lovie
+Lucie
+Lucius
+Luigi
+Lulu
+Lyndsey
+Lynwood
+Mackenzie
+Magdalene
+Magnolia
+Malcom
+Malik
+Man
+Manual
+Maranda
+Marcelina
+Marcellus
+Margarette
+Mariann
+Marilee
+Marita
+Mark
+Marnie
+Marquerite
+Marti
+Marty
+Marvel
+Marylin
+Maxie
+Maybelle
+Meaghan
+Melina
+Melony
+Meta
+Michal
+Michale
+Mickey
+Milan
+Miquel
+Mireya
+Mirian
+Mittie
+Modesto
+Mose
+Myriam
+Nanci
+Nannette
+Nathanael
+Nathanial
+Natividad
+Nena
+Neville
+Nicky
+Nicola
+Nila
+Nova
+Novella
+Nydia
+Ok
+Orpha
+Oswaldo
+Otha
+Palmer
+Paris
+Patricia
+Peggie
+Pennie
+Phuong
+Phylis
+Phyliss
+Porter
+Prudence
+Rashad
+Rayford
+Raymon
+Renaldo
+Renato
+Rey
+Rhett
+Rhiannon
+Richard
+Rolf
+Rona
+Ronnie
+Roseanna
+Rosina
+Roxane
+Rubye
+Rudolf
+Rueben
+Ruthann
+Salina
+Samual
+Sanjuana
+Sanjuanita
+Santo
+Santos
+Scarlett
+Shad
+Shaina
+Shalonda
+Shameka
+Shamika
+Shanta
+Shante
+Shara
+Sharla
+Shayna
+Shayne
+Sherie
+Sherita
+Sherrill
+Sherwood
+Shirlene
+Shon
+Sid
+Sidney
+Soon
+Stanton
+Starla
+Starr
+Susannah
+Tawanda
+Tawnya
+Teena
+Terese
+Teressa
+Thuy
+Tierra
+Tiffanie
+Titus
+Toby
+Tomeka
+Toney
+Tony
+Toya
+Trena
+Tresa
+Tressa
+Tuan
+Val
+Venita
+Vergie
+Vickey
+Vincenzo
+Virgilio
+Von
+Wally
+Walton
+Warner
+Waylon
+Wes
+Wilber
+Willian
+Windy
+Winford
+Winnifred
+Xiomara
+Yasmin
+Yolonda
+Yoshiko
+Zack
+Zackary
+Zola
+Zoraida
+Adelia
+Adella
+Adelle
+Adina
+Adria
+Afton
+Agustina
+Aja
+Albertha
+Albertine
+Alena
+Alethea
+Alexia
+Alida
+Almeda
+Alycia
+Alysia
+Amada
+America
+Anastacia
+Angella
+Anglea
+Anika
+Anitra
+Annabel
+Anneliese
+Anthony
+Antonina
+Arcelia
+Arielle
+Arlette
+Asha
+Ashely
+Ashlie
+Ashly
+Audry
+Augustine
+Aurea
+Awilda
+Ayesha
+Bailey
+Barbie
+Bea
+Berenice
+Bobbye
+Brandee
+Breanne
+Bree
+Britt
+Buffy
+Cameron
+Cami
+Candance
+Candis
+Carin
+Carlota
+Carlyn
+Carma
+Carolann
+Carolynn
+Caron
+Carri
+Cassidy
+Cathi
+Cecily
+Chana
+Chantelle
+Charissa
+Charlette
+Charolette
+Cherise
+Cherri
+Cherrie
+Cheyenne
+Christel
+Christene
+Christiana
+Christiane
+Christopher
+Chun
+Ciara
+Cierra
+Cinda
+Clair
+Claribel
+Cleta
+Clyde
+Corazon
+Corene
+Corrina
+Cristi
+Cristin
+Cyndi
+Cythia
+Dani
+Danica
+Daniele
+Dannielle
+Danyelle
+Darcie
+Darline
+Davida
+Davina
+Dean
+Deb
+Debbra
+Dedra
+Delora
+Delphia
+Demetra
+Deneen
+Denna
+Desirae
+Domenica
+Dorotha
+Dorthea
+Dusty
+Eartha
+Eboni
+Eda
+Edelmira
+Eden
+Elana
+Eldora
+Eleanora
+Elfriede
+Elmira
+Elna
+Elvera
+Emelia
+Emogene
+Enedina
+Estrella
+Ethelyn
+Eugenie
+Eun
+Evalyn
+Evelia
+Evon
+Fallon
+Felica
+Felice
+Felisa
+Ferne
+Fiona
+Florene
+Fonda
+Gabriel
+Gaynell
+Gemma
+Georgetta
+Geralyn
+Giovanna
+Gisele
+Gladis
+Glory
+Golda
+Gretta
+Hedwig
+Hettie
+Hoa
+Hortensia
+Hui
+Hulda
+Huong
+Idalia
+Iliana
+Ilona
+In
+Inga
+Ingeborg
+Irena
+Isela
+Jacalyn
+Jacinta
+Jackeline
+Jammie
+Janae
+Janene
+Janey
+Jaunita
+Jay
+Jazmin
+Jenniffer
+Jeraldine
+Jerilyn
+Jettie
+Joana
+Joetta
+Joey
+Johnetta
+Johnie
+Johnny
+Joi
+Jolynn
+Jonna
+Jose
+Juan
+Judie
+Juliann
+Julieta
+Julissa
+Kacey
+Kaci
+Kacie
+Kandace
+Kandi
+Kandice
+Kandy
+Karan
+Karie
+Karlene
+Karri
+Kasandra
+Kathlene
+Kathlyn
+Kathryne
+Kathyrn
+Kaylee
+Kecia
+Keiko
+Keli
+Kelsie
+Kenna
+Kenyatta
+Kiara
+Kimberely
+Kirstin
+Kizzy
+Kristan
+Kristian
+Kristyn
+Krystyna
+Kum
+Kylee
+Laci
+Lai
+Lanette
+Lani
+Lanita
+Larue
+Laurene
+Lavada
+Lavinia
+Lavonda
+Leandra
+Leatha
+Leda
+Leesa
+Lennie
+Leslee
+Lesli
+Li
+Liana
+Liane
+Lin
+Linette
+Linh
+Linsey
+Lissa
+Lita
+Loreen
+Lorelei
+Lorinda
+Lorretta
+Lu
+Luana
+Luciana
+Lucienne
+Lue
+Lupita
+Lyda
+Lyla
+Lyndsay
+Machelle
+Madison
+Maegan
+Maira
+Malia
+Margarete
+Maribeth
+Mariela
+Marilou
+Marlo
+Marry
+Martine
+Maryjo
+Marylee
+Marylyn
+Mathilda
+Mazie
+Mechelle
+Mee
+Meg
+Melonie
+Mercy
+Meryl
+Mickie
+Milissa
+Mindi
+Mira
+Mirta
+Modesta
+Moira
+Mozell
+My
+Myong
+Myrtice
+Nada
+Nakisha
+Nelida
+Nella
+Nelle
+Nia
+Nichelle
+Nichol
+Nicolasa
+Nicolette
+Nidia
+Nilsa
+Ninfa
+Noelia
+Norene
+Norine
+Numbers
+Ocie
+Odell
+Odette
+Oliva
+Otilia
+Ouida
+Page
+Palma
+Paola
+Paris
+Patrick
+Paul
+Pinkie
+Racquel
+Randa
+Randy
+Rashida
+Regan
+Renea
+Rina
+Rolanda
+Romana
+Ronna
+Rosaline
+Rosalva
+Rosaria
+Rosaura
+Rufina
+Sabine
+Sabra
+Sade
+Sarita
+Shandra
+Shanell
+Shani
+Shanika
+Shanita
+Shannan
+Shantell
+Sharee
+Sharen
+Shasta
+Shawanda
+Shay
+Shena
+Sherilyn
+Sheron
+Sherron
+Sherryl
+Shirlee
+Shirly
+Sibyl
+Sigrid
+Simona
+Siobhan
+Star
+Stefani
+Stephaine
+Stephani
+Stephine
+Stormy
+Su
+Sunshine
+Susann
+Suzie
+Suzy
+Syble
+Talia
+Tamar
+Tamatha
+Tamie
+Tamiko
+Tanesha
+Tangela
+Tanika
+Tarsha
+Tawanna
+Tenisha
+Teodora
+Tess
+Thersa
+Thomas
+Thomasina
+Tiffiny
+Tommy
+Tracee
+Tressie
+Trish
+Van
+Velia
+Velva
+Vernie
+Vernita
+Verona
+Vicenta
+Vina
+Vita
+Viva
+Vonnie
+Wanita
+Willene
+Wynona
+Yetta
+Yoko
+Yu
+Zaida
+Zandra
+Zena
+Zenobia
+Zina
+Zona
+Zora
+Zula
+Zulma
+Aaron
+Adaline
+Adriene
+Akiko
+Albertina
+Aleida
+Alejandrina
+Alethia
+Alex
+Alexander
+Ali
+Alia
+Alica
+Alise
+Alishia
+Alisia
+Alix
+Aliza
+Alla
+Allegra
+Allen
+Alline
+Almeta
+Altha
+Alvera
+Alyse
+Alysha
+Amina
+Ammie
+Andre
+Andree
+Andrew
+Anette
+Angele
+Angelena
+Angeles
+Angelic
+Angelika
+Angelo
+Angle
+Anjanette
+Annabell
+Annalee
+Annalisa
+Annamae
+Annett
+Annice
+Annis
+Antonietta
+Antonio
+Anya
+Apryl
+Aracelis
+Ardell
+Ardella
+Ariane
+Arianna
+Arie
+Arla
+Arlena
+Arletta
+Armanda
+Arminda
+Arnetta
+Arnita
+Arthur
+Arvilla
+Ashli
+Ashlyn
+Assunta
+Asuncion
+Audie
+Audrea
+Augustina
+Aundrea
+Avelina
+Ayana
+Ayanna
+Azucena
+Babara
+Babette
+Barbar
+Barbera
+Beckie
+Belia
+Berneice
+Bernetta
+Bernie
+Bethann
+Bethel
+Betsey
+Bev
+Beverlee
+Billye
+Birgit
+Blythe
+Branda
+Brandon
+Brigid
+Brigida
+Brinda
+Britany
+Britni
+Brittni
+Bronwyn
+Brunilda
+Brynn
+Camelia
+Cammie
+Candie
+Candyce
+Caprice
+Carie
+Carisa
+Carl
+Carletta
+Carley
+Carlie
+Carline
+Carmelina
+Carmon
+Carolyne
+Casie
+Catarina
+Caterina
+Cathey
+Cecila
+Celena
+Celestina
+Celine
+Chante
+Chantell
+Charise
+Chau
+Chaya
+Cherish
+Cherryl
+Cheryll
+Chi
+Chin
+Christeen
+Christena
+Chung
+Cicely
+Ciera
+Clarine
+Clarita
+Clementina
+Clemmie
+Cleopatra
+Cleora
+Clotilde
+Cody
+Coletta
+Collen
+Conchita
+Consuela
+Cordie
+Coreen
+Coretta
+Corie
+Corliss
+Criselda
+Crissy
+Crista
+Cristen
+Cristie
+Dagmar
+Dahlia
+Daisey
+Dalila
+Dallas
+Danae
+Dania
+Danika
+Dannette
+Danuta
+Daphine
+Darby
+Darnell
+Daryl
+Dawne
+Dayle
+Deandra
+Deane
+Debbi
+Debroah
+Deeann
+Delana
+Delena
+Delicia
+Delinda
+Delisa
+Dell
+Delpha
+Delta
+Demetrice
+Denese
+Denisha
+Denita
+Dennis
+Dennise
+Desire
+Detra
+Devona
+Devora
+Devorah
+Diamond
+Diedra
+Diedre
+Digna
+Dimple
+Dione
+Dionna
+Doloris
+Dominque
+Domonique
+Donald
+Donetta
+Donya
+Dorathy
+Dorian
+Dorie
+Dorine
+Dot
+Dreama
+Drema
+Drucilla
+Drusilla
+Dung
+Dyan
+Earlean
+Earleen
+Echo
+Edda
+Edward
+Elanor
+Elayne
+Elease
+Eleni
+Elenora
+Eliana
+Elicia
+Elizbeth
+Elke
+Elly
+Ellyn
+Elodia
+Elois
+Else
+Elvie
+Elvina
+Ema
+Emelda
+Emiko
+Emilee
+Emmie
+Emmy
+Eneida
+Enola
+Epifania
+Eric
+Erinn
+Erlene
+Erline
+Ermelinda
+Erminia
+Esta
+Estell
+Ethelene
+Ethyl
+Eugene
+Evan
+Evelin
+Evelina
+Eveline
+Evelyne
+Exie
+Fae
+Farah
+Faustina
+Fe
+Fernanda
+Flavia
+Flo
+Florance
+Florencia
+Florentina
+Floretta
+Florinda
+France
+Francie
+Francina
+Francisco
+Francoise
+Frank
+Frederica
+Fredericka
+Fredia
+Freeda
+Fumiko
+Gabriele
+Garnett
+Gary
+Gaylene
+Gearldine
+Genia
+Genie
+Gennie
+Georgene
+Georgine
+Gertha
+Gertrud
+Gia
+Gigi
+Glady
+Glendora
+Glennie
+Glennis
+Glinda
+Glynda
+Gracia
+Gudrun
+Gwenda
+Gwenn
+Gwyn
+Ha
+Hae
+Halina
+Hana
+Hanh
+Hannelore
+Harmony
+Hedy
+Hee
+Heide
+Henriette
+Henry
+Hermina
+Hermine
+Hilaria
+Hilde
+Hildegarde
+Hildred
+Hilma
+Hiroko
+Holley
+Hollis
+Honey
+Hyacinth
+Hye
+Hyon
+Hyun
+Idell
+Iesha
+Ignacia
+Ilana
+Ilda
+Iluminada
+Indira
+Inell
+Inger
+Inocencia
+Irina
+Irish
+Irmgard
+Isa
+Isaura
+Isidra
+Isis
+Ivana
+Jacki
+Jacqualine
+Jacquelyne
+Jacquelynn
+Jacquiline
+Jacqulyn
+Jadwiga
+Jae
+Jaleesa
+Jamey
+Janay
+Janessa
+Janeth
+Janett
+Janetta
+Janita
+Jann
+Jason
+Jazmine
+Jeanene
+Jen
+Jenell
+Jenette
+Jeni
+Jenice
+Jenine
+Jenise
+Jennefer
+Jesenia
+Jessenia
+Jessi
+Jesus
+Jesusa
+Jimmy
+Jin
+Jina
+Jodee
+Joeann
+Joel
+Joella
+Johana
+Jolanda
+Jolie
+Jona
+Jonell
+Jonelle
+Joselyn
+Joslyn
+Joye
+Julee
+Julian
+Juliane
+Julienne
+Junita
+Justin
+Jutta
+Kacy
+Kaley
+Kali
+Kam
+Karey
+Karine
+Karl
+Karleen
+Karma
+Karmen
+Karren
+Karyl
+Kasie
+Kassie
+Kathaleen
+Katharina
+Kathe
+Katherin
+Kathern
+Kathey
+Kati
+Katia
+Katlyn
+Katrice
+Kattie
+Kayleen
+Kayleigh
+Kaylene
+Kazuko
+Keena
+Keesha
+Kelle
+Kellee
+Kellye
+Kena
+Kenisha
+Kenneth
+Kenyetta
+Kevin
+Kiana
+Kiera
+Kiesha
+Kiley
+Kimber
+Kimberli
+Kimberlie
+Kimbery
+Kimiko
+Kindra
+Kirby
+Kourtney
+Kristel
+Krysta
+Kym
+Kymberly
+Lady
+Laila
+Lane
+Lanell
+Larae
+Laraine
+Larhonda
+Larisa
+Laronda
+Lasandra
+Lashunda
+Latashia
+Latesha
+Latia
+Laticia
+Latoria
+Latrina
+Launa
+Laure
+Laurice
+Laurine
+Lavera
+Laverna
+Lavonia
+Lawana
+Lawanna
+Layla
+Le
+Leana
+Leeanna
+Leeanne
+Leighann
+Lenna
+Leonarda
+Leonie
+Leonila
+Leonore
+Lera
+Lesia
+Letty
+Lexie
+Lezlie
+Liberty
+Librada
+Lien
+Ligia
+Lili
+Lilla
+Ling
+Lisbeth
+Lisha
+Livia
+Loan
+Loida
+Loma
+Loni
+Lonna
+Lore
+Loree
+Loriann
+Lory
+Louanne
+Louie
+Louvenia
+Lovella
+Loyce
+Lucina
+Lucrecia
+Ludie
+Luis
+Luise
+Luna
+Lurline
+Luvenia
+Lynell
+Lynelle
+Lynsey
+Macie
+Macy
+Madaline
+Madalyn
+Madie
+Madlyn
+Magaly
+Magan
+Magaret
+Magdalen
+Magen
+Maia
+Maida
+Malika
+Malisa
+Mammie
+Mana
+Manda
+Maple
+Marceline
+Maren
+Margareta
+Margarett
+Margaretta
+Margarite
+Margart
+Margeret
+Marget
+Margit
+Margorie
+Marguerita
+Margurite
+Mariel
+Marilu
+Mario
+Markita
+Marlana
+Marleen
+Marlen
+Marna
+Marni
+Marquetta
+Martin
+Marya
+Maryalice
+Maryam
+Masako
+Mathilde
+Matthew
+Maurice
+Maybell
+Maye
+Mckenzie
+Meggan
+Meghann
+Melaine
+Melany
+Melissia
+Mellie
+Melynda
+Meri
+Meridith
+Merilyn
+Merlene
+Merna
+Merri
+Micah
+Michal
+Micheal
+Michel
+Micheline
+Michiko
+Micki
+Miguelina
+Mika
+Mikki
+Mila
+Milagro
+Min
+Minh
+Minna
+Mireille
+Mirtha
+Monserrate
+Mozella
+Mui
+Myrle
+Myrtie
+Myung
+Nakita
+Nana
+Nancie
+Naoma
+Narcisa
+Natosha
+Nelia
+Neoma
+Nerissa
+Neta
+Nga
+Ngoc
+Nickie
+Nickole
+Nicky
+Nicol
+Nicolle
+Nieves
+Nikia
+Nikole
+Noella
+Noma
+Norah
+Norman
+Nyla
+Obdulia
+Odilia
+Olympia
+Omega
+Oneida
+Ossie
+Ozella
+Pamelia
+Pamella
+Pandora
+Particia
+Patience
+Patrina
+Pauletta
+Pearle
+Pearlene
+Penney
+Penni
+Perry
+Petrina
+Pia
+Piedad
+Piper
+Porsha
+Qiana
+Queenie
+Quiana
+Rachele
+Rachell
+Raeann
+Raina
+Ramonita
+Rana
+Ranae
+Randee
+Rasheeda
+Raye
+Raylene
+Rayna
+Reatha
+Rebbeca
+Rebbecca
+Reda
+Refugio
+Regena
+Regenia
+Reiko
+Remedios
+Renetta
+Retta
+Rikki
+Risa
+Rochell
+Romaine
+Romelia
+Ronald
+Roni
+Ronni
+Rosamond
+Rosana
+Rosann
+Rosia
+Rozella
+Rubie
+Rudy
+Sachiko
+Salena
+Salome
+Sam
+Samara
+Samira
+Sang
+Sanora
+Santana
+Santina
+Sari
+Sarina
+Savanna
+Scarlet
+Scott
+Sean
+Sebrina
+Selene
+Serina
+Sha
+Shakira
+Shane
+Shaneka
+Shanelle
+Shanice
+Sharita
+Sharleen
+Sharyl
+Shaun
+Shaunna
+Shavon
+Shavonne
+Shawana
+Shawnda
+Shawnee
+Shawnna
+Shea
+Sheilah
+Shela
+Shelba
+Shemika
+Shenita
+Sherley
+Sherly
+Sherlyn
+Sherrell
+Shery
+Shira
+Shirleen
+Shona
+Shonna
+Shoshana
+Shu
+Signe
+Silva
+Silvana
+Sindy
+Skye
+Slyvia
+So
+Solange
+Sommer
+Son
+Song
+Soo
+Sook
+Soraya
+Spring
+Stefania
+Steffanie
+Stephane
+Stephen
+Steven
+Stevie
+Sudie
+Sueann
+Suellen
+Suk
+Sung
+Suzann
+Synthia
+Syreeta
+Tabetha
+Takisha
+Talisha
+Talitha
+Tam
+Tamala
+Tameika
+Tamekia
+Tamesha
+Tamica
+Tammara
+Tanja
+Tanna
+Tarah
+Tashia
+Tawny
+Temeka
+Tennie
+Tennille
+Tequila
+Tereasa
+Terresa
+Tesha
+Thalia
+Thanh
+Thao
+Theo
+Theola
+Theresia
+Thomasine
+Thresa
+Thu
+Tianna
+Tiesha
+Tiny
+Tomika
+Tomoko
+Tonda
+Tonie
+Toshiko
+Towanda
+Trang
+Trinity
+Tristan
+Trudi
+Trudie
+Trula
+Tuyet
+Twana
+Tyesha
+Tyler
+Usha
+Val
+Valda
+Valery
+Vallie
+Vanda
+Vanesa
+Vanita
+Vannessa
+Vella
+Velvet
+Vena
+Venice
+Veola
+Verdell
+Verdie
+Verena
+Verlene
+Verlie
+Vernetta
+Versie
+Veta
+Vincenza
+Vinnie
+Violette
+Vivan
+Vivien
+Vivienne
+Wai
+Walter
+Waltraud
+Wei
+Willette
+Willia
+Wonda
+Yan
+Yang
+Yanira
+Yee
+Yen
+Yi
+Ying
+Yolande
+Yolando
+Yukiko
+Yuko
+Yun
+Zita
+Zofia
+Zulema
+Adah
+Adam
+Adena
+Adrien
+Agnus
+Agripina
+Agueda
+Ai
+Aide
+Aiko
+Ailene
+Akilah
+Alaine
+Alane
+Alayna
+Albert
+Alease
+Aleen
+Aleisha
+Aleshia
+Alessandra
+Alfredia
+Alita
+Alleen
+Allena
+Allyn
+Alona
+Alverta
+Alysa
+Amal
+Amberly
+Amee
+Amiee
+Amira
+An
+Analisa
+Anamaria
+Andera
+Angelyn
+Angila
+Angla
+Anisa
+Anisha
+Anja
+Anjelica
+Annamaria
+Annelle
+Annika
+Annita
+Antonetta
+Apolonia
+Ara
+Ardath
+Ardelia
+Ardelle
+Argelia
+Argentina
+Arianne
+Arica
+Arlean
+Arletha
+Arlinda
+Arlyne
+Armandina
+Arnette
+Ashanti
+Ashlea
+Asley
+Audria
+Audrie
+Aurore
+Austin
+Avery
+Avril
+Ayako
+Azalee
+Azzie
+Bao
+Barabara
+Bari
+Barrie
+Basilia
+Beata
+Beatris
+Beaulah
+Bebe
+Becki
+Bee
+Belkis
+Bell
+Berna
+Bernarda
+Bernardina
+Bernardine
+Berry
+Bethanie
+Bettyann
+Beula
+Bibi
+Billi
+Blake
+Blondell
+Blossom
+Bobette
+Bok
+Bong
+Brande
+Breana
+Breann
+Brett
+Brian
+Britta
+Brittaney
+Brittanie
+Britteny
+Brittny
+Bruna
+Bryanna
+Buena
+Bula
+Bulah
+Bunny
+Burma
+Calandra
+Calista
+Camellia
+Camie
+Camila
+Cammy
+Candra
+Carita
+Carlee
+Carlena
+Carli
+Carlita
+Carlos
+Carmelia
+Carmina
+Carola
+Carolin
+Caroll
+Caroyln
+Carry
+Carylon
+Casimira
+Cassaundra
+Cassey
+Cassi
+Cassondra
+Cassy
+Catherin
+Catherina
+Cathern
+Catheryn
+Catrice
+Cayla
+Cecille
+Celesta
+Celinda
+Celsa
+Ceola
+Chae
+Chan
+Chanell
+Chanelle
+Chang
+Chantay
+Chara
+Charis
+Charita
+Charlena
+Charlesetta
+Charlott
+Charlsie
+Charlyn
+Charmain
+Chasidy
+Chassidy
+Cher
+Chere
+Cheree
+Cherelle
+Cherilyn
+Cherlyn
+Chery
+Chia
+Chieko
+China
+Ching
+Christia
+Christinia
+Chu
+Cinderella
+Cindie
+Cira
+Clarence
+Claretha
+Claretta
+Clarinda
+Claris
+Clarisa
+Classie
+Claude
+Claudie
+Clelia
+Clemencia
+Cleotilde
+Clora
+Clorinda
+Codi
+Colby
+Colene
+Collene
+Conception
+Concha
+Contessa
+Coralee
+Coralie
+Cordia
+Corrin
+Corrinne
+Creola
+Cris
+Crysta
+Crystle
+Cuc
+Curtis
+Cyndy
+Cyrstal
+Dacia
+Dagny
+Daina
+Daine
+Dakota
+Dalene
+Dan
+Daniell
+Danille
+Dann
+Dannie
+Danyel
+Danyell
+Darcel
+Darcey
+Darlena
+Daysi
+Deadra
+Deandrea
+Debera
+Dede
+Deeanna
+Deedee
+Deedra
+Deetta
+Deja
+Delaine
+Delcie
+Delila
+Delmy
+Deloise
+Deloras
+Delorse
+Delsie
+Demetrius
+Denae
+Denisse
+Denny
+Denyse
+Deon
+Deonna
+Despina
+Dia
+Dierdre
+Dinorah
+Dion
+Divina
+Dodie
+Dominica
+Domitila
+Donella
+Donette
+Dong
+Donnetta
+Donnette
+Doreatha
+Dorethea
+Doretta
+Doria
+Dorla
+Dorthey
+Dotty
+Drew
+Dulcie
+Dusti
+Dwana
+Earlie
+Ebonie
+Edra
+Edris
+Edyth
+Ehtel
+Eilene
+Ela
+Eladia
+Elane
+Elene
+Elenore
+Eleonor
+Eleonora
+Eleonore
+Elfreda
+Elfrieda
+Elidia
+Elin
+Elina
+Elinore
+Eliz
+Elizabet
+Ellamae
+Ellan
+Ellena
+Elli
+Ellis
+Elmer
+Elsy
+Elwanda
+Elza
+Emelina
+Emeline
+Emely
+Emerald
+Emerita
+Emmaline
+Enda
+Eryn
+Estefana
+Etha
+Etsuko
+Ettie
+Eufemia
+Eugena
+Eulah
+Euna
+Eura
+Eusebia
+Eustolia
+Evelynn
+Evia
+Evita
+Ewa
+Fairy
+Fatimah
+Faviola
+Felicidad
+Fermina
+Fernande
+Fidela
+Fidelia
+Fleta
+Floria
+Florrie
+Francene
+Franchesca
+Fransisca
+Fred
+Fredda
+Fredricka
+Frida
+Gala
+Galina
+Gaynelle
+Gema
+Genesis
+Genevie
+Genevive
+Genna
+Genny
+Georgann
+Georgeann
+Georgeanna
+Georgiann
+Georgianne
+Gerald
+Gertrudis
+Gertude
+Ghislaine
+Gianna
+Gidget
+Gilberte
+Gilma
+Ginette
+Gita
+Giuseppina
+Glayds
+Glenn
+Glynis
+Golden
+Grayce
+Grazyna
+Gregory
+Gricelda
+Grisel
+Gwyneth
+Halley
+Han
+Hang
+Harold
+Hassie
+Heidy
+Heike
+Helaine
+Herma
+Hermila
+Herta
+Hertha
+Hiedi
+Hien
+Hisako
+Hsiu
+Hue
+Hwa
+Hyo
+Ileen
+Illa
+Iraida
+Isadora
+Isobel
+Ivelisse
+Ivey
+Izetta
+Izola
+Ja
+Jacelyn
+Jacinda
+Jack
+Jackelyn
+Jackqueline
+Jacquetta
+Jacqui
+Jacquie
+Jaimee
+Jalisa
+Jama
+Jame
+Jamee
+Jamika
+Janean
+Janee
+Janella
+Jani
+Janiece
+Janise
+Jannet
+January
+Janyce
+Jaquelyn
+Jaye
+Jaymie
+Jayna
+Jeanelle
+Jeanett
+Jeanice
+Jeanmarie
+Jeannetta
+Jeffie
+Jeffrey
+Jenae
+Jene
+Jenee
+Jeneva
+Jennell
+Jennine
+Jeremy
+Jerica
+Jerlene
+Jerrica
+Jessia
+Jessika
+Jestine
+Jesusita
+Jetta
+Ji
+Jinny
+Joane
+Joannie
+Joaquina
+Joette
+Johanne
+Johna
+Johnette
+Johnsie
+Joie
+Joline
+Jolyn
+Jon
+Jone
+Jong
+Jonie
+Josefine
+Joshua
+Josphine
+Jovan
+Joya
+Jude
+Jule
+Julene
+Julieann
+Julietta
+Julio
+Junie
+Junko
+Justa
+Ka
+Kai
+Kaila
+Kaleigh
+Kallie
+Kalyn
+Kamala
+Kamilah
+Kandis
+Kandra
+Kanesha
+Kanisha
+Kareen
+Karena
+Karima
+Karisa
+Karly
+Karlyn
+Karole
+Karoline
+Karry
+Kary
+Kasha
+Kasi
+Katelin
+Katelynn
+Katerine
+Katharyn
+Katheleen
+Katherina
+Kathline
+Kathrin
+Kayce
+Kaycee
+Keeley
+Keila
+Keira
+Keith
+Keitha
+Kelsi
+Kemberly
+Kenda
+Kendal
+Kenia
+Kera
+Keren
+Kerstin
+Keturah
+Keva
+Khadijah
+Khalilah
+Kiersten
+Kimbra
+Kimi
+Kina
+Kirstie
+Kit
+Kittie
+Kiyoko
+Kizzie
+Klara
+Kortney
+Krishna
+Krissy
+Kristeen
+Kristle
+Krysten
+Krystin
+Krystina
+Kyoko
+Lachelle
+Lacresha
+Ladawn
+Lael
+Lahoma
+Laine
+Lajuana
+Lakeesha
+Lakendra
+Lakenya
+Lakia
+Lakiesha
+Lakita
+Lala
+Lamonica
+Lanelle
+Lang
+Lanie
+Lannie
+Lanora
+Laquanda
+Laree
+Larita
+Larraine
+Larry
+Lashandra
+Lashaun
+Lashaunda
+Lashawna
+Lashawnda
+Lashay
+Lashell
+Lashon
+Lasonya
+Latarsha
+Latina
+Latoyia
+Latrisha
+Lauralee
+Lauran
+Laurena
+Laurence
+Laurinda
+Lauryn
+Lavelle
+Lavenia
+Laveta
+Lavette
+Lavona
+Lavone
+Lavonna
+Lawrence
+Layne
+Lean
+Leanora
+Lecia
+Leena
+Leia
+Leida
+Leigha
+Leisha
+Lekisha
+Lelah
+Lenita
+Leo
+Leoma
+Leon
+Leonia
+Leonida
+Leontine
+Lesha
+Lester
+Letisha
+Lewis
+Lianne
+Libbie
+Lieselotte
+Lilli
+Lillia
+Lilliam
+Lilliana
+Lindsy
+Linn
+Lisabeth
+Lisandra
+Lizeth
+Lizzette
+Logan
+Loise
+Londa
+Loralee
+Lorean
+Loreta
+Lorette
+Loria
+Lorilee
+Lorina
+Loris
+Lorita
+Lorriane
+Lorrine
+Louetta
+Loura
+Lourie
+Love
+Lovetta
+Luanna
+Luba
+Luci
+Lucilla
+Ludivina
+Luetta
+Lurlene
+Lyndia
+Lynetta
+Lynna
+Mabelle
+Madalene
+Maddie
+Madelaine
+Madelene
+Mafalda
+Magali
+Mahalia
+Maile
+Maire
+Maisha
+Maisie
+Makeda
+Malena
+Malka
+Mallie
+Malorie
+Malvina
+Man
+Mandie
+Manie
+Many
+Mao
+Maragaret
+Maragret
+Marcelene
+Marcell
+Marcene
+Marchelle
+Mardell
+Marg
+Margene
+Margert
+Margherita
+Margrett
+Margy
+Marhta
+Marianela
+Marica
+Maricruz
+Mariella
+Marielle
+Mariette
+Mariko
+Marin
+Marinda
+Marine
+Maris
+Marisha
+Marivel
+Marketta
+Marlin
+Marline
+Marquitta
+Marshall
+Marth
+Marvella
+Marvis
+Marx
+Maryanna
+Marybelle
+Maryetta
+Maryland
+Maryln
+Marylouise
+Marylynn
+Maryrose
+Matha
+Maurita
+Maxima
+Maximina
+Mayola
+Meda
+Melani
+Melania
+Melda
+Melia
+Melida
+Melita
+Melodee
+Melodi
+Melvin
+Mendy
+Mercedez
+Merideth
+Merissa
+Merlyn
+Merrie
+Merrilee
+Merrill
+Mertie
+Mica
+Micha
+Michaele
+Michelina
+Miesha
+Mignon
+Mikaela
+Mike
+Miki
+Milda
+Milly
+Minda
+Ming
+Minta
+Mirella
+Misha
+Miss
+Mistie
+Mitchell
+Mitsue
+Mitsuko
+Mitzie
+Miyoko
+Monet
+Monnie
+Moon
+Mora
+Moriah
+Muoi
+Myesha
+Myrl
+Myrta
+Na
+Nadene
+Naida
+Nakesha
+Nam
+Nancee
+Nancey
+Natacha
+Natalya
+Natashia
+Natisha
+Necole
+Neda
+Neely
+Neida
+Nenita
+Neomi
+Nery
+Nevada
+Ngan
+Nguyet
+Nicholle
+Nida
+Niesha
+Nisha
+Nobuko
+Nohemi
+Noriko
+Nu
+Nubia
+Oda
+Odelia
+Olene
+Olevia
+Olimpia
+Olinda
+Onie
+Onita
+Oralee
+Oretha
+Oscar
+Otelia
+Otha
+Ozell
+Ozie
+Pa
+Palmira
+Pamila
+Pamula
+Parthenia
+Pasty
+Patria
+Paulene
+Paulita
+Paz
+Pearly
+Peg
+Pei
+Peter
+Petronila
+Phebe
+Phung
+Phylicia
+Ping
+Pok
+Porsche
+Priscila
+Providencia
+Pura
+Quinn
+Quyen
+Rachal
+Raelene
+Raguel
+Raisa
+Ranee
+Raymond
+Raymonde
+Rea
+Reagan
+Reanna
+Rebecka
+Reena
+Refugia
+Regine
+Reginia
+Reita
+Rema
+Remona
+Renay
+Renda
+Renna
+Ressie
+Reynalda
+Rheba
+Rhona
+Ria
+Ricarda
+Ricki
+Rickie
+Rima
+Riva
+Rivka
+Robbi
+Robbyn
+Robena
+Roberto
+Rochel
+Rolande
+Rory
+Rosamaria
+Roselee
+Roselia
+Roseline
+Roselle
+Rosena
+Rosenda
+Rosette
+Rosio
+Rossana
+Rossie
+Rosy
+Roxy
+Roy
+Royce
+Rozanne
+Rubi
+Russell
+Rutha
+Ruthanne
+Ruthe
+Ryann
+Sacha
+Sadye
+Sage
+Salley
+Samella
+Sammy
+Samuel
+Sana
+Sanda
+Sandee
+Sandie
+Sarai
+Saran
+Saturnina
+Sau
+Scottie
+Season
+See
+Seema
+Sena
+Senaida
+September
+Serafina
+Serita
+Setsuko
+Shae
+Shakia
+Shakita
+Shala
+Shalanda
+Shalon
+Shan
+Shanae
+Shandi
+Shanel
+Shaniqua
+Shantae
+Shantay
+Shantelle
+Shanti
+Shaquana
+Shaquita
+Sharan
+Sharda
+Sharell
+Sharice
+Sharie
+Sharika
+Sharilyn
+Sharmaine
+Sharolyn
+Sharri
+Shaunda
+Shaunta
+Shaunte
+Shavonda
+Shawanna
+Shawnta
+Shayne
+Sheba
+Shella
+Shemeka
+Shenika
+Shenna
+Shera
+Sherell
+Sherice
+Sheridan
+Sherika
+Sherill
+Sherise
+Sherlene
+Sherril
+Sheryll
+Shila
+Shiloh
+Shin
+Shirely
+Shirl
+Shizue
+Shizuko
+Shondra
+Shonta
+Shyla
+Sima
+Simonne
+Sina
+Sirena
+Siu
+Sixta
+Soila
+Sol
+Somer
+Sona
+Sparkle
+Stacee
+Stasia
+Stefany
+Stepanie
+Stephania
+Stephnie
+Suanne
+Sulema
+Sumiko
+Sunday
+Sunni
+Susy
+Suzi
+Svetlana
+Sylvie
+Ta
+Tai
+Taina
+Taisha
+Tajuana
+Takako
+Tama
+Tambra
+Tamisha
+Tammera
+Tandra
+Tandy
+Taneka
+Taren
+Tari
+Tarra
+Tashina
+Tasia
+Tatum
+Tatyana
+Taunya
+Tawna
+Tayna
+Tegan
+Teisha
+Telma
+Temika
+Tempie
+Temple
+Tenesha
+Teofila
+Teresia
+Terica
+Terina
+Terisa
+Terrell
+Terrilyn
+Theressa
+Thi
+Thomasena
+Thora
+Tien
+Tiera
+Tifany
+Tiffaney
+Tijuana
+Tilda
+Timika
+Timothy
+Tinisha
+Tisa
+Tish
+Tobi
+Tobie
+Toccara
+Toi
+Tomi
+Tomiko
+Tommye
+Tona
+Tonette
+Tonisha
+Tonita
+Tora
+Torie
+Torri
+Torrie
+Tory
+Toshia
+Tova
+Tran
+Travis
+Treasa
+Treena
+Trinh
+Troy
+Tu
+Tula
+Twanda
+Twanna
+Tyisha
+Tynisha
+Ula
+Ulrike
+Un
+Ute
+Valene
+Valentine
+Valeri
+Valrie
+Vanetta
+Vania
+Vanna
+Vannesa
+Vashti
+Vasiliki
+Venetta
+Vennie
+Verline
+Vernia
+Vernon
+Veronika
+Veronique
+Vertie
+Vi
+Victor
+Victorina
+Viki
+Vinita
+Virgen
+Virgil
+Voncile
+Wan
+Waneta
+Wanetta
+Wava
+Wen
+Wendie
+Wendolyn
+Wenona
+Wesley
+Whitley
+Wilhemina
+Willena
+Willetta
+Williemae
+Willodean
+Willow
+Winter
+Wynell
+Xenia
+Xiao
+Xochitl
+Xuan
+Yaeko
+Yael
+Yahaira
+Yajaira
+Yasmine
+Yasuko
+Yelena
+Yer
+Yessenia
+Yevette
+Yon
+Yoshie
+Youlanda
+Yuette
+Yuk
+Yuki
+Yulanda
+Yung
+Yuonne
+Yuri
+Yuriko
+Yvone
+Zada
+Zana
+Zenia
+Zetta
+Zonia


[19/21] incubator-usergrid git commit: USERGRID-871: fix broken load test

Posted by to...@apache.org.
USERGRID-871: fix broken load test


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/d6368af5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/d6368af5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/d6368af5

Branch: refs/heads/two-dot-o-dev
Commit: d6368af5ca08b2671b3cc6fe5d06b8d9dae658ed
Parents: 32fefb9
Author: Mike Dunker <md...@apigee.com>
Authored: Mon Aug 3 12:18:02 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Mon Aug 3 12:18:02 2015 -0700

----------------------------------------------------------------------
 .../loadtests/runAuditGetCollectionEntities.sh  |  4 +-
 stack/loadtests/runRandomEntityByUuidTest.sh    |  2 +-
 .../usergrid/scenarios/AuditScenarios.scala     |  1 +
 .../org/apache/usergrid/settings/Settings.scala | 72 +++++++++++++++++---
 .../simulations/ConfigurableSimulation.scala    |  1 +
 5 files changed, 67 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d6368af5/stack/loadtests/runAuditGetCollectionEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runAuditGetCollectionEntities.sh b/stack/loadtests/runAuditGetCollectionEntities.sh
index f34ea54..673c2b7 100755
--- a/stack/loadtests/runAuditGetCollectionEntities.sh
+++ b/stack/loadtests/runAuditGetCollectionEntities.sh
@@ -38,7 +38,8 @@ ADMIN_PASSWORD=test
 ORG=gatling
 APP=millionentities
 SCENARIO_TYPE=auditGetCollectionEntities
-SEARCH_LIMIT=1000
+SEARCH_LIMIT=177
+SEARCH_QUERY=order%20by%20name
 
 AUTH_TYPE=token
 TOKEN_TYPE=management
@@ -57,6 +58,7 @@ mvn gatling:execute \
 -DtokenType=${TOKEN_TYPE} \
 -DauditUuidFilename=${AUDIT_UUID_FILENAME} \
 -DsearchLimit=${SEARCH_LIMIT} \
+-DsearchQuery=${SEARCH_QUERY} \
 -Dgatling.simulationClass=org.apache.usergrid.simulations.AuditSimulation
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d6368af5/stack/loadtests/runRandomEntityByUuidTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runRandomEntityByUuidTest.sh b/stack/loadtests/runRandomEntityByUuidTest.sh
index 4a83eb5..50f15e8 100755
--- a/stack/loadtests/runRandomEntityByUuidTest.sh
+++ b/stack/loadtests/runRandomEntityByUuidTest.sh
@@ -55,7 +55,7 @@ AUTH_TYPE=anonymous
 TOKEN_TYPE=management
 END_CONDITION_TYPE=minutesElapsed
 #END_CONDITION_TYPE=requestCount
-END_MINUTES=2
+END_MINUTES=10
 END_REQUEST_COUNT=100
 
 #Execute the test

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d6368af5/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
index b58ee07..93440ac 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
@@ -43,6 +43,7 @@ object AuditScenarios {
       (if (Settings.searchLimit > 0) s"limit=${Settings.searchLimit}&" else "")
 
     // remove trailing & or ?
+    println (url.dropRight(1))
     url.dropRight(1)
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d6368af5/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 3c1c2e2..663d4d6 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -116,6 +116,7 @@ object Settings {
   val overallEntitySeed = initIntSetting(ConfigProperties.EntitySeed)
   val searchLimit:Int = initIntSetting(ConfigProperties.SearchLimit)
   val searchQuery = initStrSetting(ConfigProperties.SearchQuery)
+  println(s"searchQuery=${searchQuery}")
   val endConditionType = initStrSetting(ConfigProperties.EndConditionType)
   val endMinutes:Int = initIntSetting(ConfigProperties.EndMinutes)
   val endRequestCount:Int = initIntSetting(ConfigProperties.EndRequestCount)
@@ -153,27 +154,76 @@ object Settings {
   private val dummyTestCsv = ConfigProperties.getDefault(ConfigProperties.UuidFilename).toString
   private val dummyAuditCsv = ConfigProperties.getDefault(ConfigProperties.AuditUuidFilename).toString
   private val dummyAuditFailedCsv = ConfigProperties.getDefault(ConfigProperties.FailedUuidFilename).toString
+  private val dummyCaptureCsv = "/tmp/notused.csv"
 
   private val uuidFilename = initStrSetting(ConfigProperties.UuidFilename)
   private val auditUuidFilename = initStrSetting(ConfigProperties.AuditUuidFilename)
   private val failedUuidFilename = initStrSetting(ConfigProperties.FailedUuidFilename)
 
   // feeds require valid files, even if test won't be run
-  val feedUuids = uuidFilename != dummyTestCsv && scenarioType == ScenarioType.UuidRandomInfinite
-  val feedUuidFilename = uuidFilename
+  val feedUuids = scenarioType match {
+    case ScenarioType.UuidRandomInfinite => true
+    case _ => false
+  }
+  val feedUuidFilename = scenarioType match {
+    case ScenarioType.UuidRandomInfinite => uuidFilename
+    case _ => dummyTestCsv
+  }
+  if (feedUuids && feedUuidFilename == dummyTestCsv) {
+    println("Scenario requires CSV file containing UUIDs")
+    System.exit(1)
+  }
 
-  val feedAuditUuids = uuidFilename != dummyAuditCsv && scenarioType == ScenarioType.AuditVerifyCollectionEntities
-  val feedAuditUuidFilename = auditUuidFilename
+  val feedAuditUuids = scenarioType match {
+    case ScenarioType.AuditVerifyCollectionEntities => true
+    case _ => false
+  }
+  val feedAuditUuidFilename = scenarioType match {
+    case ScenarioType.AuditVerifyCollectionEntities => auditUuidFilename
+    case _ => dummyAuditCsv
+  }
+  if (feedAuditUuids && feedAuditUuidFilename == dummyAuditCsv) {
+    println("Scenario requires CSV file containing audit UUIDs")
+    System.exit(1)
+  }
 
-  // also uses uuidFilename
-  val captureUuids = uuidFilename != dummyTestCsv && (scenarioType == ScenarioType.LoadEntities || scenarioType == ScenarioType.GetByNameSequential)
-  val captureUuidFilename = uuidFilename
+  val captureUuidFilename = scenarioType match {
+    case ScenarioType.LoadEntities => uuidFilename
+    case ScenarioType.GetByNameSequential => uuidFilename
+    case _ => dummyCaptureCsv   // won't write to this file
+  }
+  val captureUuids = if (captureUuidFilename == dummyCaptureCsv) false
+    else scenarioType match {
+      case ScenarioType.LoadEntities => true
+      case ScenarioType.GetByNameSequential => true
+      case _ => false
+    }
 
-  val captureAuditUuids = (auditUuidFilename != dummyAuditCsv && scenarioType == ScenarioType.AuditGetCollectionEntities) ||
-                          (failedUuidFilename != dummyAuditFailedCsv && scenarioType == ScenarioType.AuditVerifyCollectionEntities)
-  println(s"auditUuidFilename=$auditUuidFilename")
+  val captureAuditUuidFilename = scenarioType match {
+    case ScenarioType.AuditGetCollectionEntities => auditUuidFilename
+    case ScenarioType.AuditVerifyCollectionEntities => failedUuidFilename
+    case _ => dummyCaptureCsv   // won't write to this file
+  }
+  if (scenarioType == ScenarioType.AuditGetCollectionEntities && captureAuditUuidFilename == dummyCaptureCsv) {
+    println("Scenario requires CSV file location to capture audit UUIDs")
+    System.exit(1)
+  }
+  val captureAuditUuids = (scenarioType == ScenarioType.AuditGetCollectionEntities) ||
+                          (scenarioType == ScenarioType.AuditVerifyCollectionEntities && captureAuditUuidFilename != dummyAuditFailedCsv)
+
+  //val feedUuids = uuidFilename != dummyTestCsv && scenarioType == ScenarioType.UuidRandomInfinite
+  //val feedAuditUuids = uuidFilename != dummyAuditCsv && scenarioType == ScenarioType.AuditVerifyCollectionEntities
+  // val captureUuids = uuidFilename != dummyTestCsv && (scenarioType == ScenarioType.LoadEntities || scenarioType == ScenarioType.GetByNameSequential)
+
+  //val captureAuditUuids = (auditUuidFilename != dummyAuditCsv && scenarioType == ScenarioType.AuditGetCollectionEntities) ||
+  //                        (failedUuidFilename != dummyAuditFailedCsv && scenarioType == ScenarioType.AuditVerifyCollectionEntities)
+  println(s"feedUuids=$feedUuids")
+  println(s"feedUuidFilename=$feedUuidFilename")
+  println(s"feedAuditUuids=$feedAuditUuids")
+  println(s"feedAuditUuidFilename=$feedAuditUuidFilename")
+  println(s"captureUuids=$captureUuids")
+  println(s"captureUuidFilename=$captureUuidFilename")
   println(s"captureAuditUuids=$captureAuditUuids")
-  val captureAuditUuidFilename = if (scenarioType == ScenarioType.AuditVerifyCollectionEntities) failedUuidFilename else auditUuidFilename
   println(s"captureAuditUuidFilename=$captureAuditUuidFilename")
 
   val purgeUsers:Int = initIntSetting(ConfigProperties.PurgeUsers)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d6368af5/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index b923c46..e52e3d8 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -44,6 +44,7 @@ class ConfigurableSimulation extends Simulation {
       case ScenarioType.NameRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByName
       case ScenarioType.UuidRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByUuid
       case ScenarioType.GetByNameSequential => EntityCollectionScenarios.getEntitiesByNameSequential
+      case _ => null
     }
   }
 


[16/21] incubator-usergrid git commit: USERGRID-871: add get by name sequential scenario, plus fix Base64

Posted by to...@apache.org.
USERGRID-871: add get by name sequential scenario, plus fix Base64


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/15c1c59c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/15c1c59c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/15c1c59c

Branch: refs/heads/two-dot-o-dev
Commit: 15c1c59cef3092477e734de54a1d49db7e7df2fe
Parents: 0a0ef1b
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Jul 30 17:08:43 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Jul 30 17:08:43 2015 -0700

----------------------------------------------------------------------
 .../loadtests/runGetEntitiesByNameSequential.sh | 106 +++++++++++++++++++
 .../datagenerators/FeederGenerator.scala        |   2 +-
 .../apache/usergrid/enums/ScenarioType.scala    |   4 +-
 .../scenarios/EntityCollectionScenarios.scala   |  52 ++++++++-
 .../usergrid/scenarios/EntityScenarios.scala    |   4 +-
 .../org/apache/usergrid/settings/Headers.scala  |   4 +-
 .../org/apache/usergrid/settings/Settings.scala |  11 +-
 .../simulations/ConfigurableSimulation.scala    |   1 +
 .../src/test/resources/logback-test.xml         |   1 -
 9 files changed, 170 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/runGetEntitiesByNameSequential.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runGetEntitiesByNameSequential.sh b/stack/loadtests/runGetEntitiesByNameSequential.sh
new file mode 100755
index 0000000..d97edc2
--- /dev/null
+++ b/stack/loadtests/runGetEntitiesByNameSequential.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 8 ] || die "At least 8 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES ENTITY_WORKER_NUM ENTITY_WORKER_COUNT [UUID_FILENAME]"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+NUM_ENTITIES="$6"
+ENTITY_WORKER_NUM="$7"
+ENTITY_WORKER_COUNT="$8"
+UUID_FILENAME="$9"
+
+shift 9
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION=trivialentities
+SANDBOX_COLLECTION=false
+SCENARIO_TYPE=getByNameSequential
+LOAD_ENTITIES=false
+
+SKIP_SETUP=false
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivial
+ENTITY_PREFIX=trivial
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-Dcollection=${COLLECTION} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-DentityWorkerCount=${ENTITY_WORKER_COUNT} \
+-DentityWorkerNum=${ENTITY_WORKER_NUM} \
+-DuuidFilename=${UUID_FILENAME} \
+-DsandboxCollection=${SANDBOX_COLLECTION} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
index f218b5b..09030f5 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
@@ -227,7 +227,7 @@ object FeederGenerator {
 
      // println(entityName)
 
-     Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity, "entityNum" -> (i+1).toString)
+     Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity, "entityNum" -> (i+1).toString, "seededEntityNum" -> seededVal.toString)
    }
  }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
index db9a3af..760c837 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
@@ -7,8 +7,10 @@ object ScenarioType {
   val DeleteEntities = "deleteEntities"
   val UpdateEntities = "updateEntities"
   val UuidRandomInfinite = "uuidRandomInfinite"
+  val GetByNameSequential = "getByNameSequential"
 
-  val Values = Seq(GetAllByCursor,NameRandomInfinite,LoadEntities,DeleteEntities,UpdateEntities,UuidRandomInfinite)
+  val Values = Seq(GetAllByCursor,NameRandomInfinite,LoadEntities,DeleteEntities,UpdateEntities,UuidRandomInfinite,
+    GetByNameSequential)
 
   def isValid(str: String): Boolean = {
     Values.contains(str)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index b661d9c..5f679ec 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -196,7 +196,7 @@ object EntityCollectionScenarios {
         // 200 for success, 400 if already exists
         .check(status.in(Seq(200)), extractCreateUuid(SessionVarUuid)))
         .exec(session => {
-          Settings.addUuid(session("entityNum").as[String].toInt, session(SessionVarUuid).as[String])
+          Settings.addUuid(session("seededEntityNum").as[String].toInt, session(SessionVarUuid).as[String])
           session
         })
     }
@@ -268,4 +268,54 @@ object EntityCollectionScenarios {
           exec(updateEntity)
         }
     }
+
+  /*
+   * Get by name sequential
+   */
+  val getEntityByNameSequentialAnonymous = exec(
+    doIf("${validEntity}", "yes") {
+      exec(http("GET entity by name sequential (anonymous)")
+        .get("/" + Settings.collection + "/${entityName}")
+        .headers(Headers.authAnonymous)
+        .check(status.is(200), extractCreateUuid(SessionVarUuid)))
+        .exec(session => {
+          Settings.addUuid(session("seededEntityNum").as[String].toInt, session(SessionVarUuid).as[String])
+          session
+        })
+    }
+  )
+
+  val getEntityByNameSequentialWithToken = exec(
+    doIf("${validEntity}", "yes") {
+      exec(http("GET entity by name sequential (anonymous)")
+        .get("/" + Settings.collection + "/${entityName}")
+        .headers(Headers.authToken)
+        .check(status.is(200), extractCreateUuid(SessionVarUuid)))
+        .exec(session => {
+        Settings.addUuid(session("seededEntityNum").as[String].toInt, session(SessionVarUuid).as[String])
+        session
+      })
+    }
+  )
+
+  val getEntitiesByNameSequential = scenario("Get entities by name sequentially")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
+      feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+        /*.exec{
+          session => if (session("validEntity").as[String] == "yes") { println("Loading entity #" + session("entityNum").as[String]) }
+          session
+        }*/
+        .doIf(session => session("validEntity").as[String] == "yes") {
+          tryMax(5) {
+            doIfOrElse(_ => Settings.authType == AuthType.Anonymous) {
+              exec(getEntityByNameSequentialAnonymous)
+            } {
+              exec(getEntityByNameSequentialWithToken)
+            }
+          }
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
index 65d0111..df1657b 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
@@ -18,9 +18,7 @@ package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
-import org.apache.usergrid.datagenerators.{EntityDataGenerator, FeederGenerator}
-import org.apache.usergrid.helpers.{Extractors,Utils}
-import org.apache.usergrid.settings.{Headers, Settings}
+import org.apache.usergrid.settings.Headers
 
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
index 04c4d3b..d158f0c 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.settings
+package org.apache.usergrid.settings
 
- import org.apache.usergrid.enums.AuthType
+import org.apache.usergrid.enums.AuthType
 
  /**
  *

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 387fd24..e4be5c8 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -17,10 +17,7 @@
 package org.apache.usergrid.settings
 
 import java.io.{PrintWriter, FileOutputStream}
-import java.nio.charset.StandardCharsets
-import java.util.{Date, Base64}
-
-
+import javax.xml.bind.DatatypeConverter
 import io.gatling.http.Predef._
 import io.gatling.http.config.HttpProtocolBuilder
 import org.apache.usergrid.datagenerators.FeederGenerator
@@ -86,7 +83,9 @@ object Settings {
   val userSeed:Int = initIntSetting(ConfigProperties.UserSeed)
   val appUser = initStrSetting(ConfigProperties.AppUser)
   val appUserPassword = initStrSetting(ConfigProperties.AppUserPassword)
-  val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
+
+  // val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
+  val appUserBase64: String = DatatypeConverter.printBase64Binary((appUser + ":" + appUserPassword).getBytes("UTF-8"))
 
   val totalNumEntities:Int = initIntSetting(ConfigProperties.NumEntities)
   val numDevices:Int = initIntSetting(ConfigProperties.NumDevices)
@@ -152,7 +151,7 @@ object Settings {
   // UUID log file, have to go through this because creating a csv feeder with an invalid csv file fails at maven compile time
   private val dummyCsv = ConfigProperties.getDefault(ConfigProperties.UuidFilename).toString
   private val uuidFilename = initStrSetting(ConfigProperties.UuidFilename)
-  val captureUuids = uuidFilename != dummyCsv && scenarioType == ScenarioType.LoadEntities
+  val captureUuids = uuidFilename != dummyCsv && (scenarioType == ScenarioType.LoadEntities || scenarioType == ScenarioType.GetByNameSequential)
   val feedUuids = uuidFilename != dummyCsv && scenarioType == ScenarioType.UuidRandomInfinite
   val captureUuidFilename = if (captureUuids) uuidFilename else dummyCsv
   val feedUuidFilename = if (feedUuids) uuidFilename else dummyCsv

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index da5189e..b923c46 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -43,6 +43,7 @@ class ConfigurableSimulation extends Simulation {
       case ScenarioType.GetAllByCursor => EntityCollectionScenarios.getEntityPagesToEnd
       case ScenarioType.NameRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByName
       case ScenarioType.UuidRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByUuid
+      case ScenarioType.GetByNameSequential => EntityCollectionScenarios.getEntitiesByNameSequential
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/15c1c59c/stack/loadtests/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/logback-test.xml b/stack/loadtests/src/test/resources/logback-test.xml
index dd39a3e..646582b 100644
--- a/stack/loadtests/src/test/resources/logback-test.xml
+++ b/stack/loadtests/src/test/resources/logback-test.xml
@@ -27,7 +27,6 @@
 
 	<!-- Uncomment for logging ALL HTTP request and responses -->
 	 	<!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" /> -->
-        <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" />
 	<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
         <!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" /> -->
 


[06/21] incubator-usergrid git commit: USERGRID-871: refactor Gatling load testing code

Posted by to...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.all.last.txt
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.all.last.txt b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.all.last.txt
new file mode 100644
index 0000000..f9de3d4
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.all.last.txt
@@ -0,0 +1,88799 @@
+SMITH          1.006  1.006      1
+JOHNSON        0.810  1.816      2
+WILLIAMS       0.699  2.515      3
+JONES          0.621  3.136      4
+BROWN          0.621  3.757      5
+DAVIS          0.480  4.237      6
+MILLER         0.424  4.660      7
+WILSON         0.339  5.000      8
+MOORE          0.312  5.312      9
+TAYLOR         0.311  5.623     10
+ANDERSON       0.311  5.934     11
+THOMAS         0.311  6.245     12
+JACKSON        0.310  6.554     13
+WHITE          0.279  6.834     14
+HARRIS         0.275  7.109     15
+MARTIN         0.273  7.382     16
+THOMPSON       0.269  7.651     17
+GARCIA         0.254  7.905     18
+MARTINEZ       0.234  8.140     19
+ROBINSON       0.233  8.372     20
+CLARK          0.231  8.603     21
+RODRIGUEZ      0.229  8.832     22
+LEWIS          0.226  9.058     23
+LEE            0.220  9.278     24
+WALKER         0.219  9.497     25
+HALL           0.200  9.698     26
+ALLEN          0.199  9.897     27
+YOUNG          0.193 10.090     28
+HERNANDEZ      0.192 10.282     29
+KING           0.190 10.472     30
+WRIGHT         0.189 10.662     31
+LOPEZ          0.187 10.849     32
+HILL           0.187 11.035     33
+SCOTT          0.185 11.220     34
+GREEN          0.183 11.403     35
+ADAMS          0.174 11.577     36
+BAKER          0.171 11.748     37
+GONZALEZ       0.166 11.915     38
+NELSON         0.162 12.077     39
+CARTER         0.162 12.239     40
+MITCHELL       0.160 12.399     41
+PEREZ          0.155 12.554     42
+ROBERTS        0.153 12.707     43
+TURNER         0.152 12.859     44
+PHILLIPS       0.149 13.008     45
+CAMPBELL       0.149 13.157     46
+PARKER         0.146 13.302     47
+EVANS          0.141 13.443     48
+EDWARDS        0.137 13.580     49
+COLLINS        0.134 13.714     50
+STEWART        0.133 13.847     51
+SANCHEZ        0.130 13.977     52
+MORRIS         0.125 14.102     53
+ROGERS         0.123 14.225     54
+REED           0.122 14.347     55
+COOK           0.120 14.467     56
+MORGAN         0.118 14.585     57
+BELL           0.117 14.702     58
+MURPHY         0.117 14.819     59
+BAILEY         0.115 14.934     60
+RIVERA         0.113 15.047     61
+COOPER         0.113 15.160     62
+RICHARDSON     0.112 15.272     63
+COX            0.110 15.382     64
+HOWARD         0.110 15.492     65
+WARD           0.108 15.600     66
+TORRES         0.108 15.708     67
+PETERSON       0.107 15.815     68
+GRAY           0.106 15.921     69
+RAMIREZ        0.105 16.026     70
+JAMES          0.105 16.131     71
+WATSON         0.103 16.233     72
+BROOKS         0.103 16.336     73
+KELLY          0.102 16.438     74
+SANDERS        0.100 16.537     75
+PRICE          0.099 16.637     76
+BENNETT        0.099 16.736     77
+WOOD           0.098 16.834     78
+BARNES         0.097 16.931     79
+ROSS           0.096 17.027     80
+HENDERSON      0.095 17.122     81
+COLEMAN        0.095 17.217     82
+JENKINS        0.095 17.312     83
+PERRY          0.094 17.406     84
+POWELL         0.093 17.499     85
+LONG           0.092 17.591     86
+PATTERSON      0.092 17.684     87
+HUGHES         0.092 17.776     88
+FLORES         0.092 17.868     89
+WASHINGTON     0.092 17.959     90
+BUTLER         0.091 18.050     91
+SIMMONS        0.091 18.141     92
+FOSTER         0.091 18.231     93
+GONZALES       0.087 18.318     94
+BRYANT         0.087 18.405     95
+ALEXANDER      0.085 18.490     96
+RUSSELL        0.085 18.574     97
+GRIFFIN        0.084 18.659     98
+DIAZ           0.084 18.742     99
+HAYES          0.083 18.825    100
+MYERS          0.083 18.908    101
+FORD           0.082 18.990    102
+HAMILTON       0.082 19.072    103
+GRAHAM         0.082 19.154    104
+SULLIVAN       0.081 19.234    105
+WALLACE        0.081 19.315    106
+WOODS          0.080 19.395    107
+COLE           0.080 19.476    108
+WEST           0.080 19.555    109
+JORDAN         0.078 19.634    110
+OWENS          0.078 19.711    111
+REYNOLDS       0.078 19.789    112
+FISHER         0.077 19.866    113
+ELLIS          0.077 19.943    114
+HARRISON       0.076 20.019    115
+GIBSON         0.075 20.094    116
+MCDONALD       0.075 20.169    117
+CRUZ           0.075 20.244    118
+MARSHALL       0.075 20.319    119
+ORTIZ          0.075 20.394    120
+GOMEZ          0.075 20.468    121
+MURRAY         0.074 20.543    122
+FREEMAN        0.074 20.617    123
+WELLS          0.073 20.690    124
+WEBB           0.072 20.762    125
+SIMPSON        0.070 20.832    126
+STEVENS        0.070 20.902    127
+TUCKER         0.070 20.971    128
+PORTER         0.069 21.041    129
+HUNTER         0.069 21.110    130
+HICKS          0.069 21.178    131
+CRAWFORD       0.068 21.246    132
+HENRY          0.068 21.314    133
+BOYD           0.068 21.381    134
+MASON          0.068 21.449    135
+MORALES        0.067 21.516    136
+KENNEDY        0.067 21.582    137
+WARREN         0.067 21.649    138
+DIXON          0.066 21.715    139
+RAMOS          0.066 21.782    140
+REYES          0.066 21.848    141
+BURNS          0.065 21.913    142
+GORDON         0.065 21.978    143
+SHAW           0.065 22.043    144
+HOLMES         0.065 22.108    145
+RICE           0.064 22.172    146
+ROBERTSON      0.064 22.236    147
+HUNT           0.063 22.299    148
+BLACK          0.063 22.362    149
+DANIELS        0.062 22.425    150
+PALMER         0.062 22.487    151
+MILLS          0.061 22.547    152
+NICHOLS        0.060 22.607    153
+GRANT          0.060 22.667    154
+KNIGHT         0.060 22.727    155
+FERGUSON       0.059 22.786    156
+ROSE           0.059 22.845    157
+STONE          0.059 22.904    158
+HAWKINS        0.059 22.963    159
+DUNN           0.058 23.022    160
+PERKINS        0.058 23.079    161
+HUDSON         0.058 23.137    162
+SPENCER        0.057 23.194    163
+GARDNER        0.057 23.251    164
+STEPHENS       0.057 23.308    165
+PAYNE          0.057 23.365    166
+PIERCE         0.056 23.421    167
+BERRY          0.056 23.477    168
+MATTHEWS       0.056 23.533    169
+ARNOLD         0.056 23.589    170
+WAGNER         0.055 23.645    171
+WILLIS         0.055 23.700    172
+RAY            0.055 23.755    173
+WATKINS        0.055 23.811    174
+OLSON          0.055 23.866    175
+CARROLL        0.055 23.921    176
+DUNCAN         0.055 23.976    177
+SNYDER         0.055 24.031    178
+HART           0.054 24.086    179
+CUNNINGHAM     0.054 24.140    180
+BRADLEY        0.054 24.194    181
+LANE           0.054 24.247    182
+ANDREWS        0.054 24.301    183
+RUIZ           0.054 24.355    184
+HARPER         0.054 24.408    185
+FOX            0.053 24.462    186
+RILEY          0.053 24.515    187
+ARMSTRONG      0.053 24.568    188
+CARPENTER      0.053 24.621    189
+WEAVER         0.053 24.673    190
+GREENE         0.053 24.726    191
+LAWRENCE       0.052 24.779    192
+ELLIOTT        0.052 24.831    193
+CHAVEZ         0.052 24.883    194
+SIMS           0.052 24.936    195
+AUSTIN         0.052 24.988    196
+PETERS         0.052 25.040    197
+KELLEY         0.052 25.092    198
+FRANKLIN       0.051 25.143    199
+LAWSON         0.051 25.195    200
+FIELDS         0.051 25.246    201
+GUTIERREZ      0.051 25.297    202
+RYAN           0.051 25.348    203
+SCHMIDT        0.051 25.400    204
+CARR           0.051 25.451    205
+VASQUEZ        0.051 25.502    206
+CASTILLO       0.051 25.552    207
+WHEELER        0.051 25.603    208
+CHAPMAN        0.050 25.653    209
+OLIVER         0.050 25.703    210
+MONTGOMERY     0.049 25.753    211
+RICHARDS       0.049 25.802    212
+WILLIAMSON     0.049 25.851    213
+JOHNSTON       0.049 25.900    214
+BANKS          0.048 25.948    215
+MEYER          0.048 25.996    216
+BISHOP         0.048 26.045    217
+MCCOY          0.048 26.093    218
+HOWELL         0.048 26.140    219
+ALVAREZ        0.048 26.188    220
+MORRISON       0.048 26.235    221
+HANSEN         0.047 26.283    222
+FERNANDEZ      0.047 26.330    223
+GARZA          0.047 26.377    224
+HARVEY         0.047 26.424    225
+LITTLE         0.046 26.470    226
+BURTON         0.046 26.516    227
+STANLEY        0.046 26.562    228
+NGUYEN         0.046 26.608    229
+GEORGE         0.046 26.653    230
+JACOBS         0.046 26.699    231
+REID           0.046 26.745    232
+KIM            0.045 26.790    233
+FULLER         0.045 26.835    234
+LYNCH          0.045 26.880    235
+DEAN           0.045 26.925    236
+GILBERT        0.045 26.970    237
+GARRETT        0.045 27.015    238
+ROMERO         0.045 27.059    239
+WELCH          0.044 27.104    240
+LARSON         0.044 27.148    241
+FRAZIER        0.044 27.192    242
+BURKE          0.044 27.235    243
+HANSON         0.043 27.279    244
+DAY            0.043 27.322    245
+MENDOZA        0.043 27.365    246
+MORENO         0.043 27.407    247
+BOWMAN         0.043 27.450    248
+MEDINA         0.042 27.492    249
+FOWLER         0.042 27.535    250
+BREWER         0.042 27.577    251
+HOFFMAN        0.042 27.619    252
+CARLSON        0.042 27.661    253
+SILVA          0.042 27.703    254
+PEARSON        0.042 27.744    255
+HOLLAND        0.042 27.786    256
+DOUGLAS        0.041 27.827    257
+FLEMING        0.041 27.868    258
+JENSEN         0.041 27.909    259
+VARGAS         0.041 27.950    260
+BYRD           0.041 27.991    261
+DAVIDSON       0.041 28.032    262
+HOPKINS        0.041 28.072    263
+MAY            0.040 28.113    264
+TERRY          0.040 28.153    265
+HERRERA        0.040 28.193    266
+WADE           0.040 28.233    267
+SOTO           0.040 28.273    268
+WALTERS        0.040 28.313    269
+CURTIS         0.040 28.352    270
+NEAL           0.039 28.392    271
+CALDWELL       0.039 28.431    272
+LOWE           0.039 28.471    273
+JENNINGS       0.039 28.510    274
+BARNETT        0.039 28.549    275
+GRAVES         0.039 28.588    276
+JIMENEZ        0.039 28.628    277
+HORTON         0.039 28.667    278
+SHELTON        0.039 28.706    279
+BARRETT        0.039 28.745    280
+OBRIEN         0.039 28.783    281
+CASTRO         0.039 28.822    282
+SUTTON         0.038 28.860    283
+GREGORY        0.038 28.899    284
+MCKINNEY       0.038 28.937    285
+LUCAS          0.038 28.975    286
+MILES          0.038 29.013    287
+CRAIG          0.038 29.051    288
+RODRIQUEZ      0.037 29.088    289
+CHAMBERS       0.037 29.126    290
+HOLT           0.037 29.163    291
+LAMBERT        0.037 29.200    292
+FLETCHER       0.037 29.237    293
+WATTS          0.037 29.274    294
+BATES          0.037 29.311    295
+HALE           0.037 29.348    296
+RHODES         0.037 29.385    297
+PENA           0.037 29.421    298
+BECK           0.037 29.458    299
+NEWMAN         0.036 29.494    300
+HAYNES         0.036 29.531    301
+MCDANIEL       0.036 29.567    302
+MENDEZ         0.036 29.603    303
+BUSH           0.036 29.639    304
+VAUGHN         0.036 29.675    305
+PARKS          0.035 29.711    306
+DAWSON         0.035 29.746    307
+SANTIAGO       0.035 29.781    308
+NORRIS         0.035 29.817    309
+HARDY          0.035 29.852    310
+LOVE           0.035 29.887    311
+STEELE         0.035 29.921    312
+CURRY          0.035 29.956    313
+POWERS         0.035 29.991    314
+SCHULTZ        0.035 30.025    315
+BARKER         0.035 30.060    316
+GUZMAN         0.034 30.094    317
+PAGE           0.034 30.129    318
+MUNOZ          0.034 30.163    319
+BALL           0.034 30.197    320
+KELLER         0.034 30.231    321
+CHANDLER       0.034 30.265    322
+WEBER          0.034 30.299    323
+LEONARD        0.034 30.333    324
+WALSH          0.033 30.366    325
+LYONS          0.033 30.400    326
+RAMSEY         0.033 30.433    327
+WOLFE          0.033 30.466    328
+SCHNEIDER      0.033 30.499    329
+MULLINS        0.033 30.532    330
+BENSON         0.033 30.565    331
+SHARP          0.033 30.598    332
+BOWEN          0.033 30.631    333
+DANIEL         0.033 30.663    334
+BARBER         0.032 30.696    335
+CUMMINGS       0.032 30.728    336
+HINES          0.032 30.760    337
+BALDWIN        0.032 30.793    338
+GRIFFITH       0.032 30.824    339
+VALDEZ         0.032 30.856    340
+HUBBARD        0.032 30.888    341
+SALAZAR        0.032 30.920    342
+REEVES         0.032 30.951    343
+WARNER         0.031 30.983    344
+STEVENSON      0.031 31.014    345
+BURGESS        0.031 31.045    346
+SANTOS         0.031 31.076    347
+TATE           0.031 31.107    348
+CROSS          0.031 31.138    349
+GARNER         0.031 31.169    350
+MANN           0.031 31.200    351
+MACK           0.031 31.231    352
+MOSS           0.031 31.262    353
+THORNTON       0.031 31.292    354
+DENNIS         0.031 31.323    355
+MCGEE          0.031 31.354    356
+FARMER         0.030 31.384    357
+DELGADO        0.030 31.415    358
+AGUILAR        0.030 31.445    359
+VEGA           0.030 31.475    360
+GLOVER         0.030 31.505    361
+MANNING        0.030 31.535    362
+COHEN          0.030 31.566    363
+HARMON         0.030 31.596    364
+RODGERS        0.030 31.626    365
+ROBBINS        0.030 31.656    366
+NEWTON         0.030 31.686    367
+TODD           0.030 31.716    368
+BLAIR          0.030 31.746    369
+HIGGINS        0.030 31.776    370
+INGRAM         0.030 31.806    371
+REESE          0.030 31.836    372
+CANNON         0.030 31.865    373
+STRICKLAND     0.030 31.895    374
+TOWNSEND       0.030 31.925    375
+POTTER         0.030 31.955    376
+GOODWIN        0.030 31.984    377
+WALTON         0.030 32.014    378
+ROWE           0.029 32.043    379
+HAMPTON        0.029 32.073    380
+ORTEGA         0.029 32.102    381
+PATTON         0.029 32.131    382
+SWANSON        0.029 32.161    383
+JOSEPH         0.029 32.190    384
+FRANCIS        0.029 32.219    385
+GOODMAN        0.029 32.248    386
+MALDONADO      0.029 32.277    387
+YATES          0.029 32.305    388
+BECKER         0.029 32.334    389
+ERICKSON       0.029 32.363    390
+HODGES         0.029 32.392    391
+RIOS           0.029 32.421    392
+CONNER         0.029 32.449    393
+ADKINS         0.029 32.478    394
+WEBSTER        0.028 32.506    395
+NORMAN         0.028 32.535    396
+MALONE         0.028 32.563    397
+HAMMOND        0.028 32.591    398
+FLOWERS        0.028 32.620    399
+COBB           0.028 32.648    400
+MOODY          0.028 32.676    401
+QUINN          0.028 32.704    402
+BLAKE          0.028 32.732    403
+MAXWELL        0.028 32.759    404
+POPE           0.028 32.787    405
+FLOYD          0.027 32.814    406
+OSBORNE        0.027 32.842    407
+PAUL           0.027 32.869    408
+MCCARTHY       0.027 32.896    409
+GUERRERO       0.027 32.924    410
+LINDSEY        0.027 32.951    411
+ESTRADA        0.027 32.978    412
+SANDOVAL       0.027 33.005    413
+GIBBS          0.027 33.032    414
+TYLER          0.027 33.059    415
+GROSS          0.027 33.086    416
+FITZGERALD     0.027 33.113    417
+STOKES         0.027 33.140    418
+DOYLE          0.027 33.167    419
+SHERMAN        0.027 33.193    420
+SAUNDERS       0.027 33.220    421
+WISE           0.027 33.247    422
+COLON          0.027 33.274    423
+GILL           0.027 33.300    424
+ALVARADO       0.027 33.327    425
+GREER          0.026 33.353    426
+PADILLA        0.026 33.380    427
+SIMON          0.026 33.406    428
+WATERS         0.026 33.432    429
+NUNEZ          0.026 33.459    430
+BALLARD        0.026 33.485    431
+SCHWARTZ       0.026 33.511    432
+MCBRIDE        0.026 33.536    433
+HOUSTON        0.026 33.562    434
+CHRISTENSEN    0.026 33.588    435
+KLEIN          0.026 33.614    436
+PRATT          0.026 33.640    437
+BRIGGS         0.026 33.666    438
+PARSONS        0.026 33.692    439
+MCLAUGHLIN     0.026 33.717    440
+ZIMMERMAN      0.026 33.743    441
+FRENCH         0.026 33.769    442
+BUCHANAN       0.026 33.794    443
+MORAN          0.026 33.820    444
+COPELAND       0.025 33.845    445
+ROY            0.025 33.871    446
+PITTMAN        0.025 33.896    447
+BRADY          0.025 33.922    448
+MCCORMICK      0.025 33.947    449
+HOLLOWAY       0.025 33.972    450
+BROCK          0.025 33.998    451
+POOLE          0.025 34.023    452
+FRANK          0.025 34.048    453
+LOGAN          0.025 34.073    454
+OWEN           0.025 34.098    455
+BASS           0.025 34.122    456
+MARSH          0.025 34.147    457
+DRAKE          0.025 34.172    458
+WONG           0.025 34.197    459
+JEFFERSON      0.025 34.221    460
+PARK           0.025 34.246    461
+MORTON         0.025 34.271    462
+ABBOTT         0.025 34.295    463
+SPARKS         0.025 34.320    464
+PATRICK        0.024 34.344    465
+NORTON         0.024 34.369    466
+HUFF           0.024 34.393    467
+CLAYTON        0.024 34.417    468
+MASSEY         0.024 34.442    469
+LLOYD          0.024 34.466    470
+FIGUEROA       0.024 34.490    471
+CARSON         0.024 34.514    472
+BOWERS         0.024 34.538    473
+ROBERSON       0.024 34.563    474
+BARTON         0.024 34.587    475
+TRAN           0.024 34.611    476
+LAMB           0.024 34.635    477
+HARRINGTON     0.024 34.659    478
+CASEY          0.024 34.683    479
+BOONE          0.024 34.706    480
+CORTEZ         0.024 34.730    481
+CLARKE         0.024 34.754    482
+MATHIS         0.024 34.778    483
+SINGLETON      0.024 34.801    484
+WILKINS        0.024 34.825    485
+CAIN           0.024 34.849    486
+BRYAN          0.024 34.872    487
+UNDERWOOD      0.024 34.896    488
+HOGAN          0.024 34.920    489
+MCKENZIE       0.023 34.943    490
+COLLIER        0.023 34.966    491
+LUNA           0.023 34.990    492
+PHELPS         0.023 35.013    493
+MCGUIRE        0.023 35.036    494
+ALLISON        0.023 35.059    495
+BRIDGES        0.023 35.083    496
+WILKERSON      0.023 35.106    497
+NASH           0.023 35.129    498
+SUMMERS        0.023 35.152    499
+ATKINS         0.023 35.175    500
+WILCOX         0.023 35.198    501
+PITTS          0.023 35.221    502
+CONLEY         0.023 35.244    503
+MARQUEZ        0.023 35.267    504
+BURNETT        0.023 35.290    505
+RICHARD        0.023 35.313    506
+COCHRAN        0.023 35.335    507
+CHASE          0.023 35.358    508
+DAVENPORT      0.023 35.381    509
+HOOD           0.023 35.404    510
+GATES          0.023 35.427    511
+CLAY           0.023 35.449    512
+AYALA          0.023 35.472    513
+SAWYER         0.023 35.495    514
+ROMAN          0.023 35.517    515
+VAZQUEZ        0.023 35.540    516
+DICKERSON      0.023 35.562    517
+HODGE          0.022 35.585    518
+ACOSTA         0.022 35.607    519
+FLYNN          0.022 35.630    520
+ESPINOZA       0.022 35.652    521
+NICHOLSON      0.022 35.675    522
+MONROE         0.022 35.697    523
+WOLF           0.022 35.719    524
+MORROW         0.022 35.741    525
+KIRK           0.022 35.763    526
+RANDALL        0.022 35.785    527
+ANTHONY        0.022 35.807    528
+WHITAKER       0.022 35.829    529
+OCONNOR        0.022 35.851    530
+SKINNER        0.022 35.873    531
+WARE           0.022 35.895    532
+MOLINA         0.022 35.916    533
+KIRBY          0.022 35.938    534
+HUFFMAN        0.022 35.960    535
+BRADFORD       0.022 35.982    536
+CHARLES        0.022 36.003    537
+GILMORE        0.022 36.025    538
+DOMINGUEZ      0.022 36.046    539
+ONEAL          0.022 36.068    540
+BRUCE          0.022 36.090    541
+LANG           0.021 36.111    542
+COMBS          0.021 36.132    543
+KRAMER         0.021 36.154    544
+HEATH          0.021 36.175    545
+HANCOCK        0.021 36.196    546
+GALLAGHER      0.021 36.218    547
+GAINES         0.021 36.239    548
+SHAFFER        0.021 36.260    549
+SHORT          0.021 36.281    550
+WIGGINS        0.021 36.302    551
+MATHEWS        0.021 36.323    552
+MCCLAIN        0.021 36.344    553
+FISCHER        0.021 36.365    554
+WALL           0.021 36.386    555
+SMALL          0.021 36.407    556
+MELTON         0.021 36.428    557
+HENSLEY        0.021 36.449    558
+BOND           0.021 36.470    559
+DYER           0.021 36.491    560
+CAMERON        0.021 36.511    561
+GRIMES         0.021 36.532    562
+CONTRERAS      0.021 36.553    563
+CHRISTIAN      0.021 36.573    564
+WYATT          0.021 36.594    565
+BAXTER         0.021 36.615    566
+SNOW           0.021 36.635    567
+MOSLEY         0.021 36.656    568
+SHEPHERD       0.021 36.677    569
+LARSEN         0.021 36.697    570
+HOOVER         0.021 36.718    571
+BEASLEY        0.020 36.738    572
+GLENN          0.020 36.758    573
+PETERSEN       0.020 36.779    574
+WHITEHEAD      0.020 36.799    575
+MEYERS         0.020 36.819    576
+KEITH          0.020 36.840    577
+GARRISON       0.020 36.860    578
+VINCENT        0.020 36.880    579
+SHIELDS        0.020 36.900    580
+HORN           0.020 36.920    581
+SAVAGE         0.020 36.941    582
+OLSEN          0.020 36.961    583
+SCHROEDER      0.020 36.981    584
+HARTMAN        0.020 37.001    585
+WOODARD        0.020 37.021    586
+MUELLER        0.020 37.041    587
+KEMP           0.020 37.061    588
+DELEON         0.020 37.081    589
+BOOTH          0.020 37.101    590
+PATEL          0.020 37.121    591
+CALHOUN        0.020 37.140    592
+WILEY          0.020 37.160    593
+EATON          0.020 37.180    594
+CLINE          0.020 37.200    595
+NAVARRO        0.020 37.220    596
+HARRELL        0.020 37.240    597
+LESTER         0.020 37.259    598
+HUMPHREY       0.020 37.279    599
+PARRISH        0.020 37.299    600
+DURAN          0.020 37.318    601
+HUTCHINSON     0.020 37.338    602
+HESS           0.020 37.358    603
+DORSEY         0.020 37.377    604
+BULLOCK        0.020 37.397    605
+ROBLES         0.020 37.416    606
+BEARD          0.019 37.436    607
+DALTON         0.019 37.455    608
+AVILA          0.019 37.475    609
+VANCE          0.019 37.494    610
+RICH           0.019 37.514    611
+BLACKWELL      0.019 37.533    612
+YORK           0.019 37.552    613
+JOHNS          0.019 37.572    614
+BLANKENSHIP    0.019 37.591    615
+TREVINO        0.019 37.610    616
+SALINAS        0.019 37.630    617
+CAMPOS         0.019 37.649    618
+PRUITT         0.019 37.668    619
+MOSES          0.019 37.688    620
+CALLAHAN       0.019 37.707    621
+GOLDEN         0.019 37.726    622
+MONTOYA        0.019 37.745    623
+HARDIN         0.019 37.764    624
+GUERRA         0.019 37.783    625
+MCDOWELL       0.019 37.802    626
+CAREY          0.019 37.821    627
+STAFFORD       0.019 37.840    628
+GALLEGOS       0.019 37.859    629
+HENSON         0.019 37.878    630
+WILKINSON      0.019 37.897    631
+BOOKER         0.019 37.916    632
+MERRITT        0.019 37.935    633
+MIRANDA        0.019 37.953    634
+ATKINSON       0.019 37.972    635
+ORR            0.019 37.991    636
+DECKER         0.019 38.010    637
+HOBBS          0.019 38.028    638
+PRESTON        0.019 38.047    639
+TANNER         0.019 38.066    640
+KNOX           0.019 38.084    641
+PACHECO        0.019 38.103    642
+STEPHENSON     0.018 38.121    643
+GLASS          0.018 38.140    644
+ROJAS          0.018 38.158    645
+SERRANO        0.018 38.176    646
+MARKS          0.018 38.195    647
+HICKMAN        0.018 38.213    648
+ENGLISH        0.018 38.231    649
+SWEENEY        0.018 38.249    650
+STRONG         0.018 38.267    651
+PRINCE         0.018 38.285    652
+MCCLURE        0.018 38.304    653
+CONWAY         0.018 38.322    654
+WALTER         0.018 38.340    655
+ROTH           0.018 38.358    656
+MAYNARD        0.018 38.376    657
+FARRELL        0.018 38.394    658
+LOWERY         0.018 38.411    659
+HURST          0.018 38.429    660
+NIXON          0.018 38.447    661
+WEISS          0.018 38.465    662
+TRUJILLO       0.018 38.483    663
+ELLISON        0.018 38.500    664
+SLOAN          0.018 38.518    665
+JUAREZ         0.018 38.536    666
+WINTERS        0.018 38.553    667
+MCLEAN         0.018 38.571    668
+RANDOLPH       0.018 38.588    669
+LEON           0.018 38.606    670
+BOYER          0.018 38.624    671
+VILLARREAL     0.018 38.641    672
+MCCALL         0.018 38.659    673
+GENTRY         0.018 38.676    674
+CARRILLO       0.017 38.694    675
+KENT           0.017 38.711    676
+AYERS          0.017 38.729    677
+LARA           0.017 38.746    678
+SHANNON        0.017 38.763    679
+SEXTON         0.017 38.781    680
+PACE           0.017 38.798    681
+HULL           0.017 38.815    682
+LEBLANC        0.017 38.833    683
+BROWNING       0.017 38.850    684
+VELASQUEZ      0.017 38.867    685
+LEACH          0.017 38.884    686
+CHANG          0.017 38.901    687
+HOUSE          0.017 38.918    688
+SELLERS        0.017 38.936    689
+HERRING        0.017 38.953    690
+NOBLE          0.017 38.970    691
+FOLEY          0.017 38.987    692
+BARTLETT       0.017 39.004    693
+MERCADO        0.017 39.021    694
+LANDRY         0.017 39.037    695
+DURHAM         0.017 39.054    696
+WALLS          0.017 39.071    697
+BARR           0.017 39.088    698
+MCKEE          0.017 39.105    699
+BAUER          0.017 39.122    700
+RIVERS         0.017 39.139    701
+EVERETT        0.017 39.155    702
+BRADSHAW       0.017 39.172    703
+PUGH           0.017 39.189    704
+VELEZ          0.017 39.206    705
+RUSH           0.017 39.222    706
+ESTES          0.017 39.239    707
+DODSON         0.017 39.255    708
+MORSE          0.017 39.272    709
+SHEPPARD       0.017 39.289    710
+WEEKS          0.017 39.305    711
+CAMACHO        0.017 39.322    712
+BEAN           0.017 39.338    713
+BARRON         0.017 39.355    714
+LIVINGSTON     0.017 39.371    715
+MIDDLETON      0.016 39.388    716
+SPEARS         0.016 39.404    717
+BRANCH         0.016 39.420    718
+BLEVINS        0.016 39.437    719
+CHEN           0.016 39.453    720
+KERR           0.016 39.469    721
+MCCONNELL      0.016 39.486    722
+HATFIELD       0.016 39.502    723
+HARDING        0.016 39.518    724
+ASHLEY         0.016 39.535    725
+SOLIS          0.016 39.551    726
+HERMAN         0.016 39.567    727
+FROST          0.016 39.583    728
+GILES          0.016 39.599    729
+BLACKBURN      0.016 39.616    730
+WILLIAM        0.016 39.632    731
+PENNINGTON     0.016 39.648    732
+WOODWARD       0.016 39.664    733
+FINLEY         0.016 39.680    734
+MCINTOSH       0.016 39.696    735
+KOCH           0.016 39.713    736
+BEST           0.016 39.729    737
+SOLOMON        0.016 39.745    738
+MCCULLOUGH     0.016 39.761    739
+DUDLEY         0.016 39.777    740
+NOLAN          0.016 39.793    741
+BLANCHARD      0.016 39.809    742
+RIVAS          0.016 39.825    743
+BRENNAN        0.016 39.841    744
+MEJIA          0.016 39.856    745
+KANE           0.016 39.872    746
+BENTON         0.016 39.888    747
+JOYCE          0.016 39.904    748
+BUCKLEY        0.016 39.920    749
+HALEY          0.016 39.936    750
+VALENTINE      0.016 39.952    751
+MADDOX         0.016 39.967    752
+RUSSO          0.016 39.983    753
+MCKNIGHT       0.016 39.999    754
+BUCK           0.016 40.015    755
+MOON           0.016 40.030    756
+MCMILLAN       0.016 40.046    757
+CROSBY         0.016 40.062    758
+BERG           0.016 40.077    759
+DOTSON         0.016 40.093    760
+MAYS           0.016 40.109    761
+ROACH          0.016 40.124    762
+CHURCH         0.016 40.140    763
+CHAN           0.016 40.155    764
+RICHMOND       0.016 40.171    765
+MEADOWS        0.016 40.187    766
+FAULKNER       0.016 40.202    767
+ONEILL         0.016 40.218    768
+KNAPP          0.016 40.233    769
+KLINE          0.015 40.248    770
+BARRY          0.015 40.264    771
+OCHOA          0.015 40.279    772
+JACOBSON       0.015 40.295    773
+GAY            0.015 40.310    774
+AVERY          0.015 40.326    775
+HENDRICKS      0.015 40.341    776
+HORNE          0.015 40.356    777
+SHEPARD        0.015 40.372    778
+HEBERT         0.015 40.387    779
+CHERRY         0.015 40.402    780
+CARDENAS       0.015 40.418    781
+MCINTYRE       0.015 40.433    782
+WHITNEY        0.015 40.448    783
+WALLER         0.015 40.463    784
+HOLMAN         0.015 40.478    785
+DONALDSON      0.015 40.494    786
+CANTU          0.015 40.509    787
+TERRELL        0.015 40.524    788
+MORIN          0.015 40.539    789
+GILLESPIE      0.015 40.555    790
+FUENTES        0.015 40.570    791
+TILLMAN        0.015 40.585    792
+SANFORD        0.015 40.600    793
+BENTLEY        0.015 40.615    794
+PECK           0.015 40.630    795
+KEY            0.015 40.645    796
+SALAS          0.015 40.660    797
+ROLLINS        0.015 40.676    798
+GAMBLE         0.015 40.691    799
+DICKSON        0.015 40.706    800
+BATTLE         0.015 40.721    801
+SANTANA        0.015 40.736    802
+CABRERA        0.015 40.751    803
+CERVANTES      0.015 40.766    804
+HOWE           0.015 40.781    805
+HINTON         0.015 40.796    806
+HURLEY         0.015 40.811    807
+SPENCE         0.015 40.825    808
+ZAMORA         0.015 40.840    809
+YANG           0.015 40.855    810
+MCNEIL         0.015 40.870    811
+SUAREZ         0.015 40.885    812
+CASE           0.015 40.900    813
+PETTY          0.015 40.915    814
+GOULD          0.015 40.929    815
+MCFARLAND      0.015 40.944    816
+SAMPSON        0.015 40.959    817
+CARVER         0.015 40.974    818
+BRAY           0.015 40.989    819
+ROSARIO        0.015 41.003    820
+MACDONALD      0.015 41.018    821
+STOUT          0.015 41.033    822
+HESTER         0.015 41.047    823
+MELENDEZ       0.015 41.062    824
+DILLON         0.015 41.077    825
+FARLEY         0.015 41.091    826
+HOPPER         0.015 41.106    827
+GALLOWAY       0.015 41.121    828
+POTTS          0.015 41.135    829
+BERNARD        0.015 41.150    830
+JOYNER         0.014 41.164    831
+STEIN          0.014 41.179    832
+AGUIRRE        0.014 41.193    833
+OSBORN         0.014 41.208    834
+MERCER         0.014 41.222    835
+BENDER         0.014 41.236    836
+FRANCO         0.014 41.251    837
+ROWLAND        0.014 41.265    838
+SYKES          0.014 41.280    839
+BENJAMIN       0.014 41.294    840
+TRAVIS         0.014 41.308    841
+PICKETT        0.014 41.323    842
+CRANE          0.014 41.337    843
+SEARS          0.014 41.351    844
+MAYO           0.014 41.365    845
+DUNLAP         0.014 41.379    846
+HAYDEN         0.014 41.394    847
+WILDER         0.014 41.408    848
+MCKAY          0.014 41.422    849
+COFFEY         0.014 41.436    850
+MCCARTY        0.014 41.450    851
+EWING          0.014 41.464    852
+COOLEY         0.014 41.478    853
+VAUGHAN        0.014 41.492    854
+BONNER         0.014 41.506    855
+COTTON         0.014 41.520    856
+HOLDER         0.014 41.534    857
+STARK          0.014 41.548    858
+FERRELL        0.014 41.562    859
+CANTRELL       0.014 41.575    860
+FULTON         0.014 41.589    861
+LYNN           0.014 41.603    862
+LOTT           0.014 41.617    863
+CALDERON       0.014 41.631    864
+ROSA           0.014 41.644    865
+POLLARD        0.014 41.658    866
+HOOPER         0.014 41.672    867
+BURCH          0.014 41.686    868
+MULLEN         0.014 41.700    869
+FRY            0.014 41.713    870
+RIDDLE         0.014 41.727    871
+LEVY           0.014 41.741    872
+DAVID          0.014 41.754    873
+DUKE           0.014 41.768    874
+ODONNELL       0.014 41.782    875
+GUY            0.014 41.795    876
+MICHAEL        0.014 41.809    877
+BRITT          0.014 41.823    878
+FREDERICK      0.014 41.836    879
+DAUGHERTY      0.014 41.850    880
+BERGER         0.014 41.864    881
+DILLARD        0.014 41.877    882
+ALSTON         0.014 41.891    883
+JARVIS         0.014 41.904    884
+FRYE           0.014 41.918    885
+RIGGS          0.014 41.932    886
+CHANEY         0.014 41.945    887
+ODOM           0.013 41.959    888
+DUFFY          0.013 41.972    889
+FITZPATRICK    0.013 41.986    890
+VALENZUELA     0.013 41.999    891
+MERRILL        0.013 42.012    892
+MAYER          0.013 42.026    893
+ALFORD         0.013 42.039    894
+MCPHERSON      0.013 42.053    895
+ACEVEDO        0.013 42.066    896
+DONOVAN        0.013 42.079    897
+BARRERA        0.013 42.093    898
+ALBERT         0.013 42.106    899
+COTE           0.013 42.119    900
+REILLY         0.013 42.133    901
+COMPTON        0.013 42.146    902
+RAYMOND        0.013 42.159    903
+MOONEY         0.013 42.173    904
+MCGOWAN        0.013 42.186    905
+CRAFT          0.013 42.199    906
+CLEVELAND      0.013 42.212    907
+CLEMONS        0.013 42.226    908
+WYNN           0.013 42.239    909
+NIELSEN        0.013 42.252    910
+BAIRD          0.013 42.265    911
+STANTON        0.013 42.278    912
+SNIDER         0.013 42.292    913
+ROSALES        0.013 42.305    914
+BRIGHT         0.013 42.318    915
+WITT           0.013 42.331    916
+STUART         0.013 42.344    917
+HAYS           0.013 42.357    918
+HOLDEN         0.013 42.371    919
+RUTLEDGE       0.013 42.384    920
+KINNEY         0.013 42.397    921
+CLEMENTS       0.013 42.410    922
+CASTANEDA      0.013 42.423    923
+SLATER         0.013 42.436    924
+HAHN           0.013 42.449    925
+EMERSON        0.013 42.462    926
+CONRAD         0.013 42.475    927
+BURKS          0.013 42.488    928
+DELANEY        0.013 42.501    929
+PATE           0.013 42.514    930
+LANCASTER      0.013 42.527    931
+SWEET          0.013 42.540    932
+JUSTICE        0.013 42.552    933
+TYSON          0.013 42.565    934
+SHARPE         0.013 42.578    935
+WHITFIELD      0.013 42.591    936
+TALLEY         0.013 42.604    937
+MACIAS         0.013 42.617    938
+IRWIN          0.013 42.629    939
+BURRIS         0.013 42.642    940
+RATLIFF        0.013 42.655    941
+MCCRAY         0.013 42.668    942
+MADDEN         0.013 42.681    943
+KAUFMAN        0.013 42.693    944
+BEACH          0.013 42.706    945
+GOFF           0.013 42.719    946
+CASH           0.013 42.732    947
+BOLTON         0.013 42.744    948
+MCFADDEN       0.013 42.757    949
+LEVINE         0.013 42.770    950
+GOOD           0.013 42.782    951
+BYERS          0.013 42.795    952
+KIRKLAND       0.013 42.808    953
+KIDD           0.013 42.821    954
+WORKMAN        0.013 42.833    955
+CARNEY         0.013 42.846    956
+DALE           0.013 42.859    957
+MCLEOD         0.013 42.871    958
+HOLCOMB        0.013 42.884    959
+ENGLAND        0.013 42.896    960
+FINCH          0.013 42.909    961
+HEAD           0.012 42.921    962
+BURT           0.012 42.934    963
+HENDRIX        0.012 42.946    964
+SOSA           0.012 42.959    965
+HANEY          0.012 42.971    966
+FRANKS         0.012 42.984    967
+SARGENT        0.012 42.996    968
+NIEVES         0.012 43.009    969
+DOWNS          0.012 43.021    970
+RASMUSSEN      0.012 43.033    971
+BIRD           0.012 43.046    972
+HEWITT         0.012 43.058    973
+LINDSAY        0.012 43.071    974
+LE             0.012 43.083    975
+FOREMAN        0.012 43.095    976
+VALENCIA       0.012 43.108    977
+ONEIL          0.012 43.120    978
+DELACRUZ       0.012 43.132    979
+VINSON         0.012 43.145    980
+DEJESUS        0.012 43.157    981
+HYDE           0.012 43.169    982
+FORBES         0.012 43.182    983
+GILLIAM        0.012 43.194    984
+GUTHRIE        0.012 43.206    985
+WOOTEN         0.012 43.218    986
+HUBER          0.012 43.231    987
+BARLOW         0.012 43.243    988
+BOYLE          0.012 43.255    989
+MCMAHON        0.012 43.267    990
+BUCKNER        0.012 43.279    991
+ROCHA          0.012 43.291    992
+PUCKETT        0.012 43.303    993
+LANGLEY        0.012 43.315    994
+KNOWLES        0.012 43.328    995
+COOKE          0.012 43.340    996
+VELAZQUEZ      0.012 43.352    997
+WHITLEY        0.012 43.364    998
+NOEL           0.012 43.376    999
+VANG           0.012 43.388   1000
+SHEA           0.012 43.399   1001
+ROUSE          0.012 43.411   1002
+HARTLEY        0.012 43.423   1003
+MAYFIELD       0.012 43.435   1004
+ELDER          0.012 43.447   1005
+RANKIN         0.012 43.459   1006
+HANNA          0.012 43.471   1007
+COWAN          0.012 43.483   1008
+LUCERO         0.012 43.495   1009
+ARROYO         0.012 43.507   1010
+SLAUGHTER      0.012 43.519   1011
+HAAS           0.012 43.531   1012
+OCONNELL       0.012 43.542   1013
+MINOR          0.012 43.554   1014
+KENDRICK       0.012 43.566   1015
+SHIRLEY        0.012 43.578   1016
+KENDALL        0.012 43.590   1017
+BOUCHER        0.012 43.602   1018
+ARCHER         0.012 43.613   1019
+BOGGS          0.012 43.625   1020
+ODELL          0.012 43.637   1021
+DOUGHERTY      0.012 43.649   1022
+ANDERSEN       0.012 43.661   1023
+NEWELL         0.012 43.672   1024
+CROWE          0.012 43.684   1025
+WANG           0.012 43.696   1026
+FRIEDMAN       0.012 43.708   1027
+BLAND          0.012 43.719   1028
+SWAIN          0.012 43.731   1029
+HOLLEY         0.012 43.743   1030
+FELIX          0.012 43.754   1031
+PEARCE         0.012 43.766   1032
+CHILDS         0.012 43.778   1033
+YARBROUGH      0.012 43.789   1034
+GALVAN         0.012 43.801   1035
+PROCTOR        0.012 43.812   1036
+MEEKS          0.012 43.824   1037
+LOZANO         0.012 43.836   1038
+MORA           0.012 43.847   1039
+RANGEL         0.012 43.859   1040
+BACON          0.012 43.870   1041
+VILLANUEVA     0.012 43.882   1042
+SCHAEFER       0.012 43.893   1043
+ROSADO         0.012 43.905   1044
+HELMS          0.012 43.917   1045
+BOYCE          0.012 43.928   1046
+GOSS           0.012 43.940   1047
+STINSON        0.011 43.951   1048
+SMART          0.011 43.963   1049
+LAKE           0.011 43.974   1050
+IBARRA         0.011 43.986   1051
+HUTCHINS       0.011 43.997   1052
+COVINGTON      0.011 44.009   1053
+REYNA          0.011 44.020   1054
+GREGG          0.011 44.032   1055
+WERNER         0.011 44.043   1056
+CROWLEY        0.011 44.054   1057
+HATCHER        0.011 44.066   1058
+MACKEY         0.011 44.077   1059
+BUNCH          0.011 44.089   1060
+WOMACK         0.011 44.100   1061
+POLK           0.011 44.111   1062
+JAMISON        0.011 44.123   1063
+DODD           0.011 44.134   1064
+CHILDRESS      0.011 44.146   1065
+CHILDERS       0.011 44.157   1066
+CAMP           0.011 44.168   1067
+VILLA          0.011 44.180   1068
+DYE            0.011 44.191   1069
+SPRINGER       0.011 44.202   1070
+MAHONEY        0.011 44.214   1071
+DAILEY         0.011 44.225   1072
+BELCHER        0.011 44.236   1073
+LOCKHART       0.011 44.248   1074
+GRIGGS         0.011 44.259   1075
+COSTA          0.011 44.270   1076
+CONNOR         0.011 44.281   1077
+BRANDT         0.011 44.293   1078
+WINTER         0.011 44.304   1079
+WALDEN         0.011 44.315   1080
+MOSER          0.011 44.326   1081
+TRACY          0.011 44.338   1082
+TATUM          0.011 44.349   1083
+MCCANN         0.011 44.360   1084
+AKERS          0.011 44.371   1085
+LUTZ           0.011 44.382   1086
+PRYOR          0.011 44.393   1087
+LAW            0.011 44.404   1088
+OROZCO         0.011 44.415   1089
+MCALLISTER     0.011 44.427   1090
+LUGO           0.011 44.438   1091
+DAVIES         0.011 44.449   1092
+SHOEMAKER      0.011 44.460   1093
+MADISON        0.011 44.471   1094
+RUTHERFORD     0.011 44.482   1095
+NEWSOME        0.011 44.493   1096
+MAGEE          0.011 44.504   1097
+CHAMBERLAIN    0.011 44.515   1098
+BLANTON        0.011 44.526   1099
+SIMMS          0.011 44.537   1100
+GODFREY        0.011 44.548   1101
+FLANAGAN       0.011 44.559   1102
+CRUM           0.011 44.570   1103
+CORDOVA        0.011 44.581   1104
+ESCOBAR        0.011 44.592   1105
+DOWNING        0.011 44.603   1106
+SINCLAIR       0.011 44.614   1107
+DONAHUE        0.011 44.625   1108
+KRUEGER        0.011 44.636   1109
+MCGINNIS       0.011 44.647   1110
+GORE           0.011 44.658   1111
+FARRIS         0.011 44.669   1112
+WEBBER         0.011 44.680   1113
+CORBETT        0.011 44.691   1114
+ANDRADE        0.011 44.701   1115
+STARR          0.011 44.712   1116
+LYON           0.011 44.723   1117
+YODER          0.011 44.734   1118
+HASTINGS       0.011 44.745   1119
+MCGRATH        0.011 44.756   1120
+SPIVEY         0.011 44.767   1121
+KRAUSE         0.011 44.778   1122
+HARDEN         0.011 44.788   1123
+CRABTREE       0.011 44.799   1124
+KIRKPATRICK    0.011 44.810   1125
+HOLLIS         0.011 44.821   1126
+BRANDON        0.011 44.832   1127
+ARRINGTON      0.011 44.843   1128
+ERVIN          0.011 44.853   1129
+CLIFTON        0.011 44.864   1130
+RITTER         0.011 44.875   1131
+MCGHEE         0.011 44.886   1132
+BOLDEN         0.011 44.897   1133
+MALONEY        0.011 44.907   1134
+GAGNON         0.011 44.918   1135
+DUNBAR         0.011 44.929   1136
+PONCE          0.011 44.940   1137
+PIKE           0.011 44.950   1138
+MAYES          0.011 44.961   1139
+HEARD          0.011 44.972   1140
+BEATTY         0.011 44.983   1141
+MOBLEY         0.011 44.993   1142
+KIMBALL        0.011 45.004   1143
+BUTTS          0.011 45.015   1144
+MONTES         0.011 45.026   1145
+HERBERT        0.011 45.036   1146
+GRADY          0.011 45.047   1147
+ELDRIDGE       0.011 45.058   1148
+BRAUN          0.011 45.068   1149
+HAMM           0.011 45.079   1150
+GIBBONS        0.011 45.090   1151
+SEYMOUR        0.011 45.100   1152
+MOYER          0.011 45.111   1153
+MANLEY         0.011 45.122   1154
+HERRON         0.011 45.132   1155
+PLUMMER        0.011 45.143   1156
+ELMORE         0.011 45.153   1157
+CRAMER         0.011 45.164   1158
+GARY           0.011 45.175   1159
+RUCKER         0.011 45.185   1160
+HILTON         0.011 45.196   1161
+BLUE           0.011 45.206   1162
+PIERSON        0.011 45.217   1163
+FONTENOT       0.011 45.227   1164
+FIELD          0.011 45.238   1165
+RUBIO          0.011 45.248   1166
+GRACE          0.011 45.259   1167
+GOLDSTEIN      0.011 45.269   1168
+ELKINS         0.011 45.280   1169
+WILLS          0.010 45.290   1170
+NOVAK          0.010 45.301   1171
+JOHN           0.010 45.311   1172
+HICKEY         0.010 45.322   1173
+WORLEY         0.010 45.332   1174
+GORMAN         0.010 45.343   1175
+KATZ           0.010 45.353   1176
+DICKINSON      0.010 45.364   1177
+BROUSSARD      0.010 45.374   1178
+FRITZ          0.010 45.384   1179
+WOODRUFF       0.010 45.395   1180
+CROW           0.010 45.405   1181
+CHRISTOPHER    0.010 45.416   1182
+BRITTON        0.010 45.426   1183
+FORREST        0.010 45.436   1184
+NANCE          0.010 45.447   1185
+LEHMAN         0.010 45.457   1186
+BINGHAM        0.010 45.467   1187
+ZUNIGA         0.010 45.478   1188
+WHALEY         0.010 45.488   1189
+SHAFER         0.010 45.498   1190
+COFFMAN        0.010 45.509   1191
+STEWARD        0.010 45.519   1192
+DELAROSA       0.010 45.529   1193
+NIX            0.010 45.540   1194
+NEELY          0.010 45.550   1195
+NUMBERS        0.010 45.560   1196
+MATA           0.010 45.571   1197
+MANUEL         0.010 45.581   1198
+DAVILA         0.010 45.591   1199
+MCCABE         0.010 45.601   1200
+KESSLER        0.010 45.612   1201
+EMERY          0.010 45.622   1202
+BOWLING        0.010 45.632   1203
+HINKLE         0.010 45.643   1204
+WELSH          0.010 45.653   1205
+PAGAN          0.010 45.663   1206
+GOLDBERG       0.010 45.673   1207
+GOINS          0.010 45.683   1208
+CROUCH         0.010 45.694   1209
+CUEVAS         0.010 45.704   1210
+QUINONES       0.010 45.714   1211
+MCDERMOTT      0.010 45.724   1212
+HENDRICKSON    0.010 45.734   1213
+SAMUELS        0.010 45.745   1214
+DENTON         0.010 45.755   1215
+BERGERON       0.010 45.765   1216
+LAM            0.010 45.775   1217
+IVEY           0.010 45.785   1218
+LOCKE          0.010 45.795   1219
+HAINES         0.010 45.805   1220
+THURMAN        0.010 45.815   1221
+SNELL          0.010 45.825   1222
+HOSKINS        0.010 45.836   1223
+BYRNE          0.010 45.846   1224
+MILTON         0.010 45.856   1225
+WINSTON        0.010 45.866   1226
+ARTHUR         0.010 45.876   1227
+ARIAS          0.010 45.886   1228
+STANFORD       0.010 45.896   1229
+ROE            0.010 45.906   1230
+CORBIN         0.010 45.916   1231
+BELTRAN        0.010 45.926   1232
+CHAPPELL       0.010 45.936   1233
+HURT           0.010 45.946   1234
+DOWNEY         0.010 45.956   1235
+DOOLEY         0.010 45.966   1236
+TUTTLE         0.010 45.976   1237
+COUCH          0.010 45.986   1238
+PAYTON         0.010 45.996   1239
+MCELROY        0.010 46.006   1240
+CROCKETT       0.010 46.016   1241
+GROVES         0.010 46.026   1242
+CLEMENT        0.010 46.036   1243
+LESLIE         0.010 46.046   1244
+CARTWRIGHT     0.010 46.055   1245
+DICKEY         0.010 46.065   1246
+MCGILL         0.010 46.075   1247
+DUBOIS         0.010 46.085   1248
+MUNIZ          0.010 46.095   1249
+ERWIN          0.010 46.105   1250
+SELF           0.010 46.115   1251
+TOLBERT        0.010 46.125   1252
+DEMPSEY        0.010 46.134   1253
+CISNEROS       0.010 46.144   1254
+SEWELL         0.010 46.154   1255
+LATHAM         0.010 46.164   1256
+GARLAND        0.010 46.174   1257
+VIGIL          0.010 46.183   1258
+TAPIA          0.010 46.193   1259
+STERLING       0.010 46.203   1260
+RAINEY         0.010 46.213   1261
+NORWOOD        0.010 46.223   1262
+LACY           0.010 46.232   1263
+STROUD         0.010 46.242   1264
+MEADE          0.010 46.252   1265
+AMOS           0.010 46.262   1266
+TIPTON         0.010 46.271   1267
+LORD           0.010 46.281   1268
+KUHN           0.010 46.291   1269
+HILLIARD       0.010 46.301   1270
+BONILLA        0.010 46.311   1271
+TEAGUE         0.010 46.320   1272
+COURTNEY       0.010 46.330   1273
+GUNN           0.010 46.340   1274
+HO             0.010 46.349   1275
+GREENWOOD      0.010 46.359   1276
+CORREA         0.010 46.369   1277
+REECE          0.010 46.378   1278
+WESTON         0.010 46.388   1279
+POE            0.010 46.398   1280
+TRENT          0.010 46.407   1281
+PINEDA         0.010 46.417   1282
+PHIPPS         0.010 46.427   1283
+FREY           0.010 46.436   1284
+KAISER         0.010 46.446   1285
+AMES           0.010 46.456   1286
+PAIGE          0.010 46.465   1287
+GUNTER         0.010 46.475   1288
+SCHMITT        0.010 46.484   1289
+MILLIGAN       0.010 46.494   1290
+ESPINOSA       0.010 46.503   1291
+CARLTON        0.010 46.513   1292
+BOWDEN         0.010 46.523   1293
+VICKERS        0.010 46.532   1294
+LOWRY          0.010 46.542   1295
+PRITCHARD      0.010 46.551   1296
+COSTELLO       0.010 46.561   1297
+PIPER          0.009 46.570   1298
+MCCLELLAN      0.009 46.580   1299
+LOVELL         0.009 46.589   1300
+DREW           0.009 46.599   1301
+SHEEHAN        0.009 46.608   1302
+QUICK          0.009 46.617   1303
+HATCH          0.009 46.627   1304
+DOBSON         0.009 46.636   1305
+SINGH          0.009 46.646   1306
+JEFFRIES       0.009 46.655   1307
+HOLLINGSWORTH  0.009 46.665   1308
+SORENSEN       0.009 46.674   1309
+MEZA           0.009 46.684   1310
+FINK           0.009 46.693   1311
+DONNELLY       0.009 46.702   1312
+BURRELL        0.009 46.712   1313
+BRUNO          0.009 46.721   1314
+TOMLINSON      0.009 46.731   1315
+COLBERT        0.009 46.740   1316
+BILLINGS       0.009 46.749   1317
+RITCHIE        0.009 46.759   1318
+HELTON         0.009 46.768   1319
+SUTHERLAND     0.009 46.777   1320
+PEOPLES        0.009 46.787   1321
+MCQUEEN        0.009 46.796   1322
+GASTON         0.009 46.806   1323
+THOMASON       0.009 46.815   1324
+MCKINLEY       0.009 46.824   1325
+GIVENS         0.009 46.834   1326
+CROCKER        0.009 46.843   1327
+VOGEL          0.009 46.852   1328
+ROBISON        0.009 46.862   1329
+DUNHAM         0.009 46.871   1330
+COKER          0.009 46.880   1331
+SWARTZ         0.009 46.890   1332
+KEYS           0.009 46.899   1333
+LILLY          0.009 46.908   1334
+LADNER         0.009 46.917   1335
+HANNAH         0.009 46.927   1336
+WILLARD        0.009 46.936   1337
+RICHTER        0.009 46.945   1338
+HARGROVE       0.009 46.955   1339
+EDMONDS        0.009 46.964   1340
+BRANTLEY       0.009 46.973   1341
+ALBRIGHT       0.009 46.982   1342
+MURDOCK        0.009 46.992   1343
+BOSWELL        0.009 47.001   1344
+MULLER         0.009 47.010   1345
+QUINTERO       0.009 47.019   1346
+PADGETT        0.009 47.028   1347
+KENNEY         0.009 47.038   1348
+DALY           0.009 47.047   1349
+CONNOLLY       0.009 47.056   1350
+PIERRE         0.009 47.065   1351
+INMAN          0.009 47.074   1352
+QUINTANA       0.009 47.084   1353
+LUND           0.009 47.093   1354
+BARNARD        0.009 47.102   1355
+VILLEGAS       0.009 47.111   1356
+SIMONS         0.009 47.120   1357
+LAND           0.009 47.129   1358
+HUGGINS        0.009 47.138   1359
+TIDWELL        0.009 47.148   1360
+SANDERSON      0.009 47.157   1361
+BULLARD        0.009 47.166   1362
+MCCLENDON      0.009 47.175   1363
+DUARTE         0.009 47.184   1364
+DRAPER         0.009 47.193   1365
+MEREDITH       0.009 47.202   1366
+MARRERO        0.009 47.211   1367
+DWYER          0.009 47.220   1368
+ABRAMS         0.009 47.230   1369
+STOVER         0.009 47.239   1370
+GOODE          0.009 47.248   1371
+FRASER         0.009 47.257   1372
+CREWS          0.009 47.266   1373
+BERNAL         0.009 47.275   1374
+SMILEY         0.009 47.284   1375
+GODWIN         0.009 47.293   1376
+FISH           0.009 47.302   1377
+CONKLIN        0.009 47.311   1378
+MCNEAL         0.009 47.320   1379
+BACA           0.009 47.329   1380
+ESPARZA        0.009 47.338   1381
+CROWDER        0.009 47.347   1382
+BOWER          0.009 47.356   1383
+NICHOLAS       0.009 47.365   1384
+CHUNG          0.009 47.374   1385
+BREWSTER       0.009 47.383   1386
+MCNEILL        0.009 47.392   1387
+DICK           0.009 47.401   1388
+RODRIGUES      0.009 47.409   1389
+LEAL           0.009 47.418   1390
+COATES         0.009 47.427   1391
+RAINES         0.009 47.436   1392
+MCCAIN         0.009 47.445   1393
+MCCORD         0.009 47.454   1394
+MINER          0.009 47.463   1395
+HOLBROOK       0.009 47.472   1396
+SWIFT          0.009 47.481   1397
+DUKES          0.009 47.489   1398
+CARLISLE       0.009 47.498   1399
+ALDRIDGE       0.009 47.507   1400
+ACKERMAN       0.009 47.516   1401
+STARKS         0.009 47.525   1402
+RICKS          0.009 47.533   1403
+HOLLIDAY       0.009 47.542   1404
+FERRIS         0.009 47.551   1405
+HAIRSTON       0.009 47.560   1406
+SHEFFIELD      0.009 47.569   1407
+LANGE          0.009 47.577   1408
+FOUNTAIN       0.009 47.586   1409
+MARINO         0.009 47.595   1410
+DOSS           0.009 47.604   1411
+BETTS          0.009 47.612   1412
+KAPLAN         0.009 47.621   1413
+CARMICHAEL     0.009 47.630   1414
+BLOOM          0.009 47.639   1415
+RUFFIN         0.009 47.647   1416
+PENN           0.009 47.656   1417
+KERN           0.009 47.665   1418
+BOWLES         0.009 47.673   1419
+SIZEMORE       0.009 47.682   1420
+LARKIN         0.009 47.691   1421
+DUPREE         0.009 47.699   1422
+JEWELL         0.009 47.708   1423
+SILVER         0.009 47.717   1424
+SEALS          0.009 47.726   1425
+METCALF        0.009 47.734   1426
+HUTCHISON      0.009 47.743   1427
+HENLEY         0.009 47.751   1428
+FARR           0.009 47.760   1429
+CASTLE         0.009 47.769   1430
+MCCAULEY       0.009 47.777   1431
+HANKINS        0.009 47.786   1432
+GUSTAFSON      0.009 47.795   1433
+DEAL           0.009 47.803   1434
+CURRAN         0.009 47.812   1435
+ASH            0.009 47.821   1436
+WADDELL        0.009 47.829   1437
+RAMEY          0.009 47.838   1438
+CATES          0.009 47.847   1439
+POLLOCK        0.009 47.855   1440
+MAJOR          0.009 47.864   1441
+IRVIN          0.009 47.872   1442
+CUMMINS        0.009 47.881   1443
+MESSER         0.009 47.890   1444
+HELLER         0.009 47.898   1445
+DEWITT         0.009 47.907   1446
+LIN            0.009 47.915   1447
+FUNK           0.009 47.924   1448
+CORNETT        0.009 47.932   1449
+PALACIOS       0.009 47.941   1450
+GALINDO        0.009 47.949   1451
+CANO           0.009 47.958   1452
+HATHAWAY       0.009 47.966   1453
+SINGER         0.008 47.975   1454
+PHAM           0.008 47.983   1455
+ENRIQUEZ       0.008 47.992   1456
+AARON          0.008 48.000   1457
+SALGADO        0.008 48.009   1458
+PELLETIER      0.008 48.017   1459
+PAINTER        0.008 48.026   1460
+WISEMAN        0.008 48.034   1461
+BLOUNT         0.008 48.043   1462
+HAND           0.008 48.051   1463
+FELICIANO      0.008 48.059   1464
+TEMPLE         0.008 48.068   1465
+HOUSER         0.008 48.076   1466
+DOHERTY        0.008 48.085   1467
+MEAD           0.008 48.093   1468
+MCGRAW         0.008 48.101   1469
+TONEY          0.008 48.110   1470
+SWAN           0.008 48.118   1471
+MELVIN         0.008 48.126   1472
+CAPPS          0.008 48.135   1473
+BLANCO         0.008 48.143   1474
+BLACKMON       0.008 48.152   1475
+WESLEY         0.008 48.160   1476
+THOMSON        0.008 48.168   1477
+MCMANUS        0.008 48.177   1478
+FAIR           0.008 48.185   1479
+BURKETT        0.008 48.193   1480
+POST           0.008 48.202   1481
+GLEASON        0.008 48.210   1482
+RUDOLPH        0.008 48.218   1483
+OTT            0.008 48.227   1484
+DICKENS        0.008 48.235   1485
+CORMIER        0.008 48.243   1486
+VOSS           0.008 48.251   1487
+RUSHING        0.008 48.260   1488
+ROSENBERG      0.008 48.268   1489
+HURD           0.008 48.276   1490
+DUMAS          0.008 48.285   1491
+BENITEZ        0.008 48.293   1492
+ARELLANO       0.008 48.301   1493
+STORY          0.008 48.309   1494
+MARIN          0.008 48.318   1495
+CAUDILL        0.008 48.326   1496
+BRAGG          0.008 48.334   1497
+JARAMILLO      0.008 48.343   1498
+HUERTA         0.008 48.351   1499
+GIPSON         0.008 48.359   1500
+COLVIN         0.008 48.367   1501
+BIGGS          0.008 48.376   1502
+VELA           0.008 48.384   1503
+PLATT          0.008 48.392   1504
+CASSIDY        0.008 48.400   1505
+TOMPKINS       0.008 48.408   1506
+MCCOLLUM       0.008 48.417   1507
+KAY            0.008 48.425   1508
+GABRIEL        0.008 48.433   1509
+DOLAN          0.008 48.441   1510
+DALEY          0.008 48.450   1511
+CRUMP          0.008 48.458   1512
+STREET         0.008 48.466   1513
+SNEED          0.008 48.474   1514
+KILGORE        0.008 48.482   1515
+GROVE          0.008 48.491   1516
+GRIMM          0.008 48.499   1517
+DAVISON        0.008 48.507   1518
+BRUNSON        0.008 48.515   1519
+PRATER         0.008 48.523   1520
+MARCUM         0.008 48.531   1521
+DEVINE         0.008 48.540   1522
+KYLE           0.008 48.548   1523
+DODGE          0.008 48.556   1524
+STRATTON       0.008 48.564   1525
+ROSAS          0.008 48.572   1526
+CHOI           0.008 48.580   1527
+TRIPP          0.008 48.589   1528
+LEDBETTER      0.008 48.597   1529
+LAY            0.008 48.605   1530
+HIGHTOWER      0.008 48.613   1531
+HAYWOOD        0.008 48.621   1532
+FELDMAN        0.008 48.629   1533
+EPPS           0.008 48.637   1534
+YEAGER         0.008 48.645   1535
+POSEY          0.008 48.653   1536
+SYLVESTER      0.008 48.662   1537
+SCRUGGS        0.008 48.670   1538
+COPE           0.008 48.678   1539
+STUBBS         0.008 48.686   1540
+RICHEY         0.008 48.694   1541
+OVERTON        0.008 48.702   1542
+TROTTER        0.008 48.710   1543
+SPRAGUE        0.008 48.718   1544
+CORDERO        0.008 48.726   1545
+BUTCHER        0.008 48.734   1546
+BURGER         0.008 48.742   1547
+STILES         0.008 48.750   1548
+BURGOS         0.008 48.758   1549
+WOODSON        0.008 48.766   1550
+HORNER         0.008 48.774   1551
+BASSETT        0.008 48.782   1552
+PURCELL        0.008 48.790   1553
+HASKINS        0.008 48.798   1554
+GEE            0.008 48.806   1555
+AKINS          0.008 48.814   1556
+ABRAHAM        0.008 48.823   1557
+HOYT           0.008 48.830   1558
+ZIEGLER        0.008 48.838   1559
+SPAULDING      0.008 48.846   1560
+HADLEY         0.008 48.854   1561
+GRUBBS         0.008 48.862   1562
+SUMNER         0.008 48.870   1563
+MURILLO        0.008 48.878   1564
+ZAVALA         0.008 48.886   1565
+SHOOK          0.008 48.894   1566
+LOCKWOOD       0.008 48.902   1567
+JARRETT        0.008 48.910   1568
+DRISCOLL       0.008 48.918   1569
+DAHL           0.008 48.926   1570
+THORPE         0.008 48.934   1571
+SHERIDAN       0.008 48.942   1572
+REDMOND        0.008 48.949   1573
+PUTNAM         0.008 48.957   1574
+MCWILLIAMS     0.008 48.965   1575
+MCRAE          0.008 48.973   1576
+CORNELL        0.008 48.981   1577
+FELTON         0.008 48.989   1578
+ROMANO         0.008 48.997   1579
+JOINER         0.008 49.005   1580
+SADLER         0.008 49.012   1581
+HEDRICK        0.008 49.020   1582
+HAGER          0.008 49.028   1583
+HAGEN          0.008 49.036   1584
+FITCH          0.008 49.044   1585
+COULTER        0.008 49.052   1586
+THACKER        0.008 49.059   1587
+MANSFIELD      0.008 49.067   1588
+LANGSTON       0.008 49.075   1589
+GUIDRY         0.008 49.083   1590
+FERREIRA       0.008 49.091   1591
+CORLEY         0.008 49.098   1592
+CONN           0.008 49.106   1593
+ROSSI          0.008 49.114   1594
+LACKEY         0.008 49.122   1595
+CODY           0.008 49.130   1596
+BAEZ           0.008 49.137   1597
+SAENZ          0.008 49.145   1598
+MCNAMARA       0.008 49.153   1599
+DARNELL        0.008 49.160   1600
+MICHEL         0.008 49.168   1601
+MCMULLEN       0.008 49.176   1602
+MCKENNA        0.008 49.184   1603
+MCDONOUGH      0.008 49.191   1604
+LINK           0.008 49.199   1605
+ENGEL          0.008 49.207   1606
+BROWNE         0.008 49.215   1607
+ROPER          0.008 49.222   1608
+PEACOCK        0.008 49.230   1609
+EUBANKS        0.008 49.238   1610
+DRUMMOND       0.008 49.245   1611
+STRINGER       0.008 49.253   1612
+PRITCHETT      0.008 49.261   1613
+PARHAM         0.008 49.268   1614
+MIMS           0.008 49.276   1615
+LANDERS        0.008 49.284   1616
+HAM            0.008 49.291   1617
+GRAYSON        0.008 49.299   1618
+STACY          0.008 49.307   1619
+SCHAFER        0.008 49.314   1620
+EGAN           0.008 49.322   1621
+TIMMONS        0.008 49.330   1622
+OHARA          0.008 49.337   1623
+KEEN           0.008 49.345   1624
+HAMLIN         0.008 49.353   1625
+FINN           0.008 49.360   1626
+CORTES         0.008 49.368   1627
+MCNAIR         0.008 49.376   1628
+LOUIS          0.008 49.383   1629
+CLIFFORD       0.008 49.391   1630
+NADEAU         0.008 49.398   1631
+MOSELEY        0.008 49.406   1632
+MICHAUD        0.008 49.414   1633
+ROSEN          0.008 49.421   1634
+OAKES          0.008 49.429   1635
+KURTZ          0.008 49.436   1636
+JEFFERS        0.008 49.444   1637
+CALLOWAY       0.008 49.452   1638
+BEAL           0.008 49.459   1639
+BAUTISTA       0.008 49.467   1640
+WINN           0.008 49.474   1641
+SUGGS          0.008 49.482   1642
+STERN          0.008 49.490   1643
+STAPLETON      0.008 49.497   1644
+LYLES          0.008 49.505   1645
+LAIRD          0.008 49.512   1646
+MONTANO        0.008 49.520   1647
+DIAMOND        0.008 49.527   1648
+DAWKINS        0.008 49.535   1649
+ROLAND         0.008 49.543   1650
+HAGAN          0.008 49.550   1651
+GOLDMAN        0.008 49.558   1652
+BRYSON         0.008 49.565   1653
+BARAJAS        0.008 49.573   1654
+LOVETT         0.008 49.580   1655
+SEGURA         0.008 49.588   1656
+METZ           0.008 49.595   1657
+LOCKETT        0.008 49.603   1658
+LANGFORD       0.008 49.610   1659
+HINSON         0.008 49.618   1660
+EASTMAN        0.008 49.625   1661
+ROCK           0.008 49.633   1662
+HOOKS          0.008 49.640   1663
+WOODY          0.007 49.648   1664
+SMALLWOOD      0.007 49.655   1665
+SHAPIRO        0.007 49.663   1666
+CROWELL        0.007 49.670   1667
+WHALEN         0.007 49.678   1668
+TRIPLETT       0.007 49.685   1669
+HOOKER         0.007 49.693   1670
+CHATMAN        0.007 49.700   1671
+ALDRICH        0.007 49.708   1672
+CAHILL         0.007 49.715   1673
+YOUNGBLOOD     0.007 49.723   1674
+YBARRA         0.007 49.730   1675
+STALLINGS      0.007 49.738   1676
+SHEETS         0.007 49.745   1677
+SAMUEL         0.007 49.752   1678
+REEDER         0.007 49.760   1679
+PERSON         0.007 49.767   1680
+PACK           0.007 49.775   1681
+LACEY          0.007 49.782   1682
+CONNELLY       0.007 49.790   1683
+BATEMAN        0.007 49.797   1684
+ABERNATHY      0.007 49.804   1685
+WINKLER        0.007 49.812   1686
+WILKES         0.007 49.819   1687
+MASTERS        0.007 49.827   1688
+HACKETT        0.007 49.834   1689
+GRANGER        0.007 49.841   1690
+GILLIS         0.007 49.849   1691
+SCHMITZ        0.007 49.856   1692
+SAPP           0.007 49.863   1693
+NAPIER         0.007 49.871   1694
+SOUZA          0.007 49.878   1695
+LANIER         0.007 49.886   1696
+GOMES          0.007 49.893   1697
+WEIR           0.007 49.900   1698
+OTERO          0.007 49.908   1699
+LEDFORD        0.007 49.915   1700
+BURROUGHS      0.007 49.922   1701
+BABCOCK        0.007 49.930   1702
+VENTURA        0.007 49.937   1703
+SIEGEL         0.007 49.944   1704
+DUGAN          0.007 49.952   1705
+CLINTON        0.007 49.959   1706
+CHRISTIE       0.007 49.966   1707
+BLEDSOE        0.007 49.974   1708
+ATWOOD         0.007 49.981   1709
+WRAY           0.007 49.988   1710
+VARNER         0.007 49.996   1711
+SPANGLER       0.007 50.003   1712
+OTTO           0.007 50.010   1713
+ANAYA          0.007 50.017   1714
+STALEY         0.007 50.025   1715
+KRAFT          0.007 50.032   1716
+FOURNIER       0.007 50.039   1717
+EDDY           0.007 50.047   1718
+BELANGER       0.007 50.054   1719
+WOLFF          0.007 50.061   1720
+THORNE         0.007 50.069   1721
+BYNUM          0.007 50.076   1722
+BURNETTE       0.007 50.083   1723
+BOYKIN         0.007 50.090   1724
+SWENSON        0.007 50.098   1725
+PURVIS         0.007 50.105   1726
+PINA           0.007 50.112   1727
+KHAN           0.007 50.119   1728
+DUVALL         0.007 50.127   1729
+DARBY          0.007 50.134   1730
+XIONG          0.007 50.141   1731
+KAUFFMAN       0.007 50.148   1732
+ALI            0.007 50.156   1733
+YU             0.007 50.163   1734
+HEALY          0.007 50.170   1735
+ENGLE          0.007 50.177   1736
+CORONA         0.007 50.185   1737
+BENOIT         0.007 50.192   1738
+VALLE          0.007 50.199   1739
+STEINER        0.007 50.206   1740
+SPICER         0.007 50.214   1741
+SHAVER         0.007 50.221   1742
+RANDLE         0.007 50.228   1743
+LUNDY          0.007 50.235   1744
+DOW            0.007 50.242   1745
+CHIN           0.007 50.250   1746
+CALVERT        0.007 50.257   1747
+STATON         0.007 50.264   1748
+NEFF           0.007 50.271   1749
+KEARNEY        0.007 50.278   1750
+DARDEN         0.007 50.286   1751
+OAKLEY         0.007 50.293   1752
+MEDEIROS       0.007 50.300   1753
+MCCRACKEN      0.007 50.307   1754
+CRENSHAW       0.007 50.314   1755
+BLOCK          0.007 50.322   1756
+BEAVER         0.007 50.329   1757
+PERDUE         0.007 50.336   1758
+DILL           0.007 50.343   1759
+WHITTAKER      0.007 50.350   1760
+TOBIN          0.007 50.357   1761
+CORNELIUS      0.007 50.365   1762
+WASHBURN       0.007 50.372   1763
+HOGUE          0.007 50.379   1764
+GOODRICH       0.007 50.386   1765
+EASLEY         0.007 50.393   1766
+BRAVO          0.007 50.400   1767
+DENNISON       0.007 50.407   1768
+VERA           0.007 50.414   1769
+SHIPLEY        0.007 50.422   1770
+KERNS          0.007 50.429   1771
+JORGENSEN      0.007 50.436   1772
+CRAIN          0.007 50.443   1773
+ABEL           0.007 50.450   1774
+VILLALOBOS     0.007 50.457   1775
+MAURER         0.007 50.464   1776
+LONGORIA       0.007 50.471   1777
+KEENE          0.007 50.478   1778
+COON           0.007 50.485   1779
+SIERRA         0.007 50.492   1780
+WITHERSPOON    0.007 50.499   1781
+STAPLES        0.007 50.506   1782
+PETTIT         0.007 50.513   1783
+KINCAID        0.007 50.520   1784
+EASON          0.007 50.528   1785
+MADRID         0.007 50.535   1786
+ECHOLS         0.007 50.542   1787
+LUSK           0.007 50.549   1788
+WU             0.007 50.556   1789
+STAHL          0.007 50.563   1790
+CURRIE         0.007 50.570   1791
+THAYER         0.007 50.577   1792
+SHULTZ         0.007 50.584   1793
+SHERWOOD       0.007 50.591   1794
+MCNALLY        0.007 50.598   1795
+SEAY           0.007 50.604   1796
+NORTH          0.007 50.611   1797
+MAHER          0.007 50.618   1798
+KENNY          0.007 50.625   1799
+HOPE           0.007 50.632   1800
+GAGNE          0.007 50.639   1801
+BARROW         0.007 50.646   1802
+NAVA           0.007 50.653   1803
+MYLES          0.007 50.660   1804
+MORELAND       0.007 50.667   1805
+HONEYCUTT      0.007 50.674   1806
+HEARN          0.007 50.681   1807
+DIGGS          0.007 50.688   1808
+CARON          0.007 50.695   1809
+WHITTEN        0.007 50.702   1810
+WESTBROOK      0.007 50.709   1811
+STOVALL        0.007 50.716   1812
+RAGLAND        0.007 50.723   1813
+QUEEN          0.007 50.730   1814
+MUNSON         0.007 50.736   1815
+MEIER          0.007 50.743   1816
+LOONEY         0.007 50.750   1817
+KIMBLE         0.007 50.757   1818
+JOLLY          0.007 50.764   1819
+HOBSON         0.007 50.771   1820
+LONDON         0.007 50.778   1821
+GODDARD        0.007 50.785   1822
+CULVER         0.007 50.792   1823
+BURR           0.007 50.799   1824
+PRESLEY        0.007 50.806   1825
+NEGRON         0.007 50.813   1826
+CONNELL        0.007 50.819   1827
+TOVAR          0.007 50.826   1828
+MARCUS         0.007 50.833   1829
+HUDDLESTON     0.007 50.840   1830
+HAMMER         0.007 50.847   1831
+ASHBY          0.007 50.854   1832
+SALTER         0.007 50.861   1833
+ROOT           0.007 50.868   1834
+PENDLETON      0.007 50.875   1835
+OLEARY         0.007 50.881   1836
+NICKERSON      0.007 50.888   1837
+MYRICK         0.007 50.895   1838
+JUDD           0.007 50.902   1839
+JACOBSEN       0.007 50.909   1840
+ELLIOT         0.007 50.916   1841
+BAIN           0.007 50.923   1842
+ADAIR          0.007 50.929   1843
+STARNES        0.007 50.936   1844
+SHELDON        0.007 50.943   1845
+MATOS          0.007 50.950   1846
+LIGHT          0.007 50.957   1847
+BUSBY          0.007 50.964   1848
+HERNDON        0.007 50.971   1849
+HANLEY         0.007 50.977   1850
+BELLAMY        0.007 50.984   1851
+JACK           0.007 50.991   1852
+DOTY           0.007 50.998   1853
+BARTLEY        0.007 51.005   1854
+YAZZIE         0.007 51.011   1855
+ROWELL         0.007 51.018   1856
+PARSON         0.007 51.025   1857
+GIFFORD        0.007 51.032   1858
+CULLEN         0.007 51.039   1859
+CHRISTIANSEN   0.007 51.045   1860
+BENAVIDES      0.007 51.052   1861
+BARNHART       0.007 51.059   1862
+TALBOT         0.007 51.066   1863
+MOCK           0.007 51.072   1864
+CRANDALL       0.007 51.079   1865
+CONNORS        0.007 51.086   1866
+BONDS          0.007 51.093   1867
+WHITT          0.007 51.099   1868
+GAGE           0.007 51.106   1869
+BERGMAN        0.007 51.113   1870
+ARREDONDO      0.007 51.120   1871
+ADDISON        0.007 51.126   1872
+MARION         0.007 51.133   1873
+LUJAN          0.007 51.140   1874
+DOWDY          0.007 51.147   1875
+JERNIGAN       0.007 51.153   1876
+HUYNH          0.007 51.160   1877
+BOUCHARD       0.007 51.167   1878
+DUTTON         0.007 51.173   1879
+RHOADES        0.007 51.180   1880
+OUELLETTE      0.007 51.187   1881
+KISER          0.007 51.193   1882
+RUBIN          0.007 51.200   1883
+HERRINGTON     0.007 51.207   1884
+HARE           0.007 51.213   1885
+DENNY          0.007 51.220   1886
+BLACKMAN       0.007 51.227   1887
+BABB           0.007 51.233   1888
+ALLRED         0.007 51.240   1889
+RUDD           0.007 51.247   1890
+PAULSON        0.007 51.253   1891
+OGDEN          0.007 51.260   1892
+KOENIG         0.007 51.267   1893
+JACOB          0.007 51.273   1894
+IRVING         0.007 51.280   1895
+GEIGER         0.007 51.287   1896
+BEGAY          0.007 51.293   1897
+PARRA          0.007 51.300   1898
+CHAMPION       0.007 51.306   1899
+LASSITER       0.007 51.313   1900
+HAWK           0.007 51.320   1901
+ESPOSITO       0.007 51.326   1902
+CHO            0.007 51.333   1903
+WALDRON        0.007 51.340   1904
+VERNON         0.007 51.346   1905
+RANSOM         0.007 51.353   1906
+PRATHER        0.007 51.359   1907
+KEENAN         0.007 51.366   1908
+JEAN           0.007 51.373   1909
+GROVER         0.007 51.379   1910
+CHACON         0.007 51.386   1911
+VICK           0.007 51.392   1912
+SANDS          0.007 51.399   1913
+ROARK          0.007 51.405   1914
+PARR           0.007 51.412   1915
+MAYBERRY       0.007 51.419   1916
+GREENBERG      0.007 51.425   1917
+COLEY          0.007 51.432   1918
+BRUNER         0.007 51.438   1919
+WHITMAN        0.007 51.445   1920
+SKAGGS         0.007 51.451   1921
+SHIPMAN        0.007 51.458   1922
+MEANS          0.007 51.465   1923
+LEARY          0.007 51.471   1924
+HUTTON         0.007 51.478   1925
+ROMO           0.007 51.484   1926
+MEDRANO        0.007 51.491   1927
+LADD           0.007 51.497   1928
+KRUSE          0.007 51.504   1929
+FRIEND         0.007 51.511   1930
+DARLING        0.007 51.517   1931
+ASKEW          0.007 51.524   1932
+VALENTIN       0.007 51.530   1933
+SCHULZ         0.007 51.537   1934
+ALFARO         0.007 51.543   1935
+TABOR          0.007 51.550   1936
+MOHR           0.007 51.556   1937
+GALLO          0.007 51.563   1938
+BERMUDEZ       0.007 51.569   1939
+PEREIRA        0.007 51.576   1940
+ISAAC          0.007 51.582   1941
+BLISS          0.007 51.589   1942
+REAVES         0.006 51.595   1943
+FLINT          0.006 51.602   1944
+COMER          0.006 51.608   1945
+BOSTON         0.006 51.615   1946
+WOODALL        0.006 51.621   1947
+NAQUIN         0.006 51.628   1948
+GUEVARA        0.006 51.634   1949
+EARL           0.006 51.641   1950
+DELONG         0.006 51.647   1951
+CARRIER        0.006 51.654   1952
+PICKENS        0.006 51.660   1953
+BRAND          0.006 51.666   1954
+TILLEY         0.006 51.673   1955
+SCHAFFER       0.006 51.679   1956
+READ           0.006 51.686   1957
+LIM            0.006 51.692   1958
+KNUTSON        0.006 51.699   1959
+FENTON         0.006 51.705   1960
+DORAN          0.006 51.712   1961
+CHU            0.006 51.718   1962
+VOGT           0.006 51.724   1963
+VANN           0.006 51.731   1964
+PRESCOTT       0.006 51.737   1965
+MCLAIN         0.006 51.744   1966
+LANDIS         0.006 51.750   1967
+CORCORAN       0.006 51.757   1968
+AMBROSE        0.006 51.763   1969
+ZAPATA         0.006 51.769   1970
+HYATT          0.006 51.776   1971
+HEMPHILL       0.006 51.782   1972
+FAULK          0.006 51.789   1973
+CALL           0.006 51.795   1974
+DOVE           0.006 51.801   1975
+BOUDREAUX      0.006 51.808   1976
+ARAGON         0.006 51.814   1977
+WHITLOCK       0.006 51.821   1978
+TREJO          0.006 51.827   1979
+TACKETT        0.006 51.833   1980
+SHEARER        0.006 51.840   1981
+SALDANA        0.006 51.846   1982
+HANKS          0.006 51.852   1983
+GOLD           0.006 51.859   1984
+DRIVER         0.006 51.865   1985
+MCKINNON       0.006 51.871   1986
+KOEHLER        0.006 51.878   1987
+CHAMPAGNE      0.006 51.884   1988
+BOURGEOIS      0.006 51.891   1989
+POOL           0.006 51.897   1990
+KEYES          0.006 51.903   1991
+GOODSON        0.006 51.910   1992
+FOOTE          0.006 51.916   1993
+EARLY          0.006 51.922   1994
+LUNSFORD       0.006 51.929   1995
+GOLDSMITH      0.006 51.935   1996
+FLOOD          0.006 51.941   1997
+WINSLOW        0.006 51.948   1998
+SAMS           0.006 51.954   1999
+REAGAN         0.006 51.960   2000
+MCCLOUD        0.006 51.967   2001
+HOUGH          0.006 51.973   2002
+ESQUIVEL       0.006 51.979   2003
+NAYLOR         0.006 51.985   2004
+LOOMIS         0.006 51.992   2005
+CORONADO       0.006 51.998   2006
+LUDWIG         0.006 52.004   2007
+BRASWELL       0.006 52.011   2008
+BEARDEN        0.006 52.017   2009
+SHERRILL       0.006 52.023   2010
+HUANG          0.006 52.029   2011
+FAGAN          0.006 52.036   2012
+EZELL          0.006 52.042   2013
+EDMONDSON      0.006 52.048   2014
+CYR            0.006 52.054   2015
+CRONIN         0.006 52.061   2016
+NUNN           0.006 52.067   2017
+LEMON          0.006 52.073   2018
+GUILLORY       0.006 52.079   2019
+GRIER          0.006 52.086   2020
+DUBOSE         0.006 52.092   2021
+TRAYLOR        0.006 52.098   2022
+RYDER          0.006 52.104   2023
+DOBBINS        0.006 52.111   2024
+COYLE          0.006 52.117   2025
+APONTE         0.006 52.123   2026
+WHITMORE       0.006 52.129   2027
+SMALLS         0.006 52.136   2028
+ROWAN          0.006 52.142   2029
+MALLOY         0.006 52.148   2030
+CARDONA        0.006 52.154   2031
+BRAXTON        0.006 52.160   2032
+BORDEN         0.006 52.167   2033
+HUMPHRIES      0.006 52.173   2034
+CARRASCO       0.006 52.179   2035
+RUFF           0.006 52.185   2036
+METZGER        0.006 52.191   2037
+HUNTLEY        0.006 52.198   2038
+HINOJOSA       0.006 52.204   2039
+FINNEY         0.006 52.210   2040
+MADSEN         0.006 52.216   2041
+HONG           0.006 52.222   2042
+HILLS          0.006 52.228   2043
+ERNST          0.006 52.235   2044
+DOZIER         0.006 52.241   2045
+BURKHART       0.006 52.247   2046
+BOWSER         0.006 52.253   2047
+PERALTA        0.006 52.259   2048
+DAIGLE         0.006 52.265   2049
+WHITTINGTON    0.006 52.272   2050
+SORENSON       0.006 52.278   2051
+SAUCEDO        0.006 52.284   2052
+ROCHE          0.006 52.290   2053
+REDDING        0.006 52.296   2054
+LOYD           0.006 52.302   2055
+FUGATE         0.006 52.308   2056
+AVALOS         0.006 52.315   2057
+WAITE          0.006 52.321   2058
+LIND           0.006 52.327   2059
+HUSTON         0.006 52.333   2060
+HAY            0.006 52.339   2061
+BENEDICT       0.006 52.345   2062
+HAWTHORNE      0.006 52.351   2063
+HAMBY          0.006 52.357   2064
+BOYLES         0.006 52.363   2065
+BOLES          0.006 52.370   2066
+REGAN          0.006 52.376   2067
+FAUST          0.006 52.382   2068
+CROOK          0.006 52.388   2069
+BEAM           0.006 52.394   2070
+BARGER         0.006 52.400   2071
+HINDS          0.006 52.406   2072
+GALLARDO       0.006 52.412   2073
+ELIAS          0.006 52.418   2074
+WILLOUGHBY     0.006 52.424   2075
+WILLINGHAM     0.006 52.430   2076
+WILBURN        0.006 52.436   2077
+ECKERT         0.006 52.442   2078
+BUSCH          0.006 52.448   2079
+ZEPEDA         0.006 52.455   2080
+WORTHINGTON    0.006 52.461   2081
+TINSLEY        0.006 52.467   2082
+RUSS           0.006 52.473   2083
+LI             0.006 52.479   2084
+HOFF           0.006 52.485   2085
+HAWLEY         0.006 52.491   2086
+CARMONA        0.006 52.497   2087
+VARELA         0.006 52.503   2088
+RECTOR         0.006 52.509   2089
+NEWCOMB        0.006 52.515   2090
+MALLORY        0.006 52.521   2091
+KINSEY         0.006 52.527   2092
+DUBE           0.006 52.533   2093
+WHATLEY        0.006 52.539   2094
+STRANGE        0.006 52.545   2095
+RAGSDALE       0.006 52.551   2096
+IVY            0.006 52.557   2097
+BERNSTEIN      0.006 52.563   2098
+BECERRA        0.006 52.569   2099
+YOST           0.006 52.575   2100
+MATTSON        0.006 52.581   2101
+LY             0.006 52.587   2102
+FELDER         0.006 52.593   2103
+CHEEK          0.006 52.599   2104
+LUKE           0.006 52.605   2105
+HANDY          0.006 52.611   2106
+GROSSMAN       0.006 52.617   2107
+GAUTHIER       0.006 52.623   2108
+ESCOBEDO       0.006 52.629   2109
+BRADEN         0.006 52.635   2110
+BECKMAN        0.006 52.641   2111
+MOTT           0.006 52.647   2112
+HILLMAN        0.006 52.653   2113
+GIL            0.006 52.659   2114
+FLAHERTY       0.006 52.665   2115
+DYKES          0.006 52.671   2116
+DOE            0.006 52.677   2117
+STOCKTON       0.006 52.683   2118
+STEARNS        0.006 52.688   2119
+LOFTON         0.006 52.694   2120
+KITCHEN        0.006 52.700   2121
+COATS          0.006 52.706   2122
+CAVAZOS        0.006 52.712   2123
+BEAVERS        0.006 52.718   2124
+BARRIOS        0.006 52.724   2125
+TANG           0.006 52.730   2126
+PARISH         0.006 52.736   2127
+MOSHER         0.006 52.742   2128
+LINCOLN        0.006 52.748   2129
+CARDWELL       0.006 52.754   2130
+COLES          0.006 52.760   2131
+BURNHAM        0.006 52.766   2132
+WELLER         0.006 52.772   2133
+LEMONS         0.006 52.777   2134
+BEEBE          0.006 52.783   2135
+AGUILERA       0.006 52.789   2136
+RING           0.006 52.795   2137
+PARNELL        0.006 52.801   2138
+HARMAN         0.006 52.807   2139
+COUTURE        0.006 52.813   2140
+ALLEY          0.006 52.819   2141
+SCHUMACHER     0.006 52.825   2142
+REDD           0.006 52.830   2143
+DOBBS          0.006 52.836   2144
+BLUM           0.006 52.842   2145
+BLALOCK        0.006 52.848   2146
+MERCHANT       0.006 52.854   2147
+ENNIS          0.006 52.860   2148
+DENSON         0.006 52.866   2149
+COTTRELL       0.006 52.871   2150
+CHESTER        0.006 52.877   2151
+BRANNON        0.006 52.883   2152
+BAGLEY         0.006 52.889   2153
+AVILES         0.006 52.895   2154
+WATT           0.006 52.901   2155
+SOUSA          0.006 52.906   2156
+ROSENTHAL      0.006 52.912   2157
+ROONEY         0.006 52.918   2158
+DIETZ          0.006 52.924   2159
+BLANK          0.006 52.930   2160
+PAQUETTE       0.006 52.936   2161
+MCCLELLAND     0.006 52.941   2162
+DUFF           0.006 52.947   2163
+VELASCO        0.006 52.953   2164
+LENTZ          0.006 52.959   2165
+GRUBB          0.006 52.965   2166
+BURROWS        0.006 52.970   2167
+BARBOUR        0.006 52.976   2168
+ULRICH         0.006 52.982   2169
+SHOCKLEY       0.006 52.988   2170
+RADER          0.006 52.994   2171
+GERMAN         0.006 52.999   2172
+BEYER          0.006 53.005   2173
+MIXON          0.006 53.011   2174
+LAYTON         0.006 53.017   2175
+ALTMAN         0.006 53.022   2176
+ALONZO         0.006 53.028   2177
+WEATHERS       0.006 53.034   2178
+TITUS          0.006 53.040   2179
+STONER         0.006 53.046   2180
+SQUIRES        0.006 53.051   2181
+SHIPP          0.006 53.057   2182
+PRIEST         0.006 53.063   2183
+LIPSCOMB       0.006 53.069   2184
+CUTLER         0.006 53.074   2185
+CABALLERO      0.006 53.080   2186
+ZIMMER         0.006 53.086   2187
+WILLETT        0.006 53.092   2188
+THURSTON       0.006 53.097   2189
+STOREY         0.006 53.103   2190
+MEDLEY         0.006 53.109   2191
+LYLE           0.006 53.114   2192
+EPPERSON       0.006 53.120   2193
+SHAH           0.006 53.126   2194
+MCMILLIAN      0.006 53.132   2195
+BAGGETT        0.006 53.137   2196
+TORREZ         0.006 53.143   2197
+LAWS           0.006 53.149   2198
+HIRSCH         0.006 53.155   2199
+DENT           0.006 53.160   2200
+COREY          0.006 53.166   2201
+POIRIER        0.006 53.172   2202
+PEACHEY        0.006 53.177   2203
+JACQUES        0.006 53.183   2204
+FARRAR         0.006 53.189   2205
+CREECH         0.006 53.194   2206
+BARTH          0.006 53.200   2207
+TRIMBLE        0.006 53.206   2208
+FRANCE         0.006 53.211   2209
+DUPRE          0.006 53.217   2210
+ALBRECHT       0.006 53.223   2211
+SAMPLE         0.006 53.228   2212
+LAWLER         0.006 53.234   2213
+CRISP          0.006 53.240   2214
+CONROY         0.006 53.245   2215
+CHADWICK       0.006 53.251   2216
+WETZEL         0.006 53.257   2217
+NESBITT        0.006 53.262   2218
+MURRY          0.006 53.268   2219
+JAMESON        0.006 53.274   2220
+WILHELM        0.006 53.279   2221
+PATTEN         0.006 53.285   2222
+MINTON         0.006 53.291   2223
+MATSON         0.006 53.296   2224
+KIMBROUGH      0.006 53.302   2225
+IVERSON        0.006 53.307   2226
+GUINN          0.006 53.313   2227
+GALE           0.006 53.319   2228
+FORTUNE        0.006 53.324   2229
+CROFT          0.006 53.330   2230
+TOTH           0.006 53.336   2231
+PULLIAM        0.006 53.341   2232
+NUGENT         0.006 53.347   2233
+NEWBY          0.006 53.352   2234
+LITTLEJOHN     0.006 53.358   2235
+DIAS           0.006 53.364   2236
+CANALES        0.006 53.369   2237
+BERNIER        0.006 53.375   2238
+BARON          0.006 53.380   2239
+BARNEY         0.006 53.386   2240
+SINGLETARY     0.006 53.392   2241
+RENTERIA       0.006 53.397   2242
+PRUETT         0.006 53.403   2243
+MCHUGH         0.006 53.408   2244
+MABRY          0.006 53.414   2245
+LANDRUM        0.006 53.420   2246
+BROWER         0.006 53.425   2247
+WELDON         0.006 53.431   2248
+STODDARD       0.006 53.436   2249
+RUTH           0.006 53.442   2250
+CAGLE          0.006 53.448   2251
+STJOHN         0.006 53.453   2252
+SCALES         0.006 53.459   2253
+KOHLER         0.006 53.464   2254
+KELLOGG        0.006 53.470   2255
+HOPSON         0.006 53.475   2256
+GANT           0.006 53.481   2257
+THARP          0.006 53.486   2258
+GANN           0.006 53.492   2259
+ZEIGLER        0.006 53.498   2260
+PRINGLE        0.006 53.503   2261
+HAMMONS        0.006 53.509   2262
+FAIRCHILD      0.006 53.514   2263
+DEATON         0.006 53.520   2264
+CHAVIS         0.006 53.525   2265
+CARNES         0.006 53.531   2266
+ROWLEY         0.006 53.536   2267
+MATLOCK        0.006 53.542   2268
+LIBBY          0.006 53.547   2269
+KEARNS         0.006 53.553   2270
+IRIZARRY       0.006 53.558   2271
+CARRINGTON     0.006 53.564   2272
+STARKEY        0.006 53.569   2273
+PEPPER         0.006 53.575   2274
+LOPES          0.006 53.580   2275
+JARRELL        0.006 53.586   2276
+FAY            0.006 53.591   2277
+CRAVEN         0.006 53.597   2278
+BEVERLY        0.006 53.602   2279
+BAUM           0.006 53.608   2280
+SPAIN          0.005 53.613   2281
+LITTLEFIELD    0.005 53.619   2282
+LINN           0.005 53.624   2283
+HUMPHREYS      0.005 53.630   2284
+HOOK           0.005 53.635   2285
+HIGH           0.005 53.641   2286
+ETHERIDGE      0.005 53.646   2287
+CUELLAR        0.005 53.652   2288
+CHASTAIN       0.005 53.657   2289
+CHANCE         0.005 53.663   2290
+BUNDY          0.005 53.668   2291
+SPEER          0.005 53.674   2292
+SKELTON        0.005 53.679   2293
+QUIROZ         0.005 53.685   2294
+PYLE           0.005 53.690   2295
+PORTILLO       0.005 53.696   2296
+PONDER         0.005 53.701   2297
+MOULTON        0.005 53.706   2298
+MACHADO        0.005 53.712   2299
+LIU            0.005 53.717   2300
+KILLIAN        0.005 53.723   2301
+HUTSON         0.005 53.728   2302
+HITCHCOCK      0.005 53.734   2303
+ELLSWORTH      0.005 53.739   2304
+DOWLING        0.005 53.745   2305
+CLOUD          0.005 53.750   2306
+BURDICK        0.005 53.756   2307
+SPANN          0.005 53.761   2308
+PEDERSEN       0.005 53.767   2309
+LEVIN          0.005 53.772   2310
+LEGGETT        0.005 53.778   2311
+HAYWARD        0.005 53.783   2312
+HACKER         0.005 53.788   2313
+DIETRICH       0.005 53.794   2314
+BEAULIEU       0.005 53.799   2315
+BARKSDALE      0.005 53.805   2316
+WAKEFIELD      0.005 53.810   2317
+SNOWDEN        0.005 53.816   2318
+PARIS          0.005 53.821   2319
+BRISCOE        0.005 53.827   2320
+BOWIE          0.005 53.832   2321
+BERMAN         0.005 53.837   2322
+OGLE           0.005 53.843   2323
+MCGREGOR       0.005 53.848   2324
+LAUGHLIN       0.005 53.854   2325
+HELM           0.005 53.859   2326
+BURDEN         0.005 53.864   2327
+WHEATLEY       0.005 53.870   2328
+SCHREIBER      0.005 53.875   2329
+PRESSLEY       0.005 53.881   2330
+PARRIS         0.005 53.886   2331
+NG             0.005 53.892   2332
+ALANIZ         0.005 53.897   2333
+AGEE           0.005 53.902   2334
+URBAN          0.005 53.908   2335
+SWANN          0.005 53.913   2336
+SNODGRASS      0.005 53.919   2337
+SCHUSTER       0.005 53.924   2338
+RADFORD        0.005 53.929   2339
+MONK           0.005 53.935   2340
+MATTINGLY      0.005 53.940   2341
+MAIN           0.005 53.945   2342
+LAMAR          0.005 53.951   2343
+HARP           0.005 53.956   2344
+GIRARD         0.005 53.962   2345
+CHENEY         0.005 53.967   2346
+YANCEY         0.005 53.972   2347
+WAGONER        0.005 53.978   2348
+RIDLEY         0.005 53.983   2349
+LOMBARDO       0.005 53.988   2350
+LAU            0.005 53.994   2351
+HUDGINS        0.005 53.999   2352
+GASKINS        0.005 54.005   2353
+DUCKWORTH      0.005 54.010   2354
+COE            0.005 54.015   2355
+COBURN         0.005 54.021   2356
+WILLEY         0.005 54.026   2357
+PRADO          0.005 54.031   2358
+NEWBERRY       0.005 54.037   2359
+MAGANA         0.005 54.042   2360
+HAMMONDS       0.005 54.048   2361
+ELAM           0.005 54.053   2362
+WHIPPLE        0.005 54.058   2363
+SLADE          0.005 54.064   2364
+SERNA          0.005 54.069   2365
+OJEDA          0.005 54.074   2366
+LILES          0.005 54.080   2367
+DORMAN         0.005 54.085   2368
+DIEHL          0.005 54.090   2369
+ANGEL          0.005 54.096   2370
+UPTON          0.005 54.101   2371
+REARDON        0.005 54.106   2372
+MICHAELS       0.005 54.112   2373
+KELSEY         0.005 54.117   2374
+GOETZ          0.005 54.122   2375
+ELLER          0.005 54.128   2376
+BAUMAN         0.005 54.133   2377
+BAER           0.005 54.138   2378
+AUGUSTINE      0.005 54.144   2379
+LAYNE          0.005 54.149   2380
+HUMMEL         0.005 54.154   2381
+BRENNER        0.005 54.159   2382
+AMAYA          0.005 54.165   2383
+ADAMSON        0.005 54.170   2384
+ORNELAS        0.005 54.175   2385
+DOWELL         0.005 54.181   2386
+CLOUTIER       0.005 54.186   2387
+CHRISTY        0.005 54.191   2388
+CASTELLANOS    0.005 54.197   2389
+WING           0.005 54.202   2390
+WELLMAN        0.005 54.207   2391
+SAYLOR         0.005 54.212   2392
+OROURKE        0.005 54.218   2393
+MOYA           0.005 54.223   2394
+MONTALVO       0.005 54.228   2395
+KILPATRICK     0.005 54.234   2396
+HARLEY         0.005 54.239   2397
+DURBIN         0.005 54.244   2398
+SHELL          0.005 54.249   2399
+OLDHAM         0.005 54.255   2400
+KANG           0.005 54.260   2401
+GARVIN         0.005 54.265   2402
+FOSS           0.005 54.270   2403
+BRANHAM        0.005 54.276   2404
+BARTHOLOMEW    0.005 54.281   2405
+TEMPLETON      0.005 54.286   2406
+MAGUIRE        0.005 54.291   2407
+HOLTON         0.005 54.297   2408
+ALONSO         0.005 54.302   2409
+RIDER          0.005 54.307   2410
+MONAHAN        0.005 54.312   2411
+MCCORMACK      0.005 54.318   2412
+BEATY          0.005 54.323   2413
+ANDERS         0.005 54.328   2414
+STREETER       0.005 54.333   2415
+NIETO          0.005 54.338   2416
+NIELSON        0.005 54.344   2417
+MOFFETT        0.005 54.349   2418
+LANKFORD       0.005 54.354   2419
+KEATING        0.005 54.359   2420
+HECK           0.005 54.365   2421
+GATLIN         0.005 54.370   2422
+DELATORRE      0.005 54.375   2423
+CALLAWAY       0.005 54.380   2424
+ADCOCK         0.005 54.385   2425
+WORRELL        0.005 54.391   2426
+UNGER          0.005 54.396   2427
+ROBINETTE      0.005 54.401   2428
+NOWAK          0.005 54.406   2429
+JETER          0.005 54.411   2430
+BRUNNER        0.005 54.417   2431
+ASHTON         0.005 54.422   2432
+STEEN          0.005 54.427   2433
+PARROTT        0.005 54.432   2434
+OVERSTREET     0.005 54.437   2435
+NOBLES         0.005 54.443   2436
+MONTANEZ       0.005 54.448   2437
+LUTHER         0.005 54.453   2438
+CLEVENGER      0.005 54.458   2439
+BRINKLEY       0.005 54.463   2440
+TRAHAN         0.005 54.468   2441
+QUARLES        0.005 54.474   2442
+PICKERING      0.005 54.479   2443
+PEDERSON       0.005 54.484   2444
+JANSEN         0.005 54.489   2445
+GRANTHAM       0.005 54.494   2446
+GILCHRIST      0.005 54.499   2447
+CRESPO         0.005 54.505   2448
+AIKEN          0.005 54.510   2449
+SCHELL         0.005 54.515   2450
+SCHAEFFER      0.005 54.520   2451
+LORENZ         0.005 54.525   2452
+LEYVA          0.005 54.530   2453
+HARMS          0.005 54.536   2454
+DYSON          0.005 54.541   2455
+WALLIS         0.005 54.546   2456
+PEASE          0.005 54.551   2457
+LEAVITT        0.005 54.556   2458
+HYMAN          0.005 54.561   2459
+CHENG          0.005 54.566   2460
+CAVANAUGH      0.005 54.571   2461
+BATTS          0.005 54.577   2462
+WARDEN         0.005 54.582   2463
+SEAMAN         0.005 54.587   2464
+ROCKWELL       0.005 54.592   2465
+QUEZADA        0.005 54.597   2466
+PAXTON         0.005 54.602   2467
+LINDER         0.005 54.607   2468
+HOUCK          0.005 

<TRUNCATED>

[18/21] incubator-usergrid git commit: USERGRID-871: add audit simulations

Posted by to...@apache.org.
USERGRID-871: add audit simulations


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/32fefb98
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/32fefb98
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/32fefb98

Branch: refs/heads/two-dot-o-dev
Commit: 32fefb98cf5c0a5885e5453a1a3183deaa65c708
Parents: 3976ff9
Author: Mike Dunker <md...@apigee.com>
Authored: Fri Jul 31 22:24:33 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Fri Jul 31 22:24:33 2015 -0700

----------------------------------------------------------------------
 .../loadtests/runAuditGetCollectionEntities.sh  |  71 ++++++++++
 .../runAuditVerifyCollectionEntities.sh         |  71 ++++++++++
 .../datagenerators/FeederGenerator.scala        |  60 ++++++---
 .../usergrid/enums/ConfigProperties.scala       |   8 +-
 .../apache/usergrid/enums/ScenarioType.scala    |   4 +-
 .../apache/usergrid/helpers/Extractors.scala    |   7 +
 .../org/apache/usergrid/helpers/Setup.scala     |  27 ++++
 .../usergrid/scenarios/AuditScenarios.scala     | 133 +++++++++++++++++++
 .../scenarios/EntityCollectionScenarios.scala   |   5 +-
 .../org/apache/usergrid/settings/Settings.scala |  97 +++++++++++++-
 .../usergrid/simulations/AuditSimulation.scala  |  68 ++++++++++
 stack/loadtests/src/test/resources/dummy.csv    |   1 -
 .../src/test/resources/dummyAuditUuid.csv       |   1 +
 .../loadtests/src/test/resources/dummyUuid.csv  |   1 +
 14 files changed, 526 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/runAuditGetCollectionEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runAuditGetCollectionEntities.sh b/stack/loadtests/runAuditGetCollectionEntities.sh
new file mode 100755
index 0000000..f34ea54
--- /dev/null
+++ b/stack/loadtests/runAuditGetCollectionEntities.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 4 ] || die "At least 4 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+AUDIT_UUID_FILENAME="$4"
+
+shift 4
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+ORG=gatling
+APP=millionentities
+SCENARIO_TYPE=auditGetCollectionEntities
+SEARCH_LIMIT=1000
+
+AUTH_TYPE=token
+TOKEN_TYPE=management
+
+#Execute the test
+mvn gatling:execute \
+-Dorg=${ORG} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DauditUuidFilename=${AUDIT_UUID_FILENAME} \
+-DsearchLimit=${SEARCH_LIMIT} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.AuditSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/runAuditVerifyCollectionEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runAuditVerifyCollectionEntities.sh b/stack/loadtests/runAuditVerifyCollectionEntities.sh
new file mode 100755
index 0000000..f0af5de
--- /dev/null
+++ b/stack/loadtests/runAuditVerifyCollectionEntities.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 4 ] || die "At least 4 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME [FAILED_UUID_FILENAME]"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+AUDIT_UUID_FILENAME="$4"
+FAILED_UUID_FILENAME="$5"
+
+shift 5
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+ORG=gatling
+APP=millionentities
+SCENARIO_TYPE=auditVerifyCollectionEntities
+
+AUTH_TYPE=token
+TOKEN_TYPE=management
+
+#Execute the test
+mvn gatling:execute \
+-Dorg=${ORG} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DauditUuidFilename=${AUDIT_UUID_FILENAME} \
+-DfailedUuidFilename=${FAILED_UUID_FILENAME} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.AuditSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
index 09030f5..61641de 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
@@ -19,9 +19,10 @@ package org.apache.usergrid.datagenerators
 import java.util.UUID
 import java.util.concurrent.atomic.AtomicInteger
 import io.gatling.core.Predef._
-import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.helpers.{Setup, Utils}
 import org.apache.usergrid.settings.Settings
 import scala.collection.mutable.ArrayBuffer
+import scala.io.Source
 
 object FeederGenerator {
 
@@ -231,26 +232,51 @@ object FeederGenerator {
    }
  }
 
-   /*
- def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
- new Feeder[String] {
-   var counter = new AtomicInteger(seed)
+  def collectionNameFeeder: Feeder[String] = new Feeder[String] {
+    val list: List[String] = Setup.getCollectionsList
+    var counter = new AtomicInteger(0)
 
-   // runs forever -- users detect when data is done using validEntity field
-   override def hasNext: Boolean = true
+    override def hasNext: Boolean = true
 
-   override def next(): Map[String, String] = {
-     val i = counter.getAndIncrement()
-     val entityName = prefix.concat(i.toString)
-     val entity = EntityDataGenerator.generateEntity(entityType, entityName)
-     val entityUrl = Settings.baseCollectionUrl + "/" + entityName
-     val validEntity = if (i >= seed + numEntities) "no" else "yes"
+    override def next(): Map[String, String] = {
+      val i = counter.getAndIncrement()
+      val collectionName = if (i < list.length) list(i) else ""
+      val validEntity = if (i >= list.length) "no" else "yes"
 
-     Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity)
-   }
- }
+      Map("collectionName" -> collectionName, "validEntity" -> validEntity)
+    }
+  }
 
-    */
+  def collectionCsvFeeder: Feeder[String] = new Feeder[String] {
+    val csvLines = if (Settings.feedAuditUuids) Source.fromFile(Settings.feedAuditUuidFilename).getLines().toArray else Array[String]()
+    val csvLinesLen = csvLines.length
+    var counter = new AtomicInteger(0)
+
+    override def hasNext: Boolean = true
+
+    def getNextLine: String = {
+      do {
+        val i = counter.getAndIncrement()
+        if (i >= csvLinesLen) return null
+
+        val line = csvLines(i)
+        if (line != Settings.auditUuidsHeader) return line
+
+      } while (true)
+
+      null
+    }
+
+    override def next: Map[String, String] = {
+      val line = getNextLine
+      val validEntity = if (line == null) "no" else "yes"
+      val array = if (line != null) line.split(",") else null
+      val collectionName = if (line != null) array(0) else ""
+      val uuid = if (line != null) array(1) else ""
+
+      Map("collectionName" -> collectionName, "uuid" -> uuid, "validEntity" -> validEntity)
+    }
+  }
 
  def generateCustomEntityInfiniteFeeder(seed: Int = Settings.entitySeed, entityType: String = Settings.entityType, prefix: String = Settings.entityPrefix): Iterator[String] = {
    Iterator.from(seed).map(i=>EntityDataGenerator.generateEntity(entityType, prefix.concat(i.toString)))

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
index 7e6cf55..75228a7 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
@@ -51,6 +51,8 @@ object ConfigProperties {
   val EntityWorkerCount = "entityWorkerCount"
   val EntityWorkerNum = "entityWorkerNum"
   val UuidFilename = "uuidFilename"
+  val AuditUuidFilename = "auditUuidFilename"
+  val FailedUuidFilename = "failedUuidFilename"
   val SandboxCollection = "sandboxCollection"
   val PurgeUsers = "purgeUsers"
 
@@ -59,7 +61,7 @@ object ConfigProperties {
     NumDevices,Collection,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,PushProvider,EntityPrefix,
     EntityType,EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,
     OrgCreationName,OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue,EntityWorkerCount,EntityWorkerNum,
-    UuidFilename,SandboxCollection,PurgeUsers)
+    UuidFilename,AuditUuidFilename,FailedUuidFilename,SandboxCollection,PurgeUsers)
 
   def isValid(str: String): Boolean = {
     Values.contains(str)
@@ -113,7 +115,9 @@ object ConfigProperties {
         case UpdateValue => new Date().toString
         case EntityWorkerCount => 0
         case EntityWorkerNum => 0
-        case UuidFilename => "dummy.csv"
+        case UuidFilename => "dummyUuid.csv"
+        case AuditUuidFilename => "dummyAuditUuid.csv"
+        case FailedUuidFilename => "/tmp/dummy.csv"
         case SandboxCollection => false
         case PurgeUsers => 100
       }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
index 760c837..76fae7b 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
@@ -8,9 +8,11 @@ object ScenarioType {
   val UpdateEntities = "updateEntities"
   val UuidRandomInfinite = "uuidRandomInfinite"
   val GetByNameSequential = "getByNameSequential"
+  val AuditGetCollectionEntities = "auditGetCollectionEntities"
+  val AuditVerifyCollectionEntities = "auditVerifyCollectionEntities"
 
   val Values = Seq(GetAllByCursor,NameRandomInfinite,LoadEntities,DeleteEntities,UpdateEntities,UuidRandomInfinite,
-    GetByNameSequential)
+    GetByNameSequential,AuditGetCollectionEntities,AuditVerifyCollectionEntities)
 
   def isValid(str: String): Boolean = {
     Values.contains(str)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index e970fbd..221c0a7 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -51,6 +51,13 @@ object Extractors {
   }
 
   /**
+   * Will extract the uuids from the get collection response.
+   */
+  def extractCollectionUuids(saveAsName: String) = {
+    jsonPath("$.entities[*]").ofType[Map[String,Any]].findAll.transformOption(extract => { extract.orElse(Some(Seq.empty)) }).saveAs(saveAsName)
+  }
+
+  /**
    * tries to extract the cursor from the session, if it exists, it returns true. if it's the default, returns false
    * @param nameInSession The name of the variable in the session
    * @return

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
index 727c295..37428ac 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
@@ -22,11 +22,13 @@ package org.apache.usergrid.helpers
 
 import com.fasterxml.jackson.databind.ObjectMapper
 import com.ning.http.client.{ListenableFuture, AsyncHttpClient,Response}
+import io.gatling.jsonpath.JsonPath
 import org.apache.usergrid.datagenerators.FeederGenerator
 import org.apache.usergrid.enums.TokenType
 import org.apache.usergrid.settings.Settings
 
 import scala.collection.mutable.ArrayBuffer
+import scala.util.parsing.json.JSON
 
 object Setup {
   var managementToken:String = null
@@ -109,6 +111,31 @@ object Setup {
     statusCode
   }
 
+  def getCollectionsList: List[String] = {
+    val appInfoGet = client
+      .prepareGet(s"${Settings.baseAppUrl}")
+      .setHeader("Cache-Control", "no-cache")
+      .setHeader("Accept", "application/json; charset=UTF-8")
+      .setHeader("Authorization", s"Bearer $getManagementToken")
+      .build()
+
+    val getResponse = client.executeRequest(appInfoGet).get()
+    val topLevel: Map[String, Any] = JSON.parseFull(getResponse.getResponseBody).get.asInstanceOf[Map[String,Any]]
+    val entities: List[Map[String, Any]] = topLevel("entities").asInstanceOf[List[Map[String,Any]]]
+    //println(s"entities: $entities")
+    val firstEntity: Map[String, Any] = entities.head
+    //println(s"firstEntity: $firstEntity")
+    val metadata: Map[String, Any] = firstEntity("metadata").asInstanceOf[Map[String, Any]]
+    //println(s"metadata: $metadata")
+    val collections: Map[String, Any] = metadata("collections").asInstanceOf[Map[String, Any]]
+    //println(s"collections: $collections")
+
+    val collectionsList: List[String] = (collections map { case (key, value) => key }).toList
+    //println(collectionsList)
+
+    collectionsList
+  }
+
   def sandboxCollection(): Integer = {
 
     val sandboxCollectionPost = client

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
new file mode 100644
index 0000000..b58ee07
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.scenarios
+
+import io.gatling.core.Predef._
+import io.gatling.core.feeder.RecordSeqFeederBuilder
+import io.gatling.http.Predef._
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.enums.{AuthType, EndConditionType}
+import org.apache.usergrid.helpers.Extractors._
+import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.settings.{Headers, Settings}
+
+/**
+ * Provides CRUD methods for audits
+ */
+object AuditScenarios {
+
+  //The value for the cursor
+  val SessionVarCursor: String = "cursor"
+  val SessionVarUuid: String = "entityUuid"
+  val SessionVarCollectionName: String = "collectionName"
+  val SessionVarCollectionUuids: String = "collectionUuids"
+
+  def collectionGetUrl(useCursor: Boolean): String = {
+    val url = "/${" + SessionVarCollectionName + "}?" +
+      (if (useCursor) "cursor=${" + SessionVarCursor + "}&" else "") +
+      (if (Settings.searchQuery != "") s"ql=${Settings.searchQuery}&" else "") +
+      (if (Settings.searchLimit > 0) s"limit=${Settings.searchLimit}&" else "")
+
+    // remove trailing & or ?
+    url.dropRight(1)
+  }
+
+  val getCollectionsWithoutCursor = exec(
+    http("GET collections")
+      .get(collectionGetUrl(false))
+      .headers(Headers.authToken)
+      .check(status.is(200), extractCollectionUuids(SessionVarCollectionUuids), maybeExtractCursor(SessionVarCursor)))
+      .foreach("${" + SessionVarCollectionUuids + "}", "singleUuid") {
+        exec(session => {
+          val uuidObj = session("singleUuid").as[Map[String,Any]]
+          val uuid = uuidObj("uuid").asInstanceOf[String]
+          val collectionName = session(SessionVarCollectionName).as[String]
+          Settings.addAuditUuid(uuid, collectionName)
+          session
+        })
+      }
+
+  val getCollectionsWithCursor = exec(
+    http("GET collections")
+      .get(collectionGetUrl(true))
+      .headers(Headers.authToken)
+      .check(status.is(200), extractCollectionUuids(SessionVarCollectionUuids), maybeExtractCursor(SessionVarCursor)))
+      .foreach("${" + SessionVarCollectionUuids + "}", "singleUuid") {
+        exec(session => {
+          val uuidObj = session("singleUuid").as[Map[String,Any]]
+          val uuid = uuidObj("uuid").asInstanceOf[String]
+          val collectionName = session(SessionVarCollectionName).as[String]
+          Settings.addAuditUuid(uuid, collectionName)
+          session
+        })
+      }
+
+  val getAllCollections = scenario("Get all collections")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
+      feed(FeederGenerator.collectionNameFeeder)
+        .exec{
+          session => if (session("validEntity").as[String] == "yes") { println("Getting collection " + session("collectionName").as[String]) }
+          session
+        }
+        .doIf(session => session("validEntity").as[String] == "yes") {
+          exec(getCollectionsWithoutCursor)
+            .asLongAs(stringParamExists(SessionVarCursor)) {
+              exec(getCollectionsWithCursor)
+          }
+        }
+    }
+
+  val getCollectionEntity = exec(
+    http("GET collection entity")
+      .get("/${collectionName}?ql=uuid=${uuid}")
+      .headers(Headers.authToken)
+      .check(status.is(200), jsonPath("$.count").saveAs("count")))
+        .exec(session => {
+          val count = session("count").as[String].toInt
+          val uuid = session("uuid").as[String]
+          val collectionName = session(SessionVarCollectionName).as[String]
+
+          // save items not found
+          if (count < 1) {
+            Settings.addAuditUuid(uuid, collectionName)
+            Settings.incAuditNotFound()
+            println(s"NOT FOUND: $collectionName.$uuid")
+          } else if (count > 1) {
+            Settings.addAuditUuid(uuid, collectionName)
+            Settings.incAuditBadResponse()
+            println(s"INVALID RESPONSE (count=$count): $collectionName.$uuid")
+          } else {
+            // println(s"FOUND: $collectionName.$uuid")
+            Settings.incAuditSuccess()
+          }
+
+          session
+        })
+
+  val verifyCollections = scenario("Verify collections")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
+    feed(FeederGenerator.collectionCsvFeeder)
+      .doIf(session => session("validEntity").as[String] == "yes") {
+        exec(getCollectionEntity)
+      }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 5f679ec..a760931 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -48,16 +48,17 @@ object EntityCollectionScenarios {
   }
 
   def entityGetByNameUrl(entityName: String): String = {
-    val url = s"/${Settings.collection}/$entityName"
 
-    url
+    s"/${Settings.collection}/$entityName"
   }
 
   def randomEntityNameUrl(prefix: String = Settings.entityPrefix, numEntities: Int = Settings.numEntities, seed: Int = Settings.entitySeed): String = {
+
     Utils.randomEntityNameUrl(prefix, numEntities, seed, Settings.baseCollectionUrl)
   }
 
   def uuidFeeder(): RecordSeqFeederBuilder[String] = {
+
     csv(Settings.feedUuidFilename).random
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index e4be5c8..3c1c2e2 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -17,6 +17,7 @@
 package org.apache.usergrid.settings
 
 import java.io.{PrintWriter, FileOutputStream}
+import java.util.concurrent.atomic.AtomicInteger
 import javax.xml.bind.DatatypeConverter
 import io.gatling.http.Predef._
 import io.gatling.http.config.HttpProtocolBuilder
@@ -149,12 +150,32 @@ object Settings {
   val numEntities:Int = entitiesPerWorkerFloor + extraEntity
 
   // UUID log file, have to go through this because creating a csv feeder with an invalid csv file fails at maven compile time
-  private val dummyCsv = ConfigProperties.getDefault(ConfigProperties.UuidFilename).toString
+  private val dummyTestCsv = ConfigProperties.getDefault(ConfigProperties.UuidFilename).toString
+  private val dummyAuditCsv = ConfigProperties.getDefault(ConfigProperties.AuditUuidFilename).toString
+  private val dummyAuditFailedCsv = ConfigProperties.getDefault(ConfigProperties.FailedUuidFilename).toString
+
   private val uuidFilename = initStrSetting(ConfigProperties.UuidFilename)
-  val captureUuids = uuidFilename != dummyCsv && (scenarioType == ScenarioType.LoadEntities || scenarioType == ScenarioType.GetByNameSequential)
-  val feedUuids = uuidFilename != dummyCsv && scenarioType == ScenarioType.UuidRandomInfinite
-  val captureUuidFilename = if (captureUuids) uuidFilename else dummyCsv
-  val feedUuidFilename = if (feedUuids) uuidFilename else dummyCsv
+  private val auditUuidFilename = initStrSetting(ConfigProperties.AuditUuidFilename)
+  private val failedUuidFilename = initStrSetting(ConfigProperties.FailedUuidFilename)
+
+  // feeds require valid files, even if test won't be run
+  val feedUuids = uuidFilename != dummyTestCsv && scenarioType == ScenarioType.UuidRandomInfinite
+  val feedUuidFilename = uuidFilename
+
+  val feedAuditUuids = uuidFilename != dummyAuditCsv && scenarioType == ScenarioType.AuditVerifyCollectionEntities
+  val feedAuditUuidFilename = auditUuidFilename
+
+  // also uses uuidFilename
+  val captureUuids = uuidFilename != dummyTestCsv && (scenarioType == ScenarioType.LoadEntities || scenarioType == ScenarioType.GetByNameSequential)
+  val captureUuidFilename = uuidFilename
+
+  val captureAuditUuids = (auditUuidFilename != dummyAuditCsv && scenarioType == ScenarioType.AuditGetCollectionEntities) ||
+                          (failedUuidFilename != dummyAuditFailedCsv && scenarioType == ScenarioType.AuditVerifyCollectionEntities)
+  println(s"auditUuidFilename=$auditUuidFilename")
+  println(s"captureAuditUuids=$captureAuditUuids")
+  val captureAuditUuidFilename = if (scenarioType == ScenarioType.AuditVerifyCollectionEntities) failedUuidFilename else auditUuidFilename
+  println(s"captureAuditUuidFilename=$captureAuditUuidFilename")
+
   val purgeUsers:Int = initIntSetting(ConfigProperties.PurgeUsers)
 
   private var uuidMap: Map[Int, String] = Map()
@@ -179,6 +200,32 @@ object Settings {
     }
   }
 
+
+  val auditUuidsHeader = "collection,uuid"
+
+  // key: uuid, value: collection
+  private var auditUuidMap: Map[String,String] = Map()
+  def addAuditUuid(uuid: String, collection: String): Unit = {
+    if (captureAuditUuids) auditUuidMap += (uuid -> collection)
+  }
+
+  def writeAuditUuidsToFile(uuidDesc: String): Unit = {
+    if (captureAuditUuids) {
+      println(s"Sorting and writing ${auditUuidMap.size} ${uuidDesc} UUIDs in CSV file ${captureAuditUuidFilename}")
+      val writer = {
+        val fos = new FileOutputStream(captureAuditUuidFilename)
+        new PrintWriter(fos, false)
+      }
+      writer.println(auditUuidsHeader)
+      val uuidList: List[(String, String)] = auditUuidMap.toList.sortBy(l => (l._2, l._1))
+      uuidList.foreach { l =>
+        writer.println(s"${l._2},${l._1}")
+      }
+      writer.flush()
+      writer.close()
+    }
+  }
+
   def getUserFeeder:Array[Map[String, String]]= {
     FeederGenerator.generateUserWithGeolocationFeeder(totalUsers, userLocationRadius, centerLatitude, centerLongitude)
   }
@@ -201,9 +248,48 @@ object Settings {
     (System.currentTimeMillis() - testStartTime) < (endMinutes.toLong*60L*1000L)
   }
 
+  private val countAuditSuccess = new AtomicInteger(0)
+  private val countAuditNotFound = new AtomicInteger(0)
+  private val countAuditBadResponse = new AtomicInteger(0)
+
+  def incAuditSuccess(): Unit = {
+    countAuditSuccess.incrementAndGet()
+  }
+
+  def incAuditNotFound(): Unit = {
+    countAuditNotFound.incrementAndGet()
+  }
+
+  def incAuditBadResponse(): Unit = {
+    countAuditBadResponse.incrementAndGet()
+  }
+
+  def printAuditResults(): Unit = {
+    if (scenarioType == ScenarioType.AuditVerifyCollectionEntities) {
+      val countSuccess = countAuditSuccess.get
+      val countNotFound = countAuditNotFound.get
+      val countBadResponse = countAuditBadResponse.get
+      val countTotal = countSuccess + countNotFound + countBadResponse
+
+      println()
+      println("-----------------------------------------------------------------------------")
+      println("AUDIT RESULTS")
+      println("-----------------------------------------------------------------------------")
+      println()
+      println(s"Successful:   ${countSuccess}")
+      println(s"Not Found:    ${countNotFound}")
+      println(s"Bad Response: ${countBadResponse}")
+      println(s"Total:        ${countTotal}")
+      println()
+      println("-----------------------------------------------------------------------------")
+      println()
+    }
+  }
+
   def printSettingsSummary(): Unit = {
     val authTypeStr = authType + (if (authType == AuthType.Token) s"($tokenType)" else "")
     val endConditionStr = if (endConditionType == EndConditionType.MinutesElapsed) s"$endMinutes minutes elapsed" else s"$endRequestCount requests"
+    println()
     println("-----------------------------------------------------------------------------")
     println("SIMULATION SETTINGS")
     println("-----------------------------------------------------------------------------")
@@ -222,6 +308,7 @@ object Settings {
     println(s"End Condition:$endConditionStr")
     println()
     println("-----------------------------------------------------------------------------")
+    println()
   }
 
   printSettingsSummary()

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala
new file mode 100755
index 0000000..48b5f60
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.simulations
+
+import io.gatling.core.Predef._
+import io.gatling.core.structure.ScenarioBuilder
+import org.apache.usergrid.enums.ScenarioType
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.{AuditScenarios, EntityCollectionScenarios}
+import org.apache.usergrid.settings.Settings
+
+/**
+ * Audit simulations.
+ *
+ */
+class AuditSimulation extends Simulation {
+
+  def getScenario(scenarioType: String): ScenarioBuilder = {
+    scenarioType match {
+      case ScenarioType.AuditGetCollectionEntities => AuditScenarios.getAllCollections
+      case ScenarioType.AuditVerifyCollectionEntities => AuditScenarios.verifyCollections
+    }
+  }
+
+  before{
+  }
+
+  Settings.setTestStartTime()
+  if (ScenarioType.isValid(Settings.scenarioType)) {
+    val scenario: ScenarioBuilder = getScenario(Settings.scenarioType)
+    setUp(
+      scenario
+        .inject(
+          rampUsers(Settings.rampUsers) over Settings.rampTime
+        ).protocols(Settings.httpConf.acceptHeader("application/json"))
+    )
+  } else {
+    println(s"Audit scenario type ${Settings.scenarioType} not found.")
+  }
+
+  after {
+    if (Settings.captureAuditUuids) {
+      val uuidDesc = Settings.scenarioType match {
+        case ScenarioType.AuditGetCollectionEntities => "found"
+        case ScenarioType.AuditVerifyCollectionEntities => "failed"
+      }
+      Settings.writeAuditUuidsToFile(uuidDesc)
+    }
+    Settings.printSettingsSummary()
+    Settings.printAuditResults()
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/test/resources/dummy.csv
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/dummy.csv b/stack/loadtests/src/test/resources/dummy.csv
deleted file mode 100644
index 187f36b..0000000
--- a/stack/loadtests/src/test/resources/dummy.csv
+++ /dev/null
@@ -1 +0,0 @@
-name,uuid

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/test/resources/dummyAuditUuid.csv
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/dummyAuditUuid.csv b/stack/loadtests/src/test/resources/dummyAuditUuid.csv
new file mode 100644
index 0000000..fc9f2fb
--- /dev/null
+++ b/stack/loadtests/src/test/resources/dummyAuditUuid.csv
@@ -0,0 +1 @@
+collection,uuid

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/32fefb98/stack/loadtests/src/test/resources/dummyUuid.csv
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/dummyUuid.csv b/stack/loadtests/src/test/resources/dummyUuid.csv
new file mode 100644
index 0000000..187f36b
--- /dev/null
+++ b/stack/loadtests/src/test/resources/dummyUuid.csv
@@ -0,0 +1 @@
+name,uuid


[10/21] incubator-usergrid git commit: USERGRID-871: fix load and delete tests to return errors when data there/not there

Posted by to...@apache.org.
USERGRID-871: fix load and delete tests to return errors when data there/not there


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/195449f0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/195449f0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/195449f0

Branch: refs/heads/two-dot-o-dev
Commit: 195449f0766883cc096491af7ef4d3c88b472fa0
Parents: b3f72da
Author: Mike Dunker <md...@apigee.com>
Authored: Wed Jul 22 12:21:40 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Wed Jul 22 12:21:40 2015 -0700

----------------------------------------------------------------------
 .../apache/usergrid/scenarios/EntityCollectionScenarios.scala  | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/195449f0/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index a6d6e0d..592a507 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -138,7 +138,8 @@ object EntityCollectionScenarios {
         .post(Settings.baseCollectionUrl)
         .headers(Headers.authToken)
         .body(StringBody("""${entity}"""))
-        .check(status.in(Seq(200,400))))
+        // 200 for success, 400 if already exists
+        .check(status.in(Seq(200))))
     }
   )
 
@@ -179,7 +180,8 @@ object EntityCollectionScenarios {
     http("DELETE entity")
       .delete("""${entityUrl}""")
       .headers(Headers.authToken)
-      .check(status.in(Seq(200,404)))
+      // 200 for success, 404 if doesn't exist
+      .check(status.in(Seq(200)))
   )
 
   val deleteEntities = scenario("Delete entities")


[09/21] incubator-usergrid git commit: USERGRID-871: added load and delete tests, fixes to feeders

Posted by to...@apache.org.
USERGRID-871: added load and delete tests, fixes to feeders


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/b3f72da9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/b3f72da9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/b3f72da9

Branch: refs/heads/two-dot-o-dev
Commit: b3f72da92661930d1996aca3b19412bfd72414b3
Parents: f1326fd
Author: Mike Dunker <md...@apigee.com>
Authored: Wed Jul 22 11:44:57 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Wed Jul 22 11:44:57 2015 -0700

----------------------------------------------------------------------
 stack/loadtests/runCollectionQueryTest.sh       |  6 +-
 stack/loadtests/runDeleteEntities.sh            | 99 ++++++++++++++++++++
 stack/loadtests/runLoadEntities.sh              | 99 ++++++++++++++++++++
 stack/loadtests/runRandomEntityByNameTest.sh    |  8 +-
 .../datagenerators/FeederGenerator.scala        | 33 ++++++-
 .../usergrid/enums/ConfigProperties.scala       |  7 +-
 .../apache/usergrid/enums/ScenarioType.scala    |  2 +
 .../org/apache/usergrid/helpers/Setup.scala     | 10 +-
 .../scenarios/EntityCollectionScenarios.scala   | 69 ++++++++++++++
 .../org/apache/usergrid/settings/Settings.scala | 11 ++-
 .../simulations/ConfigurableSimulation.scala    | 30 ++++--
 11 files changed, 353 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/runCollectionQueryTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runCollectionQueryTest.sh b/stack/loadtests/runCollectionQueryTest.sh
index 8137d2e..7d1779c 100755
--- a/stack/loadtests/runCollectionQueryTest.sh
+++ b/stack/loadtests/runCollectionQueryTest.sh
@@ -34,6 +34,8 @@ shift 6
 mvn compile
 
 #Set the app id to be a date epoch for uniqueness
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
 CREATE_ORG=false
 ORG=gatling
 CREATE_APP=false
@@ -63,8 +65,8 @@ mvn gatling:execute -Dorg=usergrid \
 -DcreateApp=${CREATE_APP} \
 -Dapp=${APP} \
 -Dbaseurl=${URL} \
--DadminUser=usergrid  \
--DadminPassword=test  \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
 -DloadEntities=${LOAD_ENTITIES} \
 -DnumEntities=${NUM_ENTITIES} \
 -DentityType=${ENTITY_TYPE} \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/runDeleteEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runDeleteEntities.sh b/stack/loadtests/runDeleteEntities.sh
new file mode 100755
index 0000000..1ca557e
--- /dev/null
+++ b/stack/loadtests/runDeleteEntities.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 6 ] || die "At least 6 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+NUM_ENTITIES="$6"
+
+shift 6
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION_TYPE=trivialentities
+SCENARIO_TYPE=deleteEntities
+# don't load entities as part of setup
+LOAD_ENTITIES=false
+
+SKIP_SETUP=TRUE
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivial
+ENTITY_PREFIX=trivial
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-DcollectionType=${COLLECTION_TYPE} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/runLoadEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadEntities.sh b/stack/loadtests/runLoadEntities.sh
new file mode 100755
index 0000000..bee8d1a
--- /dev/null
+++ b/stack/loadtests/runLoadEntities.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 6 ] || die "At least 6 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+NUM_ENTITIES="$6"
+
+shift 6
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION_TYPE=trivialentities
+SCENARIO_TYPE=loadEntities
+# don't load entities as part of setup
+LOAD_ENTITIES=false
+
+SKIP_SETUP=FALSE
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivial
+ENTITY_PREFIX=trivial
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-DcollectionType=${COLLECTION_TYPE} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/runRandomEntityByNameTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runRandomEntityByNameTest.sh b/stack/loadtests/runRandomEntityByNameTest.sh
index 474acfe..dd98aa6 100755
--- a/stack/loadtests/runRandomEntityByNameTest.sh
+++ b/stack/loadtests/runRandomEntityByNameTest.sh
@@ -34,6 +34,8 @@ mvn compile
 
 #Set the app id to be a date epoch for uniqueness
 #APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
 CREATE_ORG=false
 ORG=gatling
 CREATE_APP=false
@@ -56,15 +58,15 @@ END_MINUTES=2
 END_REQUEST_COUNT=100
 
 #Execute the test
-mvn gatling:execute -Dorg=usergrid \
+mvn gatling:execute \
 -DskipSetup=${SKIP_SETUP} \
 -DcreateOrg=${CREATE_ORG} \
 -Dorg=${ORG} \
 -DcreateApp=${CREATE_APP} \
 -Dapp=${APP} \
 -Dbaseurl=${URL} \
--DadminUser=usergrid  \
--DadminPassword=test  \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
 -DloadEntities=${LOAD_ENTITIES} \
 -DnumEntities=${NUM_ENTITIES} \
 -DentityType=${ENTITY_TYPE} \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
index 63091a7..92444b2 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
@@ -195,7 +195,7 @@
   * @param prefix Prefix for entities
   * @return
   */
- def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Array[String] = {
+ def generateCustomEntityArray(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Array[String] = {
    //val entityFeeder = Iterator.from(1).take(numEntities).map(i=>Map("entity" -> EntityDataGenerator.generateNamedCustomEntityJSONString(prefix.concat(i.toString()))))
    var entityArray: ArrayBuffer[String] = new ArrayBuffer[String]
    for (i <- seed to numEntities+seed-1) {
@@ -206,6 +206,37 @@
    entityArray.toArray
  }
 
+ def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Array[Map[String, Any]] = {
+   var entityMapArray: ArrayBuffer[Map[String, Any]] = new ArrayBuffer[Map[String, Any]]
+
+   for (i <- seed to numEntities+seed-1) {
+     val entityName = prefix.concat(i.toString)
+     val entity = EntityDataGenerator.generateEntity(entityType, entityName)
+     val entityUrl = Settings.baseCollectionUrl + "/" + entityName
+     entityMapArray += Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl)
+   }
+
+   entityMapArray.toArray
+ }
+
+ def generateCustomEntityFeeder2 (numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
+ new Feeder[String] {
+   var counter = new AtomicInteger(seed)
+
+   // runs forever -- users detect when data is done using validEntity field
+   override def hasNext: Boolean = true
+
+   override def next(): Map[String, String] = {
+     val i = counter.getAndIncrement()
+     val entityName = prefix.concat(i.toString)
+     val entity = EntityDataGenerator.generateEntity(entityType, entityName)
+     val entityUrl = Settings.baseCollectionUrl + "/" + entityName
+     val validEntity = if (i >= seed + numEntities) "no" else "yes"
+
+     Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity)
+   }
+ }
+
  def generateCustomEntityInfiniteFeeder(seed: Int = Settings.entitySeed, entityType: String = Settings.entityType, prefix: String = Settings.entityPrefix): Iterator[String] = {
    Iterator.from(seed).map(i=>EntityDataGenerator.generateEntity(entityType, prefix.concat(i.toString)))
  }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
index 9a4989a..56350ee 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
@@ -40,8 +40,13 @@ object ConfigProperties {
   val EndConditionType = "endConditionType"
   val EndMinutes = "endMinutes"
   val EndRequestCount = "endRequestCount"
+  val OrgCreationUsername = "orgCreationUsername"
+  val OrgCreationName = "orgCreationName"
+  val OrgCreationEmail = "orgCreationEmail"
+  val OrgCreationPassword = "orgCreationPassword"
   val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
     ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
     NumDevices,CollectionType,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,EntityPrefix,EntityType,
-    EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount)
+    EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,OrgCreationName,
+    OrgCreationEmail,OrgCreationPassword)
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
index 52fcbc5..e21a1ee 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
@@ -6,4 +6,6 @@ package org.apache.usergrid.enums
 object ScenarioType {
   val GetAllByCursor = "getAllByCursor"
   val NameRandomInfinite = "nameRandomInfinite"
+  val LoadEntities = "loadEntities"
+  val DeleteEntities = "deleteEntities"
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
index 776e0b9..af3aabb 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
@@ -83,10 +83,10 @@ object Setup {
       .setHeader("Content-Type", "application/json; charset=UTF-8")
       .setBody(Utils.toJSONStr(Map(
                           "organization" -> Settings.org,
-                          "username" -> Settings.adminUser,
-                          "name" -> Settings.adminUser,
-                          "email" -> (Settings.adminUser + "@apigee.com"),
-                          "password" -> Settings.adminPassword
+                          "username" -> Settings.orgCreationUsername,
+                          "name" -> Settings.orgCreationName,
+                          "email" -> Settings.orgCreationEmail,
+                          "password" -> Settings.orgCreationPassword
       )))
       .build()
 
@@ -192,7 +192,7 @@ object Setup {
   }
 
   def setupEntitiesCollection(numEntities: Int, entityType: String, prefix: String, seed: Int = 1) = {
-    val entitiesFeeder = FeederGenerator.generateCustomEntityFeeder(numEntities, entityType, prefix, seed)
+    val entitiesFeeder = FeederGenerator.generateCustomEntityArray(numEntities, entityType, prefix, seed)
     val purgeUsers = Integer.getInteger("purgeUsers", 100)
 
     val list: ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]]

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 844eb82..a6d6e0d 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -18,6 +18,7 @@ package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
+import org.apache.usergrid.datagenerators.FeederGenerator
 import org.apache.usergrid.enums.{EndConditionType, AuthType}
 import org.apache.usergrid.helpers.Extractors._
 import org.apache.usergrid.helpers.Utils
@@ -53,6 +54,9 @@ object EntityCollectionScenarios {
     Utils.randomEntityNameUrl(prefix, numEntities, seed, Settings.baseCollectionUrl)
   }
 
+  /*
+   * Loop through entities using cursor
+   */
   val getEntitiesWithoutCursor = exec(
     http("GET entities")
       .get(entityGetUrl(false))
@@ -87,6 +91,9 @@ object EntityCollectionScenarios {
     }
     //.exec(sessionFunction => { sessionFunction })
 
+  /*
+   * Get random entities
+   */
   val getRandomEntityAnonymous = exec(
     http("GET entity by name (anonymous)")
       .get(_ => randomEntityNameUrl())
@@ -123,6 +130,68 @@ object EntityCollectionScenarios {
     }
 
   /*
+   * Create entities
+   */
+  val loadEntity = exec(
+    doIf("${validEntity}", "yes") {
+      exec(http("POST load entity")
+        .post(Settings.baseCollectionUrl)
+        .headers(Headers.authToken)
+        .body(StringBody("""${entity}"""))
+        .check(status.in(Seq(200,400))))
+    }
+  )
+
+  val loadEntities = scenario("Load entities")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
+      feed(FeederGenerator.generateCustomEntityFeeder2(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+        .doIf(session => session("validEntity").as[String] == "yes") {
+          exec(loadEntity)
+        }
+    }
+    //.rendezVous(Settings.totalUsers)
+
+  /*
+  val loadEntity = exec(
+    http("POST load entity")
+      .post(Settings.baseCollectionUrl)
+      .headers(Headers.authToken)
+      .body(StringBody("""${entity}"""))
+      .check(status.in(Seq(200,400)))
+  )
+
+  val loadEntities = scenario("Load entities")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .forever(
+      feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+      .exec(loadEntity)
+    )
+    */
+
+
+  /*
+   * Delete entities
+   */
+  val deleteEntity = exec(
+    http("DELETE entity")
+      .delete("""${entityUrl}""")
+      .headers(Headers.authToken)
+      .check(status.in(Seq(200,404)))
+  )
+
+  val deleteEntities = scenario("Delete entities")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
+      feed(FeederGenerator.generateCustomEntityFeeder2(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+        .doIf(session => session("validEntity").as[String] == "yes") {
+          exec(deleteEntity)
+        }
+    }
+  /*
   val createEntityBatchScenario = scenario("Create custom entities")
       .exec(injectStaticTokenToSession())
       .feed(FeederGenerator.generateCustomEntityCreateFeeder(Settings.entityPrefix, Settings.numEntities))

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 72b591f..3992c68 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -17,7 +17,7 @@
 package org.apache.usergrid.settings
 
 import java.nio.charset.StandardCharsets
-//import java.util.Base64
+import java.util.Base64
 
 
 import io.gatling.core.Predef._
@@ -52,8 +52,7 @@ object Settings {
   val userSeed:Int = Integer.getInteger(ConfigProperties.UserSeed,1).toInt
   val appUser = System.getProperty(ConfigProperties.AppUser)
   val appUserPassword = System.getProperty(ConfigProperties.AppUserPassword)
-  //val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
-  val appUserBase64 = "BROKEN FOR NOW"
+  val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
 
   val numEntities:Int = Integer.getInteger(ConfigProperties.NumEntities, 5000).toInt
   val numDevices:Int = Integer.getInteger(ConfigProperties.NumDevices, 4000).toInt
@@ -87,6 +86,12 @@ object Settings {
   val endMinutes = Integer.getInteger(ConfigProperties.EndMinutes, 10).toInt
   val endRequestCount = Integer.getInteger(ConfigProperties.EndRequestCount, 10).toInt
 
+  // Org creation fields
+  val orgCreationUsername = System.getProperty(ConfigProperties.OrgCreationUsername, org.concat("_admin"))
+  val orgCreationEmail = System.getProperty(ConfigProperties.OrgCreationEmail, orgCreationUsername.concat("@usergrid.com"))
+  val orgCreationName = System.getProperty(ConfigProperties.OrgCreationName, orgCreationUsername)
+  val orgCreationPassword = System.getProperty(ConfigProperties.OrgCreationPassword, "test")
+
   def getUserFeeder():Array[Map[String, String]]= {
     FeederGenerator.generateUserWithGeolocationFeeder(totalUsers, userLocationRadius, centerLatitude, centerLongitude)
   }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b3f72da9/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index 7a55577..4b0f96a 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -47,14 +47,32 @@ class ConfigurableSimulation extends Simulation {
 
 
   Settings.setTestStartTime()
-  if (Settings.scenarioType == ScenarioType.GetAllByCursor) {
+  if (Settings.scenarioType == ScenarioType.LoadEntities) {
     setUp(
-        EntityCollectionScenarios.getEntityPagesToEnd
-          .inject(
-            rampUsers(Settings.rampUsers) over Settings.rampTime,
-            constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+      EntityCollectionScenarios.loadEntities
+        .inject(
+          rampUsers(Settings.rampUsers) over Settings.rampTime,
+          constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+        ).protocols(Settings.httpConf.acceptHeader("application/json"))
+    )
+  } else if (Settings.scenarioType == ScenarioType.DeleteEntities) {
+    setUp(
+      EntityCollectionScenarios.deleteEntities
+        .inject(
+          rampUsers(Settings.rampUsers) over Settings.rampTime,
+          constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
 
-          ).protocols(Settings.httpConf.acceptHeader("application/json"))
+        ).protocols(Settings.httpConf.acceptHeader("application/json"))
+    )
+  } else if (Settings.scenarioType == ScenarioType.GetAllByCursor) {
+    setUp(
+      EntityCollectionScenarios.getEntityPagesToEnd
+        .inject(
+          rampUsers(Settings.rampUsers) over Settings.rampTime,
+          constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+        ).protocols(Settings.httpConf.acceptHeader("application/json"))
     )
   } else if (Settings.scenarioType == ScenarioType.NameRandomInfinite) {
     setUp(


[13/21] incubator-usergrid git commit: USERGRID-871: print settings summary + auto support multiple workers

Posted by to...@apache.org.
USERGRID-871: print settings summary + auto support multiple workers


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/bfc2be2b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/bfc2be2b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/bfc2be2b

Branch: refs/heads/two-dot-o-dev
Commit: bfc2be2b99e0892b5380310513abb5d6cc43736a
Parents: eec8175
Author: Mike Dunker <md...@apigee.com>
Authored: Mon Jul 27 16:30:56 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Mon Jul 27 16:30:56 2015 -0700

----------------------------------------------------------------------
 stack/loadtests/runLoadEntities.sh              |  8 ++-
 .../org/apache/usergrid/enums/AuthType.scala    |  1 -
 .../usergrid/enums/ConfigProperties.scala       |  4 +-
 .../apache/usergrid/helpers/Extractors.scala    | 10 ++++
 .../scenarios/EntityCollectionScenarios.scala   |  1 +
 .../org/apache/usergrid/settings/Settings.scala | 51 ++++++++++++++++++--
 .../simulations/ConfigurableSimulation.scala    |  4 ++
 7 files changed, 70 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bfc2be2b/stack/loadtests/runLoadEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadEntities.sh b/stack/loadtests/runLoadEntities.sh
index d213fd4..e166c58 100755
--- a/stack/loadtests/runLoadEntities.sh
+++ b/stack/loadtests/runLoadEntities.sh
@@ -19,7 +19,7 @@ die() { echo "$@" 1>&2 ; exit 1; }
 #This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
 #Then aggregate the results
 ####
-[ "$#" -ge 6 ] || die "At least 6 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES"
+[ "$#" -ge 8 ] || die "At least 8 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES ENTITY_WORKER_NUM ENTITY_WORKER_COUNT"
 
 URL="$1"
 RAMP_USERS="$2"
@@ -27,8 +27,10 @@ RAMP_TIME="$3"
 CONSTANT_USERS_PER_SEC="$4"
 CONSTANT_USERS_DURATION="$5"
 NUM_ENTITIES="$6"
+ENTITY_WORKER_NUM="$7"
+ENTITY_WORKER_COUNT="$8"
 
-shift 6
+shift 8
 
 #Compile everything
 mvn compile
@@ -85,6 +87,8 @@ mvn gatling:execute \
 -DendConditionType=${END_CONDITION_TYPE} \
 -DendMinutes=${END_MINUTES} \
 -DendRequestCount=${END_REQUEST_COUNT} \
+-DentityWorkerCount=${ENTITY_WORKER_COUNT} \
+-DentityWorkerNum=${ENTITY_WORKER_NUM} \
 -Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bfc2be2b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
index 6086fdd..abbb204 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
@@ -9,7 +9,6 @@ object AuthType {
   val Basic = "basic"
 
   val Values = Seq(Anonymous,Token,Basic)
-
   def isValid(str: String): Boolean = {
     Values.contains(str)
   }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bfc2be2b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
index 2f13a12..855a7ae 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
@@ -46,12 +46,14 @@ object ConfigProperties {
   val OrgCreationPassword = "orgCreationPassword"
   val UpdateProperty = "updateProperty"
   val UpdateValue = "updateValue"
+  val EntityWorkerCount = "entityWorkerCount"
+  val EntityWorkerNum = "entityWorkerNum"
 
   val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
     ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
     NumDevices,CollectionType,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,EntityPrefix,EntityType,
     EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,OrgCreationName,
-    OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue)
+    OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue,EntityWorkerCount,EntityWorkerNum)
 
   def isValid(str: String): Boolean = {
     Values.contains(str)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bfc2be2b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index 35f75a7..f8aad98 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -41,6 +41,16 @@ object Extractors {
   }
 
   /**
+   * Will extract the uuid from the create response.  If the uuid is not present, an empty string will be set
+   */
+  def extractUuid(saveAsName: String) = {
+    jsonPath("$.entities[0].uuid").transformOption(extract => {
+      //it may or may not be present.  If it is, save it, otherwise save it as an empty string
+      extract.orElse(Some(""))
+    }).saveAs(saveAsName)
+  }
+
+  /**
    * tries to extract the cursor from the session, if it exists, it returns true. if it's the default, returns false
    * @param nameInSession The name of the variable in the session
    * @return

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bfc2be2b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 1dd534c..1fa1c07 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -34,6 +34,7 @@ object EntityCollectionScenarios {
 
   //The value for the cursor
   val SessionVarCursor: String = "cursor"
+  val SessionVarUuid: String = "createUuid"
 
   def entityGetUrl(useCursor: Boolean): String = {
     val url = Settings.baseAppUrl + "/" + Settings.collectionType + "?dummy" +

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bfc2be2b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index a7669a1..cca3056 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -39,9 +39,9 @@ object Settings {
   val tokenType = System.getProperty(ConfigProperties.TokenType, TokenType.User)
 
   val skipSetup:Boolean = System.getProperty(ConfigProperties.SkipSetup) == "true"
-  val createOrg:Boolean = System.getProperty(ConfigProperties.CreateOrg) == "true"
-  val createApp:Boolean = System.getProperty(ConfigProperties.CreateApp) != "false"
-  val loadEntities:Boolean = System.getProperty(ConfigProperties.LoadEntities) != "false"
+  val createOrg:Boolean = !skipSetup && (System.getProperty(ConfigProperties.CreateOrg) == "true")
+  val createApp:Boolean = !skipSetup && (System.getProperty(ConfigProperties.CreateApp) != "false")
+  val loadEntities:Boolean = !skipSetup && (System.getProperty(ConfigProperties.LoadEntities) != "false")
   val scenarioType = System.getProperty(ConfigProperties.ScenarioType, ScenarioType.NameRandomInfinite)
 
   val rampUsers:Int = Integer.getInteger(ConfigProperties.RampUsers, 0).toInt
@@ -53,7 +53,8 @@ object Settings {
   val appUserPassword = System.getProperty(ConfigProperties.AppUserPassword)
   val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
 
-  val numEntities:Int = Integer.getInteger(ConfigProperties.NumEntities, 5000).toInt
+  var numEntities:Int = Integer.getInteger(ConfigProperties.NumEntities, 5000).toInt
+  val totalNumEntities:Int = numEntities
   val numDevices:Int = Integer.getInteger(ConfigProperties.NumDevices, 4000).toInt
 
   val collectionType = System.getProperty(ConfigProperties.CollectionType, "customentities")
@@ -78,7 +79,8 @@ object Settings {
   // Large Entity Collection settings
   val entityPrefix = System.getProperty(ConfigProperties.EntityPrefix, "entity")
   val entityType = System.getProperty(ConfigProperties.EntityType, EntityType.Basic) // basic/trivial/?
-  val entitySeed = Integer.getInteger(ConfigProperties.EntitySeed, 1).toInt
+  var entitySeed = Integer.getInteger(ConfigProperties.EntitySeed, 1).toInt
+  val overallEntitySeed = entitySeed
   val searchLimit = Integer.getInteger(ConfigProperties.SearchLimit, 0).toInt
   val searchQuery = System.getProperty(ConfigProperties.SearchQuery, "")
   val endConditionType = System.getProperty(ConfigProperties.EndConditionType, EndConditionType.MinutesElapsed)
@@ -96,6 +98,20 @@ object Settings {
   val updateValue = System.getProperty(ConfigProperties.UpdateValue, new Date().toString)
   val updateBody = Utils.toJSONStr(Map(updateProperty -> updateValue))
 
+  // Entity workers
+  val entityWorkerCount = Integer.getInteger(ConfigProperties.EntityWorkerCount,1)
+  val entityWorkerNum = Integer.getInteger(ConfigProperties.EntityWorkerNum, 1)
+
+  if (entityWorkerCount > 1 && entityWorkerNum >= 1 && entityWorkerNum <= entityWorkerCount) {
+    // split entities across multiple workers
+    val entitiesPerWorkerFloor = totalNumEntities / entityWorkerCount
+    val leftOver = totalNumEntities % entityWorkerCount
+    val zeroBasedWorkerNum = entityWorkerNum - 1
+    val takeExtraEntity = if (entityWorkerNum <= leftOver) 1 else 0
+    entitySeed = overallEntitySeed + zeroBasedWorkerNum * entitiesPerWorkerFloor + (if (takeExtraEntity == 1) zeroBasedWorkerNum else leftOver)
+    numEntities = entitiesPerWorkerFloor + takeExtraEntity
+  }
+
   def getUserFeeder():Array[Map[String, String]]= {
     FeederGenerator.generateUserWithGeolocationFeeder(totalUsers, userLocationRadius, centerLatitude, centerLongitude)
   }
@@ -110,4 +126,29 @@ object Settings {
     testStartTime = System.currentTimeMillis()
   }
 
+  def printSettingsSummary(): Unit = {
+    val authTypeStr = authType + (if (authType == AuthType.Token) s"(${tokenType})" else "")
+    val endConditionStr = if (endConditionType == EndConditionType.MinutesElapsed) s"${endMinutes} minutes elapsed" else s"${endRequestCount} requests"
+    println("-----------------------------------------------------------------------------")
+    println("SIMULATION SETTINGS")
+    println("-----------------------------------------------------------------------------")
+    println()
+    println(s"Org:${org}  App:${app}  Collection:${collectionType}")
+    println(s"CreateOrg:${createOrg}  CreateApp:${createApp}  LoadEntities:${loadEntities}")
+    println(s"ScenarioType:${scenarioType}  AuthType:${authTypeStr}")
+    println()
+    println(s"Entity Type:${entityType}  Prefix:${entityPrefix}")
+    println()
+    println(s"Overall: NumEntities:${totalNumEntities}  Seed:${overallEntitySeed}  Workers:${entityWorkerCount}")
+    println(s"Worker:  NumEntities:${numEntities}  Seed:${entitySeed}  WorkerNum:${entityWorkerNum}")
+    println()
+    println(s"Ramp: Users:${rampUsers}  Time:${rampTime}")
+    println(s"Constant: UsersPerSec:${constantUsersPerSec}  Time:${constantUsersDuration}")
+    println(s"End Condition:${endConditionStr}")
+    println()
+    println("-----------------------------------------------------------------------------")
+  }
+
+  printSettingsSummary()
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bfc2be2b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index 2e13a6c..8151cb1 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -70,5 +70,9 @@ class ConfigurableSimulation extends Simulation {
     println(s"scenarioType ${Settings.scenarioType} not found.")
   }
 
+  after(
+    Settings.printSettingsSummary()
+  )
+
 }
 


[05/21] incubator-usergrid git commit: USERGRID-871: refactor Gatling load testing code

Posted by to...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.female.first.txt
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.female.first.txt b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.female.first.txt
new file mode 100644
index 0000000..7d534d2
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/datafiles/dist.female.first.txt
@@ -0,0 +1,4275 @@
+MARY           2.629  2.629      1
+PATRICIA       1.073  3.702      2
+LINDA          1.035  4.736      3
+BARBARA        0.980  5.716      4
+ELIZABETH      0.937  6.653      5
+JENNIFER       0.932  7.586      6
+MARIA          0.828  8.414      7
+SUSAN          0.794  9.209      8
+MARGARET       0.768  9.976      9
+DOROTHY        0.727 10.703     10
+LISA           0.704 11.407     11
+NANCY          0.669 12.075     12
+KAREN          0.667 12.742     13
+BETTY          0.666 13.408     14
+HELEN          0.663 14.071     15
+SANDRA         0.629 14.700     16
+DONNA          0.583 15.282     17
+CAROL          0.565 15.848     18
+RUTH           0.562 16.410     19
+SHARON         0.522 16.932     20
+MICHELLE       0.519 17.451     21
+LAURA          0.510 17.961     22
+SARAH          0.508 18.469     23
+KIMBERLY       0.504 18.973     24
+DEBORAH        0.494 19.467     25
+JESSICA        0.490 19.958     26
+SHIRLEY        0.482 20.439     27
+CYNTHIA        0.469 20.908     28
+ANGELA         0.468 21.376     29
+MELISSA        0.462 21.839     30
+BRENDA         0.455 22.293     31
+AMY            0.451 22.745     32
+ANNA           0.440 23.185     33
+REBECCA        0.430 23.615     34
+VIRGINIA       0.430 24.044     35
+KATHLEEN       0.424 24.468     36
+PAMELA         0.416 24.884     37
+MARTHA         0.412 25.297     38
+DEBRA          0.408 25.704     39
+AMANDA         0.404 26.108     40
+STEPHANIE      0.400 26.508     41
+CAROLYN        0.385 26.893     42
+CHRISTINE      0.382 27.275     43
+MARIE          0.379 27.655     44
+JANET          0.379 28.034     45
+CATHERINE      0.373 28.408     46
+FRANCES        0.370 28.777     47
+ANN            0.364 29.141     48
+JOYCE          0.364 29.505     49
+DIANE          0.359 29.864     50
+ALICE          0.357 30.221     51
+JULIE          0.348 30.568     52
+HEATHER        0.337 30.905     53
+TERESA         0.336 31.241     54
+DORIS          0.335 31.577     55
+GLORIA         0.335 31.912     56
+EVELYN         0.322 32.233     57
+JEAN           0.315 32.548     58
+CHERYL         0.315 32.863     59
+MILDRED        0.313 33.176     60
+KATHERINE      0.313 33.489     61
+JOAN           0.306 33.795     62
+ASHLEY         0.303 34.098     63
+JUDITH         0.297 34.395     64
+ROSE           0.296 34.691     65
+JANICE         0.285 34.975     66
+KELLY          0.283 35.258     67
+NICOLE         0.281 35.539     68
+JUDY           0.276 35.815     69
+CHRISTINA      0.275 36.090     70
+KATHY          0.272 36.362     71
+THERESA        0.271 36.633     72
+BEVERLY        0.267 36.900     73
+DENISE         0.264 37.164     74
+TAMMY          0.259 37.423     75
+IRENE          0.252 37.675     76
+JANE           0.250 37.925     77
+LORI           0.248 38.173     78
+RACHEL         0.242 38.415     79
+MARILYN        0.241 38.657     80
+ANDREA         0.236 38.893     81
+KATHRYN        0.234 39.127     82
+LOUISE         0.229 39.356     83
+SARA           0.229 39.584     84
+ANNE           0.228 39.812     85
+JACQUELINE     0.228 40.040     86
+WANDA          0.226 40.266     87
+BONNIE         0.223 40.489     88
+JULIA          0.223 40.711     89
+RUBY           0.221 40.932     90
+LOIS           0.220 41.153     91
+TINA           0.220 41.372     92
+PHYLLIS        0.219 41.591     93
+NORMA          0.218 41.809     94
+PAULA          0.217 42.026     95
+DIANA          0.216 42.242     96
+ANNIE          0.216 42.458     97
+LILLIAN        0.211 42.669     98
+EMILY          0.208 42.877     99
+ROBIN          0.208 43.085    100
+PEGGY          0.208 43.293    101
+CRYSTAL        0.207 43.500    102
+GLADYS         0.205 43.705    103
+RITA           0.204 43.908    104
+DAWN           0.202 44.111    105
+CONNIE         0.200 44.311    106
+FLORENCE       0.200 44.511    107
+TRACY          0.197 44.708    108
+EDNA           0.197 44.904    109
+TIFFANY        0.195 45.100    110
+CARMEN         0.195 45.295    111
+ROSA           0.194 45.489    112
+CINDY          0.192 45.681    113
+GRACE          0.189 45.869    114
+WENDY          0.185 46.055    115
+VICTORIA       0.180 46.235    116
+EDITH          0.179 46.414    117
+KIM            0.178 46.592    118
+SHERRY         0.178 46.770    119
+SYLVIA         0.177 46.947    120
+JOSEPHINE      0.177 47.123    121
+THELMA         0.175 47.298    122
+SHANNON        0.175 47.473    123
+SHEILA         0.175 47.648    124
+ETHEL          0.174 47.822    125
+ELLEN          0.173 47.995    126
+ELAINE         0.173 48.168    127
+MARJORIE       0.173 48.341    128
+CARRIE         0.171 48.512    129
+CHARLOTTE      0.169 48.680    130
+MONICA         0.166 48.847    131
+ESTHER         0.166 49.013    132
+PAULINE        0.165 49.178    133
+EMMA           0.165 49.342    134
+JUANITA        0.164 49.506    135
+ANITA          0.162 49.669    136
+RHONDA         0.162 49.830    137
+HAZEL          0.161 49.991    138
+AMBER          0.160 50.151    139
+EVA            0.159 50.310    140
+DEBBIE         0.157 50.467    141
+APRIL          0.154 50.621    142
+LESLIE         0.154 50.775    143
+CLARA          0.153 50.928    144
+LUCILLE        0.153 51.081    145
+JAMIE          0.153 51.235    146
+JOANNE         0.150 51.385    147
+ELEANOR        0.150 51.535    148
+VALERIE        0.149 51.684    149
+DANIELLE       0.149 51.833    150
+MEGAN          0.147 51.981    151
+ALICIA         0.146 52.126    152
+SUZANNE        0.145 52.272    153
+MICHELE        0.145 52.417    154
+GAIL           0.145 52.562    155
+BERTHA         0.143 52.704    156
+DARLENE        0.142 52.847    157
+VERONICA       0.142 52.989    158
+JILL           0.142 53.131    159
+ERIN           0.141 53.272    160
+GERALDINE      0.141 53.413    161
+LAUREN         0.137 53.550    162
+CATHY          0.137 53.687    163
+JOANN          0.136 53.823    164
+LORRAINE       0.135 53.958    165
+LYNN           0.135 54.093    166
+SALLY          0.135 54.228    167
+REGINA         0.133 54.360    168
+ERICA          0.130 54.490    169
+BEATRICE       0.130 54.620    170
+DOLORES        0.129 54.749    171
+BERNICE        0.128 54.877    172
+AUDREY         0.127 55.003    173
+YVONNE         0.126 55.129    174
+ANNETTE        0.125 55.255    175
+JUNE           0.125 55.380    176
+SAMANTHA       0.124 55.504    177
+MARION         0.122 55.626    178
+DANA           0.122 55.748    179
+STACY          0.121 55.869    180
+ANA            0.120 55.989    181
+RENEE          0.120 56.109    182
+IDA            0.118 56.227    183
+VIVIAN         0.118 56.346    184
+ROBERTA        0.117 56.463    185
+HOLLY          0.117 56.580    186
+BRITTANY       0.117 56.697    187
+MELANIE        0.116 56.813    188
+LORETTA        0.115 56.928    189
+YOLANDA        0.115 57.043    190
+JEANETTE       0.115 57.158    191
+LAURIE         0.114 57.271    192
+KATIE          0.113 57.385    193
+KRISTEN        0.111 57.496    194
+VANESSA        0.111 57.607    195
+ALMA           0.111 57.718    196
+SUE            0.111 57.829    197
+ELSIE          0.110 57.939    198
+BETH           0.110 58.049    199
+JEANNE         0.109 58.158    200
+VICKI          0.109 58.267    201
+CARLA          0.107 58.374    202
+TARA           0.107 58.482    203
+ROSEMARY       0.107 58.589    204
+EILEEN         0.105 58.694    205
+TERRI          0.105 58.799    206
+GERTRUDE       0.103 58.902    207
+LUCY           0.103 59.005    208
+TONYA          0.102 59.107    209
+ELLA           0.101 59.208    210
+STACEY         0.101 59.308    211
+WILMA          0.099 59.408    212
+GINA           0.099 59.506    213
+KRISTIN        0.099 59.605    214
+JESSIE         0.098 59.703    215
+NATALIE        0.098 59.801    216
+AGNES          0.098 59.899    217
+VERA           0.098 59.997    218
+WILLIE         0.097 60.094    219
+CHARLENE       0.097 60.191    220
+BESSIE         0.096 60.287    221
+DELORES        0.095 60.382    222
+MELINDA        0.094 60.477    223
+PEARL          0.094 60.571    224
+ARLENE         0.094 60.665    225
+MAUREEN        0.092 60.757    226
+COLLEEN        0.092 60.849    227
+ALLISON        0.092 60.941    228
+TAMARA         0.092 61.033    229
+JOY            0.091 61.124    230
+GEORGIA        0.091 61.215    231
+CONSTANCE      0.091 61.305    232
+LILLIE         0.090 61.396    233
+CLAUDIA        0.090 61.485    234
+JACKIE         0.090 61.575    235
+MARCIA         0.090 61.665    236
+TANYA          0.089 61.754    237
+NELLIE         0.089 61.843    238
+MINNIE         0.089 61.931    239
+MARLENE        0.088 62.020    240
+HEIDI          0.088 62.108    241
+GLENDA         0.088 62.195    242
+LYDIA          0.086 62.281    243
+VIOLA          0.086 62.367    244
+COURTNEY       0.086 62.453    245
+MARIAN         0.086 62.539    246
+STELLA         0.085 62.623    247
+CAROLINE       0.085 62.708    248
+DORA           0.084 62.792    249
+JO             0.083 62.875    250
+VICKIE         0.082 62.957    251
+MATTIE         0.081 63.038    252
+TERRY          0.080 63.118    253
+MAXINE         0.079 63.198    254
+IRMA           0.079 63.277    255
+MABEL          0.078 63.355    256
+MARSHA         0.078 63.434    257
+MYRTLE         0.078 63.511    258
+LENA           0.077 63.589    259
+CHRISTY        0.077 63.665    260
+DEANNA         0.076 63.742    261
+PATSY          0.076 63.818    262
+HILDA          0.075 63.893    263
+GWENDOLYN      0.074 63.967    264
+JENNIE         0.073 64.040    265
+NORA           0.073 64.113    266
+MARGIE         0.072 64.185    267
+NINA           0.072 64.257    268
+CASSANDRA      0.072 64.329    269
+LEAH           0.072 64.401    270
+PENNY          0.071 64.472    271
+KAY            0.071 64.543    272
+PRISCILLA      0.071 64.614    273
+NAOMI          0.071 64.684    274
+CAROLE         0.071 64.755    275
+BRANDY         0.070 64.825    276
+OLGA           0.070 64.895    277
+BILLIE         0.069 64.964    278
+DIANNE         0.069 65.033    279
+TRACEY         0.069 65.102    280
+LEONA          0.069 65.171    281
+JENNY          0.068 65.239    282
+FELICIA        0.068 65.307    283
+SONIA          0.068 65.374    284
+MIRIAM         0.066 65.440    285
+VELMA          0.066 65.506    286
+BECKY          0.066 65.572    287
+BOBBIE         0.065 65.637    288
+VIOLET         0.065 65.702    289
+KRISTINA       0.065 65.767    290
+TONI           0.064 65.831    291
+MISTY          0.063 65.894    292
+MAE            0.063 65.957    293
+SHELLY         0.062 66.019    294
+DAISY          0.062 66.081    295
+RAMONA         0.062 66.143    296
+SHERRI         0.062 66.205    297
+ERIKA          0.061 66.267    298
+KATRINA        0.061 66.328    299
+CLAIRE         0.061 66.388    300
+LINDSEY        0.060 66.448    301
+LINDSAY        0.060 66.507    302
+GENEVA         0.059 66.567    303
+GUADALUPE      0.059 66.626    304
+BELINDA        0.059 66.685    305
+MARGARITA      0.059 66.743    306
+SHERYL         0.059 66.802    307
+CORA           0.058 66.860    308
+FAYE           0.058 66.917    309
+ADA            0.057 66.975    310
+NATASHA        0.057 67.032    311
+SABRINA        0.057 67.089    312
+ISABEL         0.057 67.146    313
+MARGUERITE     0.056 67.202    314
+HATTIE         0.056 67.257    315
+HARRIET        0.056 67.313    316
+MOLLY          0.055 67.368    317
+CECILIA        0.055 67.424    318
+KRISTI         0.055 67.479    319
+BRANDI         0.055 67.534    320
+BLANCHE        0.055 67.589    321
+SANDY          0.055 67.644    322
+ROSIE          0.055 67.699    323
+JOANNA         0.055 67.754    324
+IRIS           0.055 67.808    325
+EUNICE         0.054 67.863    326
+ANGIE          0.054 67.917    327
+INEZ           0.053 67.970    328
+LYNDA          0.053 68.023    329
+MADELINE       0.052 68.075    330
+AMELIA         0.052 68.127    331
+ALBERTA        0.052 68.179    332
+GENEVIEVE      0.051 68.230    333
+MONIQUE        0.051 68.282    334
+JODI           0.051 68.333    335
+JANIE          0.051 68.385    336
+MAGGIE         0.051 68.436    337
+KAYLA          0.051 68.487    338
+SONYA          0.051 68.538    339
+JAN            0.051 68.589    340
+LEE            0.051 68.641    341
+KRISTINE       0.051 68.691    342
+CANDACE        0.051 68.742    343
+FANNIE         0.050 68.792    344
+MARYANN        0.050 68.843    345
+OPAL           0.050 68.893    346
+ALISON         0.050 68.943    347
+YVETTE         0.050 68.993    348
+MELODY         0.050 69.043    349
+LUZ            0.049 69.092    350
+SUSIE          0.049 69.142    351
+OLIVIA         0.049 69.191    352
+FLORA          0.049 69.240    353
+SHELLEY        0.049 69.288    354
+KRISTY         0.048 69.337    355
+MAMIE          0.048 69.385    356
+LULA           0.048 69.433    357
+LOLA           0.048 69.482    358
+VERNA          0.048 69.530    359
+BEULAH         0.048 69.577    360
+ANTOINETTE     0.048 69.625    361
+CANDICE        0.046 69.671    362
+JUANA          0.046 69.717    363
+JEANNETTE      0.046 69.763    364
+PAM            0.046 69.809    365
+KELLI          0.046 69.854    366
+HANNAH         0.045 69.899    367
+WHITNEY        0.045 69.944    368
+BRIDGET        0.045 69.989    369
+KARLA          0.044 70.034    370
+CELIA          0.044 70.078    371
+LATOYA         0.043 70.121    372
+PATTY          0.043 70.165    373
+SHELIA         0.043 70.208    374
+GAYLE          0.043 70.251    375
+DELLA          0.043 70.294    376
+VICKY          0.043 70.336    377
+LYNNE          0.043 70.379    378
+SHERI          0.042 70.421    379
+MARIANNE       0.042 70.463    380
+KARA           0.041 70.504    381
+JACQUELYN      0.041 70.544    382
+ERMA           0.041 70.585    383
+BLANCA         0.041 70.626    384
+MYRA           0.040 70.666    385
+LETICIA        0.040 70.706    386
+PAT            0.040 70.746    387
+KRISTA         0.040 70.786    388
+ROXANNE        0.040 70.826    389
+ANGELICA       0.039 70.865    390
+JOHNNIE        0.039 70.905    391
+ROBYN          0.039 70.944    392
+FRANCIS        0.039 70.983    393
+ADRIENNE       0.039 71.022    394
+ROSALIE        0.039 71.061    395
+ALEXANDRA      0.039 71.100    396
+BROOKE         0.039 71.139    397
+BETHANY        0.039 71.177    398
+SADIE          0.039 71.216    399
+BERNADETTE     0.039 71.254    400
+TRACI          0.038 71.293    401
+JODY           0.038 71.331    402
+KENDRA         0.038 71.369    403
+JASMINE        0.038 71.407    404
+NICHOLE        0.038 71.445    405
+RACHAEL        0.038 71.483    406
+CHELSEA        0.038 71.520    407
+MABLE          0.038 71.558    408
+ERNESTINE      0.038 71.596    409
+MURIEL         0.038 71.634    410
+MARCELLA       0.037 71.671    411
+ELENA          0.037 71.708    412
+KRYSTAL        0.037 71.745    413
+ANGELINA       0.037 71.781    414
+NADINE         0.036 71.818    415
+KARI           0.036 71.853    416
+ESTELLE        0.036 71.889    417
+DIANNA         0.036 71.925    418
+PAULETTE       0.036 71.961    419
+LORA           0.036 71.996    420
+MONA           0.035 72.032    421
+DOREEN         0.035 72.067    422
+ROSEMARIE      0.035 72.102    423
+ANGEL          0.035 72.137    424
+DESIREE        0.035 72.172    425
+ANTONIA        0.035 72.207    426
+HOPE           0.034 72.241    427
+GINGER         0.034 72.274    428
+JANIS          0.034 72.308    429
+BETSY          0.034 72.342    430
+CHRISTIE       0.034 72.375    431
+FREDA          0.034 72.409    432
+MERCEDES       0.033 72.442    433
+MEREDITH       0.033 72.475    434
+LYNETTE        0.033 72.508    435
+TERI           0.033 72.541    436
+CRISTINA       0.033 72.573    437
+EULA           0.033 72.606    438
+LEIGH          0.032 72.638    439
+MEGHAN         0.032 72.670    440
+SOPHIA         0.032 72.702    441
+ELOISE         0.032 72.734    442
+ROCHELLE       0.032 72.766    443
+GRETCHEN       0.032 72.798    444
+CECELIA        0.032 72.829    445
+RAQUEL         0.031 72.860    446
+HENRIETTA      0.031 72.891    447
+ALYSSA         0.031 72.922    448
+JANA           0.031 72.953    449
+KELLEY         0.031 72.983    450
+GWEN           0.031 73.014    451
+KERRY          0.031 73.044    452
+JENNA          0.030 73.075    453
+TRICIA         0.030 73.105    454
+LAVERNE        0.030 73.135    455
+OLIVE          0.030 73.165    456
+ALEXIS         0.030 73.195    457
+TASHA          0.030 73.225    458
+SILVIA         0.029 73.254    459
+ELVIRA         0.029 73.284    460
+CASEY          0.029 73.313    461
+DELIA          0.029 73.342    462
+SOPHIE         0.029 73.372    463
+KATE           0.029 73.401    464
+PATTI          0.029 73.430    465
+LORENA         0.029 73.459    466
+KELLIE         0.029 73.488    467
+SONJA          0.029 73.517    468
+LILA           0.029 73.546    469
+LANA           0.029 73.575    470
+DARLA          0.029 73.604    471
+MAY            0.029 73.633    472
+MINDY          0.029 73.661    473
+ESSIE          0.029 73.690    474
+MANDY          0.029 73.719    475
+LORENE         0.028 73.747    476
+ELSA           0.028 73.775    477
+JOSEFINA       0.028 73.804    478
+JEANNIE        0.028 73.832    479
+MIRANDA        0.028 73.860    480
+DIXIE          0.028 73.888    481
+LUCIA          0.028 73.916    482
+MARTA          0.028 73.944    483
+FAITH          0.028 73.972    484
+LELA           0.028 73.999    485
+JOHANNA        0.028 74.027    486
+SHARI          0.028 74.055    487
+CAMILLE        0.028 74.082    488
+TAMI           0.027 74.110    489
+SHAWNA         0.027 74.137    490
+ELISA          0.027 74.164    491
+EBONY          0.027 74.192    492
+MELBA          0.027 74.219    493
+ORA            0.027 74.246    494
+NETTIE         0.027 74.273    495
+TABITHA        0.027 74.300    496
+OLLIE          0.027 74.327    497
+JAIME          0.027 74.354    498
+WINIFRED       0.027 74.381    499
+KRISTIE        0.027 74.408    500
+MARINA         0.027 74.435    501
+ALISHA         0.027 74.462    502
+AIMEE          0.027 74.488    503
+RENA           0.027 74.515    504
+MYRNA          0.026 74.541    505
+MARLA          0.026 74.567    506
+TAMMIE         0.026 74.593    507
+LATASHA        0.026 74.619    508
+BONITA         0.026 74.645    509
+PATRICE        0.026 74.671    510
+RONDA          0.026 74.697    511
+SHERRIE        0.026 74.722    512
+ADDIE          0.026 74.748    513
+FRANCINE       0.025 74.773    514
+DELORIS        0.025 74.799    515
+STACIE         0.025 74.824    516
+ADRIANA        0.025 74.849    517
+CHERI          0.025 74.874    518
+SHELBY         0.025 74.899    519
+ABIGAIL        0.025 74.924    520
+CELESTE        0.025 74.949    521
+JEWEL          0.025 74.974    522
+CARA           0.025 74.999    523
+ADELE          0.025 75.024    524
+REBEKAH        0.025 75.048    525
+LUCINDA        0.025 75.073    526
+DORTHY         0.025 75.097    527
+CHRIS          0.024 75.122    528
+EFFIE          0.024 75.146    529
+TRINA          0.024 75.171    530
+REBA           0.024 75.195    531
+SHAWN          0.024 75.219    532
+SALLIE         0.024 75.244    533
+AURORA         0.024 75.268    534
+LENORA         0.024 75.292    535
+ETTA           0.024 75.317    536
+LOTTIE         0.024 75.341    537
+KERRI          0.024 75.365    538
+TRISHA         0.024 75.389    539
+NIKKI          0.024 75.413    540
+ESTELLA        0.024 75.438    541
+FRANCISCA      0.024 75.461    542
+JOSIE          0.024 75.485    543
+TRACIE         0.024 75.509    544
+MARISSA        0.024 75.533    545
+KARIN          0.024 75.557    546
+BRITTNEY       0.024 75.580    547
+JANELLE        0.024 75.604    548
+LOURDES        0.024 75.628    549
+LAUREL         0.024 75.651    550
+HELENE         0.024 75.675    551
+FERN           0.024 75.698    552
+ELVA           0.024 75.722    553
+CORINNE        0.024 75.745    554
+KELSEY         0.024 75.769    555
+INA            0.023 75.792    556
+BETTIE         0.023 75.816    557
+ELISABETH      0.023 75.839    558
+AIDA           0.023 75.862    559
+CAITLIN        0.023 75.886    560
+INGRID         0.023 75.909    561
+IVA            0.023 75.932    562
+EUGENIA        0.023 75.955    563
+CHRISTA        0.023 75.978    564
+GOLDIE         0.023 76.000    565
+CASSIE         0.023 76.023    566
+MAUDE          0.023 76.046    567
+JENIFER        0.023 76.068    568
+THERESE        0.022 76.091    569
+FRANKIE        0.022 76.113    570
+DENA           0.022 76.136    571
+LORNA          0.022 76.158    572
+JANETTE        0.022 76.180    573
+LATONYA        0.022 76.202    574
+CANDY          0.022 76.224    575
+MORGAN         0.022 76.247    576
+CONSUELO       0.022 76.269    577
+TAMIKA         0.022 76.291    578
+ROSETTA        0.022 76.313    579
+DEBORA         0.022 76.334    580
+CHERIE         0.022 76.356    581
+POLLY          0.022 76.378    582
+DINA           0.022 76.400    583
+JEWELL         0.021 76.421    584
+FAY            0.021 76.442    585
+JILLIAN        0.021 76.464    586
+DOROTHEA       0.021 76.485    587
+NELL           0.021 76.506    588
+TRUDY          0.021 76.527    589
+ESPERANZA      0.021 76.548    590
+PATRICA        0.021 76.570    591
+KIMBERLEY      0.021 76.591    592
+SHANNA         0.021 76.611    593
+HELENA         0.021 76.632    594
+CAROLINA       0.021 76.653    595
+CLEO           0.021 76.674    596
+STEFANIE       0.021 76.694    597
+ROSARIO        0.020 76.715    598
+OLA            0.020 76.735    599
+JANINE         0.020 76.756    600
+MOLLIE         0.020 76.776    601
+LUPE           0.020 76.796    602
+ALISA          0.020 76.816    603
+LOU            0.020 76.836    604
+MARIBEL        0.020 76.856    605
+SUSANNE        0.020 76.875    606
+BETTE          0.019 76.895    607
+SUSANA         0.019 76.914    608
+ELISE          0.019 76.933    609
+CECILE         0.019 76.953    610
+ISABELLE       0.019 76.972    611
+LESLEY         0.019 76.991    612
+JOCELYN        0.019 77.010    613
+PAIGE          0.019 77.030    614
+JONI           0.019 77.049    615
+RACHELLE       0.019 77.068    616
+LEOLA          0.019 77.087    617
+DAPHNE         0.019 77.106    618
+ALTA           0.019 77.125    619
+ESTER          0.019 77.144    620
+PETRA          0.019 77.162    621
+GRACIELA       0.019 77.181    622
+IMOGENE        0.019 77.200    623
+JOLENE         0.019 77.219    624
+KEISHA         0.019 77.237    625
+LACEY          0.018 77.256    626
+GLENNA         0.018 77.274    627
+GABRIELA       0.018 77.293    628
+KERI           0.018 77.311    629
+URSULA         0.018 77.329    630
+LIZZIE         0.018 77.347    631
+KIRSTEN        0.018 77.366    632
+SHANA          0.018 77.384    633
+ADELINE        0.018 77.402    634
+MAYRA          0.018 77.420    635
+JAYNE          0.018 77.438    636
+JACLYN         0.018 77.456    637
+GRACIE         0.018 77.474    638
+SONDRA         0.018 77.492    639
+CARMELA        0.018 77.509    640
+MARISA         0.018 77.527    641
+ROSALIND       0.018 77.545    642
+CHARITY        0.018 77.563    643
+TONIA          0.018 77.580    644
+BEATRIZ        0.018 77.598    645
+MARISOL        0.018 77.616    646
+CLARICE        0.018 77.633    647
+JEANINE        0.017 77.651    648
+SHEENA         0.017 77.668    649
+ANGELINE       0.017 77.685    650
+FRIEDA         0.017 77.703    651
+LILY           0.017 77.720    652
+ROBBIE         0.017 77.737    653
+SHAUNA         0.017 77.754    654
+MILLIE         0.017 77.771    655
+CLAUDETTE      0.017 77.788    656
+CATHLEEN       0.017 77.805    657
+ANGELIA        0.017 77.822    658
+GABRIELLE      0.017 77.839    659
+AUTUMN         0.017 77.856    660
+KATHARINE      0.017 77.873    661
+SUMMER         0.017 77.890    662
+JODIE          0.017 77.907    663
+STACI          0.017 77.923    664
+LEA            0.017 77.940    665
+CHRISTI        0.017 77.957    666
+JIMMIE         0.017 77.974    667
+JUSTINE        0.017 77.990    668
+ELMA           0.017 78.007    669
+LUELLA         0.017 78.023    670
+MARGRET        0.017 78.040    671
+DOMINIQUE      0.016 78.056    672
+SOCORRO        0.016 78.073    673
+RENE           0.016 78.089    674
+MARTINA        0.016 78.105    675
+MARGO          0.016 78.122    676
+MAVIS          0.016 78.138    677
+CALLIE         0.016 78.154    678
+BOBBI          0.016 78.170    679
+MARITZA        0.016 78.186    680
+LUCILE         0.016 78.202    681
+LEANNE         0.016 78.219    682
+JEANNINE       0.016 78.235    683
+DEANA          0.016 78.251    684
+AILEEN         0.016 78.267    685
+LORIE          0.016 78.282    686
+LADONNA        0.016 78.298    687
+WILLA          0.016 78.314    688
+MANUELA        0.016 78.330    689
+GALE           0.016 78.346    690
+SELMA          0.016 78.361    691
+DOLLY          0.016 78.377    692
+SYBIL          0.016 78.393    693
+ABBY           0.016 78.408    694
+LARA           0.016 78.424    695
+DALE           0.016 78.440    696
+IVY            0.016 78.455    697
+DEE            0.016 78.471    698
+WINNIE         0.016 78.486    699
+MARCY          0.016 78.502    700
+LUISA          0.016 78.517    701
+JERI           0.015 78.533    702
+MAGDALENA      0.015 78.548    703
+OFELIA         0.015 78.563    704
+MEAGAN         0.015 78.579    705
+AUDRA          0.015 78.594    706
+MATILDA        0.015 78.609    707
+LEILA          0.015 78.624    708
+CORNELIA       0.015 78.639    709
+BIANCA         0.015 78.654    710
+SIMONE         0.015 78.669    711
+BETTYE         0.015 78.684    712
+RANDI          0.015 78.699    713
+VIRGIE         0.015 78.713    714
+LATISHA        0.015 78.728    715
+BARBRA         0.015 78.743    716
+GEORGINA       0.015 78.758    717
+ELIZA          0.015 78.772    718
+LEANN          0.015 78.787    719
+BRIDGETTE      0.015 78.801    720
+RHODA          0.014 78.816    721
+HALEY          0.014 78.830    722
+ADELA          0.014 78.845    723
+NOLA           0.014 78.859    724
+BERNADINE      0.014 78.873    725
+FLOSSIE        0.014 78.887    726
+ILA            0.014 78.902    727
+GRETA          0.014 78.916    728
+RUTHIE         0.014 78.930    729
+NELDA          0.014 78.944    730
+MINERVA        0.014 78.958    731
+LILLY          0.014 78.973    732
+TERRIE         0.014 78.987    733
+LETHA          0.014 79.001    734
+HILARY         0.014 79.015    735
+ESTELA         0.014 79.029    736
+VALARIE        0.014 79.043    737
+BRIANNA        0.014 79.057    738
+ROSALYN        0.014 79.071    739
+EARLINE        0.014 79.085    740
+CATALINA       0.014 79.099    741
+AVA            0.014 79.113    742
+MIA            0.014 79.127    743
+CLARISSA       0.014 79.141    744
+LIDIA          0.014 79.155    745
+CORRINE        0.014 79.169    746
+ALEXANDRIA     0.014 79.183    747
+CONCEPCION     0.014 79.196    748
+TIA            0.014 79.210    749
+SHARRON        0.014 79.224    750
+RAE            0.014 79.238    751
+DONA           0.014 79.251    752
+ERICKA         0.014 79.265    753
+JAMI           0.014 79.278    754
+ELNORA         0.014 79.292    755
+CHANDRA        0.014 79.306    756
+LENORE         0.014 79.319    757
+NEVA           0.013 79.333    758
+MARYLOU        0.013 79.346    759
+MELISA         0.013 79.360    760
+TABATHA        0.013 79.373    761
+SERENA         0.013 79.386    762
+AVIS           0.013 79.400    763
+ALLIE          0.013 79.413    764
+SOFIA          0.013 79.426    765
+JEANIE         0.013 79.439    766
+ODESSA         0.013 79.453    767
+NANNIE         0.013 79.466    768
+HARRIETT       0.013 79.479    769
+LORAINE        0.013 79.492    770
+PENELOPE       0.013 79.505    771
+MILAGROS       0.013 79.518    772
+EMILIA         0.013 79.531    773
+BENITA         0.013 79.544    774
+ALLYSON        0.013 79.557    775
+ASHLEE         0.013 79.570    776
+TANIA          0.013 79.583    777
+TOMMIE         0.013 79.596    778
+ESMERALDA      0.013 79.608    779
+KARINA         0.013 79.621    780
+EVE            0.013 79.634    781
+PEARLIE        0.013 79.647    782
+ZELMA          0.013 79.659    783
+MALINDA        0.013 79.672    784
+NOREEN         0.013 79.684    785
+TAMEKA         0.013 79.697    786
+SAUNDRA        0.013 79.710    787
+HILLARY        0.013 79.722    788
+AMIE           0.013 79.735    789
+ALTHEA         0.012 79.747    790
+ROSALINDA      0.012 79.760    791
+JORDAN         0.012 79.772    792
+LILIA          0.012 79.784    793
+ALANA          0.012 79.797    794
+GAY            0.012 79.809    795
+CLARE          0.012 79.821    796
+ALEJANDRA      0.012 79.834    797
+ELINOR         0.012 79.846    798
+MICHAEL        0.012 79.858    799
+LORRIE         0.012 79.870    800
+JERRI          0.012 79.882    801
+DARCY          0.012 79.895    802
+EARNESTINE     0.012 79.907    803
+CARMELLA       0.012 79.919    804
+TAYLOR         0.012 79.931    805
+NOEMI          0.012 79.943    806
+MARCIE         0.012 79.954    807
+LIZA           0.012 79.966    808
+ANNABELLE      0.012 79.978    809
+LOUISA         0.012 79.990    810
+EARLENE        0.012 80.002    811
+MALLORY        0.012 80.014    812
+CARLENE        0.012 80.025    813
+NITA           0.012 80.037    814
+SELENA         0.012 80.049    815
+TANISHA        0.012 80.060    816
+KATY           0.012 80.072    817
+JULIANNE       0.012 80.083    818
+JOHN           0.012 80.095    819
+LAKISHA        0.011 80.106    820
+EDWINA         0.011 80.118    821
+MARICELA       0.011 80.129    822
+MARGERY        0.011 80.141    823
+KENYA          0.011 80.152    824
+DOLLIE         0.011 80.164    825
+ROXIE          0.011 80.175    826
+ROSLYN         0.011 80.187    827
+KATHRINE       0.011 80.198    828
+NANETTE        0.011 80.209    829
+CHARMAINE      0.011 80.221    830
+LAVONNE        0.011 80.232    831
+ILENE          0.011 80.243    832
+KRIS           0.011 80.255    833
+TAMMI          0.011 80.266    834
+SUZETTE        0.011 80.277    835
+CORINE         0.011 80.288    836
+KAYE           0.011 80.300    837
+JERRY          0.011 80.311    838
+MERLE          0.011 80.322    839
+CHRYSTAL       0.011 80.333    840
+LINA           0.011 80.344    841
+DEANNE         0.011 80.355    842
+LILIAN         0.011 80.366    843
+JULIANA        0.011 80.377    844
+ALINE          0.011 80.388    845
+LUANN          0.011 80.399    846
+KASEY          0.011 80.410    847
+MARYANNE       0.011 80.421    848
+EVANGELINE     0.011 80.432    849
+COLETTE        0.011 80.443    850
+MELVA          0.011 80.453    851
+LAWANDA        0.011 80.464    852
+YESENIA        0.011 80.475    853
+NADIA          0.011 80.486    854
+MADGE          0.011 80.497    855
+KATHIE         0.011 80.507    856
+EDDIE          0.011 80.518    857
+OPHELIA        0.011 80.529    858
+VALERIA        0.011 80.539    859
+NONA           0.011 80.550    860
+MITZI          0.011 80.561    861
+MARI           0.011 80.571    862
+GEORGETTE      0.011 80.582    863
+CLAUDINE       0.011 80.592    864
+FRAN           0.011 80.603    865
+ALISSA         0.011 80.613    866
+ROSEANN        0.010 80.624    867
+LAKEISHA       0.010 80.634    868
+SUSANNA        0.010 80.645    869
+REVA           0.010 80.655    870
+DEIDRE         0.010 80.665    871
+CHASITY        0.010 80.676    872
+SHEREE         0.010 80.686    873
+CARLY          0.010 80.697    874
+JAMES          0.010 80.707    875
+ELVIA          0.010 80.717    876
+ALYCE          0.010 80.728    877
+DEIRDRE        0.010 80.738    878
+GENA           0.010 80.748    879
+BRIANA         0.010 80.758    880
+ARACELI        0.010 80.769    881
+KATELYN        0.010 80.779    882
+ROSANNE        0.010 80.789    883
+WENDI          0.010 80.799    884
+TESSA          0.010 80.810    885
+BERTA          0.010 80.820    886
+MARVA          0.010 80.830    887
+IMELDA         0.010 80.840    888
+MARIETTA       0.010 80.850    889
+MARCI          0.010 80.860    890
+LEONOR         0.010 80.870    891
+ARLINE         0.010 80.880    892
+SASHA          0.010 80.890    893
+MADELYN        0.010 80.900    894
+JANNA          0.010 80.910    895
+JULIETTE       0.010 80.920    896
+DEENA          0.010 80.929    897
+AURELIA        0.010 80.939    898
+JOSEFA         0.010 80.949    899
+AUGUSTA        0.010 80.959    900
+LILIANA        0.010 80.968    901
+YOUNG          0.010 80.978    902
+CHRISTIAN      0.010 80.988    903
+LESSIE         0.010 80.997    904
+AMALIA         0.010 81.007    905
+SAVANNAH       0.010 81.017    906
+ANASTASIA      0.010 81.026    907
+VILMA          0.010 81.036    908
+NATALIA        0.010 81.045    909
+ROSELLA        0.010 81.055    910
+LYNNETTE       0.010 81.064    911
+CORINA         0.010 81.074    912
+ALFREDA        0.009 81.083    913
+LEANNA         0.009 81.093    914
+CAREY          0.009 81.102    915
+AMPARO         0.009 81.112    916
+COLEEN         0.009 81.121    917
+TAMRA          0.009 81.131    918
+AISHA          0.009 81.140    919
+WILDA          0.009 81.149    920
+KARYN          0.009 81.159    921
+CHERRY         0.009 81.168    922
+QUEEN          0.009 81.177    923
+MAURA          0.009 81.187    924
+MAI            0.009 81.196    925
+EVANGELINA     0.009 81.205    926
+ROSANNA        0.009 81.214    927
+HALLIE         0.009 81.224    928
+ERNA           0.009 81.233    929
+ENID           0.009 81.242    930
+MARIANA        0.009 81.251    931
+LACY           0.009 81.260    932
+JULIET         0.009 81.270    933
+JACKLYN        0.009 81.279    934
+FREIDA         0.009 81.288    935
+MADELEINE      0.009 81.297    936
+MARA           0.009 81.306    937
+HESTER         0.009 81.315    938
+CATHRYN        0.009 81.324    939
+LELIA          0.009 81.333    940
+CASANDRA       0.009 81.343    941
+BRIDGETT       0.009 81.352    942
+ANGELITA       0.009 81.361    943
+JANNIE         0.009 81.370    944
+DIONNE         0.009 81.379    945
+ANNMARIE       0.009 81.388    946
+KATINA         0.009 81.397    947
+BERYL          0.009 81.405    948
+PHOEBE         0.009 81.414    949
+MILLICENT      0.009 81.423    950
+KATHERYN       0.009 81.432    951
+DIANN          0.009 81.441    952
+CARISSA        0.009 81.450    953
+MARYELLEN      0.009 81.459    954
+LIZ            0.009 81.468    955
+LAURI          0.009 81.476    956
+HELGA          0.009 81.485    957
+GILDA          0.009 81.494    958
+ADRIAN         0.009 81.503    959
+RHEA           0.009 81.511    960
+MARQUITA       0.009 81.520    961
+HOLLIE         0.009 81.529    962
+TISHA          0.009 81.538    963
+TAMERA         0.009 81.546    964
+ANGELIQUE      0.009 81.555    965
+FRANCESCA      0.009 81.564    966
+BRITNEY        0.009 81.573    967
+KAITLIN        0.009 81.581    968
+LOLITA         0.009 81.590    969
+FLORINE        0.009 81.599    970
+ROWENA         0.009 81.607    971
+REYNA          0.009 81.616    972
+TWILA          0.009 81.624    973
+FANNY          0.009 81.633    974
+JANELL         0.009 81.641    975
+INES           0.009 81.650    976
+CONCETTA       0.009 81.658    977
+BERTIE         0.009 81.667    978
+ALBA           0.009 81.676    979
+BRIGITTE       0.009 81.684    980
+ALYSON         0.009 81.693    981
+VONDA          0.008 81.701    982
+PANSY          0.008 81.710    983
+ELBA           0.008 81.718    984
+NOELLE         0.008 81.726    985
+LETITIA        0.008 81.735    986
+KITTY          0.008 81.743    987
+DEANN          0.008 81.752    988
+BRANDIE        0.008 81.760    989
+LOUELLA        0.008 81.769    990
+LETA           0.008 81.777    991
+FELECIA        0.008 81.786    992
+SHARLENE       0.008 81.794    993
+LESA           0.008 81.802    994
+BEVERLEY       0.008 81.811    995
+ROBERT         0.008 81.819    996
+ISABELLA       0.008 81.827    997
+HERMINIA       0.008 81.836    998
+TERRA          0.008 81.844    999
+CELINA         0.008 81.852   1000
+TORI           0.008 81.861   1001
+OCTAVIA        0.008 81.869   1002
+JADE           0.008 81.877   1003
+DENICE         0.008 81.885   1004
+GERMAINE       0.008 81.894   1005
+SIERRA         0.008 81.902   1006
+MICHELL        0.008 81.910   1007
+CORTNEY        0.008 81.918   1008
+NELLY          0.008 81.926   1009
+DORETHA        0.008 81.934   1010
+SYDNEY         0.008 81.943   1011
+DEIDRA         0.008 81.951   1012
+MONIKA         0.008 81.959   1013
+LASHONDA       0.008 81.967   1014
+JUDI           0.008 81.975   1015
+CHELSEY        0.008 81.983   1016
+ANTIONETTE     0.008 81.991   1017
+MARGOT         0.008 81.999   1018
+BOBBY          0.008 82.007   1019
+ADELAIDE       0.008 82.015   1020
+NAN            0.008 82.023   1021
+LEEANN         0.008 82.030   1022
+ELISHA         0.008 82.038   1023
+DESSIE         0.008 82.046   1024
+LIBBY          0.008 82.054   1025
+KATHI          0.008 82.062   1026
+GAYLA          0.008 82.070   1027
+LATANYA        0.008 82.078   1028
+MINA           0.008 82.086   1029
+MELLISA        0.008 82.093   1030
+KIMBERLEE      0.008 82.101   1031
+JASMIN         0.008 82.109   1032
+RENAE          0.008 82.117   1033
+ZELDA          0.008 82.125   1034
+ELDA           0.008 82.132   1035
+MA             0.008 82.140   1036
+JUSTINA        0.008 82.148   1037
+GUSSIE         0.008 82.156   1038
+EMILIE         0.008 82.163   1039
+CAMILLA        0.008 82.171   1040
+ABBIE          0.008 82.179   1041
+ROCIO          0.008 82.186   1042
+KAITLYN        0.008 82.194   1043
+JESSE          0.008 82.202   1044
+EDYTHE         0.008 82.209   1045
+ASHLEIGH       0.008 82.217   1046
+SELINA         0.008 82.225   1047
+LAKESHA        0.008 82.232   1048
+GERI           0.008 82.240   1049
+ALLENE         0.008 82.248   1050
+PAMALA         0.008 82.255   1051
+MICHAELA       0.008 82.263   1052
+DAYNA          0.008 82.270   1053
+CARYN          0.008 82.278   1054
+ROSALIA        0.008 82.286   1055
+SUN            0.007 82.293   1056
+JACQULINE      0.007 82.301   1057
+REBECA         0.007 82.308   1058
+MARYBETH       0.007 82.315   1059
+KRYSTLE        0.007 82.323   1060
+IOLA           0.007 82.330   1061
+DOTTIE         0.007 82.338   1062
+BENNIE         0.007 82.345   1063
+BELLE          0.007 82.353   1064
+AUBREY         0.007 82.360   1065
+GRISELDA       0.007 82.367   1066
+ERNESTINA      0.007 82.375   1067
+ELIDA          0.007 82.382   1068
+ADRIANNE       0.007 82.390   1069
+DEMETRIA       0.007 82.397   1070
+DELMA          0.007 82.404   1071
+CHONG          0.007 82.412   1072
+JAQUELINE      0.007 82.419   1073
+DESTINY        0.007 82.427   1074
+ARLEEN         0.007 82.434   1075
+VIRGINA        0.007 82.441   1076
+RETHA          0.007 82.448   1077
+FATIMA         0.007 82.456   1078
+TILLIE         0.007 82.463   1079
+ELEANORE       0.007 82.470   1080
+CARI           0.007 82.478   1081
+TREVA          0.007 82.485   1082
+BIRDIE         0.007 82.492   1083
+WILHELMINA     0.007 82.499   1084
+ROSALEE        0.007 82.506   1085
+MAURINE        0.007 82.514   1086
+LATRICE        0.007 82.521   1087
+YONG           0.007 82.528   1088
+JENA           0.007 82.535   1089
+TARYN          0.007 82.542   1090
+ELIA           0.007 82.549   1091
+DEBBY          0.007 82.556   1092
+MAUDIE         0.007 82.564   1093
+JEANNA         0.007 82.571   1094
+DELILAH        0.007 82.578   1095
+CATRINA        0.007 82.585   1096
+SHONDA         0.007 82.592   1097
+HORTENCIA      0.007 82.599   1098
+THEODORA       0.007 82.606   1099
+TERESITA       0.007 82.613   1100
+ROBBIN         0.007 82.620   1101
+DANETTE        0.007 82.627   1102
+MARYJANE       0.007 82.634   1103
+FREDDIE        0.007 82.641   1104
+DELPHINE       0.007 82.648   1105
+BRIANNE        0.007 82.655   1106
+NILDA          0.007 82.662   1107
+DANNA          0.007 82.669   1108
+CINDI          0.007 82.676   1109
+BESS           0.007 82.683   1110
+IONA           0.007 82.690   1111
+HANNA          0.007 82.697   1112
+ARIEL          0.007 82.704   1113
+WINONA         0.007 82.711   1114
+VIDA           0.007 82.718   1115
+ROSITA         0.007 82.725   1116
+MARIANNA       0.007 82.731   1117
+WILLIAM        0.007 82.738   1118
+RACHEAL        0.007 82.745   1119
+GUILLERMINA    0.007 82.752   1120
+ELOISA         0.007 82.759   1121
+CELESTINE      0.007 82.766   1122
+CAREN          0.007 82.773   1123
+MALISSA        0.007 82.780   1124
+LONA           0.007 82.786   1125
+CHANTEL        0.007 82.793   1126
+SHELLIE        0.007 82.800   1127
+MARISELA       0.007 82.807   1128
+LEORA          0.007 82.814   1129
+AGATHA         0.007 82.820   1130
+SOLEDAD        0.007 82.827   1131
+MIGDALIA       0.007 82.834   1132
+IVETTE         0.007 82.840   1133
+CHRISTEN       0.007 82.847   1134
+ATHENA         0.007 82.854   1135
+JANEL          0.007 82.861   1136
+CHLOE          0.007 82.867   1137
+VEDA           0.007 82.874   1138
+PATTIE         0.007 82.881   1139
+TESSIE         0.007 82.887   1140
+TERA           0.007 82.894   1141
+MARILYNN       0.007 82.901   1142
+LUCRETIA       0.007 82.907   1143
+KARRIE         0.007 82.914   1144
+DINAH          0.007 82.920   1145
+DANIELA        0.007 82.927   1146
+ALECIA         0.007 82.934   1147
+ADELINA        0.007 82.940   1148
+VERNICE        0.007 82.947   1149
+SHIELA         0.007 82.953   1150
+PORTIA         0.007 82.960   1151
+MERRY          0.007 82.967   1152
+LASHAWN        0.007 82.973   1153
+DEVON          0.007 82.980   1154
+DARA           0.007 82.986   1155
+TAWANA         0.007 82.993   1156
+OMA            0.007 82.999   1157
+VERDA          0.007 83.006   1158
+CHRISTIN       0.007 83.012   1159
+ALENE          0.007 83.019   1160
+ZELLA          0.006 83.025   1161
+SANDI          0.006 83.032   1162
+RAFAELA        0.006 83.038   1163
+MAYA           0.006 83.045   1164
+KIRA           0.006 83.051   1165
+CANDIDA        0.006 83.058   1166
+ALVINA         0.006 83.064   1167
+SUZAN          0.006 83.071   1168
+SHAYLA         0.006 83.077   1169
+LYN            0.006 83.083   1170
+LETTIE         0.006 83.090   1171
+ALVA           0.006 83.096   1172
+SAMATHA        0.006 83.103   1173
+ORALIA         0.006 83.109   1174
+MATILDE        0.006 83.115   1175
+MADONNA        0.006 83.122   1176
+LARISSA        0.006 83.128   1177
+VESTA          0.006 83.134   1178
+RENITA         0.006 83.141   1179
+INDIA          0.006 83.147   1180
+DELOIS         0.006 83.153   1181
+SHANDA         0.006 83.159   1182
+PHILLIS        0.006 83.166   1183
+LORRI          0.006 83.172   1184
+ERLINDA        0.006 83.178   1185
+CRUZ           0.006 83.185   1186
+CATHRINE       0.006 83.191   1187
+BARB           0.006 83.197   1188
+ZOE            0.006 83.203   1189
+ISABELL        0.006 83.210   1190
+IONE           0.006 83.216   1191
+GISELA         0.006 83.222   1192
+CHARLIE        0.006 83.228   1193
+VALENCIA       0.006 83.235   1194
+ROXANNA        0.006 83.241   1195
+MAYME          0.006 83.247   1196
+KISHA          0.006 83.253   1197
+ELLIE          0.006 83.259   1198
+MELLISSA       0.006 83.266   1199
+DORRIS         0.006 83.272   1200
+DALIA          0.006 83.278   1201
+BELLA          0.006 83.284   1202
+ANNETTA        0.006 83.290   1203
+ZOILA          0.006 83.296   1204
+RETA           0.006 83.302   1205
+REINA          0.006 83.308   1206
+LAURETTA       0.006 83.315   1207
+KYLIE          0.006 83.321   1208
+CHRISTAL       0.006 83.327   1209
+PILAR          0.006 83.333   1210
+CHARLA         0.006 83.339   1211
+ELISSA         0.006 83.345   1212
+TIFFANI        0.006 83.351   1213
+TANA           0.006 83.357   1214
+PAULINA        0.006 83.363   1215
+LEOTA          0.006 83.369   1216
+BREANNA        0.006 83.375   1217
+JAYME          0.006 83.381   1218
+CARMEL         0.006 83.387   1219
+VERNELL        0.006 83.393   1220
+TOMASA         0.006 83.399   1221
+MANDI          0.006 83.405   1222
+DOMINGA        0.006 83.411   1223
+SANTA          0.006 83.417   1224
+MELODIE        0.006 83.423   1225
+LURA           0.006 83.429   1226
+ALEXA          0.006 83.435   1227
+TAMELA         0.006 83.441   1228
+RYAN           0.006 83.447   1229
+MIRNA          0.006 83.453   1230
+KERRIE         0.006 83.458   1231
+VENUS          0.006 83.464   1232
+NOEL           0.006 83.470   1233
+FELICITA       0.006 83.476   1234
+CRISTY         0.006 83.482   1235
+CARMELITA      0.006 83.488   1236
+BERNIECE       0.006 83.494   1237
+ANNEMARIE      0.006 83.500   1238
+TIARA          0.006 83.505   1239
+ROSEANNE       0.006 83.511   1240
+MISSY          0.006 83.517   1241
+CORI           0.006 83.523   1242
+ROXANA         0.006 83.529   1243
+PRICILLA       0.006 83.535   1244
+KRISTAL        0.006 83.540   1245
+JUNG           0.006 83.546   1246
+ELYSE          0.006 83.552   1247
+HAYDEE         0.006 83.558   1248
+ALETHA         0.006 83.564   1249
+BETTINA        0.006 83.569   1250
+MARGE          0.006 83.575   1251
+GILLIAN        0.006 83.581   1252
+FILOMENA       0.006 83.586   1253
+CHARLES        0.006 83.592   1254
+ZENAIDA        0.006 83.598   1255
+HARRIETTE      0.006 83.603   1256
+CARIDAD        0.006 83.609   1257
+VADA           0.006 83.615   1258
+UNA            0.006 83.620   1259
+ARETHA         0.006 83.626   1260
+PEARLINE       0.006 83.632   1261
+MARJORY        0.006 83.637   1262
+MARCELA        0.006 83.643   1263
+FLOR           0.006 83.648   1264
+EVETTE         0.006 83.654   1265
+ELOUISE        0.006 83.659   1266
+ALINA          0.006 83.665   1267
+TRINIDAD       0.006 83.671   1268
+DAVID          0.006 83.676   1269
+DAMARIS        0.006 83.682   1270
+CATHARINE      0.006 83.687   1271
+CARROLL        0.006 83.693   1272
+BELVA          0.006 83.698   1273
+NAKIA          0.005 83.704   1274
+MARLENA        0.005 83.709   1275
+LUANNE         0.005 83.715   1276
+LORINE         0.005 83.720   1277
+KARON          0.005 83.726   1278
+DORENE         0.005 83.731   1279
+DANITA         0.005 83.737   1280
+BRENNA         0.005 83.742   1281
+TATIANA        0.005 83.748   1282
+SAMMIE         0.005 83.753   1283
+LOUANN         0.005 83.759   1284
+LOREN          0.005 83.764   1285
+JULIANNA       0.005 83.770   1286
+ANDRIA         0.005 83.775   1287
+PHILOMENA      0.005 83.780   1288
+LUCILA         0.005 83.786   1289
+LEONORA        0.005 83.791   1290
+DOVIE          0.005 83.797   1291
+ROMONA         0.005 83.802   1292
+MIMI           0.005 83.808   1293
+JACQUELIN      0.005 83.813   1294
+GAYE           0.005 83.818   1295
+TONJA          0.005 83.824   1296
+MISTI          0.005 83.829   1297
+JOE            0.005 83.835   1298
+GENE           0.005 83.840   1299
+CHASTITY       0.005 83.845   1300
+STACIA         0.005 83.851   1301
+ROXANN         0.005 83.856   1302
+MICAELA        0.005 83.861   1303
+NIKITA         0.005 83.867   1304
+MEI            0.005 83.872   1305
+VELDA          0.005 83.877   1306
+MARLYS         0.005 83.882   1307
+JOHNNA         0.005 83.888   1308
+AURA           0.005 83.893   1309
+LAVERN         0.005 83.898   1310
+IVONNE         0.005 83.903   1311
+HAYLEY         0.005 83.909   1312
+NICKI          0.005 83.914   1313
+MAJORIE        0.005 83.919   1314
+HERLINDA       0.005 83.924   1315
+GEORGE         0.005 83.930   1316
+ALPHA          0.005 83.935   1317
+YADIRA         0.005 83.940   1318
+PERLA          0.005 83.945   1319
+GREGORIA       0.005 83.950   1320
+DANIEL         0.005 83.955   1321
+ANTONETTE      0.005 83.961   1322
+SHELLI         0.005 83.966   1323
+MOZELLE        0.005 83.971   1324
+MARIAH         0.005 83.976   1325
+JOELLE         0.005 83.981   1326
+CORDELIA       0.005 83.986   1327
+JOSETTE        0.005 83.992   1328
+CHIQUITA       0.005 83.997   1329
+TRISTA         0.005 84.002   1330
+LOUIS          0.005 84.007   1331
+LAQUITA        0.005 84.012   1332
+GEORGIANA      0.005 84.017   1333
+CANDI          0.005 84.022   1334
+SHANON         0.005 84.027   1335
+LONNIE         0.005 84.032   1336
+HILDEGARD      0.005 84.037   1337
+CECIL          0.005 84.042   1338
+VALENTINA      0.005 84.047   1339
+STEPHANY       0.005 84.052   1340
+MAGDA          0.005 84.057   1341
+KAROL          0.005 84.062   1342
+GERRY          0.005 84.067   1343
+GABRIELLA      0.005 84.072   1344
+TIANA          0.005 84.077   1345
+ROMA           0.005 84.082   1346
+RICHELLE       0.005 84.087   1347
+RAY            0.005 84.092   1348
+PRINCESS       0.005 84.097   1349
+OLETA          0.005 84.102   1350
+JACQUE         0.005 84.107   1351
+IDELLA         0.005 84.112   1352
+ALAINA         0.005 84.117   1353
+SUZANNA        0.005 84.122   1354
+JOVITA         0.005 84.127   1355
+BLAIR          0.005 84.132   1356
+TOSHA          0.005 84.137   1357
+RAVEN          0.005 84.142   1358
+NEREIDA        0.005 84.147   1359
+MARLYN         0.005 84.152   1360
+KYLA           0.005 84.157   1361
+JOSEPH         0.005 84.162   1362
+DELFINA        0.005 84.167   1363
+TENA           0.005 84.172   1364
+STEPHENIE      0.005 84.177   1365
+SABINA         0.005 84.182   1366
+NATHALIE       0.005 84.186   1367
+MARCELLE       0.005 84.191   1368
+GERTIE         0.005 84.196   1369
+DARLEEN        0.005 84.201   1370
+THEA           0.005 84.206   1371
+SHARONDA       0.005 84.211   1372
+SHANTEL        0.005 84.216   1373
+BELEN          0.005 84.221   1374
+VENESSA        0.005 84.225   1375
+ROSALINA       0.005 84.230   1376
+ONA            0.005 84.235   1377
+GENOVEVA       0.005 84.240   1378
+COREY          0.005 84.245   1379
+CLEMENTINE     0.005 84.250   1380
+ROSALBA        0.005 84.254   1381
+RENATE         0.005 84.259   1382
+RENATA         0.005 84.264   1383
+MI             0.005 84.269   1384
+IVORY          0.005 84.274   1385
+GEORGIANNA     0.005 84.278   1386
+FLOY           0.005 84.283   1387
+DORCAS         0.005 84.288   1388
+ARIANA         0.005 84.293   1389
+TYRA           0.005 84.298   1390
+THEDA          0.005 84.302   1391
+MARIAM         0.005 84.307   1392
+JULI           0.005 84.312   1393
+JESICA         0.005 84.317   1394
+DONNIE         0.005 84.321   1395
+VIKKI          0.005 84.326   1396
+VERLA          0.005 84.331   1397
+ROSELYN        0.005 84.336   1398
+MELVINA        0.005 84.340   1399
+JANNETTE       0.005 84.345   1400
+GINNY          0.005 84.350   1401
+DEBRAH         0.005 84.355   1402
+CORRIE         0.005 84.359   1403
+ASIA           0.005 84.364   1404
+VIOLETA        0.005 84.369   1405
+MYRTIS         0.005 84.374   1406
+LATRICIA       0.005 84.378   1407
+COLLETTE       0.005 84.383   1408
+CHARLEEN       0.005 84.388   1409
+ANISSA         0.005 84.392   1410
+VIVIANA        0.005 84.397   1411
+TWYLA          0.005 84.402   1412
+PRECIOUS       0.005 84.406   1413
+NEDRA          0.005 84.411   1414
+LATONIA        0.005 84.416   1415
+LAN            0.005 84.420   1416
+HELLEN         0.005 84.425   1417
+FABIOLA        0.005 84.430   1418
+ANNAMARIE      0.005 84.435   1419
+ADELL          0.005 84.439   1420
+SHARYN         0.005 84.444   1421
+CHANTAL        0.005 84.448   1422
+NIKI           0.005 84.453   1423
+MAUD           0.005 84.458   1424
+LIZETTE        0.005 84.462   1425
+LINDY          0.005 84.467   1426
+KIA            0.005 84.472   1427
+KESHA          0.005 84.476   1428
+JEANA          0.005 84.481   1429
+DANELLE        0.005 84.485   1430
+CHARLINE       0.005 84.490   1431
+CHANEL         0.005 84.495   1432
+CARROL         0.005 84.499   1433
+VALORIE        0.005 84.504   1434
+LIA            0.005 84.508   1435
+DORTHA         0.005 84.513   1436
+CRISTAL        0.005 84.518   1437
+SUNNY          0.005 84.522   1438
+LEONE          0.005 84.527   1439
+LEILANI        0.005 84.531   1440
+GERRI          0.005 84.536   1441
+DEBI           0.005 84.540   1442
+ANDRA          0.005 84.545   1443
+KESHIA         0.005 84.549   1444
+IMA            0.005 84.554   1445
+EULALIA        0.005 84.558   1446
+EASTER         0.005 84.563   1447
+DULCE          0.005 84.568   1448
+NATIVIDAD      0.004 84.572   1449
+LINNIE         0.004 84.577   1450
+KAMI           0.004 84.581   1451
+GEORGIE        0.004 84.586   1452
+CATINA         0.004 84.590   1453
+BROOK          0.004 84.594   1454
+ALDA           0.004 84.599   1455
+WINNIFRED      0.004 84.603   1456
+SHARLA         0.004 84.608   1457
+RUTHANN        0.004 84.612   1458
+MEAGHAN        0.004 84.617   1459
+MAGDALENE      0.004 84.621   1460
+LISSETTE       0.004 84.626   1461
+ADELAIDA       0.004 84.630   1462
+VENITA         0.004 84.635   1463
+TRENA          0.004 84.639   1464
+SHIRLENE       0.004 84.643   1465
+SHAMEKA        0.004 84.648   1466
+ELIZEBETH      0.004 84.652   1467
+DIAN           0.004 84.657   1468
+SHANTA         0.004 84.661   1469
+MICKEY         0.004 84.666   1470
+LATOSHA        0.004 84.670   1471
+CARLOTTA       0.004 84.674   1472
+WINDY          0.004 84.679   1473
+SOON           0.004 84.683   1474
+ROSINA         0.004 84.687   1475
+MARIANN        0.004 84.692   1476
+LEISA          0.004 84.696   1477
+JONNIE         0.004 84.701   1478
+DAWNA          0.004 84.705   1479
+CATHIE         0.004 84.709   1480
+BILLY          0.004 84.714   1481
+ASTRID         0.004 84.718   1482
+SIDNEY         0.004 84.722   1483
+LAUREEN        0.004 84.726   1484
+JANEEN         0.004 84.731   1485
+HOLLI          0.004 84.735   1486
+FAWN           0.004 84.739   1487
+VICKEY         0.004 84.744   1488
+TERESSA        0.004 84.748   1489
+SHANTE         0.004 84.752   1490
+RUBYE          0.004 84.756   1491
+MARCELINA      0.004 84.761   1492
+CHANDA         0.004 84.765   1493
+CARY           0.004 84.769   1494
+TERESE         0.004 84.774   1495
+SCARLETT       0.004 84.778   1496
+MARTY          0.004 84.782   1497
+MARNIE         0.004 84.786   1498
+LULU           0.004 84.790   1499
+LISETTE        0.004 84.795   1500
+JENIFFER       0.004 84.799   1501
+ELENOR         0.004 84.803   1502
+DORINDA        0.004 84.807   1503
+DONITA         0.004 84.812   1504
+CARMAN         0.004 84.816   1505
+BERNITA        0.004 84.820   1506
+ALTAGRACIA     0.004 84.824   1507
+ALETA          0.004 84.829   1508
+ADRIANNA       0.004 84.833   1509
+ZORAIDA        0.004 84.837   1510
+RONNIE         0.004 84.841   1511
+NICOLA         0.004 84.845   1512
+LYNDSEY        0.004 84.850   1513
+KENDALL        0.004 84.854   1514
+JANINA         0.004 84.858   1515
+CHRISSY        0.004 84.862   1516
+AMI            0.004 84.867   1517
+STARLA         0.004 84.871   1518
+PHYLIS         0.004 84.875   1519
+PHUONG         0.004 84.879   1520
+KYRA           0.004 84.883   1521
+CHARISSE       0.004 84.887   1522
+BLANCH         0.004 84.892   1523
+SANJUANITA     0.004 84.896   1524
+RONA           0.004 84.900   1525
+NANCI          0.004 84.904   1526
+MARILEE        0.004 84.908   1527
+MARANDA        0.004 84.912   1528
+CORY           0.004 84.916   1529
+BRIGETTE       0.004 84.921   1530
+SANJUANA       0.004 84.925   1531
+MARITA         0.004 84.929   1532
+KASSANDRA      0.004 84.933   1533
+JOYCELYN       0.004 84.937   1534
+IRA            0.004 84.941   1535
+FELIPA         0.004 84.945   1536
+CHELSIE        0.004 84.949   1537
+BONNY          0.004 84.954   1538
+MIREYA         0.004 84.958   1539
+LORENZA        0.004 84.962   1540
+KYONG          0.004 84.966   1541
+ILEANA         0.004 84.970   1542
+CANDELARIA     0.004 84.974   1543
+TONY           0.004 84.978   1544
+TOBY           0.004 84.982   1545
+SHERIE         0.004 84.986   1546
+OK             0.004 84.990   1547
+MARK           0.004 84.994   1548
+LUCIE          0.004 84.998   1549
+LEATRICE       0.004 85.002   1550
+LAKESHIA       0.004 85.006   1551
+GERDA          0.004 85.010   1552
+EDIE           0.004 85.014   1553
+BAMBI          0.004 85.018   1554
+MARYLIN        0.004 85.023   1555
+LAVON          0.004 85.027   1556
+HORTENSE       0.004 85.031   1557
+GARNET         0.004 85.035   1558
+EVIE           0.004 85.039   1559
+TRESSA         0.004 85.043   1560
+SHAYNA         0.004 85.047   1561
+LAVINA         0.004 85.051   1562
+KYUNG          0.004 85.055   1563
+JEANETTA       0.004 85.059   1564
+SHERRILL       0.004 85.062   1565
+SHARA          0.004 85.066   1566
+PHYLISS        0.004 85.070   1567
+MITTIE         0.004 85.074   1568
+ANABEL         0.004 85.078   1569
+ALESIA         0.004 85.082   1570
+THUY           0.004 85.086   1571
+TAWANDA        0.004 85.090   1572
+RICHARD        0.004 85.094   1573
+JOANIE         0.004 85.098   1574
+TIFFANIE       0.004 85.102   1575
+LASHANDA       0.004 85.106   1576
+KARISSA        0.004 85.110   1577
+ENRIQUETA      0.004 85.114   1578
+DARIA          0.004 85.117   1579
+DANIELLA       0.004 85.121   1580
+CORINNA        0.004 85.125   1581
+ALANNA         0.004 85.129   1582
+ABBEY          0.004 85.133   1583
+ROXANE         0.004 85.137   1584
+ROSEANNA       0.004 85.141   1585
+MAGNOLIA       0.004 85.145   1586
+LIDA           0.004 85.148   1587
+KYLE           0.004 85.152   1588
+JOELLEN        0.004 85.156   1589
+ERA            0.004 85.160   1590
+CORAL          0.004 85.164   1591
+CARLEEN        0.004 85.168   1592
+TRESA          0.004 85.172   1593
+PEGGIE         0.004 85.175   1594
+NOVELLA        0.004 85.179   1595
+NILA           0.004 85.183   1596
+MAYBELLE       0.004 85.187   1597
+JENELLE        0.004 85.191   1598
+CARINA         0.004 85.195   1599
+NOVA           0.004 85.198   1600
+MELINA         0.004 85.202   1601
+MARQUERITE     0.004 85.206   1602
+MARGARETTE     0.004 85.210   1603
+JOSEPHINA      0.004 85.214   1604
+EVONNE         0.004 85.217   1605
+DEVIN          0.004 85.221   1606
+CINTHIA        0.004 85.225   1607
+ALBINA         0.004 85.229   1608
+TOYA           0.004 85.233   1609
+TAWNYA         0.004 85.236   1610
+SHERITA        0.004 85.240   1611
+SANTOS         0.004 85.244   1612
+MYRIAM         0.004 85.248   1613
+LIZABETH       0.004 85.251   1614
+LISE           0.004 85.255   1615
+KEELY          0.004 85.259   1616
+JENNI          0.004 85.263   1617
+GISELLE        0.004 85.266   1618
+CHERYLE        0.004 85.270   1619
+ARDITH         0.004 85.274   1620
+ARDIS          0.004 85.278   1621
+ALESHA         0.004 85.282   1622
+ADRIANE        0.004 85.285   1623
+SHAINA         0.004 85.289   1624
+LINNEA         0.004 85.293   1625
+KAROLYN        0.004 85.297   1626
+HONG           0.004 85.300   1627
+FLORIDA        0.004 85.304   1628
+FELISHA        0.004 85.308   1629
+DORI           0.004 85.311   1630
+DARCI          0.004 85.315   1631
+ARTIE          0.004 85.319   1632
+ARMIDA         0.004 85.323   1633
+ZOLA           0.004 85.326   1634
+XIOMARA        0.004 85.330   1635
+VERGIE         0.004 85.334   1636
+SHAMIKA        0.004 85.338   1637
+NENA           0.004 85.341   1638
+NANNETTE       0.004 85.345   1639
+MAXIE          0.004 85.349   1640
+LOVIE          0.004 85.352   1641
+JEANE          0.004 85.356   1642
+JAIMIE         0.004 85.360   1643
+INGE           0.004 85.363   1644
+FARRAH         0.004 85.367   1645
+ELAINA         0.004 85.371   1646
+CAITLYN        0.004 85.375   1647
+STARR          0.004 85.378   1648
+FELICITAS      0.004 85.382   1649
+CHERLY         0.004 85.386   1650
+CARYL          0.004 85.389   1651
+YOLONDA        0.004 85.393   1652
+YASMIN         0.004 85.397   1653
+TEENA          0.004 85.400   1654
+PRUDENCE       0.004 85.404   1655
+PENNIE         0.004 85.407   1656
+NYDIA          0.004 85.411   1657
+MACKENZIE      0.004 85.415   1658
+ORPHA          0.004 85.418   1659
+MARVEL         0.004 85.422   1660
+LIZBETH        0.004 85.426   1661
+LAURETTE       0.004 85.429   1662
+JERRIE         0.004 85.433   1663
+HERMELINDA     0.004 85.436   1664
+CAROLEE        0.004 85.440   1665
+TIERRA         0.004 85.444   1666
+MIRIAN         0.004 85.447   1667
+META           0.004 85.451   1668
+MELONY         0.004 85.454   1669
+KORI           0.004 85.458   1670
+JENNETTE       0.004 85.462   1671
+JAMILA         0.004 85.465   1672
+ENA            0.004 85.469   1673
+ANH            0.004 85.472   1674
+YOSHIKO        0.004 85.476   1675
+SUSANNAH       0.004 85.479   1676
+SALINA         0.004 85.483   1677
+RHIANNON       0.004 85.486   1678
+JOLEEN         0.004 85.490   1679
+CRISTINE       0.004 85.494   1680
+ASHTON         0.004 85.497   1681
+ARACELY        0.004 85.501   1682
+TOMEKA         0.004 85.504   1683
+SHALONDA       0.004 85.508   1684
+MARTI          0.004 85.511   1685
+LACIE          0.004 85.515   1686
+KALA           0.004 85.518   1687
+JADA           0.004 85.522   1688
+ILSE           0.004 85.525   1689
+HAILEY         0.004 85.529   1690
+BRITTANI       0.004 85.532   1691
+ZONA           0.003 85.536   1692
+SYBLE          0.003 85.539   1693
+SHERRYL        0.003 85.543   1694
+RANDY          0.003 85.546   1695
+NIDIA          0.003 85.550   1696
+MARLO          0.003 85.553   1697
+KANDICE        0.003 85.557   1698
+KANDI          0.003 85.560   1699
+DEB            0.003 85.564   1700
+DEAN           0.003 85.567   1701
+AMERICA        0.003 85.571   1702
+ALYCIA         0.003 85.574   1703
+TOMMY          0.003 85.578   1704
+RONNA          0.003 85.581   1705
+NORENE         0.003 85.585   1706
+MERCY          0.003 85.588   1707
+JOSE           0.003 85.591   1708
+INGEBORG       0.003 85.595   1709
+GIOVANNA       0.003 85.598   1710
+GEMMA          0.003 85.602   1711
+CHRISTEL       0.003 85.605   1712
+AUDRY          0.003 85.609   1713
+ZORA           0.003 85.612   1714
+VITA           0.003 85.616   1715
+VAN            0.003 85.619   1716
+TRISH          0.003 85.622   1717
+STEPHAINE      0.003 85.626   1718
+SHIRLEE        0.003 85.629   1719
+SHANIKA        0.003 85.633   1720
+MELONIE        0.003 85.636   1721
+MAZIE          0.003 85.639   1722
+JAZMIN         0.003 85.643   1723
+INGA           0.003 85.646   1724
+HOA            0.003 85.650   1725
+HETTIE         0.003 85.653   1726
+GERALYN        0.003 85.657   1727
+FONDA          0.003 85.660   1728
+ESTRELLA       0.003 85.663   1729
+ADELLA         0.003 85.667   1730
+SU             0.003 85.670   1731
+SARITA         0.003 85.674   1732
+RINA           0.003 85.677   1733
+MILISSA        0.003 85.680   1734
+MARIBETH       0.003 85.684   1735
+GOLDA          0.003 85.687   1736
+EVON           0.003 85.691   1737
+ETHELYN        0.003 85.694   1738
+ENEDINA        0.003 85.697   1739
+CHERISE        0.003 85.701   1740
+CHANA          0.003 85.704   1741
+VELVA          0.003 85.708   1742
+TAWANNA        0.003 85.711   1743
+SADE           0.003 85.714   1744
+MIRTA          0.003 85.718   1745
+LI             0.003 85.721   1746
+KARIE          0.003 85.724   1747
+JACINTA        0.003 85.728   1748
+ELNA           0.003 85.731   1749
+DAVINA         0.003 85.734   1750
+CIERRA         0.003 85.738   1751
+ASHLIE         0.003 85.741   1752
+ALBERTHA       0.003 85.744   1753
+TANESHA        0.003 85.748   1754
+STEPHANI       0.003 85.751   1755
+NELLE          0.003 85.754   1756
+MINDI          0.003 85.758   1757
+LU             0.003 85.761   1758
+LORINDA        0.003 85.764   1759
+LARUE          0.003 85.768   1760
+FLORENE        0.003 85.771   1761
+DEMETRA        0.003 85.774   1762
+DEDRA          0.003 85.778   1763
+CIARA          0.003 85.781   1764
+CHANTELLE      0.003 85.784   1765
+ASHLY          0.003 85.788   1766
+SUZY           0.003 85.791   1767
+ROSALVA        0.003 85.794   1768
+NOELIA         0.003 85.798   1769
+LYDA           0.003 85.801   1770
+LEATHA         0.003 85.804   1771
+KRYSTYNA       0.003 85.808   1772
+KRISTAN        0.003 85.811   1773
+KARRI          0.003 85.814   1774
+DARLINE        0.003 85.817   1775
+DARCIE         0.003 85.821   1776
+CINDA          0.003 85.824   1777
+CHEYENNE       0.003 85.827   1778
+CHERRIE        0.003 85.831   1779
+AWILDA         0.003 85.834   1780
+ALMEDA         0.003 85.837   1781
+ROLANDA        0.003 85.840   1782
+LANETTE        0.003 85.844   1783
+JERILYN        0.003 85.847   1784
+GISELE         0.003 85.850   1785
+EVALYN         0.003 85.854   1786
+CYNDI          0.003 85.857   1787
+CLETA          0.003 85.860   1788
+CARIN          0.003 85.863   1789
+ZINA           0.003 85.867   1790
+ZENA           0.003 85.870   1791
+VELIA          0.003 85.873   1792
+TANIKA         0.003 85.876   1793
+PAUL           0.003 85.880   1794
+CHARISSA       0.003 85.883   1795
+THOMAS         0.003 85.886   1796
+TALIA          0.003 85.889   1797
+MARGARETE      0.003 85.892   1798
+LAVONDA        0.003 85.896   1799
+KAYLEE         0.003 85.899   1800
+KATHLENE       0.003 85.902   1801
+JONNA          0.003 85.905   1802
+IRENA          0.003 85.908   1803
+ILONA          0.003 85.912   1804
+IDALIA         0.003 85.915   1805
+CANDIS         0.003 85.918   1806
+CANDANCE       0.003 85.921   1807
+BRANDEE        0.003 85.924   1808
+ANITRA         0.003 85.928   1809
+ALIDA          0.003 85.931   1810
+SIGRID         0.003 85.934   1811
+NICOLETTE      0.003 85.937   1812
+MARYJO         0.003 85.940   1813
+LINETTE        0.003 85.944   1814
+HEDWIG         0.003 85.947   1815
+CHRISTIANA     0.003 85.950   1816
+CASSIDY        0.003 85.953   1817
+ALEXIA         0.003 85.956   1818
+TRESSIE        0.003 85.959   1819
+MODESTA        0.003 85.962   1820
+LUPITA         0.003 85.966   1821
+LITA           0.003 85.969   1822
+GLADIS         0.003 85.972   1823
+EVELIA         0.003 85.975   1824
+DAVIDA         0.003 85.978   1825
+CHERRI         0.003 85.981   1826
+CECILY         0.003 85.984   1827
+ASHELY         0.003 85.988   1828
+ANNABEL        0.003 85.991   1829
+AGUSTINA       0.003 85.994   1830
+WANITA         0.003 85.997   1831
+SHIRLY         0.003 86.000   1832
+ROSAURA        0.003 86.003   1833
+HULDA          0.003 86.006   1834
+EUN            0.003 86.009   1835
+BAILEY         0.003 86.013   1836
+YETTA          0.003 86.016   1837
+VERONA         0.003 86.019   1838
+THOMASINA      0.003 86.022   1839
+SIBYL          0.003 86.025   1840
+SHANNAN        0.003 86.028   1841
+MECHELLE       0.003 86.031   1842
+LUE            0.003 86.034   1843
+LEANDRA        0.003 86.037   1844
+LANI           0.003 86.040   1845
+KYLEE          0.003 86.043   1846
+KANDY          0.003 86.046   1847
+JOLYNN         0.003 86.049   1848
+FERNE          0.003 86.053   1849
+EBONI          0.003 86.056   1850
+CORENE         0.003 86.059   1851
+ALYSIA         0.003 86.062   1852
+ZULA           0.003 86.065   1853
+NADA           0.003 86.068   1854
+MOIRA          0.003 86.071   1855
+LYNDSAY        0.003 86.074   1856
+LORRETTA       0.003 86.077   1857
+JUAN           0.003 86.080   1858
+JAMMIE         0.003 86.083   1859
+HORTENSIA      0.003 86.086   1860
+GAYNELL        0.003 86.089   1861
+CAMERON        0.003 86.092   1862
+ADRIA          0.003 86.095   1863
+VINA           0.003 86.098   1864
+VICENTA        0.003 86.101   1865
+TANGELA        0.003 86.104   1866
+STEPHINE       0.003 86.107   1867
+NORINE         0.003 86.110   1868
+NELLA          0.003 86.113   1869
+LIANA          0.003 86.116   1870
+LESLEE         0.003 86.119   1871
+KIMBERELY      0.003 86.122   1872
+ILIANA         0.003 86.125   1873
+GLORY          0.003 86.128   1874
+FELICA         0.003 86.131   1875
+EMOGENE        0.003 86.134   1876
+ELFRIEDE       0.003 86.137   1877
+EDEN           0.003 86.140   1878
+EARTHA         0.003 86.144   1879
+CARMA          0.003 86.147   1880
+BEA            0.003 86.150   1881
+OCIE           0.003 86.153   1882
+MARRY          0.003 86.156   1883
+LENNIE         0.003 86.158   1884
+KIARA          0.003 86.161   1885
+JACALYN        0.003 86.164   1886
+CARLOTA        0.003 86.167   1887
+ARIELLE        0.003 86.170   1888
+YU             0.003 86.173   1889
+STAR           0.003 86.176   1890
+OTILIA         0.003 86.179   1891
+KIRSTIN        0.003 86.182   1892
+KACEY          0.003 86.185   1893
+JOHNETTA       0.003 86.188   1894
+JOEY           0.003 86.191   1895
+JOETTA         0.003 86.194   1896
+JERALDINE      0.003 86.197   1897
+JAUNITA        0.003 86.200   1898
+ELANA          0.003 86.203   1899
+DORTHEA        0.003 86.206   1900
+CAMI           0.003 86.209   1901
+AMADA          0.003 86.212   1902
+ADELIA         0.003 86.215   1903
+VERNITA        0.003 86.218   1904
+TAMAR          0.003 86.221   1905
+SIOBHAN        0.003 86.223   1906
+RENEA          0.003 86.226   1907
+RASHIDA        0.003 86.229   1908
+OUIDA          0.003 86.232   1909
+ODELL          0.003 86.235   1910
+NILSA          0.003 86.238   1911
+MERYL          0.003 86.241   1912
+KRISTYN        0.003 86.244   1913
+JULIETA        0.003 86.247   1914
+DANICA         0.003 86.250   1915
+BREANNE        0.003 86.253   1916
+AUREA          0.003 86.256   1917
+ANGLEA         0.003 86.259   1918
+SHERRON        0.003 86.261   1919
+ODETTE         0.003 86.264   1920
+MALIA          0.003 86.267   1921
+LORELEI        0.003 86.270   1922
+LIN            0.003 86.273   1923
+LEESA          0.003 86.276   1924
+KENNA          0.003 86.279   1925
+KATHLYN        0.003 86.282   1926
+FIONA          0.003 86.285   1927
+CHARLETTE      0.003 86.287   1928
+SUZIE          0.003 86.290   1929
+SHANTELL       0.003 86.293   1930
+SABRA          0.003 86.296   1931
+RACQUEL        0.003 86.299   1932
+MYONG          0.003 86.302   1933
+MIRA           0.003 86.305   1934
+MARTINE        0.003 86.307   1935
+LUCIENNE       0.003 86.310   1936
+LAVADA         0.003 86.313   1937
+JULIANN        0.003 86.316   1938
+JOHNIE         0.003 86.319   1939
+ELVERA         0.003 86.322   1940
+DELPHIA        0.003 86.325   1941
+CLAIR          0.003 86.327   1942
+CHRISTIANE     0.003 86.330   1943
+CHAROLETTE     0.003 86.333   1944
+CARRI          0.003 86.336   1945
+AUGUSTINE      0.003 86.339   1946
+ASHA           0.003 86.342   1947
+ANGELLA        0.003 86.345   1948
+PAOLA          0.003 86.347   1949
+NINFA          0.003 86.350   1950
+LEDA           0.003 86.353   1951
+LAI            0.003 86.356   1952
+EDA            0.003 86.359   1953
+SUNSHINE       0.003 86.361   1954
+STEFANI        0.003 86.364   1955
+SHANELL        0.003 86.367   1956
+PALMA          0.003 86.370   1957
+MACHELLE       0.003 86.373   1958
+LISSA          0.003 86.375   1959
+KECIA          0.003 86.378   1960
+KATHRYNE       0.003 86.381   1961
+KARLENE        0.003 86.384   1962
+JULISSA        0.003 86.387   1963
+JETTIE         0.003 86.389   1964
+JENNIFFER      0.003 86.392   1965
+HUI            0.003 86.395   1966
+CORRINA        0.003 86.398   1967
+CHRISTOPHER    0.003 86.401   1968
+CAROLANN       0.003 86.403   1969
+ALENA          0.003 86.406   1970
+TESS           0.003 86.409   1971
+ROSARIA        0.003 86.412   1972
+MYRTICE        0.003 86.414   1973
+MARYLEE        0.003 86.417   1974
+LIANE          0.003 86.420   1975
+KENYATTA       0.003 86.423   1976
+JUDIE          0.003 86.426   1977
+JANEY          0.003 86.428   1978
+IN             0.003 86.431   1979
+ELMIRA         0.003 86.434   1980
+ELDORA         0.003 86.437   1981
+DENNA          0.003 86.439   1982
+CRISTI         0.003 86.442   1983
+CATHI          0.003 86.445   1984
+ZAIDA          0.003 86.448   1985
+VONNIE         0.003 86.450   1986
+VIVA           0.003 86.453   1987
+VERNIE         0.003 86.456   1988
+ROSALINE       0.003 86.459   1989
+MARIELA        0.003 86.461   1990
+LUCIANA        0.003 86.464   1991
+LESLI          0.003 86.467   1992
+KARAN          0.003 86.469   1993
+FELICE         0.003 86.472   1994
+DENEEN         0.003 86.475   1995
+ADINA          0.003 86.478   1996
+WYNONA         0.003 86.480   1997
+TARSHA         0.003 86.483   1998
+SHERON         0.003 86.486   1999
+SHASTA         0.003 86.488   2000
+SHANITA        0.003 86.491   2001
+SHANI          0.003 86.494   2002
+SHANDRA        0.003 86.497   2003
+RANDA          0.003 86.499   2004
+PINKIE         0.003 86.502   2005
+PARIS          0.003 86.505   2006
+NELIDA         0.003 86.507   2007
+MARILOU        0.003 86.510   2008
+LYLA           0.003 86.513   2009
+LAURENE        0.003 86.515   2010
+LACI           0.003 86.518   2011
+JOI            0.003 86.521   2012
+JANENE         0.003 86.524   2013
+DOROTHA        0.003 86.526   2014
+DANIELE        0.003 86.529   2015
+DANI           0.003 86.532   2016
+CAROLYNN       0.003 86.534   2017
+CARLYN         0.003 86.537   2018
+BERENICE       0.003 86.540   2019
+AYESHA         0.003 86.542   2020
+ANNELIESE      0.003 86.545   2021
+ALETHEA        0.003 86.548   2022
+THERSA         0.003 86.551   2023
+TAMIKO         0.003 86.553   2024
+RUFINA         0.003 86.556   2025
+OLIVA          0.003 86.559   2026
+MOZELL         0.003 86.561   2027
+MARYLYN        0.003 86.564   2028
+MADISON        0.003 86.567   2029
+KRISTIAN       0.003 86.569   2030
+KATHYRN        0.003 86.572   2031
+KASANDRA       0.003 86.575   2032
+KANDACE        0.003 86.577   2033
+JANAE          0.003 86.580   2034
+GABRIEL        0.003 86.583   2035
+DOMENICA       0.003 86.585   2036
+DEBBRA         0.003 86.588   2037
+DANNIELLE      0.003 86.591   2038
+CHUN           0.003 86.593   2039
+BUFFY          0.003 86.596   2040
+BARBIE         0.003 86.599   2041
+ARCELIA        0.003 86.601   2042
+AJA            0.003 86.604   2043
+ZENOBIA        0.003 86.607   2044
+SHAREN         0.003 86.609   2045
+SHAREE         0.003 86.612   2046
+PATRICK        0.003 86.614   2047
+PAGE           0.003 86.617   2048
+MY             0.003 86.620   2049
+LAVINIA        0.003 86.622   2050
+KUM            0.003 86.625   2051
+KACIE          0.003 86.628   2052
+JACKELINE      0.003 86.630   2053
+HUONG          0.003 86.633   2054
+FELISA         0.003 86.636   2055
+EMELIA         0.003 86.638   2056
+ELEANORA       0.003 86.641   2057
+CYTHIA         0.003 86.644   2058
+CRISTIN        0.003 86.646   2059
+CLYDE          0.003 86.649   2060
+CLARIBEL       0.003 86.651   2061
+CARON          0.003 86.654   2062
+ANASTACIA      0.003 86.657   2063
+ZULMA          0.003 86.659   2064
+ZANDRA         0.003 86.662   2065
+YOKO           0.003 86.665   2066
+TENISHA        0.003 86.667   2067
+SUSANN         0.003 86.670   2068
+SHERILYN       0.003 86.672   2069
+SHAY           0.003 86.675   2070
+SHAWANDA       0.003 86.678   2071
+SABINE         0.003 86.680   2072
+ROMANA         0.003 86.683   2073
+MATHILDA       0.003 86.685   2074
+LINSEY         0.003 86.688   2075
+KEIKO          0.003 86.691   2076
+JOANA          0.003 86.693   2077
+ISELA          0.003 86.696   2078
+GRETTA         0.003 86.698   2079
+GEORGETTA      0.003 86.701   2080
+EUGENIE        0.003 86.704   2081
+DUSTY          0.003 86.706   2082
+DESIRAE        0.003 86.709   2083
+DELORA         0.003 86.711   2084
+CORAZON        0.003 86.714   2085
+ANTONINA       0.003 86.717   2086
+ANIKA          0.003 86.719   2087
+WILLENE        0.003 86.722   2088
+TRACEE         0.003 86.724   2089
+TAMATHA        0.003 86.727   2090
+REGAN          0.003 86.730   2091
+NICHELLE       0.003 86.732   2092
+MICKIE         0.003 86.735   2093
+MAEGAN         0.003 86.737   2094
+LUANA          0.003 86.740   2095
+LANITA         0.003 86.742   2096
+KELSIE         0.003 86.745   2097
+EDELMIRA       0.003 86.748   2098
+BREE           0.003 86.750   2099
+AFTON          0.003 86.753   2100
+TEODORA        0.003 86.755   2101
+TAMIE          0.003 86.758   2102
+SHENA          0.003 86.760   2103
+MEG            0.003 86.763   2104
+LINH           0.003 86.765   2105
+KELI           0.003 86.768   2106
+KACI           0.003 86.771   2107
+DANYELLE       0.003 86.773   2108
+BRITT          0.003 86.776   2109
+ARLETTE        0.003 86.778   2110
+ALBERTINE      0.003 86.781   2111
+ADELLE         0.003 86.783   2112
+TIFFINY        0.003 86.786   2113
+STORMY         0.003 86.788   2114
+SIMONA         0.003 86.791   2115
+NUMBERS        0.003 86.793   2116
+NICOLASA       0.003 86.796   2117
+NICHOL         0.003 86.798   2118
+NIA            0.003 86.801   2119
+NAKISHA        0.003 86.803   2120
+MEE            0.003 86.806   2121
+MAIRA          0.003 86.808   2122
+LOREEN         0.003 86.811   2123
+KIZZY          0.003 86.813   2124
+JOHNNY         0.003 86.816   2125
+JAY            0.003 86.818   2126
+FALLON         0.003 86.821   2127
+CHRISTENE      0.003 86.823   2128
+BOBBYE         0.003 86.826   2129
+ANTHONY        0.003 86.828   2130
+YING           0.002 86.831   2131
+VINCENZA       0.002 86.833   2132
+TANJA          0.002 86.836   2133
+RUBIE          0.002 86.838   2134
+RONI           0.002 86.841   2135
+QUEENIE        0.002 86.843   2136
+MARGARETT      0.002 86.846   2137
+KIMBERLI       0.002 86.848   2138
+IRMGARD        0.002 86.851   2139
+IDELL          0.002 86.853   2140
+HILMA          0.002 86.856   2141
+EVELINA        0.002 86.858   2142
+ESTA           0.002 86.861   2143
+EMILEE         0.002 86.863   2144
+DENNISE        0.002 86.866   2145
+DANIA          0.002 86.868   2146
+CARL           0.002 86.871   2147
+CARIE          0.002 86.873   2148
+ANTONIO        0.002 86.876   2149
+WAI            0.002 86.878   2150
+SANG           0.002 86.881   2151
+RISA           0.002 86.883   2152
+RIKKI          0.002 86.885   2153
+PARTICIA       0.002 86.888   2154
+MUI            0.002 86.890   2155
+MASAKO         0.002 86.893   2156
+MARIO          0.002 86.895   2157
+LUVENIA        0.002 86.898   2158
+LOREE          0.002 86.900   2159
+LONI           0.002 86.903   2160
+LIEN           0.002 86.905   2161
+KEVIN          0.002 86.907   2162
+GIGI           0.002 86.910   2163
+FLORENCIA      0.002 86.912   2164
+DORIAN         0.002 86.915   2165
+DENITA         0.002 86.917   2166
+DALLAS         0.002 86.920   2167
+CHI            0.002 86.922   2168
+BILLYE         0.002 86.925   2169
+ALEXANDER      0.002 86.927   2170
+TOMIKA         0.002 86.929   2171
+SHARITA        0.002 86.932   2172
+RANA           0.002 86.934   2173
+NIKOLE         0.002 86.937   2174
+NEOMA          0.002 86.939   2175
+MARGARITE      0.002 86.942   2176
+MADALYN        0.002 86.944   2177
+LUCINA         0.002 86.946   2178
+LAILA          0.002 86.949   2179
+KALI           0.002 86.951   2180
+JENETTE        0.002 86.954   2181
+GABRIELE       0.002 86.956   2182
+EVELYNE        0.002 86.958   2183
+ELENORA        0.002 86.961   2184
+CLEMENTINA     0.002 86.963   2185
+ALEJANDRINA    0.002 86.966   2186
+ZULEMA         0.002 86.968   2187
+VIOLETTE       0.002 86.971   2188
+VANNESSA       0.002 86.973   2189
+THRESA         0.002 86.975   2190
+RETTA          0.002 86.978   2191
+PIA            0.002 86.980   2192
+PATIENCE       0.002 86.982   2193
+NOELLA         0.002 86.985   2194
+NICKIE         0.002 86.987   2195
+JONELL         0.002 86.990   2196
+DELTA          0.002 86.992   2197
+CHUNG          0.002 86.994   2198
+CHAYA          0.002 86.997   2199
+CAMELIA        0.002 86.999   2200
+BETHEL         0.002 87.002   2201
+ANYA           0.002 87.004   2202
+ANDREW         0.002 87.006   2203
+THANH          0.002 87.009   2204
+SUZANN         0.002 87.011   2205
+SPRING         0.002 87.013   2206
+SHU            0.002 87.016   2207
+MILA           0.002 87.018   2208
+LILLA          0.002 87.020   2209
+LAVERNA        0.002 87.023   2210
+KEESHA         0.002 87.025   2211
+KATTIE         0.002 87.028   2212
+GIA            0.002 87.030   2213
+GEORGENE       0.002 87.032   2214
+EVELINE        0.002 87.035   2215
+ESTELL         0.002 87.037   2216
+ELIZBETH       0.002 87.039   2217
+VIVIENNE       0.002 87.042   2218
+VALLIE         0.002 87.044   2219
+TRUDIE         0.002 87.046   2220
+STEPHANE       0.002 87.049   2221
+MICHEL         0.002 87.051   2222
+MAGALY         0.002 87.053   2223
+MADIE          0.002 87.056   2224
+KENYETTA       0.002 87.058   2225
+KARREN         0.002 87.060   2226
+JANETTA        0.002 87.063   2227
+HERMINE        0.002 87.065   2228
+HARMONY        0.002 87.067   2229
+DRUCILLA       0.002 87.069   2230
+DEBBI          0.002 87.072   2231
+CELESTINA      0.002 87.074   2232
+CANDIE         0.002 87.076   2233
+BRITNI         0.002 87.079   2234
+BECKIE         0.002 87.081   2235
+AMINA          0.002 87.083   2236
+ZITA           0.002 87.086   2237
+YUN            0.002 87.088   2238
+YOLANDE        0.002 87.090   2239
+VIVIEN         0.002 87.093   2240
+VERNETTA       0.002 87.095   2241
+TRUDI          0.002 87.097   2242
+SOMMER         0.002 87.099   2243
+PEARLE         0.002 87.102   2244
+PATRINA        0.002 87.104   2245
+OSSIE          0.002 87.106   2246
+NICOLLE        0.002 87.109   2247
+LOYCE          0.002 87.111   2248
+LETTY          0.002 87.113   2249
+LARISA         0.002 87.116   2250
+KATHARINA      0.002 87.118   2251
+JOSELYN        0.002 87.120   2252
+JONELLE        0.002 87.122   2253
+JENELL         0.002 87.125   2254
+IESHA          0.002 87.127   2255
+HEIDE          0.002 87.129   2256
+FLORINDA       0.002 87.132   2257
+FLORENTINA     0.002 87.134   2258
+FLO            0.002 87.136   2259
+ELODIA         0.002 87.138   2260
+DORINE         0.002 87.141   2261
+BRUNILDA       0.002 87.143   2262
+BRIGID         0.002 87.145   2263
+ASHLI          0.002 87.148   2264
+ARDELLA        0.002 87.150   2265
+TWANA          0.002 87.152   2266
+THU            0.002 87.154   2267
+TARAH          0.002 87.157   2268
+SUNG           0.002 87.159   2269
+SHEA           0.002 87.161   2270
+SHAVON         0.002 87.163   2271
+SHANE          0.002 87.166   2272
+SERINA         0.002 87.168   2273
+RAYNA          0.002 87.170   2274
+RAMONITA       0.002 87.173   2275
+NGA            0.002 87.175   2276
+MARGURITE      0.002 87.177   2277
+LUCRECIA       0.002 87.179   2278
+KOURTNEY       0.002 87.182   2279
+KATI           0.002 87.184   2280
+JESUS          0.002 87.186   2281
+JESENIA        0.002 87.188   2282
+DIAMOND        0.002 87.191   2283
+CRISTA         0.002 87.193   2284
+AYANA          0.002 87.195   2285
+ALICA          0.002 87.197   2286
+ALIA           0.002 87.200   2287
+VINNIE         0.002 87.202   2288
+SUELLEN        0.002 87.204   2289
+ROMELIA        0.002 87.206   2290
+RACHELL        0.002 87.209   2291
+PIPER          0.002 87.211   2292
+OLYMPIA        0.002 87.213   2293
+MICHIKO        0.002 87.215   2294
+KATHALEEN      0.002 87.217   2295
+JOLIE          0.002 87.220   2296
+JESSI          0.002 87.222   2297
+JANESSA        0.002 87.224   2298
+HANA           0.002 87.226   2299
+HA             0.002 87.229   2300
+ELEASE         0.002 87.231   2301
+CARLETTA       0.002 87.233   2302
+BRITANY        0.002 87.235   2303
+SHONA          0.002 87.238   2304
+SALOME         0.002 87.240   2305
+ROSAMOND       0.002 87.242   2306
+REGENA         0.002 87.244   2307
+RAINA          0.002 87.246   2308
+NGOC           0.002 87.249   2309
+NELIA          0.002 87.251   2310
+LOUVENIA       0.002 87.253   2311
+LESIA          0.002 87.255   2312
+LATRINA        0.002 87.257   2313
+LATICIA        0.002 87.260   2314
+LARHONDA       0.002 87.262   2315
+JINA           0.002 87.264   2316
+JACKI          0.002 87.266   2317
+HOLLIS         0.002 87.268   2318
+HOLLEY         0.002 87.271   2319
+EMMY           0.002 87.273   2320
+DEEANN         0.002 87.275   2321
+CORETTA        0.002 87.277   2322
+ARNETTA        0.002 87.279   2323
+VELVET         0.002 87.281   2324
+THALIA         0.002 87.284   2325
+SHANICE        0.002 87.286   2326
+NETA           0.002 87.288   2327
+MIKKI          0.002 87.290   2328
+MICKI          0.002 87.292   2329
+LONNA          0.002 87.294   2330
+LEANA          0.002 87.297   2331
+LASHUNDA       0.002 87.299   2332
+KILEY          0.002 87.301   2333
+JOYE           0.002 87.303   2334
+JACQULYN       0.002 87.305   2335
+IGNACIA        0.002 87.307   2336
+HYUN           0.002 87.310   2337
+HIROKO         0.002 87.312   2338
+HENRY          0.002 87.314   2339
+HENRIETTE      0.002 87.316   2340
+ELAYNE         0.002 87.318   2341
+DELINDA        0.002 87.320   2342
+DARNELL        0.002 87.323   2343
+DAHLIA         0.002 87.325   2344
+COREEN         0.002 87.327   2345
+CONSUELA       0.002 87.329   2346
+CONCHITA       0.002 87.331   2347
+CELINE         0.002 87.333   2348
+BABETTE        0.002 87.336   2349
+AYANNA         0.002 87.338   2350
+ANETTE         0.002 87.340   2351
+ALBERTINA      0.002 87.342   2352
+SKYE           0.002 87.344   2353
+SHAWNEE        0.002 87.346   2354
+SHANEKA        0.002 87.349   2355
+QUIANA         0.002 87.351   2356
+PAMELIA        0.002 87.353   2357
+MIN            0.002 87.355   2358
+MERRI          0.002 87.357   2359
+MERLENE        0.002 87.359   2360
+MARGIT         0.002 87.361   2361
+KIESHA         0.002 87.363   2362
+KIERA          0.002 87.366   2363
+KAYLENE        0.002 87.368   2364
+JODEE          0.002 87.370   2365
+JENISE         0.002 87.372   2366
+ERLENE         0.002 87.374   2367
+EMMIE          0.002 87.376   2368
+ELSE           0.002 87.378   2369
+DARYL          0.002 87.381   2370
+DALILA         0.002 87.383   2371
+DAISEY         0.002 87.385   2372
+CODY           0.002 87.387   2373
+CASIE          0.002 87.389   2374
+BELIA          0.002 87.391   2375
+BABARA         0.002 87.393   2376
+VERSIE         0.002 87.395   2377
+VANESA         0.002 87.398   2378
+SHELBA         0.002 87.400   2379
+SHAWNDA        0.002 87.402   2380
+SAM            0.002 87.404   2381
+NORMAN         0.002 87.406   2382
+NIKIA          0.002 87.408   2383
+NAOMA          0.002 87.410   2384
+MARNA          0.002 87.412   2385
+MARGERET       0.002 87.414   2386
+MADALINE       0.002 87.417   2387
+LAWANA         0.002 87.419   2388
+KINDRA         0.002 87.421   2389
+JUTTA          0.002 87.423   2390
+JAZMINE        0.002 87.425   2391
+JANETT         0.002 87.427   2392
+HANNELORE      0.002 87.429   2393
+GLENDORA       0.002 87.431   2394
+GERTRUD        0.002 87.433   2395
+GARNETT        0.002 87.435   2396
+FREEDA         0.002 87.438   2397
+FREDERICA      0.002 87.440   2398
+FLORANCE       0.002 87.442   2399
+FLAVIA         0.002 87.444   2400
+DENNIS         0.002 87.446   2401
+CARLINE        0.002 87.448   2402
+BEVERLEE       0.002 87.450   2403
+ANJANETTE      0.002 87.452   2404
+VALDA          0.002 87.454   2405
+TRINITY        0.002 87.456   2406
+TAMALA         0.002 87.459   2407
+STEVIE         0.002 87.461   2408
+SHONNA         0.002 87.463   2409
+SHA            0.002 87.465   2410
+SARINA         0.002 87.467   2411
+ONEIDA         0.002 87.469   2412
+MICAH          0.002 87.471   2413
+MERILYN        0.002 87.473   2414
+MARLEEN        0.002 87.475   2415
+LURLINE        0.002 87.477   2416
+LENNA          0.002 87.479   2417
+KATHERIN       0.002 87.481   2418
+JIN            0.002 87.483   2419
+JENI           0.002 87.485   2420
+HAE            0.002 87.488   2421
+GRACIA         0.002 87.490   2422
+GLADY          0.002 87.492   2423
+FARAH          0.002 87.494   2424
+ERIC           0.002 87.496   2425
+ENOLA          0.002 87.498   2426
+EMA            0.002 87.500   2427
+DOMINQUE       0.002 87.502   2428
+DEVONA         0.002 87.504   2429
+DELANA         0.002 87.506   2430
+CECILA         0.002 87.508   2431
+CAPRICE        0.002 87.510   2432
+ALYSHA         0.002 87.512   2433
+ALI            0.002 87.514   2434
+ALETHIA        0.002 87.517   2435
+VENA           0.002 87.519   2436
+THERESIA       0.002 87.521   2437
+TAWNY          0.002 87.523   2438
+SONG           0.002 87.525   2439
+SHAKIRA        0.002 87.527   2440
+SAMARA         0.002 87.529   2441
+SACHIKO        0.002 87.531   2442
+RACHELE        0.002 87.533   2443
+PAMELLA        0.002 87.535   2444
+NICKY          0.002 87.537   2445
+MARNI          0.002 87.539   2446
+MARIEL         0.002 87.541   2447
+MAREN          0.002 87.543   2448
+MALISA         0.002 87.545   2449
+LIGIA          0.002 87.547   2450
+LERA           0.002 87.549   2451
+LATORIA        0.002 87.551   2452
+LARAE          0.002 87.553   2453
+KIMBER         0.002 87.555   2454
+KATHERN        0.002 87.557   2455
+KAREY          0.002 87.559   2456
+JENNEFER       0.002 87.561   2457
+JANETH         0.002 87.563   2458
+HALINA         0.002 87.566   2459
+FREDIA         0.002 87.568   2460
+DELISA         0.002 87.570   2461
+DEBROAH        0.002 87.572   2462
+CIERA          0.002 87.574   2463
+CHIN           0.002 87.576   2464
+ANGELIKA       0.002 87.578   2465
+ANDREE         0.002 87.580   2466
+ALTHA          0.002 87.582   2467
+YEN            0.002 87.584   2468
+VIVAN 

<TRUNCATED>

[02/21] incubator-usergrid git commit: USERGRID-871: refactor Gatling load testing code

Posted by to...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
new file mode 100644
index 0000000..2823d95
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
@@ -0,0 +1,10 @@
+package org.apache.usergrid.enums
+
+/**
+ * Created by mdunker on 7/20/15.
+ */
+object AuthType {
+  val Anonymous = "anonymous"
+  val Token = "token"
+  val Basic = "basic"
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
new file mode 100644
index 0000000..9a4989a
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
@@ -0,0 +1,47 @@
+package org.apache.usergrid.enums
+
+/**
+ * Created by mdunker on 7/20/15.
+ */
+object ConfigProperties {
+  val Org = "org"
+  val App = "app"
+  val AdminUser = "adminUser"
+  val AdminPassword = "adminPassword"
+  val BaseUrl = "baseurl"
+  val AuthType = "authType"
+  val TokenType = "tokenType"
+  val SkipSetup = "skipSetup"
+  val CreateOrg = "createOrg"
+  val CreateApp = "createApp"
+  val LoadEntities = "loadEntities"
+  val ScenarioType = "scenarioType"
+  val RampUsers = "rampUsers"
+  val ConstantUsersPerSec = "constantUsersPerSec"
+  val ConstantUsersDuration = "constantUsersDuration"
+  val UserSeed = "userSeed"
+  val AppUser = "appUser"
+  val AppUserPassword = "appUserPassword"
+  val NumEntities = "numEntities"
+  val NumDevices = "numDevices"
+  val CollectionType = "collectionType"
+  val RampTime = "rampTime"
+  val Throttle = "throttle"
+  val RpsTarget = "rpsTarget"
+  val RpsRampTime = "rpsRampTime"
+  val HoldDuration = "holdDuration"
+  val PushNotifier = "pushNotifier"
+  val PushProvider = "pushProvider"
+  val EntityPrefix = "entityPrefix"
+  val EntityType = "entityType"
+  val EntitySeed = "entitySeed"
+  val SearchLimit = "searchLimit"
+  val SearchQuery = "searchQuery"
+  val EndConditionType = "endConditionType"
+  val EndMinutes = "endMinutes"
+  val EndRequestCount = "endRequestCount"
+  val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
+    ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
+    NumDevices,CollectionType,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,EntityPrefix,EntityType,
+    EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount)
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
new file mode 100644
index 0000000..4bbb9cc
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
@@ -0,0 +1,9 @@
+package org.apache.usergrid.enums
+
+/**
+ * Created by mdunker on 7/21/15.
+ */
+object EndConditionType {
+  val MinutesElapsed = "minutesElapsed"
+  val RequestCount = "requestCount"
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
new file mode 100644
index 0000000..d17d280
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
@@ -0,0 +1,9 @@
+package org.apache.usergrid.enums
+
+/**
+ * Created by mdunker on 7/20/15.
+ */
+object EntityType {
+  val Trivial = "trivial"
+  val Basic = "basic"
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
new file mode 100644
index 0000000..52fcbc5
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
@@ -0,0 +1,9 @@
+package org.apache.usergrid.enums
+
+/**
+ * Created by mdunker on 7/20/15.
+ */
+object ScenarioType {
+  val GetAllByCursor = "getAllByCursor"
+  val NameRandomInfinite = "nameRandomInfinite"
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
new file mode 100644
index 0000000..4d371e1
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
@@ -0,0 +1,10 @@
+package org.apache.usergrid.enums
+
+/**
+ * Created by mdunker on 7/20/15.
+ */
+object TokenType {
+  val None = "none"
+  val User = "user"
+  val Management = "management"
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index aa8c614..8de995e 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -22,6 +22,8 @@ package org.apache.usergrid.helpers
 import io.gatling.core.Predef._
 import io.gatling.core.session._
 import io.gatling.http.Predef._
+import org.apache.usergrid.enums._
+import org.apache.usergrid.settings.Settings
 
 /**
  * Helper object that will perform extractions
@@ -38,7 +40,6 @@ object Extractors {
     }).saveAs(saveAsName)
   }
 
-
   /**
    * tries to extract the cursor from the session, if it exists, it returns true. if it's the default, returns false
    * @param nameInSession The name of the variable in the session
@@ -54,7 +55,7 @@ object Extractors {
    */
   def maybeExtractEntities(saveAsName: String) = {
     jsonPath("$..entities").ofType[Seq[Any]].transformOption(extract => {
-      extract.orElse(Some(Seq()));
+      extract.orElse(Some(Seq()))
     }).saveAs(saveAsName)
   }
 
@@ -64,21 +65,69 @@ object Extractors {
    * @return
    */
   def sequenceHasElements(nameInSession: String): Expression[Boolean] = {
-    session => session(nameInSession) != null && session(nameInSession).as[Seq[Any]].length > 0
+    session => session(nameInSession) != null && session(nameInSession).as[Seq[Any]].nonEmpty
   }
 
-
-  val ManagementToken: String = Setup.getManagementToken()
-
-
   /**
    * Get the management token for the admin username and password in settings, then inject it into the session
    * under the variable "authToken"
    * @return
    */
-  def injectStaticTokenToSession(): Expression[Session] = {
-    session => session.set("authToken", ManagementToken)
+  def injectManagementTokenIntoSession(): Expression[Session] = {
+    session => session.set("authToken", Setup.getManagementToken())
+  }
+
+  def injectUserTokenIntoSession(): Expression[Session] = {
+    session => session.set("authToken", Setup.getUserToken)
+  }
+
+  // handles different types of tokens
+  def injectTokenIntoSession(): Expression[Session] = {
+    session => session.set("authToken", Setup.getToken())
+  }
+
+  def injectAnonymousAuth(): Expression[Session] = {
+    session => session.set("authType", AuthType.Anonymous)
   }
 
+  def injectBasicAuth(): Expression[Session] = {
+    session => session.set("authType", AuthType.Basic)
+  }
+
+  def injectTokenAuth(): Expression[Session] = {
+    session => session.set("authType", AuthType.Token)
+  }
+
+  // handles different types of auth
+  def injectAuthType(): Expression[Session] = {
+    session => session.set("authType", Settings.authType)
+  }
+
+  /*
+  def injectTokenToSession(authType: String, tokenType: String): Expression[Session] = {
+    session => {
+      if (authType == AuthType.Token && tokenType == TokenType.User) {
+        session.set("authToken", Setup.getUserToken)
+      } else if (authType == AuthType.Token && tokenType == TokenType.Management) {
+        session.set("authToken", Setup.getManagementToken())
+      } else {
+        session.set("authToken", "")
+      }
+    }
+  }
+
+  def injectAuth(authType: String, tokenType: String): Expression[Session] = {
+    session => {
+      if (authType == AuthType.Token && tokenType == TokenType.User) {
+        session.set("authToken", Setup.getUserToken)
+      } else if (authType == AuthType.Token && tokenType == TokenType.Management) {
+        session.set("authToken", Setup.getManagementToken())
+      } else {
+        session.set("authToken", "")
+      }
+      session.set("authType", authType)
+    }
+  }
+  */
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
index fb0bcde..776e0b9 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
@@ -29,111 +29,134 @@ import io.gatling.http.Predef._
 import io.gatling.http.request.StringBody
 import io.gatling.jsonpath.JsonPath
 import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.enums.TokenType
 import org.apache.usergrid.settings.{Settings, Headers}
 
 import scala.collection.mutable.ArrayBuffer
+import scala.util.parsing.json.JSONObject
 
 /**
  * Classy class class.
  */
 object Setup {
-  var token:String = null
+  var managementToken:String = null
   val client = new AsyncHttpClient()
 
+  def getToken(tokenUrl:String, username:String, password:String):String = {
+    val getToken = client
+      .preparePost(tokenUrl)
+      .setBody("{\"username\":\"" + username + "\",\"password\":\"" + password + "\",\"grant_type\":\"password\"}")
+      .setHeader("Cache-Control", "no-cache")
+      .setHeader("Content-Type", "application/json; charset=UTF-8")
+      .build()
+    val response = client.executeRequest(getToken).get()
+    val mapper = new ObjectMapper()
+    val tree = mapper.readTree(response.getResponseBody)
+    tree.get("access_token").asText()
+  }
+
+  def getManagementToken():String = {
+    if(managementToken == null) {
+      managementToken = getToken(Settings.baseUrl + "/management/token", Settings.adminUser, Settings.adminPassword)
+      println("Management token is "+managementToken)
+    }
+    managementToken
+  }
+
+  def getUserToken:String = {
+    getToken(Settings.baseAppUrl + "/token", Settings.appUser, Settings.appUserPassword)
+  }
+
+  def getToken():String = {
+    var token = ""
+    if (Settings.tokenType == TokenType.Management) token = getManagementToken()
+    if (Settings.tokenType == TokenType.User) token = getUserToken
+
+    token
+  }
+
   def setupOrg(): Integer = {
 
     val createOrgPost = client
       .preparePost(Settings.baseUrl + "/management/organizations")
-       .setHeader("Cache-Control", "no-cache")
+      .setHeader("Cache-Control", "no-cache")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
-      .setBody("{\"organization\":\"" + Settings.org + "\",\"username\":\"" + Settings.admin + "\",\"name\":\"" + Settings.admin + "\",\"email\":\"" + Settings.admin + "@apigee.com\",\"password\":\"" + Settings.password + "\"}")
-    .build()
+      .setBody(Utils.toJSONStr(Map(
+                          "organization" -> Settings.org,
+                          "username" -> Settings.adminUser,
+                          "name" -> Settings.adminUser,
+                          "email" -> (Settings.adminUser + "@apigee.com"),
+                          "password" -> Settings.adminPassword
+      )))
+      .build()
+
     val orgResponse = client.executeRequest(createOrgPost).get()
-    printResponse("POST ORG",orgResponse.getStatusCode,orgResponse.getResponseBody())
-    return orgResponse.getStatusCode
+
+    printResponse("POST ORG",orgResponse.getStatusCode,orgResponse.getResponseBody)
+
+    orgResponse.getStatusCode
   }
-  def setupApplication():Integer = {
 
-    val authToken = getManagementToken()
+  def setupApplication(): Integer = {
+
     val createAppPost = client
-      .preparePost(Settings.baseUrl + "/management/organizations/"+Settings.org+"/applications")
-      .setBody("{\"name\":\"" + Settings.app + "\"}")
+      .preparePost(Settings.baseUrl + "/management/organizations/" + Settings.org + "/applications")
+      .setBody(Utils.toJSONStr(Map("name" -> Settings.app)))
       .setHeader("Cache-Control", "no-cache")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
-      .setHeader("Authorization","Bearer "+authToken)
+      .setHeader("Authorization", "Bearer " + getManagementToken)
       .build()
 
     val appResponse = client.executeRequest(createAppPost).get();
-    printResponse("POST Application",appResponse.getStatusCode, appResponse.getResponseBody())
 
-    return appResponse.getStatusCode
+    val statusCode = appResponse.getStatusCode
+    printResponse("POST APP",statusCode, appResponse.getResponseBody)
+
+    statusCode
   }
 
   def setupNotifier():Integer = {
 
-    val authToken = getManagementToken()
     val createNotifier = client
       .preparePost(Settings.baseAppUrl + "/notifiers")
-      .setBody("{\"name\":\"" + Settings.pushNotifier + "\",\"provider\":\"" + Settings.pushProvider + "\"}")
+      .setBody(Utils.toJSONStr(Map("name" -> Settings.pushNotifier, "provider" -> Settings.pushProvider)))
       .setHeader("Cache-Control", "no-cache")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
-      .setHeader("Authorization","Bearer "+authToken)
+      .setHeader("Authorization","Bearer " + getManagementToken)
       .build()
 
     val notifierResponse = client.executeRequest(createNotifier).get();
     printResponse("POST Notifier", notifierResponse.getStatusCode ,notifierResponse.getResponseBody())
 
-    return notifierResponse.getStatusCode
-  }
-
-  def getManagementToken():String = {
-    if(token == null) {
-      val getToken = client
-        .preparePost(Settings.baseUrl + "/management/token")
-        .setBody("{\"username\":\"" + Settings.admin + "\",\"password\":\"" + Settings.password + "\",\"grant_type\":\"password\"}")
-        .setHeader("Cache-Control", "no-cache")
-        .setHeader("Content-Type", "application/json; charset=UTF-8")
-        .build()
-      val response = client.executeRequest(getToken).get()
-      val omapper = new ObjectMapper();
-      val tree = omapper.readTree(response.getResponseBody())
-      val node = tree.get("access_token");
-      token = node.asText()
-      println("Token is "+token)
-    }
-    return token
+    notifierResponse.getStatusCode
   }
 
   def setupUsers() = {
-    if (!Settings.skipSetup) {
-      val userFeeder = Settings.getUserFeeder()
-      val numUsers = userFeeder.length
-      println(s"setupUsers: Sending requests for $numUsers users")
-
-      val list: ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]]
-      var successCount: Int = 0;
-      def purgeList = {
-        list.foreach(f => {
-          val response = f.get()
-          if (response.getStatusCode != 200) {
-            printResponse("Post User", response.getStatusCode, response.getResponseBody())
-          } else {
-            successCount += 1
-          }
-        })
-        list.clear()
-      }
-      userFeeder.foreach(user => {
-        list += setupUser(user);
-        if(list.length == Integer.getInteger("purgeUsers",100)){
-          purgeList
+    val userFeeder = Settings.getUserFeeder()
+    val numUsers = userFeeder.length
+    println(s"setupUsers: Sending requests for $numUsers users")
+
+    val list: ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]]
+    var successCount: Int = 0
+    def purgeList() = {
+      list.foreach(f => {
+        val response = f.get()
+        if (response.getStatusCode != 200) {
+          printResponse("Post User", response.getStatusCode, response.getResponseBody())
+        } else {
+          successCount += 1
         }
-      });
-
-      println(s"setupUsers: Received $successCount successful responses out of $numUsers requests.")
-    } else {
-      println("Skipping Adding Users due to skipSetup=true")
+      })
+      list.clear()
     }
+    userFeeder.foreach(user => {
+      list += setupUser(user)
+      if (list.length == Integer.getInteger("purgeUsers",100)) {
+        purgeList()
+      }
+    })
+
+    println(s"setupUsers: Received $successCount successful responses out of $numUsers requests.")
   }
 
   def setupUser(user:Map[String,String]):ListenableFuture[Response] = {
@@ -165,14 +188,56 @@ object Setup {
       .setHeader("Authorization","Bearer "+authToken)
       .build()
 
-    return client.executeRequest(createUser)
+    client.executeRequest(createUser)
+  }
 
+  def setupEntitiesCollection(numEntities: Int, entityType: String, prefix: String, seed: Int = 1) = {
+    val entitiesFeeder = FeederGenerator.generateCustomEntityFeeder(numEntities, entityType, prefix, seed)
+    val purgeUsers = Integer.getInteger("purgeUsers", 100)
+
+    val list: ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]]
+    var successCount: Int = 0;
+    def purgeList(): Unit = {
+      list.foreach(f => {
+        val response = f.get()
+        if (response.getStatusCode != 200) {
+          printResponse("Post Entity", response.getStatusCode, response.getResponseBody)
+        } else {
+          successCount += 1
+        }
+      })
+      list.clear()
+    }
 
+    entitiesFeeder.foreach(payload => {
+      //println("setupEntitiesCollection: payload=" + payload)
+      list += setupEntity(payload)
+      if(list.length == purgeUsers) {
+        purgeList()
+      }
+    })
+
+    // purgeList()
+
+    println(s"setupEntitiesCollection: Received $successCount successful responses out of $numEntities requests.")
+  }
+
+  def setupEntity(payload: String):ListenableFuture[Response] = {
+    val authToken = getManagementToken()
+    val createEntity = client
+      .preparePost(Settings.baseAppUrl + "/" + Settings.collectionType)
+      .setBody(payload)
+      .setBodyEncoding("UTF-8")
+      .setHeader("Authorization", "Bearer " + authToken)
+      .setHeader("Content-Type", "application/json; charset=UTF-8")
+      .build()
+    //println("setupEntity: baseAppUrl=" + Settings.baseAppUrl + ", collectionType=" + Settings.collectionType + ", payload=" + payload)
+
+    client.executeRequest(createEntity)
   }
 
   def printResponse(caller:String, status:Int, body:String) = {
     println(caller + ": status: "+status.toString+" body:"+body)
-
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
new file mode 100755
index 0000000..82061d6
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ package org.apache.usergrid.helpers
+
+import scala.util.Random
+import scala.util.parsing.json.JSONObject
+
+ /**
+ *
+ * Utility for creating various data elements
+ *
+ */
+object Utils {
+
+  private val RNG = new Random(System.currentTimeMillis())
+
+  /**
+   * Generate a new uuid and replace the '-' with empty
+   */
+  def generateUUIDString(): String = {
+    java.util.UUID.randomUUID.toString.replace("-", "")
+  }
+
+  /**
+   * Generate a unique string with a prefix
+   *
+   * @param prefix
+   * @return
+   */
+  def generateUniqueName(prefix : String): String = {
+     prefix + generateUUIDString()
+  }
+
+  // random number in between [a...b]
+  def generateRandomInt(lowerBound: Int, upperBound: Int) = RNG.nextInt(upperBound - lowerBound) + lowerBound
+
+  def generateRandomGeolocation(radius: Double, centerLatitude: Double, centerLongitude: Double):Map[String, String] = {
+
+    val rd = radius / 111300 // Convert Radius from meters to degrees.
+    val u = RNG.nextFloat()
+    val v = RNG.nextFloat()
+    val q = math.sqrt(u) * rd
+    val w = q * rd
+    val t = 2 * math.Pi * v
+    val x = math.cos(t) * w
+    val y = math.sin(t) * w
+    val xp = x/math.cos(centerLatitude)
+    val latitude = (y + centerLatitude).toString
+    val longitude = (xp + centerLongitude).toString
+    val geolocation: Map[String, String] = Map("latitude"->latitude,"longitude"->longitude)
+
+    geolocation
+  }
+
+  def generateRandomQueryString: String = {
+
+    val queryParams = Array("age", "height", "weight")
+    var queryString = ""
+
+    for (numParams <- 1 to generateRandomInt(1, queryParams.length)) {
+      queryString = "age=" + Utils.generateRandomInt(18, 65).toString
+      if (numParams == 2) {
+        queryString += "%20AND%20height=" + Utils.generateRandomInt(48, 84).toString
+      } else if (numParams == 3) {
+        queryString += "%20AND%20weight=" + Utils.generateRandomInt(120, 350).toString
+      }
+    }
+
+    queryString
+  }
+
+   def randomEntityNameUrl(prefix: String, numEntities: Int, seed: Int, baseUrl: String): String = {
+     val randomVal = generateRandomInt(seed, seed+numEntities-1)
+
+     baseUrl + "/" + prefix.concat(randomVal.toString)
+   }
+
+  def createRandomPushNotifierName:String = {
+    Utils.generateUniqueName("notifier")
+  }
+
+  def toJSONStr(objectMap: Map[String, Any]):String = {
+    JSONObject(objectMap).toString()
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
index 8faf8c7..4150513 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
@@ -37,7 +37,7 @@ object ApplicationScenarios {
 
   val createApplication = exec(http("Create Application")
     .post(Settings.baseUrl +  "/management/organizations/"+Settings.org+"/applications")
-    .headers(Headers.jsonAuthorized)
+    .headers(Headers.authToken)
     .body(StringBody("{\"name\":\"" + Settings.app + "\"}"))
     .check(status.in(200 to 204))
 
@@ -45,7 +45,7 @@ object ApplicationScenarios {
 
    val checkApplication = exec(http("Get Application")
      .get(Settings.baseAppUrl)
-     .headers(Headers.jsonAuthorized)
+     .headers(Headers.authToken)
      .check(status.saveAs("applicationStatus"))
    )
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
index 07e11fe..b2827bb 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
@@ -26,7 +26,7 @@ import io.gatling.http.Predef._
   val postUserConnection = exec(
     http("POST connection")
     .post("/users/${user1}/likes/users/${user2}")
-      .headers(Headers.jsonAuthorized)
+      .headers(Headers.authToken)
 
       .check(status.is(200))
   )
@@ -34,14 +34,14 @@ import io.gatling.http.Predef._
   val postUserToDeviceConnection = exec(
     http("Connect user with device")
     .post("/users/${username}/devices/${deviceId}")
-      .headers(Headers.jsonAuthorized)
+      .headers(Headers.authToken)
       .check(status.is(200))
   )
 
    val postConnection = exec(
      http("Connect user with device")
        .post("/${connectionName}/${entityId}/${connectionType}/${entityId}")
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .check(status.is(200))
    )
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
index 4abd8cb..a8a3d9c 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
@@ -46,7 +46,7 @@ object DeviceScenarios {
    */
   val postDeviceWithNotifier = exec(http("Create device with notifier")
     .post("/devices")
-    .headers(Headers.jsonAuthorized)
+    .headers(Headers.authToken)
     .body(StringBody("""{"deviceModel":"Fake Device",
     "deviceOSVerion":"Negative Version",
     """" + notifier + """.notifier.id":"${entityName}"}"""))
@@ -55,7 +55,7 @@ object DeviceScenarios {
 
   val postDeviceWithNotifier400ok = exec(http("Create device with notifier")
     .post("/devices")
-    .headers(Headers.jsonAuthorized)
+    .headers(Headers.authToken)
     .body(StringBody("""{"name":"${entityName}",
     "deviceModel":"Fake Device",
     "deviceOSVerion":"Negative Version",
@@ -70,7 +70,7 @@ object DeviceScenarios {
     //try to do a GET on device name, if it 404's create it
     http("Check and create device")
       .get("/users/${username}/devices")
-      .headers(Headers.jsonAuthorized)
+      .headers(Headers.authToken)
       .check(jsonPath("$.entities").exists, jsonPath("$.entities").saveAs("devices"))
       )
       .exec(session =>{

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
new file mode 100644
index 0000000..844eb82
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.scenarios
+
+import io.gatling.core.Predef._
+import io.gatling.http.Predef._
+import org.apache.usergrid.enums.{EndConditionType, AuthType}
+import org.apache.usergrid.helpers.Extractors._
+import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.settings.{Headers, Settings}
+
+/**
+ * Provides CRUD methods for custom entities
+ *
+ *
+ *
+ */
+object EntityCollectionScenarios {
+
+  //The value for the cursor
+  val SessionVarCursor: String = "cursor"
+
+  def entityGetUrl(useCursor: Boolean): String = {
+    val url = Settings.baseAppUrl + "/" + Settings.collectionType + "?dummy" +
+      (if (useCursor) "&cursor=${" + SessionVarCursor + "}" else "") +
+      (if (Settings.searchLimit > 0) "&limit=" + Settings.searchLimit.toString() else "") +
+      (if (Settings.searchQuery != "") "&ql=" + Settings.searchQuery else "")
+
+    url
+  }
+
+  def entityGetByNameUrl(entityName: String): String = {
+    val url = Settings.baseCollectionUrl + "/" + entityName
+
+    url
+  }
+
+  def randomEntityNameUrl(prefix: String = Settings.entityPrefix, numEntities: Int = Settings.numEntities, seed: Int = Settings.entitySeed): String = {
+    Utils.randomEntityNameUrl(prefix, numEntities, seed, Settings.baseCollectionUrl)
+  }
+
+  val getEntitiesWithoutCursor = exec(
+    http("GET entities")
+      .get(entityGetUrl(false))
+      .headers(Headers.authToken)
+      .check(status.is(200), maybeExtractCursor(SessionVarCursor))
+  )
+
+  val getEntitiesWithCursor = exec(
+    http("GET entities")
+      .get(entityGetUrl(true))
+      .headers(Headers.authToken)
+      .check(status.is(200), maybeExtractCursor(SessionVarCursor))
+  )
+
+  val getEntityPagesToEnd = scenario("Get all entities")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .doIfOrElse(session => Settings.endConditionType == EndConditionType.MinutesElapsed) {
+      asLongAs(session => (System.currentTimeMillis() - Settings.testStartTime) < Settings.endMinutes*60*1000,"loopCounter",true) {
+        exec(getEntitiesWithoutCursor)
+          .asLongAs(stringParamExists(SessionVarCursor)) {
+          exec(getEntitiesWithCursor)
+        }
+      }
+    } {
+      repeat(Settings.endRequestCount) {
+        exec(getEntitiesWithoutCursor)
+          .asLongAs(stringParamExists(SessionVarCursor)) {
+          exec(getEntitiesWithCursor)
+        }
+      }
+    }
+    //.exec(sessionFunction => { sessionFunction })
+
+  val getRandomEntityAnonymous = exec(
+    http("GET entity by name (anonymous)")
+      .get(_ => randomEntityNameUrl())
+      .headers(Headers.authAnonymous)
+      .check(status.is(200))
+  )
+
+  val getRandomEntityWithToken = exec(
+    http("GET entity by name (token)")
+      .get(_ => randomEntityNameUrl())
+      .headers(Headers.authToken)
+      .check(status.is(200))
+  )
+
+  val getRandomEntitiesByName = scenario("Get entities by name randomly")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .doIfOrElse(session => Settings.endConditionType == EndConditionType.MinutesElapsed) {
+      asLongAs(session => (System.currentTimeMillis() - Settings.testStartTime) < Settings.endMinutes*60*1000) {
+        doIfOrElse(session => Settings.authType == AuthType.Anonymous) {
+          exec(getRandomEntityAnonymous)
+        } {
+          exec(getRandomEntityWithToken)
+        }
+      }
+    } {
+      repeat(Settings.endRequestCount) {
+        doIfOrElse(session => Settings.authType == AuthType.Anonymous) {
+          exec(getRandomEntityAnonymous)
+        } {
+          exec(getRandomEntityWithToken)
+        }
+      }
+    }
+
+  /*
+  val createEntityBatchScenario = scenario("Create custom entities")
+      .exec(injectStaticTokenToSession())
+      .feed(FeederGenerator.generateCustomEntityCreateFeeder(Settings.entityPrefix, Settings.numEntities))
+      .exec(EntityScenarios.postEntity)
+  */
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
index c3af32d..dd21e3c 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
@@ -19,55 +19,65 @@ package org.apache.usergrid.scenarios
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
 import org.apache.usergrid.datagenerators.{EntityDataGenerator, FeederGenerator}
-import org.apache.usergrid.settings.{Headers, Utils, Settings}
+import org.apache.usergrid.helpers.{Extractors,Utils}
+import org.apache.usergrid.settings.{Headers, Settings}
 
 import scala.util.parsing.json.JSONObject
 
 /**
  * Provides CRUD methods for custom entities
- *
- *
- *
  */
+
 object EntityScenarios {
 
   val getEntity = exec(
     http("GET custom entity")
       .get(Settings.baseAppUrl+"/${collectionType}/${entityName}")
-      .headers(Headers.jsonAuthorized)
+      .headers(Headers.authAnonymous)
       .check(status.is(200))
   )
 
+  // not sure why I have to put stringToExpression -- thought String -> Expression[String] conversion would be automatic
   val putEntity = exec(
     http("Put custom entity")
-      .put(Settings.baseAppUrl+"/"+ Settings.collectionType+"/${entityName}")
+      .put(stringToExpression(Settings.baseAppUrl + "/${collectionType}/${entityName}"))
       .body(StringBody("""${entity}"""))
-      .headers(Headers.jsonAnonymous)
+      .headers(Headers.auth("${authType}"))
       .check(status.is(200))
   )
 
 
   val deleteEntity = exec(
     http("DELETE custom entity")
-      .get(Settings.baseAppUrl+"/${collectionType}/${entityName}")
-      .headers(Headers.jsonAuthorized)
+      .get(Settings.baseAppUrl + "/${collectionType}/${entityName}")
+      .headers(Headers.auth("${authType}"))
       .check(status.is(200))
   )
 
   val postEntity = exec(
     http("Post custom entity")
-      .post(Settings.baseAppUrl+"/"+ Settings.collectionType)
+      .post(stringToExpression(Settings.baseAppUrl + "/${collectionType}"))
       .body(StringBody("""${entity}"""))
-      .headers(Headers.jsonAnonymous)
+      .headers(Headers.auth("${authType}"))
       .check(status.is(200))
   )
 
+  /*
   val postEntityWithToken = exec(
     http("Post custom entity")
-      .post(Settings.baseAppUrl+"/"+ Settings.collectionType)
+      .post(stringToExpression(Settings.baseAppUrl + "/${collectionType}"))
+      .body(StringBody("""${entity}"""))
+      .headers(Headers.authToken)
+      .check(status.is(200))
+  )
+
+  val postEntityWithBasicAuth = exec(
+    http("Post custom entity")
+      .post(stringToExpression(Settings.baseAppUrl + "/${collectionType}"))
       .body(StringBody("""${entity}"""))
-      .headers(Headers.jsonAuthorized)
+      .headers(Headers.authBasic)
       .check(status.is(200))
   )
+  */
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
index d5ce7c7..85c6855 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
@@ -18,30 +18,31 @@
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
- import org.apache.usergrid.settings.{Headers, Utils, Settings}
+import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.settings.{Headers, Settings}
 
- object GeoScenarios {
+object GeoScenarios {
 
   val getGeolocation = exec(
       http("GET geolocated user")
-        .get("/users?ql=location%20within%20" + Settings.geosearchRadius + "%20of%20${latitude},${longitude}")
-        .headers(Headers.jsonAuthorized)
+        .get("/users?ql=location%20within%20" + Settings.geoSearchRadius + "%20of%20${latitude},${longitude}")
+        .headers(Headers.authToken)
 
         .check(status.is(200))
     )
 
   val getGeolocationWithQuery = exec(
       http("GET geolocated user with query")
-        .get("/users?ql=${queryParams}%20AND%20location%20within%20" + Settings.geosearchRadius + "%20of%20${latitude},${longitude}")
-        .headers(Headers.jsonAuthorized)
+        .get("/users?ql=${queryParams}%20AND%20location%20within%20" + Settings.geoSearchRadius + "%20of%20${latitude},${longitude}")
+        .headers(Headers.authToken)
         .check(status.is(200))
     )
 
   val updateGeolocation = exec(
     http("PUT user location")
-      .put("/users/user" + Utils.generateRandomInt(1, Settings.numUsers))
+      .put(stringToExpression("/users/user" + Utils.generateRandomInt(1, Settings.totalUsers)))
       .body(StringBody("{\"location\":{\"latitude\":\"${latitude}\",\"longitude\":\"${longitude}\"}}"))
-      .headers(Headers.jsonAuthorized)
+      .headers(Headers.authToken)
       .check(status.is(200))
   )
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
index 61b2605..92998d0 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
@@ -28,6 +28,7 @@ import scala.io.Source
 
 import org.apache.usergrid.settings.{Headers, Settings}
 
+
 /**
  *
  * Creates a new device
@@ -56,14 +57,14 @@ object NotificationScenarios {
   val sendNotification = exec(http("Send Single Notification")
       .post("/devices/${entityName}/notifications")
       .body(StringBody("{\"payloads\":{\"" + notifier + "\":\"testmessage\"}}"))
-      .headers(Headers.jsonAuthorized)
+      .headers(Headers.authToken)
       .check(status.is(200))
     )
 
   val sendNotificationToUser= exec(http("Send Notification to All Devices")
     .post("/users/${userId}/notifications")
     .body(StringBody("{\"payloads\":{\"" + notifier + "\":\"testmessage\"}}"))
-    .headers(Headers.jsonAuthorized)
+    .headers(Headers.authToken)
     .check(status.is(200))
   )
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
index 55c3d52..b2e32e5 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
@@ -38,7 +38,7 @@ import io.gatling.http.Predef._
  *
  */
 object NotifierScenarios {
-  
+
   val notifier = Settings.pushNotifier
   val provider = Settings.pushProvider
   val org = Settings.org
@@ -56,13 +56,13 @@ object NotifierScenarios {
 
     .exec(http("Create Notifier")
     .post(Settings.baseAppUrl+"/notifiers")
-    .headers(Headers.jsonAuthorized)
+    .headers(Headers.authToken)
     .body(StringBody("{\"name\":\"" + notifier + "\",\"provider\":\"" + provider + "\"}"))
     .check(status.in(200 to 400)))
 
   val checkNotifier = exec(http("Get Notifier")
     .get(Settings.baseAppUrl+"/notifiers/"+notifier)
-    .headers(Headers.jsonAuthorized)
+    .headers(Headers.authToken)
     .check(status.is(200),status.saveAs("notifierStatus"))
   )
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
index 873759b..1cdc25c 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
@@ -38,8 +38,8 @@ object OrganizationScenarios {
   val createOrgAndAdmin =
     exec(http("Create Organization")
       .post(Settings.baseUrl + "/management/organizations")
-      .headers(Headers.jsonAnonymous)
-      .body(StringBody("{\"organization\":\"" + Settings.org + "\",\"username\":\"" + Settings.admin + "\",\"name\":\"${entityName}\",\"email\":\"${entityName}@apigee.com\",\"password\":\"" + Settings.password + "\"}"))
+      .headers(Headers.authAnonymous)
+      .body(StringBody("{\"organization\":\"" + Settings.org + "\",\"username\":\"" + Settings.adminUser + "\",\"name\":\"${entityName}\",\"email\":\"${entityName}@apigee.com\",\"password\":\"" + Settings.adminPassword + "\"}"))
       .check(status.in(200 to 400))
     )
   val createOrgBatch =

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
index 73ba3a9..4385797 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
@@ -41,9 +41,9 @@ import io.gatling.core.Predef._
 object TokenScenarios {
   val getManagementToken = exec(http("POST Org Token")
     .post(Settings.baseUrl+"/management/token")
-    .headers(Headers.jsonAnonymous)
+    .headers(Headers.authAnonymous)
     //pass in the the username and password, store the "access_token" json response element as the var "authToken" in the session
-    .body(StringBody("{\"username\":\"" + Settings.admin + "\",\"password\":\""+Settings.password+"\",\"grant_type\":\"password\"}"))
+    .body(StringBody("{\"username\":\"" + Settings.adminUser + "\",\"password\":\""+Settings.adminPassword+"\",\"grant_type\":\"password\"}"))
     .check(jsonPath("$.access_token").find(0).saveAs("authToken"))
   )
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
index c589365..a55f66a 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
@@ -21,8 +21,9 @@ import io.gatling.core.Predef._
 import io.gatling.http.Predef._
 import io.gatling.http.request.StringBody
 import org.apache.usergrid.datagenerators.FeederGenerator
-import org.apache.usergrid.settings.{Headers, Settings, Utils}
+import org.apache.usergrid.settings.{Headers, Settings}
 import org.apache.usergrid.helpers.Extractors._
+import org.apache.usergrid.helpers.Utils
 
 
 object UserScenarios {
@@ -46,7 +47,7 @@ object UserScenarios {
    val getRandomUser = exec(
      http("GET user")
        .get("/users/user" + Utils.generateRandomInt(1, Settings.numEntities))
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .check(status.is(200))
    )
 
@@ -54,7 +55,7 @@ object UserScenarios {
    val getUserByUsername = exec(
      http("GET user")
        .get("/users/${username}")
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .check(status.saveAs(SessionVarUserStatus), jsonPath("$..entities[0]").exists, jsonPath("$..entities[0].uuid").exists, jsonPath("$..entities[0].uuid").saveAs(SessionVarUserId))
    )
 
@@ -85,11 +86,11 @@ object UserScenarios {
        exec(postUser)
      }
 
-  
+
    val putUser = exec(
      http("PUT geolocated Users")
        .put("/users/${username}")
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .body(new StringBody( """{"location":{"latitude":"${latitude}","longitude":"${longitude}"},"username":"${username}",
         "displayName":"${displayName}","age":"${age}","seen":"${seen}","weight":"${weight}",
         "height":"${height}","aboutMe":"${aboutMe}","profileId":"${profileId}","headline":"${headline}",
@@ -97,12 +98,12 @@ object UserScenarios {
        .check(status.is(200), jsonPath("$..entities[0].uuid").saveAs(SessionVarUserId))
 
        )
-      
+
 
    val deleteUser = exec(
      http("DELETE geolocated Users")
        .delete("/users/${username}")
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .check(status.in(Seq(200,404)))
    )
 
@@ -118,7 +119,7 @@ object UserScenarios {
    val getUsersWithoutCursor = exec(
      http("GET user")
        .get("/users")
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .check(status.is(200), maybeExtractEntities(SessionVarUsers), maybeExtractCursor(SessionVarCursor))
    )
 
@@ -129,7 +130,7 @@ object UserScenarios {
    val getUsersWithCursor = exec(
      http("GET user")
        .get("/users?cursor=${" + SessionVarCursor + "}")
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .check(status.is(200), maybeExtractEntities(SessionVarUsers), maybeExtractCursor(SessionVarCursor))
    ) /**
      * Debugging block
@@ -146,7 +147,7 @@ object UserScenarios {
    val deleteUserByUsername = exec(
      http("DELETE user")
        .delete("/users/${username}")
-       .headers(Headers.jsonAuthorized)
+       .headers(Headers.authToken)
        .check(status.is(200), jsonPath("$..entities[0].uuid").saveAs(SessionVarUserId))
    )
 
@@ -176,21 +177,21 @@ object UserScenarios {
    /**
     * Puts a new user every time
     */
-   val putUsersInfinitely =  scenario("Put Users").exec(injectStaticTokenToSession)
+   val putUsersInfinitely =  scenario("Put Users").exec(injectManagementTokenIntoSession)
      .feed(Settings.getInfiniteUserFeeder())
      .exec(putUser)
 
    /**
     * Deletes user every time
     */
-   val deleteUsersInfinitely =  scenario("Delete Users").exec(injectStaticTokenToSession)
+   val deleteUsersInfinitely =  scenario("Delete Users").exec(injectManagementTokenIntoSession)
      .feed(Settings.getInfiniteUserFeeder())
      .exec(deleteUser)
 
    /**
     * Get the users a page at a time until exhausted
     */
-   val getUserPagesToEnd = scenario("Get User Pages").exec(injectStaticTokenToSession)
+   val getUserPagesToEnd = scenario("Get User Pages").exec(injectManagementTokenIntoSession)
      //get users without a cursor
      .exec(getUsersWithoutCursor)
      //as long as we have a cursor, keep getting results
@@ -200,7 +201,7 @@ object UserScenarios {
      sessionFunction
    })
 
-  val getUsersByUsername = scenario("Get User By Username").exec(injectStaticTokenToSession)
+  val getUsersByUsername = scenario("Get User By Username").exec(injectManagementTokenIntoSession)
     .feed(Settings.getInfiniteUserFeeder())
          //get users without a cursor
          .exec(getUserByUsername)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
index 6cd6f2e..db6062f 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
@@ -16,6 +16,7 @@
  */
  package org.apache.usergrid.settings
 
+ import org.apache.usergrid.enums.AuthType
  import org.apache.usergrid.helpers.Setup
 
  /**
@@ -26,7 +27,7 @@ object Headers {
   /**
    * Headers for anonymous posts
    */
-  val jsonAnonymous = Map(
+  val authAnonymous = Map(
     "Cache-Control" -> """no-cache""",
     "Content-Type" -> """application/json; charset=UTF-8"""
   )
@@ -34,14 +35,29 @@ object Headers {
   /**
    * Headers for authorized users with token and json content type
    */
-  val jsonAuthorized = Map(
+  val authToken = Map(
     "Cache-Control" -> """no-cache""",
     "Content-Type" -> """application/json; charset=UTF-8""",
     "Authorization" -> "Bearer ${authToken}"
   )
 
+  /**
+  * Headers for basic auth
+  */
+  val authBasic = Map(
+    "Cache-Control" -> """no-cache""",
+    "Content-Type" -> """application/json; charset=UTF-8""",
+    "Authorization" -> ("Basic " + Settings.appUserBase64)
+  )
 
-
+  /**
+  * Header selector
+  */
+  def auth(authType:String): Map[String, String] = {
+    if (authType == AuthType.Basic) authBasic
+    else if (authType == AuthType.Token) authToken
+    else authAnonymous
+  }
 
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 2619cad..75bed58 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -16,61 +16,87 @@
  */
 package org.apache.usergrid.settings
 
+import java.nio.charset.StandardCharsets
+import java.util.Base64
+
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
 import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.enums._
 import scala.concurrent.duration._
 
 object Settings {
 
-  // Target settings
-  val org = System.getProperty("org")
-  val app = System.getProperty("app")
-  val admin = System.getProperty("adminUser")
-  val password = System.getProperty("adminPassword")
-  val baseUrl = System.getProperty("baseurl")
+  // load configuration settings via property or default
+  val org = System.getProperty(ConfigProperties.Org)
+  val app = System.getProperty(ConfigProperties.App)
+  val adminUser = System.getProperty(ConfigProperties.AdminUser)
+  val adminPassword = System.getProperty(ConfigProperties.AdminPassword)
+  val baseUrl = System.getProperty(ConfigProperties.BaseUrl)
   val baseAppUrl = baseUrl + "/" + org + "/" + app
   val httpConf = http.baseURL(baseAppUrl)
-
-  val skipSetup:Boolean = System.getProperty("skipSetup") == "true"
-  val duration:Int = Integer.getInteger("duration", 300).toInt // in seconds
-
-
-
-  // Simulation settings
-  val maxPossibleUsers:Int = Integer.getInteger("maxPossibleUsers", 1).toInt
-  val numUsers:Int = maxPossibleUsers
-  val userSeed:Int = Integer.getInteger("userSeed",1).toInt
-
-  val numEntities:Int = Integer.getInteger("numEntities", 5000).toInt
-  val numDevices:Int = Integer.getInteger("numDevices", 4000).toInt
-
-  val collectionType:String = System.getProperty("collectionType", "defaultthings")
-
-  val rampTime:Int = Integer.getInteger("rampTime", 0).toInt // in seconds
-  val throttle:Int = Integer.getInteger("throttle", 50).toInt // in seconds
+  val authType = System.getProperty(ConfigProperties.AuthType, AuthType.Anonymous)
+  val tokenType = System.getProperty(ConfigProperties.TokenType, TokenType.User)
+
+  val skipSetup:Boolean = System.getProperty(ConfigProperties.SkipSetup) == "true"
+  val createOrg:Boolean = System.getProperty(ConfigProperties.CreateOrg) == "true"
+  val createApp:Boolean = System.getProperty(ConfigProperties.CreateApp) != "false"
+  val loadEntities:Boolean = System.getProperty(ConfigProperties.LoadEntities) != "false"
+  val scenarioType = System.getProperty(ConfigProperties.ScenarioType, ScenarioType.NameRandomInfinite)
+
+  val rampUsers:Int = Integer.getInteger(ConfigProperties.RampUsers, 0).toInt
+  val constantUsersPerSec:Int = Integer.getInteger(ConfigProperties.ConstantUsersPerSec, 0).toInt // users to add per second during constant injection
+  val constantUsersDuration:Int = Integer.getInteger(ConfigProperties.ConstantUsersDuration, 10).toInt // number of seconds
+  val totalUsers:Int = rampUsers + (constantUsersPerSec * constantUsersDuration)
+  val userSeed:Int = Integer.getInteger(ConfigProperties.UserSeed,1).toInt
+  val appUser = System.getProperty(ConfigProperties.AppUser)
+  val appUserPassword = System.getProperty(ConfigProperties.AppUserPassword)
+  val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
+
+  val numEntities:Int = Integer.getInteger(ConfigProperties.NumEntities, 5000).toInt
+  val numDevices:Int = Integer.getInteger(ConfigProperties.NumDevices, 4000).toInt
+
+  val collectionType = System.getProperty(ConfigProperties.CollectionType, "customentities")
+  val baseCollectionUrl = baseAppUrl + "/" + collectionType
+
+  val rampTime:Int = Integer.getInteger(ConfigProperties.RampTime, 0).toInt // in seconds
+  val throttle:Int = Integer.getInteger(ConfigProperties.Throttle, 50).toInt // in seconds
+  val rpsTarget:Int = Integer.getInteger(ConfigProperties.RpsTarget, 50).toInt // requests per second target
+  val rpsRampTime:Int = Integer.getInteger(ConfigProperties.RpsRampTime, 10).toInt // in seconds
+  val holdDuration:Int = Integer.getInteger(ConfigProperties.HoldDuration, 300).toInt // in seconds
 
   // Geolocation settings
   val centerLatitude:Double = 37.442348 // latitude of center point
   val centerLongitude:Double = -122.138268 // longitude of center point
   val userLocationRadius:Double = 32000 // location of requesting user in meters
-  val geosearchRadius:Int = 8000 // search area in meters
+  val geoSearchRadius:Int = 8000 // search area in meters
 
   // Push Notification settings
-  val pushNotifier = if (System.getProperty("pushNotifier") != null)  System.getProperty("pushNotifier") else "loadNotifier"
-  val pushProvider =  if (System.getProperty("pushProvider") != null)  System.getProperty("pushProvider")  else "noop"
-
-  println(s"Will inject up to $maxPossibleUsers users per sec")
-
-   def getUserFeeder():Array[Map[String, String]]= {
-    val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(numUsers, userLocationRadius, centerLatitude, centerLongitude)
-    return userFeeder
+  val pushNotifier = System.getProperty(ConfigProperties.PushNotifier, "loadNotifier")
+  val pushProvider = System.getProperty(ConfigProperties.PushProvider, "noop")
+
+  // Large Entity Collection settings
+  val entityPrefix = System.getProperty(ConfigProperties.EntityPrefix, "entity")
+  val entityType = System.getProperty(ConfigProperties.EntityType, EntityType.Basic) // basic/trivial/?
+  val entitySeed = Integer.getInteger(ConfigProperties.EntitySeed, 1).toInt
+  val searchLimit = Integer.getInteger(ConfigProperties.SearchLimit, 0).toInt
+  val searchQuery = System.getProperty(ConfigProperties.SearchQuery, "")
+  val endConditionType = System.getProperty(ConfigProperties.EndConditionType, EndConditionType.MinutesElapsed)
+  val endMinutes = Integer.getInteger(ConfigProperties.EndMinutes, 10).toInt
+  val endRequestCount = Integer.getInteger(ConfigProperties.EndRequestCount, 10).toInt
+
+  def getUserFeeder():Array[Map[String, String]]= {
+    FeederGenerator.generateUserWithGeolocationFeeder(totalUsers, userLocationRadius, centerLatitude, centerLongitude)
   }
 
   def getInfiniteUserFeeder():Iterator[Map[String, String]]= {
-    val userFeeder = FeederGenerator.generateUserWithGeolocationFeederInfinite(Settings.userSeed, userLocationRadius, centerLatitude, centerLongitude,maxPossibleUsers)
-    return userFeeder
+    FeederGenerator.generateUserWithGeolocationFeederInfinite(userSeed, userLocationRadius, centerLatitude, centerLongitude)
   }
 
+  var testStartTime = System.currentTimeMillis()
+
+  def setTestStartTime(): Unit = {
+    testStartTime = System.currentTimeMillis()
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Utils.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Utils.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Utils.scala
deleted file mode 100755
index 8997d8c..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Utils.scala
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.usergrid.settings
-
-import scala.util.Random
-import scala.math
-import Array._
-
-/**
- *
- * Utility for creating various data elements
- *
- */
-object Utils {
-
-  private val RNG = new Random
-
-  /**
-   * Generate a new uuid and replace the '-' with empty
-   */
-  def generateUUIDString(): String = {
-    return java.util.UUID.randomUUID.toString.replace("-", "")
-  }
-
-  /**
-   * Generate a unique string with a prefix
-   *
-   * @param prefix
-   * @return
-   */
-  def generateUniqueName(prefix : String): String = {
-     return prefix + generateUUIDString()
-  }
-
-  // random number in between [a...b]
-  def generateRandomInt(lowerBound: Int, upperBound: Int) = RNG.nextInt(upperBound - lowerBound) + lowerBound
-
-  def generateRandomGeolocation(radius: Double, centerLatitude: Double, centerLongitude: Double):Map[String, String] = {
-
-    var rd = radius / 111300 // Convert Radius from meters to degrees.
-    var u = RNG.nextFloat()
-    var v = RNG.nextFloat()
-    var q = math.sqrt(u) * rd
-    var w = q * rd
-    var t = 2 * math.Pi * v
-    var x = math.cos(t) * w
-    var y = math.sin(t) * w
-    var xp = x/math.cos(centerLatitude)
-    var latitude = (y + centerLatitude).toString
-    var longitude = (xp + centerLongitude).toString
-    var geolocation: Map[String, String] = Map("latitude"->latitude,"longitude"->longitude)
-
-    return geolocation
-  }
-
-  def generateRandomQueryString: String = {
-
-    val queryParams = Array("age", "height", "weight")
-    var queryString = ""
-
-    for (numParams <- 1 to generateRandomInt(1, queryParams.length)) {
-      queryString = "age=" + Utils.generateRandomInt(18, 65).toString
-      if (numParams == 2) {
-        queryString += "%20AND%20height=" + Utils.generateRandomInt(48, 84).toString
-      } else if (numParams == 3) {
-        queryString += "%20AND%20weight=" + Utils.generateRandomInt(120, 350).toString
-      }
-    }
-
-    return queryString
-  }
-
-  def createRandomPushNotifier:String = {
-    return Utils.generateUniqueName("notifier")
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AppSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AppSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AppSimulation.scala
deleted file mode 100644
index a9cfd10..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AppSimulation.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one or more
- *  *  contributor license agreements.  The ASF licenses this file to You
- *  * under the Apache License, Version 2.0 (the "License"); you may not
- *  * use this file except in compliance with the License.
- *  * You may obtain a copy of the License at
- *  *
- *  *     http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing, software
- *  * distributed under the License is distributed on an "AS IS" BASIS,
- *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  * See the License for the specific language governing permissions and
- *  * limitations under the License.  For additional information regarding
- *  * copyright in this work, please see the NOTICE file in the top level
- *  * directory of this distribution.
- *
- */
-
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import io.gatling.core.scenario.Simulation
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.NotificationScenarios
-import org.apache.usergrid.settings.Settings
-import scala.annotation.switch
-import scala.concurrent.duration._
-
-/**
- * Classy class class.
- */
-class AppSimulation extends Simulation {
-  println("Begin setup")
-  Setup.setupNotifier()
-  println("End Setup")
-
-  setUp(
-    NotificationScenarios.createScenario
-      .inject(constantUsersPerSec(Settings.maxPossibleUsers) during (Settings.duration))
-      .protocols(Settings.httpConf.acceptHeader("application/json"))
-  ).throttle(reachRps(Settings.throttle) in (Settings.rampTime seconds), holdFor(Settings.duration))
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
new file mode 100755
index 0000000..7a55577
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.usergrid.simulations
+
+import io.gatling.core.Predef._
+import org.apache.usergrid.enums.ScenarioType
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.EntityCollectionScenarios
+import org.apache.usergrid.settings.Settings
+
+/**
+ * Configurable simulations.
+ *
+ * Configuration items:
+ * skipSetup, createOrg, org, createApp, app, adminUser, adminPassword, baseUrl,
+ * numEntities, entityType, entityPrefix, entitySeed, rampUsers, rampTime,
+ * constantUsersPerSec, constantUsersDuration, collectionType, scenarioType
+ *
+ * getAllByCursor scenario: searchQuery, searchLimit
+ */
+class ConfigurableSimulation extends Simulation {
+  before(
+    if (!Settings.skipSetup) {
+      println("Begin setup")
+      if (Settings.createOrg) Setup.setupOrg()
+      if (Settings.createApp) Setup.setupApplication()
+      if (Settings.loadEntities) Setup.setupEntitiesCollection(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed)
+    } else {
+      println("Skipping setup")
+    }
+  )
+
+
+
+  Settings.setTestStartTime()
+  if (Settings.scenarioType == ScenarioType.GetAllByCursor) {
+    setUp(
+        EntityCollectionScenarios.getEntityPagesToEnd
+          .inject(
+            rampUsers(Settings.rampUsers) over Settings.rampTime,
+            constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+          ).protocols(Settings.httpConf.acceptHeader("application/json"))
+    )
+  } else if (Settings.scenarioType == ScenarioType.NameRandomInfinite) {
+    setUp(
+      EntityCollectionScenarios.getRandomEntitiesByName
+        .inject(
+          rampUsers(Settings.rampUsers) over Settings.rampTime,
+          constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
+
+        ).protocols(Settings.httpConf.acceptHeader("application/json"))
+    )
+  } else {
+    println(s"scenarioType ${Settings.scenarioType} not found.")
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConnectionsSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConnectionsSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConnectionsSimulation.scala
deleted file mode 100644
index 3756f84..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConnectionsSimulation.scala
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one or more
- *  *  contributor license agreements.  The ASF licenses this file to You
- *  * under the Apache License, Version 2.0 (the "License"); you may not
- *  * use this file except in compliance with the License.
- *  * You may obtain a copy of the License at
- *  *
- *  *     http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing, software
- *  * distributed under the License is distributed on an "AS IS" BASIS,
- *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  * See the License for the specific language governing permissions and
- *  * limitations under the License.  For additional information regarding
- *  * copyright in this work, please see the NOTICE file in the top level
- *  * directory of this distribution.
- *
- */
-
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import io.gatling.core.scenario.Simulation
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.{ConnectionScenarios, NotificationScenarios}
-import org.apache.usergrid.settings.Settings
-import scala.concurrent.duration._
-
-/**
- * Classy class class.
- */
-class ConnectionsSimulation extends Simulation{
-
-  if(!Settings.skipSetup) {
-    println("Begin setup")
-    Setup.setupOrg()
-    Setup.setupApplication()
-    Setup.setupNotifier()
-    Setup.setupUsers()
-    println("End Setup")
-  }else{
-    println("Skipping Setup")
-  }
-
-  setUp(
-    ConnectionScenarios.createScenario
-      .inject(constantUsersPerSec(Settings.maxPossibleUsers) during (Settings.duration)) // wait for 15 seconds so create org can finish, need to figure out coordination
-      .throttle(reachRps(Settings.throttle) in ( Settings.rampTime.seconds))
-      .protocols( Settings.httpConf.acceptHeader("application/json"))
-  )
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/DeleteUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/DeleteUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/DeleteUsersSimulation.scala
deleted file mode 100644
index bcfbe2d..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/DeleteUsersSimulation.scala
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one or more
- *  *  contributor license agreements.  The ASF licenses this file to You
- *  * under the Apache License, Version 2.0 (the "License"); you may not
- *  * use this file except in compliance with the License.
- *  * You may obtain a copy of the License at
- *  *
- *  *     http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing, software
- *  * distributed under the License is distributed on an "AS IS" BASIS,
- *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  * See the License for the specific language governing permissions and
- *  * limitations under the License.  For additional information regarding
- *  * copyright in this work, please see the NOTICE file in the top level
- *  * directory of this distribution.
- *
- */
-
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import io.gatling.core.scenario.Simulation
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.UserScenarios
-import org.apache.usergrid.settings.Settings
-
-/**
- * Deletes application users continually to an application.  Expects the following parameters
- *
- * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
- * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
- * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
- */
-class DeleteUsersSimulation extends Simulation {
-
-  println("Begin setup")
-  Setup.setupOrg()
-  Setup.setupApplication()
-  println("End Setup")
-
-
-  setUp(
-    UserScenarios.deleteUsersInfinitely
-      .inject(
-        /**
-         * injection steps take from this forum post
-         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
-         */
-        rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-        constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration
-
-      )).protocols(Settings.httpConf.acceptHeader("application/json"))
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetEntitySimulation.scala
deleted file mode 100644
index 6e0ba81..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetEntitySimulation.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import io.gatling.http.Predef._
- import org.apache.usergrid.datagenerators.FeederGenerator
- import org.apache.usergrid.scenarios.UserScenarios
- import org.apache.usergrid.settings.Settings
- import scala.concurrent.duration._
-
-class GetEntitySimulation extends Simulation {
-
-  // Target settings
-  val httpConf = Settings.httpConf
-
-  // Simulation settings
-  val numUsers:Int = Settings.numUsers
-  val numEntities:Int = Settings.numEntities
-  val rampTime:Int = Settings.rampTime
-  val throttle:Int = Settings.throttle
-
-  val feeder = FeederGenerator.generateEntityNameFeeder("user", numEntities)
-
-  val scnToRun = scenario("GET entity")
-    .exec(UserScenarios.getRandomUser)
-
-  setUp(scnToRun.inject(atOnceUsers(numUsers)).throttle(reachRps(throttle) in (rampTime.seconds)).protocols(httpConf)).maxDuration(Settings.duration)
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUserPagesSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUserPagesSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUserPagesSimulation.scala
deleted file mode 100755
index 5d76ca0..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUserPagesSimulation.scala
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.UserScenarios
-import org.apache.usergrid.settings.Settings
-
-/**
- * Posts application users continually to an application.  Expects the following parameters
- *
- * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
- * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
- * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
- */
-class GetUserPagesSimulation extends Simulation {
-
-  println("Begin setup")
-  Setup.setupOrg()
-  Setup.setupApplication()
-  println("End Setup")
-
-
-  setUp(
-    UserScenarios.getUserPagesToEnd
-      .inject(
-        /**
-         * injection steps take from this forum post
-         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
-         */
-        rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-        constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration
-
-      )).protocols(Settings.httpConf.acceptHeader("application/json"))
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUsersSimulation.scala
deleted file mode 100755
index a088e27..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/GetUsersSimulation.scala
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.UserScenarios
-import org.apache.usergrid.settings.Settings
-
-/**
- * Posts application users continually to an application.  Expects the following parameters
- *
- * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
- * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
- * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
- */
-class GetUsersSimulation extends Simulation {
-
-  println("Begin setup")
-  Setup.setupOrg()
-  Setup.setupApplication()
-  println("End Setup")
-
-
-  setUp(
-    UserScenarios.getUsersByUsername
-      .inject(
-        /**
-         * injection steps take from this forum post
-         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
-         */
-        rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-        constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration
-
-      )).protocols(Settings.httpConf.acceptHeader("application/json"))
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostCustomEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostCustomEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostCustomEntitySimulation.scala
deleted file mode 100644
index ef972ed..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostCustomEntitySimulation.scala
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one or more
- *  *  contributor license agreements.  The ASF licenses this file to You
- *  * under the Apache License, Version 2.0 (the "License"); you may not
- *  * use this file except in compliance with the License.
- *  * You may obtain a copy of the License at
- *  *
- *  *     http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing, software
- *  * distributed under the License is distributed on an "AS IS" BASIS,
- *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  * See the License for the specific language governing permissions and
- *  * limitations under the License.  For additional information regarding
- *  * copyright in this work, please see the NOTICE file in the top level
- *  * directory of this distribution.
- *
- */
-
-package org.apache.usergrid.simulations
-
-
-import io.gatling.core.scenario.Simulation
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.{EntityScenarios, TokenScenarios}
-import java.nio.file.{Paths, Files}
-import io.gatling.core.Predef._
-import org.apache.usergrid.datagenerators.FeederGenerator
-import scala.concurrent.duration._
-import org.apache.usergrid.settings.{Utils, Headers, Settings}
-
-/**
- * PostCustomEntitySimulation - creates lots of custom entities
- * 
- * Run this way:
- * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.PostCustomEntitySimulation -DcollectionType=yourcollection
- * 
- *
- */
-class PostCustomEntitySimulation extends Simulation {
-
-  if(!Settings.skipSetup) {
-    println("Begin setup")
-    println("These aren't the droids you are looking for...")
-    //exec(TokenScenarios.getManagementToken)
-    println("End Setup")
-  }else{
-    println("Skipping Setup")
-  }
-
-  val numEntities:Int = Settings.numEntities
-  val collectionType = Settings.collectionType
-  println("collection type = " + collectionType)
-  val rampTime:Int = Settings.rampTime
-  val throttle:Int = Settings.throttle
-  val feeder = FeederGenerator.generateCustomEntityInfinite(0)
-  val httpConf = Settings.httpConf
-
-  val scnToRun = scenario("POST custom entities")
-    .feed(feeder)
-    .exec(EntityScenarios.postEntity)
-  
-  /*
-  val scnToRun = scenario("POST custom entities")
-    .feed(feeder)
-    .doIfOrElse(session => session("token").as[String].nonEmpty(session)) {
-      exec(EntityScenarios.postEntityWithToken)
-    } {
-      exec(EntityScenarios.postEntity)
-    }
-*/
-
-
-  setUp(scnToRun.inject(
-    rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-    constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration
-  ).protocols(httpConf)).maxDuration(Settings.duration)
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostUsersSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostUsersSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostUsersSimulation.scala
deleted file mode 100755
index 5184e92..0000000
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PostUsersSimulation.scala
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.simulations
-
-import io.gatling.core.Predef._
-import org.apache.usergrid.helpers.Setup
-import org.apache.usergrid.scenarios.UserScenarios
-import org.apache.usergrid.settings.Settings
-
-/**
- * Posts application users continually to an application.  Expects the following parameters
- *
- * -DmaxPossibleUsers : The maximum number of users to be making requests as fast as possible.  Think of this as conccurrent users in the system
- * -DrampTime: The amount of time (in seconds) to allow for maxPossibleUsers to be reached.  This will add new users linearlly
- * -Dduration: The amount of time (in seconds) to continue to perform requests up with the maxPossibleUsers
- */
-class PostUsersSimulation extends Simulation {
-
-  println("Begin setup")
-  Setup.setupOrg()
-  Setup.setupApplication()
-  println("End Setup")
-
-
-  setUp(
-    UserScenarios.postUsersInfinitely
-      .inject(
-        /**
-         * injection steps take from this forum post
-         * https://groups.google.com/forum/#!topic/gatling/JfYHaWCbA-w
-         */
-        rampUsers(Settings.maxPossibleUsers) over Settings.rampTime,
-        constantUsersPerSec(Settings.maxPossibleUsers) during Settings.duration
-
-      )).protocols(Settings.httpConf.acceptHeader("application/json"))
-
-}


[08/21] incubator-usergrid git commit: USERGRID-871: base64 issues with Java 7, will fix

Posted by to...@apache.org.
USERGRID-871: base64 issues with Java 7, will fix


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/f1326fd1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/f1326fd1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/f1326fd1

Branch: refs/heads/two-dot-o-dev
Commit: f1326fd17601096acc1cc38fb7534eba2dee81ba
Parents: c499e42
Author: Mike Dunker <md...@apigee.com>
Authored: Tue Jul 21 17:29:20 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Tue Jul 21 17:29:20 2015 -0700

----------------------------------------------------------------------
 .../src/main/scala/org/apache/usergrid/settings/Settings.scala | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f1326fd1/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 75bed58..72b591f 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -17,7 +17,8 @@
 package org.apache.usergrid.settings
 
 import java.nio.charset.StandardCharsets
-import java.util.Base64
+//import java.util.Base64
+
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
@@ -51,7 +52,8 @@ object Settings {
   val userSeed:Int = Integer.getInteger(ConfigProperties.UserSeed,1).toInt
   val appUser = System.getProperty(ConfigProperties.AppUser)
   val appUserPassword = System.getProperty(ConfigProperties.AppUserPassword)
-  val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
+  //val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
+  val appUserBase64 = "BROKEN FOR NOW"
 
   val numEntities:Int = Integer.getInteger(ConfigProperties.NumEntities, 5000).toInt
   val numDevices:Int = Integer.getInteger(ConfigProperties.NumDevices, 4000).toInt


[11/21] incubator-usergrid git commit: USERGRID-871: add update test and some general cleanup

Posted by to...@apache.org.
USERGRID-871: add update test and some general cleanup


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/5d202d90
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/5d202d90
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/5d202d90

Branch: refs/heads/two-dot-o-dev
Commit: 5d202d90c6ace67f7e0644d6fe5623f11fafb716
Parents: 195449f
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Jul 23 08:07:12 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Jul 23 08:07:12 2015 -0700

----------------------------------------------------------------------
 stack/loadtests/runLoadEntities.sh              |  4 +-
 stack/loadtests/runUpdateEntities.sh            | 99 ++++++++++++++++++++
 .../datagenerators/EntityDataGenerator.scala    | 12 +--
 .../datagenerators/FeederGenerator.scala        | 48 ++++++----
 .../org/apache/usergrid/enums/AuthType.scala    |  6 ++
 .../usergrid/enums/ConfigProperties.scala       |  9 +-
 .../usergrid/enums/EndConditionType.scala       |  9 +-
 .../org/apache/usergrid/enums/EntityType.scala  |  9 +-
 .../apache/usergrid/enums/ScenarioType.scala    | 10 +-
 .../org/apache/usergrid/enums/TokenType.scala   |  9 +-
 .../apache/usergrid/helpers/Extractors.scala    | 27 ------
 .../org/apache/usergrid/helpers/Setup.scala     | 12 +--
 .../org/apache/usergrid/helpers/Utils.scala     |  2 +-
 .../scenarios/ApplicationScenarios.scala        |  2 +-
 .../scenarios/ConnectionScenarios.scala         |  8 +-
 .../scenarios/EntityCollectionScenarios.scala   | 60 +++++++-----
 .../usergrid/scenarios/EntityScenarios.scala    |  1 -
 .../scenarios/NotificationScenarios.scala       |  9 +-
 .../usergrid/scenarios/NotifierScenarios.scala  |  5 +-
 .../scenarios/OrganizationScenarios.scala       |  7 +-
 .../usergrid/scenarios/TokenScenarios.scala     | 11 +--
 .../org/apache/usergrid/settings/Headers.scala  |  1 -
 .../org/apache/usergrid/settings/Settings.scala | 10 +-
 .../simulations/ConfigurableSimulation.scala    | 47 +++-------
 .../simulations/deprecated/AppSimulation.scala  |  3 -
 .../deprecated/ConnectionsSimulation.scala      |  3 -
 .../deprecated/SetupSimulation.scala            |  3 -
 27 files changed, 250 insertions(+), 176 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/runLoadEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadEntities.sh b/stack/loadtests/runLoadEntities.sh
index bee8d1a..d213fd4 100755
--- a/stack/loadtests/runLoadEntities.sh
+++ b/stack/loadtests/runLoadEntities.sh
@@ -37,9 +37,9 @@ mvn compile
 #APP=$(date +%s)
 ADMIN_USER=superuser
 ADMIN_PASSWORD=test
-CREATE_ORG=false
+CREATE_ORG=true
 ORG=gatling
-CREATE_APP=false
+CREATE_APP=true
 APP=millionentities
 COLLECTION_TYPE=trivialentities
 SCENARIO_TYPE=loadEntities

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/runUpdateEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runUpdateEntities.sh b/stack/loadtests/runUpdateEntities.sh
new file mode 100755
index 0000000..0963a2d
--- /dev/null
+++ b/stack/loadtests/runUpdateEntities.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 6 ] || die "At least 6 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+NUM_ENTITIES="$6"
+
+shift 6
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION_TYPE=trivialentities
+SCENARIO_TYPE=updateEntities
+# don't load entities as part of setup
+LOAD_ENTITIES=false
+
+SKIP_SETUP=TRUE
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivial
+ENTITY_PREFIX=trivial
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-DcollectionType=${COLLECTION_TYPE} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
index 88b81c8..f9fa4fc 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
@@ -14,15 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.datagenerators
+package org.apache.usergrid.datagenerators
 
- import org.apache.usergrid.enums.EntityType
- import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.enums.EntityType
+import org.apache.usergrid.helpers.Utils
 
- import scala.collection.mutable.ArrayBuffer
- import scala.util.parsing.json.JSONObject
+import scala.collection.mutable.ArrayBuffer
+import scala.util.parsing.json.JSONObject
 
- object EntityDataGenerator {
+object EntityDataGenerator {
 
   def generateBlockUserLists(numUsers: Int): Map[String, String] = {
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
index 92444b2..1c80822 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
@@ -14,18 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.datagenerators
+package org.apache.usergrid.datagenerators
 
- import java.util
- import java.util.UUID
- import java.util.concurrent.atomic.{AtomicInteger, AtomicLong}
- import io.gatling.core.Predef._
- import org.apache.usergrid.helpers.Utils
- import org.apache.usergrid.settings.Settings
- import scala.collection.mutable.ArrayBuffer
- import scala.util.Random
+import java.util.UUID
+import java.util.concurrent.atomic.AtomicInteger
+import io.gatling.core.Predef._
+import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.settings.Settings
+import scala.collection.mutable.ArrayBuffer
 
- object FeederGenerator {
+object FeederGenerator {
 
   def generateUserWithGeolocationFeeder(numUsers: Int, radius: Double, centerLatitude: Double, centerLongitude: Double): Array[Map[String, String]] = {
     var userArray: ArrayBuffer[Map[String, String]] = new ArrayBuffer[Map[String, String]]
@@ -206,20 +204,32 @@
    entityArray.toArray
  }
 
- def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Array[Map[String, Any]] = {
-   var entityMapArray: ArrayBuffer[Map[String, Any]] = new ArrayBuffer[Map[String, Any]]
+ /*
+  * Gatling doesn't handle feeders running out of data well -- ending test with failure and not building a report.
+  * This feeder will serve data forever, but validEntity will be set to "no" when data has run out. Each user can
+  * then exit in a controlled fashion.
+  */
+ def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
+ new Feeder[String] {
+   var counter = new AtomicInteger(0)
 
-   for (i <- seed to numEntities+seed-1) {
-     val entityName = prefix.concat(i.toString)
+   // runs forever -- users detect when data is done using validEntity field
+   override def hasNext: Boolean = true
+
+   override def next(): Map[String, String] = {
+     val i = counter.getAndIncrement()
+     val seededVal = i + seed
+     val entityName = prefix.concat(seededVal.toString)
      val entity = EntityDataGenerator.generateEntity(entityType, entityName)
      val entityUrl = Settings.baseCollectionUrl + "/" + entityName
-     entityMapArray += Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl)
-   }
+     val validEntity = if (i >= numEntities) "no" else "yes"
 
-   entityMapArray.toArray
+     Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity, "entityNum" -> (i+1).toString)
+   }
  }
 
- def generateCustomEntityFeeder2 (numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
+   /*
+ def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
  new Feeder[String] {
    var counter = new AtomicInteger(seed)
 
@@ -237,6 +247,8 @@
    }
  }
 
+    */
+
  def generateCustomEntityInfiniteFeeder(seed: Int = Settings.entitySeed, entityType: String = Settings.entityType, prefix: String = Settings.entityPrefix): Iterator[String] = {
    Iterator.from(seed).map(i=>EntityDataGenerator.generateEntity(entityType, prefix.concat(i.toString)))
  }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
index 2823d95..6086fdd 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
@@ -7,4 +7,10 @@ object AuthType {
   val Anonymous = "anonymous"
   val Token = "token"
   val Basic = "basic"
+
+  val Values = Seq(Anonymous,Token,Basic)
+
+  def isValid(str: String): Boolean = {
+    Values.contains(str)
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
index 56350ee..2f13a12 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
@@ -44,9 +44,16 @@ object ConfigProperties {
   val OrgCreationName = "orgCreationName"
   val OrgCreationEmail = "orgCreationEmail"
   val OrgCreationPassword = "orgCreationPassword"
+  val UpdateProperty = "updateProperty"
+  val UpdateValue = "updateValue"
+
   val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
     ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
     NumDevices,CollectionType,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,EntityPrefix,EntityType,
     EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,OrgCreationName,
-    OrgCreationEmail,OrgCreationPassword)
+    OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue)
+
+  def isValid(str: String): Boolean = {
+    Values.contains(str)
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
index 4bbb9cc..2d4bf63 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
@@ -1,9 +1,12 @@
 package org.apache.usergrid.enums
 
-/**
- * Created by mdunker on 7/21/15.
- */
 object EndConditionType {
   val MinutesElapsed = "minutesElapsed"
   val RequestCount = "requestCount"
+
+  val Values = Seq(MinutesElapsed,RequestCount)
+
+  def isValid(str: String): Boolean = {
+    Values.contains(str)
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
index d17d280..dfb378c 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
@@ -1,9 +1,12 @@
 package org.apache.usergrid.enums
 
-/**
- * Created by mdunker on 7/20/15.
- */
 object EntityType {
   val Trivial = "trivial"
   val Basic = "basic"
+
+  val Values = Seq(Trivial,Basic)
+
+  def isValid(str: String): Boolean = {
+    Values.contains(str)
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
index e21a1ee..7dca619 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
@@ -1,11 +1,15 @@
 package org.apache.usergrid.enums
 
-/**
- * Created by mdunker on 7/20/15.
- */
 object ScenarioType {
   val GetAllByCursor = "getAllByCursor"
   val NameRandomInfinite = "nameRandomInfinite"
   val LoadEntities = "loadEntities"
   val DeleteEntities = "deleteEntities"
+  val UpdateEntities = "updateEntities"
+
+  val Values = Seq(GetAllByCursor,NameRandomInfinite,LoadEntities,DeleteEntities,UpdateEntities)
+
+  def isValid(str: String): Boolean = {
+    Values.contains(str)
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
index 4d371e1..456a9cb 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
@@ -1,10 +1,13 @@
 package org.apache.usergrid.enums
 
-/**
- * Created by mdunker on 7/20/15.
- */
 object TokenType {
   val None = "none"
   val User = "user"
   val Management = "management"
+
+  val Values = Seq(None, User, Management)
+
+  def isValid(str: String): Boolean = {
+    Values.contains(str)
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index 8de995e..35f75a7 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -103,31 +103,4 @@ object Extractors {
     session => session.set("authType", Settings.authType)
   }
 
-  /*
-  def injectTokenToSession(authType: String, tokenType: String): Expression[Session] = {
-    session => {
-      if (authType == AuthType.Token && tokenType == TokenType.User) {
-        session.set("authToken", Setup.getUserToken)
-      } else if (authType == AuthType.Token && tokenType == TokenType.Management) {
-        session.set("authToken", Setup.getManagementToken())
-      } else {
-        session.set("authToken", "")
-      }
-    }
-  }
-
-  def injectAuth(authType: String, tokenType: String): Expression[Session] = {
-    session => {
-      if (authType == AuthType.Token && tokenType == TokenType.User) {
-        session.set("authToken", Setup.getUserToken)
-      } else if (authType == AuthType.Token && tokenType == TokenType.Management) {
-        session.set("authToken", Setup.getManagementToken())
-      } else {
-        session.set("authToken", "")
-      }
-      session.set("authType", authType)
-    }
-  }
-  */
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
index af3aabb..d90353a 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
@@ -20,24 +20,14 @@
 
 package org.apache.usergrid.helpers
 
-import java.util
-
 import com.fasterxml.jackson.databind.ObjectMapper
 import com.ning.http.client.{ListenableFuture, AsyncHttpClient,Response}
-import io.gatling.core.Predef._
-import io.gatling.http.Predef._
-import io.gatling.http.request.StringBody
-import io.gatling.jsonpath.JsonPath
 import org.apache.usergrid.datagenerators.FeederGenerator
 import org.apache.usergrid.enums.TokenType
-import org.apache.usergrid.settings.{Settings, Headers}
+import org.apache.usergrid.settings.Settings
 
 import scala.collection.mutable.ArrayBuffer
-import scala.util.parsing.json.JSONObject
 
-/**
- * Classy class class.
- */
 object Setup {
   var managementToken:String = null
   val client = new AsyncHttpClient()

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
index 82061d6..16ade96 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.helpers
+package org.apache.usergrid.helpers
 
 import scala.util.Random
 import scala.util.parsing.json.JSONObject

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
index 4150513..44fe118 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
@@ -18,7 +18,7 @@
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
- import org.apache.usergrid.settings.{Settings, Headers}
+import org.apache.usergrid.settings.{Settings, Headers}
 
  /**
  * Performs organization registration

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
index b2827bb..0ff20a0 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
- import org.apache.usergrid.datagenerators.FeederGenerator
- import org.apache.usergrid.settings.{Settings, Headers}
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.settings.{Settings, Headers}
 
- object ConnectionScenarios {
+object ConnectionScenarios {
 
   val postUserConnection = exec(
     http("POST connection")

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 592a507..1dd534c 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -147,56 +147,64 @@ object EntityCollectionScenarios {
     .exec(injectTokenIntoSession())
     .exec(injectAuthType())
     .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
-      feed(FeederGenerator.generateCustomEntityFeeder2(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+      feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+        .exec{
+          session => if (session("validEntity").as[String] == "yes") { println("Loading entity #" + session("entityNum").as[String]) }
+          session
+        }
         .doIf(session => session("validEntity").as[String] == "yes") {
           exec(loadEntity)
         }
     }
-    //.rendezVous(Settings.totalUsers)
 
   /*
-  val loadEntity = exec(
-    http("POST load entity")
-      .post(Settings.baseCollectionUrl)
+   * Delete entities
+   */
+  val deleteEntity = exec(
+    http("DELETE entity")
+      .delete("""${entityUrl}""")
       .headers(Headers.authToken)
-      .body(StringBody("""${entity}"""))
-      .check(status.in(Seq(200,400)))
+      // 200 for success, 404 if doesn't exist
+      .check(status.in(Seq(200)))
   )
 
-  val loadEntities = scenario("Load entities")
+  val deleteEntities = scenario("Delete entities")
     .exec(injectTokenIntoSession())
     .exec(injectAuthType())
-    .forever(
-      feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
-      .exec(loadEntity)
-    )
-    */
-
+    .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
+    feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+      .exec {
+      session => if (session("validEntity").as[String] == "yes") { println("Deleting entity #" + session("entityNum").as[String]) }
+        session
+    }
+      .doIf(session => session("validEntity").as[String] == "yes") {
+      exec(deleteEntity)
+    }
+  }
 
   /*
    * Delete entities
    */
-  val deleteEntity = exec(
-    http("DELETE entity")
-      .delete("""${entityUrl}""")
+  val updateEntity = exec(
+    http("UPDATE entity")
+      .put("""${entityUrl}""")
       .headers(Headers.authToken)
+      .body(StringBody(Settings.updateBody))
       // 200 for success, 404 if doesn't exist
       .check(status.in(Seq(200)))
   )
 
-  val deleteEntities = scenario("Delete entities")
+  val updateEntities = scenario("Update entities")
     .exec(injectTokenIntoSession())
     .exec(injectAuthType())
     .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
-      feed(FeederGenerator.generateCustomEntityFeeder2(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+      feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+        .exec {
+          session => if (session("validEntity").as[String] == "yes") { println("Updating entity #" + session("entityNum").as[String]) }
+          session
+        }
         .doIf(session => session("validEntity").as[String] == "yes") {
-          exec(deleteEntity)
+          exec(updateEntity)
         }
     }
-  /*
-  val createEntityBatchScenario = scenario("Create custom entities")
-      .exec(injectStaticTokenToSession())
-      .feed(FeederGenerator.generateCustomEntityCreateFeeder(Settings.entityPrefix, Settings.numEntities))
-      .exec(EntityScenarios.postEntity)
-  */
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
index dd21e3c..83a648e 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
@@ -22,7 +22,6 @@ import org.apache.usergrid.datagenerators.{EntityDataGenerator, FeederGenerator}
 import org.apache.usergrid.helpers.{Extractors,Utils}
 import org.apache.usergrid.settings.{Headers, Settings}
 
-import scala.util.parsing.json.JSONObject
 
 /**
  * Provides CRUD methods for custom entities

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
index 92998d0..5471426 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
@@ -14,17 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.scenarios
-
-import java.io.File
-import java.nio.file.{Paths, Files}
+package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
- import org.apache.usergrid.datagenerators.FeederGenerator
- import scala.concurrent.duration._
-
-import scala.io.Source
 
 import org.apache.usergrid.settings.{Headers, Settings}
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
index b2e32e5..9718ad3 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
@@ -14,12 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
- import org.apache.usergrid.settings.{Headers, Settings}
- import scala.concurrent.duration._
+import org.apache.usergrid.settings.{Headers, Settings}
 
 /**
  *

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
index 1cdc25c..0c1beef 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
@@ -14,13 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
 import io.gatling.http.Predef._
- import org.apache.usergrid.datagenerators.FeederGenerator
- import org.apache.usergrid.settings.{Settings, Headers}
- import scala.concurrent.duration._
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.settings.{Settings, Headers}
 
 /**
  * Performs organization registration

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
index 4385797..d0eca02 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
@@ -14,15 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
- import io.gatling.http.Predef._
- import io.gatling.http.request.StringBody
- import org.apache.usergrid.settings.Headers
- import org.apache.usergrid.settings.Settings
+import io.gatling.http.Predef._
+import io.gatling.http.request.StringBody
+import org.apache.usergrid.settings.Headers
+import org.apache.usergrid.settings.Settings
 
- import scala.concurrent.duration._
 
 /**
  * Class that will get the token and insert it into the test session.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
index db6062f..04c4d3b 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
@@ -17,7 +17,6 @@
  package org.apache.usergrid.settings
 
  import org.apache.usergrid.enums.AuthType
- import org.apache.usergrid.helpers.Setup
 
  /**
  *

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 3992c68..a7669a1 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -17,14 +17,13 @@
 package org.apache.usergrid.settings
 
 import java.nio.charset.StandardCharsets
-import java.util.Base64
+import java.util.{Date, Base64}
 
 
-import io.gatling.core.Predef._
 import io.gatling.http.Predef._
 import org.apache.usergrid.datagenerators.FeederGenerator
 import org.apache.usergrid.enums._
-import scala.concurrent.duration._
+import org.apache.usergrid.helpers.Utils
 
 object Settings {
 
@@ -92,6 +91,11 @@ object Settings {
   val orgCreationName = System.getProperty(ConfigProperties.OrgCreationName, orgCreationUsername)
   val orgCreationPassword = System.getProperty(ConfigProperties.OrgCreationPassword, "test")
 
+  // Entity update
+  val updateProperty = System.getProperty(ConfigProperties.UpdateProperty, "updateProp")
+  val updateValue = System.getProperty(ConfigProperties.UpdateValue, new Date().toString)
+  val updateBody = Utils.toJSONStr(Map(updateProperty -> updateValue))
+
   def getUserFeeder():Array[Map[String, String]]= {
     FeederGenerator.generateUserWithGeolocationFeeder(totalUsers, userLocationRadius, centerLatitude, centerLongitude)
   }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index 4b0f96a..2e13a6c 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -17,6 +17,7 @@
 package org.apache.usergrid.simulations
 
 import io.gatling.core.Predef._
+import io.gatling.core.structure.ScenarioBuilder
 import org.apache.usergrid.enums.ScenarioType
 import org.apache.usergrid.helpers.Setup
 import org.apache.usergrid.scenarios.EntityCollectionScenarios
@@ -33,6 +34,17 @@ import org.apache.usergrid.settings.Settings
  * getAllByCursor scenario: searchQuery, searchLimit
  */
 class ConfigurableSimulation extends Simulation {
+
+  def getScenario(scenarioType: String): ScenarioBuilder = {
+    scenarioType match {
+      case ScenarioType.LoadEntities => EntityCollectionScenarios.loadEntities
+      case ScenarioType.DeleteEntities => EntityCollectionScenarios.deleteEntities
+      case ScenarioType.UpdateEntities => EntityCollectionScenarios.updateEntities
+      case ScenarioType.GetAllByCursor => EntityCollectionScenarios.getEntityPagesToEnd
+      case ScenarioType.NameRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByName
+    }
+  }
+
   before(
     if (!Settings.skipSetup) {
       println("Begin setup")
@@ -44,43 +56,14 @@ class ConfigurableSimulation extends Simulation {
     }
   )
 
-
-
   Settings.setTestStartTime()
-  if (Settings.scenarioType == ScenarioType.LoadEntities) {
-    setUp(
-      EntityCollectionScenarios.loadEntities
-        .inject(
-          rampUsers(Settings.rampUsers) over Settings.rampTime,
-          constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
-        ).protocols(Settings.httpConf.acceptHeader("application/json"))
-    )
-  } else if (Settings.scenarioType == ScenarioType.DeleteEntities) {
-    setUp(
-      EntityCollectionScenarios.deleteEntities
-        .inject(
-          rampUsers(Settings.rampUsers) over Settings.rampTime,
-          constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
-        ).protocols(Settings.httpConf.acceptHeader("application/json"))
-    )
-  } else if (Settings.scenarioType == ScenarioType.GetAllByCursor) {
-    setUp(
-      EntityCollectionScenarios.getEntityPagesToEnd
-        .inject(
-          rampUsers(Settings.rampUsers) over Settings.rampTime,
-          constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
-        ).protocols(Settings.httpConf.acceptHeader("application/json"))
-    )
-  } else if (Settings.scenarioType == ScenarioType.NameRandomInfinite) {
+  if (ScenarioType.isValid(Settings.scenarioType)) {
+    val scenario: ScenarioBuilder = getScenario(Settings.scenarioType)
     setUp(
-      EntityCollectionScenarios.getRandomEntitiesByName
+      scenario
         .inject(
           rampUsers(Settings.rampUsers) over Settings.rampTime,
           constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
         ).protocols(Settings.httpConf.acceptHeader("application/json"))
     )
   } else {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
index 7f1af08..a66f6b7 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
@@ -28,9 +28,6 @@ import org.apache.usergrid.settings.Settings
 
 import scala.concurrent.duration._
 
-/**
- * Classy class class.
- */
 class AppSimulation extends Simulation {
   println("Begin setup")
   Setup.setupNotifier()

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
index 8e3cd57..69ff0b1 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
@@ -28,9 +28,6 @@ import org.apache.usergrid.settings.Settings
 
 import scala.concurrent.duration._
 
-/**
- * Classy class class.
- */
 class ConnectionsSimulation extends Simulation{
 
   if(!Settings.skipSetup) {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
index 484fb32..8032228 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
@@ -27,9 +27,6 @@ import org.apache.usergrid.settings.Settings
 
 import scala.concurrent.duration._
 
-/**
- * Classy class class.
- */
 class SetupSimulation extends Simulation{
 
   println("Begin setup")


[20/21] incubator-usergrid git commit: USERGRID-871: synchronize the uuid Map

Posted by to...@apache.org.
USERGRID-871: synchronize the uuid Map


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/b038b46f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/b038b46f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/b038b46f

Branch: refs/heads/two-dot-o-dev
Commit: b038b46f92dfc30f621d773063dac662ba14a67f
Parents: d6368af
Author: Mike Dunker <md...@apigee.com>
Authored: Mon Aug 3 12:27:59 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Mon Aug 3 12:27:59 2015 -0700

----------------------------------------------------------------------
 stack/loadtests/runAuditGetCollectionEntities.sh               | 5 +++--
 .../src/main/scala/org/apache/usergrid/settings/Settings.scala | 6 +++++-
 2 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b038b46f/stack/loadtests/runAuditGetCollectionEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runAuditGetCollectionEntities.sh b/stack/loadtests/runAuditGetCollectionEntities.sh
index 673c2b7..b79b609 100755
--- a/stack/loadtests/runAuditGetCollectionEntities.sh
+++ b/stack/loadtests/runAuditGetCollectionEntities.sh
@@ -38,8 +38,9 @@ ADMIN_PASSWORD=test
 ORG=gatling
 APP=millionentities
 SCENARIO_TYPE=auditGetCollectionEntities
-SEARCH_LIMIT=177
-SEARCH_QUERY=order%20by%20name
+SEARCH_LIMIT=1000
+#SEARCH_QUERY=order%20by%20name
+SEARCH_QUERY=
 
 AUTH_TYPE=token
 TOKEN_TYPE=management

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/b038b46f/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 663d4d6..0714698 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -230,7 +230,11 @@ object Settings {
 
   private var uuidMap: Map[Int, String] = Map()
   def addUuid(num: Int, uuid: String): Unit = {
-    if (captureUuids) uuidMap += (num -> uuid)
+    if (captureUuids) {
+      uuidMap.synchronized {
+        uuidMap += (num -> uuid)
+      }
+    }
     // println(s"UUID: ${name},${uuid}")
   }
 


[12/21] incubator-usergrid git commit: Merge remote-tracking branch 'upstream/two-dot-o-dev' into two-dot-o-dev

Posted by to...@apache.org.
Merge remote-tracking branch 'upstream/two-dot-o-dev' into two-dot-o-dev


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/eec8175b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/eec8175b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/eec8175b

Branch: refs/heads/two-dot-o-dev
Commit: eec8175b45e1945df4983e91a627c0deb1a1fcf9
Parents: 5d202d9 54fccac
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Jul 23 12:29:47 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Jul 23 12:29:47 2015 -0700

----------------------------------------------------------------------
 .gitignore                                      |   4 +
 CHANGELOG                                       |   3 -
 LICENSE                                         |  10 +
 stack/LICENSE-2.0.txt                           | 202 -------
 .../main/resources/usergrid-default.properties  |   4 +
 .../corepersistence/CpEntityManager.java        | 122 +++--
 .../corepersistence/CpEntityManagerFactory.java |   6 +-
 .../index/ApplicationIndexLocationStrategy.java |   2 +-
 .../index/ReplicatedIndexLocationStrategy.java  |   2 +-
 .../usergrid/persistence/EntityManager.java     |   5 +
 .../apache/usergrid/persistence/Results.java    |   4 +
 .../usergrid/persistence/CollectionIT.java      |  84 ++-
 .../MvccEntitySerializationStrategyV2Impl.java  |  21 +-
 .../MvccEntitySerializationStrategyV3Impl.java  |  47 +-
 .../core/astyanax/AstyanaxKeyspaceProvider.java |   1 +
 .../persistence/core/astyanax/CassandraFig.java |   3 +
 .../persistence/core/rx/RxSchedulerFig.java     |   9 +
 .../index/impl/EsEntityIndexImpl.java           |   2 +
 .../persistence/query/tree/GrammarTreeTest.java |  32 ++
 stack/pom.xml                                   |   3 +-
 .../apache/usergrid/rest/AbstractRestIT.java    | 509 ------------------
 .../java/org/apache/usergrid/rest/BasicIT.java  |   6 +-
 .../apache/usergrid/rest/IndexResourceIT.java   |  15 +-
 .../apache/usergrid/rest/NotificationsIT.java   |  10 +-
 .../apache/usergrid/rest/PartialUpdateTest.java |   4 +-
 .../apache/usergrid/rest/SystemResourceIT.java  |   8 +-
 .../apache/usergrid/rest/TestContextSetup.java  |  81 ---
 .../rest/applications/ApplicationCreateIT.java  |  12 +-
 .../rest/applications/ApplicationDeleteIT.java  |  12 +-
 .../applications/ApplicationResourceIT.java     |   6 +-
 .../applications/assets/AssetResourceIT.java    |   8 +-
 .../collection/BrowserCompatibilityTest.java    |  11 +-
 .../collection/CollectionsResourceIT.java       |  43 +-
 .../collection/DuplicateNameIT.java             |   4 +-
 .../activities/ActivityResourceIT.java          |   6 +-
 .../collection/activities/PutTest.java          |  11 +-
 .../collection/devices/DevicesResourceIT.java   |   8 +-
 .../collection/groups/GroupResourceIT.java      |   6 +-
 .../collection/paging/PagingResourceIT.java     |  12 +-
 .../users/ConnectionResourceTest.java           |   8 +-
 .../collection/users/OwnershipResourceIT.java   |   6 +-
 .../collection/users/PermissionsResourceIT.java |   4 +-
 .../collection/users/RetrieveUsersTest.java     |  10 +-
 .../collection/users/UserResourceIT.java        |   6 +-
 .../events/ApplicationRequestCounterIT.java     |   8 +-
 .../applications/events/EventsResourceIT.java   |  96 ++--
 .../applications/queries/AndOrQueryTest.java    |  37 +-
 .../queries/BadGrammarQueryTest.java            |   6 +-
 .../applications/queries/BasicGeoTests.java     |  38 +-
 .../applications/queries/GeoPagingTest.java     |   8 +-
 .../applications/queries/MatrixQueryTests.java  |  10 +-
 .../rest/applications/queries/OrderByTest.java  |  18 +-
 .../applications/queries/QueryTestBase.java     |   6 +-
 .../rest/applications/utils/TestUtils.java      |   4 +-
 .../rest/applications/utils/UserRepo.java       |   4 +-
 .../rest/filters/ContentTypeResourceIT.java     |   8 +-
 .../usergrid/rest/management/AccessTokenIT.java |  10 +-
 .../usergrid/rest/management/AdminUsersIT.java  |  59 +-
 .../rest/management/ExportResourceIT.java       |   7 +-
 .../rest/management/ImportResourceIT.java       |  12 +-
 .../rest/management/ManagementResourceIT.java   |  16 +-
 .../rest/management/OrganizationsIT.java        |   6 +-
 .../rest/management/RegistrationIT.java         |  19 +-
 .../organizations/AdminEmailEncodingIT.java     |  10 +-
 .../applications/ApplicationsIT.java            |  91 ----
 .../rest/test/PropertiesResourceIT.java         |  80 ---
 .../rest/test/resource/AbstractRestIT.java      | 184 +++++++
 .../rest/test/resource/ClientSetup.java         | 172 ++++++
 .../rest/test/resource/CollectionResource.java  |  27 -
 .../usergrid/rest/test/resource/Connection.java |  61 ---
 .../rest/test/resource/CustomCollection.java    |  32 --
 .../usergrid/rest/test/resource/DumbClient.java |  58 ++
 .../rest/test/resource/EntityResource.java      | 110 ----
 .../rest/test/resource/MatrixResource.java      |  64 ---
 .../apache/usergrid/rest/test/resource/Me.java  |  36 --
 .../rest/test/resource/NamedResource.java       | 195 -------
 .../usergrid/rest/test/resource/README.md       | 110 ++++
 .../usergrid/rest/test/resource/RestClient.java | 134 +++++
 .../rest/test/resource/RootResource.java        |  65 ---
 .../rest/test/resource/SetResource.java         |  96 ----
 .../rest/test/resource/TestContext.java         | 256 ---------
 .../rest/test/resource/TestOrganization.java    |  55 --
 .../test/resource/TestPropertiesResource.java   |  47 ++
 .../rest/test/resource/ValueResource.java       | 328 ------------
 .../rest/test/resource/app/Application.java     |  86 ---
 .../rest/test/resource/app/Collection.java      |  81 ---
 .../usergrid/rest/test/resource/app/Device.java |  49 --
 .../usergrid/rest/test/resource/app/Group.java  |  56 --
 .../test/resource/app/GroupsCollection.java     |  66 ---
 .../usergrid/rest/test/resource/app/Role.java   |  56 --
 .../rest/test/resource/app/RolesCollection.java |  64 ---
 .../usergrid/rest/test/resource/app/User.java   |  55 --
 .../rest/test/resource/app/UsersCollection.java |  86 ---
 .../resource/app/queue/DevicesCollection.java   |  37 --
 .../rest/test/resource/app/queue/Queue.java     | 193 -------
 .../resource/app/queue/QueuesCollection.java    |  36 --
 .../app/queue/SubscribersCollection.java        |  61 ---
 .../test/resource/app/queue/Transaction.java    |  84 ---
 .../app/queue/TransactionsCollection.java       |  36 --
 .../endpoints/ApplicationsResource.java         |  73 +++
 .../resource/endpoints/CollectionEndpoint.java  | 356 ++++++++++++
 .../resource/endpoints/DatabaseResource.java    |  39 ++
 .../test/resource/endpoints/EntityEndpoint.java | 174 ++++++
 .../test/resource/endpoints/NamedResource.java  | 358 +++++++++++++
 .../endpoints/OrganizationResource.java         |  49 ++
 .../test/resource/endpoints/RootResource.java   |  86 +++
 .../test/resource/endpoints/SetupResource.java  |  52 ++
 .../test/resource/endpoints/SystemResource.java |  57 ++
 .../test/resource/endpoints/TokenResource.java  |  89 +++
 .../test/resource/endpoints/UrlResource.java    |  44 ++
 .../endpoints/mgmt/ApplicationResource.java     | 105 ++++
 .../endpoints/mgmt/ApplicationsResource.java    |  65 +++
 .../endpoints/mgmt/AuthorizeResource.java       |  59 ++
 .../endpoints/mgmt/ConfirmResource.java         |  46 ++
 .../endpoints/mgmt/CredentialsResource.java     |  53 ++
 .../resource/endpoints/mgmt/FeedResource.java   |  49 ++
 .../endpoints/mgmt/ManagementResource.java      |  60 +++
 .../endpoints/mgmt/ManagementResponse.java      |  72 +++
 .../resource/endpoints/mgmt/MeResource.java     |  36 ++
 .../resource/endpoints/mgmt/OrgResource.java    | 167 ++++++
 .../mgmt/OrganizationApplicationResponse.java   |  60 +++
 .../endpoints/mgmt/OrganizationResource.java    |  80 +++
 .../endpoints/mgmt/PasswordResource.java        |  45 ++
 .../endpoints/mgmt/ReactivateResource.java      |  46 ++
 .../resource/endpoints/mgmt/ResetResource.java  |  42 ++
 .../endpoints/mgmt/RevokeTokenResource.java     |  32 ++
 .../endpoints/mgmt/RevokeTokensResource.java    |  33 ++
 .../resource/endpoints/mgmt/TokenResource.java  |  71 +++
 .../resource/endpoints/mgmt/UserResource.java   |  88 +++
 .../resource/endpoints/mgmt/UsersResource.java  |  57 ++
 .../rest/test/resource/mgmt/Application.java    |  49 --
 .../resource/mgmt/ApplicationsCollection.java   |  53 --
 .../rest/test/resource/mgmt/Management.java     |  98 ----
 .../rest/test/resource/mgmt/Organization.java   |  60 ---
 .../resource/mgmt/OrganizationsCollection.java  |  74 ---
 .../test/resource/model/ActivityEntity.java     |  49 ++
 .../rest/test/resource/model/ApiResponse.java   | 223 ++++++++
 .../rest/test/resource/model/Application.java   |  39 ++
 .../resource/model/ChangePasswordEntity.java    |  33 ++
 .../rest/test/resource/model/Collection.java    |  98 ++++
 .../rest/test/resource/model/Credentials.java   |  47 ++
 .../rest/test/resource/model/Entity.java        | 213 ++++++++
 .../rest/test/resource/model/Organization.java  | 119 ++++
 .../test/resource/model/QueryParameters.java    |  93 ++++
 .../rest/test/resource/model/Token.java         |  81 +++
 .../usergrid/rest/test/resource/model/User.java | 101 ++++
 .../rest/test/resource/state/ClientContext.java |  39 ++
 .../test/resource2point0/AbstractRestIT.java    | 184 -------
 .../rest/test/resource2point0/ClientSetup.java  | 172 ------
 .../rest/test/resource2point0/DumbClient.java   |  58 --
 .../rest/test/resource2point0/README.md         | 111 ----
 .../rest/test/resource2point0/RestClient.java   | 134 -----
 .../resource2point0/TestPropertiesResource.java |  47 --
 .../endpoints/ApplicationsResource.java         |  77 ---
 .../endpoints/CollectionEndpoint.java           | 357 ------------
 .../endpoints/DatabaseResource.java             |  39 --
 .../endpoints/EntityEndpoint.java               | 174 ------
 .../endpoints/NamedResource.java                | 356 ------------
 .../endpoints/OrganizationResource.java         |  49 --
 .../resource2point0/endpoints/RootResource.java |  86 ---
 .../endpoints/SetupResource.java                |  52 --
 .../endpoints/SystemResource.java               |  57 --
 .../endpoints/TokenResource.java                |  89 ---
 .../resource2point0/endpoints/UrlResource.java  |  44 --
 .../endpoints/mgmt/ApplicationResource.java     | 105 ----
 .../endpoints/mgmt/ApplicationsResource.java    |  65 ---
 .../endpoints/mgmt/AuthorizeResource.java       |  59 --
 .../endpoints/mgmt/ConfirmResource.java         |  46 --
 .../endpoints/mgmt/CredentialsResource.java     |  53 --
 .../endpoints/mgmt/FeedResource.java            |  49 --
 .../endpoints/mgmt/ManagementResource.java      |  60 ---
 .../endpoints/mgmt/ManagementResponse.java      |  72 ---
 .../endpoints/mgmt/MeResource.java              |  36 --
 .../endpoints/mgmt/OrgResource.java             | 167 ------
 .../mgmt/OrganizationApplicationResponse.java   |  60 ---
 .../endpoints/mgmt/OrganizationResource.java    |  80 ---
 .../endpoints/mgmt/PasswordResource.java        |  45 --
 .../endpoints/mgmt/ReactivateResource.java      |  46 --
 .../endpoints/mgmt/ResetResource.java           |  42 --
 .../endpoints/mgmt/RevokeTokenResource.java     |  32 --
 .../endpoints/mgmt/RevokeTokensResource.java    |  33 --
 .../endpoints/mgmt/TokenResource.java           |  71 ---
 .../endpoints/mgmt/UserResource.java            |  88 ---
 .../endpoints/mgmt/UsersResource.java           |  57 --
 .../resource2point0/model/ActivityEntity.java   |  49 --
 .../test/resource2point0/model/ApiResponse.java | 219 --------
 .../test/resource2point0/model/Application.java |  39 --
 .../model/ChangePasswordEntity.java             |  33 --
 .../test/resource2point0/model/Collection.java  |  98 ----
 .../test/resource2point0/model/Credentials.java |  47 --
 .../rest/test/resource2point0/model/Entity.java | 212 --------
 .../resource2point0/model/Organization.java     | 119 ----
 .../resource2point0/model/QueryParameters.java  |  93 ----
 .../rest/test/resource2point0/model/Token.java  |  81 ---
 .../rest/test/resource2point0/model/User.java   | 101 ----
 .../resource2point0/state/ClientContext.java    |  39 --
 .../rest/test/security/TestAdminUser.java       |  63 ---
 .../rest/test/security/TestAppUser.java         |  63 ---
 .../usergrid/rest/test/security/TestUser.java   | 132 -----
 .../src/test/resources/cat-larger-than-6mb.jpg  | Bin 9799257 -> 0 bytes
 .../src/test/resources/ship-larger-than-6mb.gif | Bin 0 -> 7407487 bytes
 stack/rest_integration_tests/README.md          |  19 +
 stack/rest_integration_tests/config/default.js  |  37 ++
 stack/rest_integration_tests/config/index.js    |  25 +
 stack/rest_integration_tests/index.js           |  20 +
 stack/rest_integration_tests/lib/connections.js | 132 +++++
 stack/rest_integration_tests/lib/entities.js    | 125 +++++
 .../rest_integration_tests/lib/notifications.js |  48 ++
 stack/rest_integration_tests/lib/random.js      |  74 +++
 stack/rest_integration_tests/lib/response.js    |  30 ++
 stack/rest_integration_tests/lib/token.js       |  49 ++
 stack/rest_integration_tests/lib/urls.js        |  37 ++
 stack/rest_integration_tests/lib/users.js       |  82 +++
 stack/rest_integration_tests/package.json       |  17 +
 .../test/authentication/management.js           |  38 ++
 .../test/authentication/org.js                  |  37 ++
 .../test/authentication/resetPassword.js        |  78 +++
 .../test/authentication/user.js                 |  40 ++
 .../test/connections/create.js                  |  49 ++
 .../test/connections/delete.js                  |  77 +++
 .../test/connections/get.js                     |  82 +++
 .../test/entities/create.js                     |  38 ++
 .../test/entities/deleteAll.js                  |  37 ++
 .../rest_integration_tests/test/entities/get.js |  51 ++
 .../test/entities/update.js                     |  43 ++
 stack/rest_integration_tests/test/main.js       |  72 +++
 stack/rest_integration_tests/test/mocha.opts    |   3 +
 .../test/notifications/create.js                |  36 ++
 .../test/queries/comparison.js                  |  58 ++
 .../test/queries/contains.js                    | 116 ++++
 .../test/queries/equals.js                      |  54 ++
 .../test/queries/location.js                    |  42 ++
 .../test/queries/order.js                       |  82 +++
 stack/rest_integration_tests/test/setup.js      | 103 ++++
 stack/rest_integration_tests/test/teardown.js   |  65 +++
 .../rest_integration_tests/test/users/create.js |  45 ++
 .../management/AccountCreationProps.java        |   6 +-
 .../cassandra/ManagementServiceImpl.java        | 158 ++----
 .../usergrid/services/AbstractService.java      | 281 ++++++----
 .../apache/usergrid/management/EmailFlowIT.java |  73 +--
 stack/tools/pom.xml                             |   6 +
 .../org/apache/usergrid/tools/AppAudit.java     |  30 +-
 .../java/org/apache/usergrid/tools/Cli.java     |   6 +-
 .../apache/usergrid/tools/DupAdminRepair.java   |  34 +-
 .../org/apache/usergrid/tools/DupOrgRepair.java |  36 +-
 .../apache/usergrid/tools/EntityCleanup.java    | 178 ------
 .../org/apache/usergrid/tools/EntityUpdate.java |  25 +-
 .../org/apache/usergrid/tools/ExportAdmins.java | 164 +++---
 .../org/apache/usergrid/tools/ExportApp.java    | 536 +++++++++++++++++++
 .../usergrid/tools/ExportDataCreator.java       | 244 +++++++--
 .../usergrid/tools/ExportingToolBase.java       |   2 +-
 .../org/apache/usergrid/tools/ImportAdmins.java | 278 +++++++---
 .../org/apache/usergrid/tools/ToolBase.java     |   6 +-
 .../org/apache/usergrid/tools/UserManager.java  |  22 +
 stack/tools/src/main/resources/log4j.properties |   6 +
 .../apache/usergrid/tools/ExportAppTest.java    | 118 ++++
 .../usergrid/tools/ExportImportAdminsTest.java  |  71 ++-
 ...adata.usergrid-management.1433331614293.json |  52 ++
 ...users.usergrid-management.1433331614293.json |  12 +
 259 files changed, 8615 insertions(+), 9523 deletions(-)
----------------------------------------------------------------------



[15/21] incubator-usergrid git commit: USERGRID-871: sort UUID map before writing

Posted by to...@apache.org.
USERGRID-871: sort UUID map before writing


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/0a0ef1b9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/0a0ef1b9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/0a0ef1b9

Branch: refs/heads/two-dot-o-dev
Commit: 0a0ef1b91c5dce394c6358b75e2e5ff1e5a0ba43
Parents: af446be
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Jul 30 09:33:17 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Jul 30 09:33:17 2015 -0700

----------------------------------------------------------------------
 .../usergrid/scenarios/EntityCollectionScenarios.scala   |  6 +++---
 .../scala/org/apache/usergrid/settings/Settings.scala    | 11 ++++++-----
 stack/loadtests/src/test/resources/logback-test.xml      |  3 ++-
 3 files changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0a0ef1b9/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 4e37842..b661d9c 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -196,7 +196,7 @@ object EntityCollectionScenarios {
         // 200 for success, 400 if already exists
         .check(status.in(Seq(200)), extractCreateUuid(SessionVarUuid)))
         .exec(session => {
-          Settings.addUuid(session("entityNum").as[String], session(SessionVarUuid).as[String])
+          Settings.addUuid(session("entityNum").as[String].toInt, session(SessionVarUuid).as[String])
           session
         })
     }
@@ -234,10 +234,10 @@ object EntityCollectionScenarios {
     .exec(injectAuthType())
     .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
     feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
-      .exec {
+      /*.exec {
       session => if (session("validEntity").as[String] == "yes") { println("Deleting entity #" + session("entityNum").as[String]) }
         session
-      }
+      }*/
       .doIf(session => session("validEntity").as[String] == "yes") {
         exec(deleteEntity)
       }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0a0ef1b9/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index dc7ff73..387fd24 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -158,9 +158,9 @@ object Settings {
   val feedUuidFilename = if (feedUuids) uuidFilename else dummyCsv
   val purgeUsers:Int = initIntSetting(ConfigProperties.PurgeUsers)
 
-  private var uuidMap: Map[String, String] = Map()
-  def addUuid(name: String, uuid: String): Unit = {
-    if (captureUuids) uuidMap += (name -> uuid)
+  private var uuidMap: Map[Int, String] = Map()
+  def addUuid(num: Int, uuid: String): Unit = {
+    if (captureUuids) uuidMap += (num -> uuid)
     // println(s"UUID: ${name},${uuid}")
   }
 
@@ -171,8 +171,9 @@ object Settings {
         new PrintWriter(fos, false)
       }
       writer.println("name,uuid")
-      uuidMap.keys.foreach { name =>
-        writer.println(s"${Settings.entityPrefix}${name},${uuidMap(name)}")
+      val uuidList: List[(Int, String)] = uuidMap.toList.sortBy(l => l._1)
+      uuidList.foreach { l =>
+        writer.println(s"${Settings.entityPrefix}${l._1},${l._2}")
       }
       writer.flush()
       writer.close()

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/0a0ef1b9/stack/loadtests/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/logback-test.xml b/stack/loadtests/src/test/resources/logback-test.xml
index 5ad4ea3..dd39a3e 100644
--- a/stack/loadtests/src/test/resources/logback-test.xml
+++ b/stack/loadtests/src/test/resources/logback-test.xml
@@ -27,8 +27,9 @@
 
 	<!-- Uncomment for logging ALL HTTP request and responses -->
 	 	<!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" /> -->
+        <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" />
 	<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
-		<logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" />
+        <!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" /> -->
 
 <!-- <logger name="io.gatling.http" level="TRACE" /> -->
         <!-- Uncomment for logging ONLY FAILED HTTP request and responses -->


[14/21] incubator-usergrid git commit: USERGRID-871: clean up settings + overall cleanup

Posted by to...@apache.org.
USERGRID-871: clean up settings + overall cleanup


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/af446bee
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/af446bee
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/af446bee

Branch: refs/heads/two-dot-o-dev
Commit: af446bee546bc8378ffde17014bfbe77c69b6528
Parents: bfc2be2
Author: Mike Dunker <md...@apigee.com>
Authored: Wed Jul 29 18:27:49 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Wed Jul 29 18:27:49 2015 -0700

----------------------------------------------------------------------
 stack/loadtests/runCollectionQueryTest.sh       |   4 +-
 stack/loadtests/runDeleteEntities.sh            |   6 +-
 stack/loadtests/runLoadEntities.sh              |  18 +-
 stack/loadtests/runRandomEntityByNameTest.sh    |   4 +-
 stack/loadtests/runRandomEntityByUuidTest.sh    |  99 ++++++++
 stack/loadtests/runUpdateEntities.sh            |   6 +-
 .../datagenerators/EntityDataGenerator.scala    |   2 +-
 .../datagenerators/FeederGenerator.scala        |   3 +
 .../usergrid/enums/ConfigProperties.scala       |  71 +++++-
 .../apache/usergrid/enums/ScenarioType.scala    |   3 +-
 .../apache/usergrid/helpers/Extractors.scala    |   8 +-
 .../org/apache/usergrid/helpers/Setup.scala     |  85 ++++---
 .../org/apache/usergrid/helpers/Utils.scala     |  13 +-
 .../scenarios/ApplicationScenarios.scala        |   6 +-
 .../scenarios/ConnectionScenarios.scala         |   2 +-
 .../usergrid/scenarios/DeviceScenarios.scala    |  17 +-
 .../scenarios/EntityCollectionScenarios.scala   | 132 ++++++++---
 .../usergrid/scenarios/EntityScenarios.scala    |  12 +-
 .../usergrid/scenarios/GeoScenarios.scala       |   4 +-
 .../scenarios/NotificationScenarios.scala       |  14 +-
 .../usergrid/scenarios/NotifierScenarios.scala  |  10 +-
 .../scenarios/OrganizationScenarios.scala       |   8 +-
 .../usergrid/scenarios/TokenScenarios.scala     |   6 +-
 .../usergrid/scenarios/UserScenarios.scala      |  14 +-
 .../org/apache/usergrid/settings/Settings.scala | 223 +++++++++++++------
 .../simulations/ConfigurableSimulation.scala    |  13 +-
 .../deprecated/PostCustomEntitySimulation.scala |   6 +-
 .../deprecated/PutCustomEntitySimulation.scala  |   6 +-
 stack/loadtests/src/test/resources/dummy.csv    |   1 +
 .../src/test/resources/logback-test.xml         |   6 +-
 stack/loadtests/src/test/resources/logback.xml  |   4 +-
 31 files changed, 566 insertions(+), 240 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/runCollectionQueryTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runCollectionQueryTest.sh b/stack/loadtests/runCollectionQueryTest.sh
index 7d1779c..9882cf2 100755
--- a/stack/loadtests/runCollectionQueryTest.sh
+++ b/stack/loadtests/runCollectionQueryTest.sh
@@ -41,7 +41,7 @@ ORG=gatling
 CREATE_APP=false
 #APP=$(date +%s)
 APP=millionentities
-COLLECTION_TYPE=basicentities
+COLLECTION=basicentities
 SCENARIO_TYPE=getAllByCursor
 LOAD_ENTITIES=false
 NUM_ENTITIES=10000
@@ -76,7 +76,7 @@ mvn gatling:execute -Dorg=usergrid \
 -DrampTime=${RAMP_TIME}  \
 -DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
 -DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
--DcollectionType=${COLLECTION_TYPE} \
+-Dcollection=${COLLECTION} \
 -DscenarioType=${SCENARIO_TYPE} \
 -DauthType=${AUTH_TYPE} \
 -DtokenType=${TOKEN_TYPE} \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/runDeleteEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runDeleteEntities.sh b/stack/loadtests/runDeleteEntities.sh
index 1ca557e..0883fa8 100755
--- a/stack/loadtests/runDeleteEntities.sh
+++ b/stack/loadtests/runDeleteEntities.sh
@@ -41,12 +41,12 @@ CREATE_ORG=false
 ORG=gatling
 CREATE_APP=false
 APP=millionentities
-COLLECTION_TYPE=trivialentities
+COLLECTION=trivialentities
 SCENARIO_TYPE=deleteEntities
 # don't load entities as part of setup
 LOAD_ENTITIES=false
 
-SKIP_SETUP=TRUE
+SKIP_SETUP=true
 #SEARCH_QUERY=order%20by%20specials%20desc
 #SEARCH_LIMIT=1000
 ENTITY_TYPE=trivial
@@ -78,7 +78,7 @@ mvn gatling:execute \
 -DrampTime=${RAMP_TIME}  \
 -DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
 -DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
--DcollectionType=${COLLECTION_TYPE} \
+-Dcollection=${COLLECTION} \
 -DscenarioType=${SCENARIO_TYPE} \
 -DauthType=${AUTH_TYPE} \
 -DtokenType=${TOKEN_TYPE} \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/runLoadEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadEntities.sh b/stack/loadtests/runLoadEntities.sh
index e166c58..1471d70 100755
--- a/stack/loadtests/runLoadEntities.sh
+++ b/stack/loadtests/runLoadEntities.sh
@@ -19,7 +19,7 @@ die() { echo "$@" 1>&2 ; exit 1; }
 #This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
 #Then aggregate the results
 ####
-[ "$#" -ge 8 ] || die "At least 8 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES ENTITY_WORKER_NUM ENTITY_WORKER_COUNT"
+[ "$#" -ge 8 ] || die "At least 8 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES ENTITY_WORKER_NUM ENTITY_WORKER_COUNT [UUID_FILENAME]"
 
 URL="$1"
 RAMP_USERS="$2"
@@ -29,8 +29,9 @@ CONSTANT_USERS_DURATION="$5"
 NUM_ENTITIES="$6"
 ENTITY_WORKER_NUM="$7"
 ENTITY_WORKER_COUNT="$8"
+UUID_FILENAME="$9"
 
-shift 8
+shift 9
 
 #Compile everything
 mvn compile
@@ -39,16 +40,17 @@ mvn compile
 #APP=$(date +%s)
 ADMIN_USER=superuser
 ADMIN_PASSWORD=test
-CREATE_ORG=true
+CREATE_ORG=false
 ORG=gatling
-CREATE_APP=true
+CREATE_APP=false
 APP=millionentities
-COLLECTION_TYPE=trivialentities
+COLLECTION=trivialentities
+SANDBOX_COLLECTION=true
 SCENARIO_TYPE=loadEntities
 # don't load entities as part of setup
 LOAD_ENTITIES=false
 
-SKIP_SETUP=FALSE
+SKIP_SETUP=false
 #SEARCH_QUERY=order%20by%20specials%20desc
 #SEARCH_LIMIT=1000
 ENTITY_TYPE=trivial
@@ -80,7 +82,7 @@ mvn gatling:execute \
 -DrampTime=${RAMP_TIME}  \
 -DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
 -DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
--DcollectionType=${COLLECTION_TYPE} \
+-Dcollection=${COLLECTION} \
 -DscenarioType=${SCENARIO_TYPE} \
 -DauthType=${AUTH_TYPE} \
 -DtokenType=${TOKEN_TYPE} \
@@ -89,6 +91,8 @@ mvn gatling:execute \
 -DendRequestCount=${END_REQUEST_COUNT} \
 -DentityWorkerCount=${ENTITY_WORKER_COUNT} \
 -DentityWorkerNum=${ENTITY_WORKER_NUM} \
+-DuuidFilename=${UUID_FILENAME} \
+-DsandboxCollection=${SANDBOX_COLLECTION} \
 -Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/runRandomEntityByNameTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runRandomEntityByNameTest.sh b/stack/loadtests/runRandomEntityByNameTest.sh
index dd98aa6..5967a1b 100755
--- a/stack/loadtests/runRandomEntityByNameTest.sh
+++ b/stack/loadtests/runRandomEntityByNameTest.sh
@@ -40,7 +40,7 @@ CREATE_ORG=false
 ORG=gatling
 CREATE_APP=false
 APP=millionentities
-COLLECTION_TYPE=trivialentities
+COLLECTION=trivialentities
 SCENARIO_TYPE=nameRandomInfinite
 LOAD_ENTITIES=false
 NUM_ENTITIES=10000
@@ -76,7 +76,7 @@ mvn gatling:execute \
 -DrampTime=${RAMP_TIME}  \
 -DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
 -DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
--DcollectionType=${COLLECTION_TYPE} \
+-Dcollection=${COLLECTION} \
 -DscenarioType=${SCENARIO_TYPE} \
 -DauthType=${AUTH_TYPE} \
 -DtokenType=${TOKEN_TYPE} \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/runRandomEntityByUuidTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runRandomEntityByUuidTest.sh b/stack/loadtests/runRandomEntityByUuidTest.sh
new file mode 100755
index 0000000..4a83eb5
--- /dev/null
+++ b/stack/loadtests/runRandomEntityByUuidTest.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#               http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests.  It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 6 ] || die "At least 6 arguments required, $# provided.  Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) UUID_FILENAME"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+UUID_FILENAME="$6"
+
+shift 6
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION=trivialentities
+SCENARIO_TYPE=uuidRandomInfinite
+LOAD_ENTITIES=false
+NUM_ENTITIES=10000
+SKIP_SETUP=false
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivial
+ENTITY_PREFIX=trivial
+ENTITY_SEED=1
+AUTH_TYPE=anonymous
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER}  \
+-DadminPassword=${ADMIN_PASSWORD}  \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS}  \
+-DrampTime=${RAMP_TIME}  \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
+-Dcollection=${COLLECTION} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-DuuidFilename=${UUID_FILENAME} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log  \;
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/runUpdateEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runUpdateEntities.sh b/stack/loadtests/runUpdateEntities.sh
index 0963a2d..85d529d 100755
--- a/stack/loadtests/runUpdateEntities.sh
+++ b/stack/loadtests/runUpdateEntities.sh
@@ -41,12 +41,12 @@ CREATE_ORG=false
 ORG=gatling
 CREATE_APP=false
 APP=millionentities
-COLLECTION_TYPE=trivialentities
+COLLECTION=trivialentities
 SCENARIO_TYPE=updateEntities
 # don't load entities as part of setup
 LOAD_ENTITIES=false
 
-SKIP_SETUP=TRUE
+SKIP_SETUP=true
 #SEARCH_QUERY=order%20by%20specials%20desc
 #SEARCH_LIMIT=1000
 ENTITY_TYPE=trivial
@@ -78,7 +78,7 @@ mvn gatling:execute \
 -DrampTime=${RAMP_TIME}  \
 -DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC}    \
 -DconstantUsersDuration=${CONSTANT_USERS_DURATION}    \
--DcollectionType=${COLLECTION_TYPE} \
+-Dcollection=${COLLECTION} \
 -DscenarioType=${SCENARIO_TYPE} \
 -DauthType=${AUTH_TYPE} \
 -DtokenType=${TOKEN_TYPE} \

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
index f9fa4fc..cd359b7 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
@@ -45,7 +45,7 @@ object EntityDataGenerator {
 
     Map(
 
-      "username" -> "user".concat(userId.toString),
+      "username" -> "user".concat(userId),
       "profileId" -> Utils.generateRandomInt(10000, 1000000).toString,
       "displayName" -> Utils.generateRandomInt(10000, 1000000).toString,
       "showAge" -> Utils.generateRandomInt(0, 1).toString,

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
index 1c80822..f218b5b 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
@@ -65,6 +65,7 @@ object FeederGenerator {
     val geolocation: Map[String, String] = Utils.generateRandomGeolocation(radius, centerLatitude, centerLongitude)
     val blockLists: Map[String, String] = EntityDataGenerator.generateBlockUserLists(1)
 
+    // merge maps
     user ++ geolocation ++ blockLists
   }
 
@@ -224,6 +225,8 @@ object FeederGenerator {
      val entityUrl = Settings.baseCollectionUrl + "/" + entityName
      val validEntity = if (i >= numEntities) "no" else "yes"
 
+     // println(entityName)
+
      Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity, "entityNum" -> (i+1).toString)
    }
  }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
index 855a7ae..7e6cf55 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
@@ -1,5 +1,7 @@
 package org.apache.usergrid.enums
 
+import java.util.Date
+
 /**
  * Created by mdunker on 7/20/15.
  */
@@ -24,7 +26,7 @@ object ConfigProperties {
   val AppUserPassword = "appUserPassword"
   val NumEntities = "numEntities"
   val NumDevices = "numDevices"
-  val CollectionType = "collectionType"
+  val Collection = "collection"
   val RampTime = "rampTime"
   val Throttle = "throttle"
   val RpsTarget = "rpsTarget"
@@ -48,14 +50,75 @@ object ConfigProperties {
   val UpdateValue = "updateValue"
   val EntityWorkerCount = "entityWorkerCount"
   val EntityWorkerNum = "entityWorkerNum"
+  val UuidFilename = "uuidFilename"
+  val SandboxCollection = "sandboxCollection"
+  val PurgeUsers = "purgeUsers"
 
   val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
     ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
-    NumDevices,CollectionType,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,EntityPrefix,EntityType,
-    EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,OrgCreationName,
-    OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue,EntityWorkerCount,EntityWorkerNum)
+    NumDevices,Collection,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,PushProvider,EntityPrefix,
+    EntityType,EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,
+    OrgCreationName,OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue,EntityWorkerCount,EntityWorkerNum,
+    UuidFilename,SandboxCollection,PurgeUsers)
 
   def isValid(str: String): Boolean = {
     Values.contains(str)
   }
+
+  // defaults for all the configuration items
+  def getDefault(cfg: String): Any = {
+    if (isValid(cfg)) {
+      cfg match {
+        case Org => ""
+        case App => ""
+        case AdminUser => ""
+        case AdminPassword => ""
+        case BaseUrl => ""
+        case AuthType => org.apache.usergrid.enums.AuthType.Anonymous
+        case TokenType => org.apache.usergrid.enums.TokenType.User
+        case SkipSetup => false
+        case CreateOrg => false
+        case CreateApp => false
+        case LoadEntities => false
+        case ScenarioType => org.apache.usergrid.enums.ScenarioType.NameRandomInfinite
+        case RampUsers => 0
+        case ConstantUsersPerSec => 0
+        case ConstantUsersDuration => 10
+        case UserSeed => 1
+        case AppUser => ""
+        case AppUserPassword => ""
+        case NumEntities => 5000
+        case NumDevices => 4000
+        case Collection => "customentities"
+        case RampTime => 0
+        case Throttle => 50
+        case RpsTarget => 50
+        case RpsRampTime => 10
+        case HoldDuration => 300
+        case PushNotifier => "loadNotifier"
+        case PushProvider => "noop"
+        case EntityPrefix => "entity"
+        case EntityType => org.apache.usergrid.enums.EntityType.Basic
+        case EntitySeed => 1
+        case SearchLimit => 0
+        case SearchQuery => ""
+        case EndConditionType => org.apache.usergrid.enums.EndConditionType.MinutesElapsed
+        case EndMinutes => 10
+        case EndRequestCount => 1000
+        case OrgCreationUsername => ""     // actual default is {org}_admin
+        case OrgCreationName => ""         // actual default is {org}_admin
+        case OrgCreationEmail => ""        // actual default is {org}_admin@usergrid.com
+        case OrgCreationPassword => "test"
+        case UpdateProperty => "updateProp"
+        case UpdateValue => new Date().toString
+        case EntityWorkerCount => 0
+        case EntityWorkerNum => 0
+        case UuidFilename => "dummy.csv"
+        case SandboxCollection => false
+        case PurgeUsers => 100
+      }
+    } else {
+      null
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
index 7dca619..db9a3af 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
@@ -6,8 +6,9 @@ object ScenarioType {
   val LoadEntities = "loadEntities"
   val DeleteEntities = "deleteEntities"
   val UpdateEntities = "updateEntities"
+  val UuidRandomInfinite = "uuidRandomInfinite"
 
-  val Values = Seq(GetAllByCursor,NameRandomInfinite,LoadEntities,DeleteEntities,UpdateEntities)
+  val Values = Seq(GetAllByCursor,NameRandomInfinite,LoadEntities,DeleteEntities,UpdateEntities,UuidRandomInfinite)
 
   def isValid(str: String): Boolean = {
     Values.contains(str)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index f8aad98..120d790 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -43,7 +43,7 @@ object Extractors {
   /**
    * Will extract the uuid from the create response.  If the uuid is not present, an empty string will be set
    */
-  def extractUuid(saveAsName: String) = {
+  def extractCreateUuid(saveAsName: String) = {
     jsonPath("$.entities[0].uuid").transformOption(extract => {
       //it may or may not be present.  If it is, save it, otherwise save it as an empty string
       extract.orElse(Some(""))
@@ -83,8 +83,8 @@ object Extractors {
    * under the variable "authToken"
    * @return
    */
-  def injectManagementTokenIntoSession(): Expression[Session] = {
-    session => session.set("authToken", Setup.getManagementToken())
+  def injectManagementTokenIntoSession: Expression[Session] = {
+    session => session.set("authToken", Setup.getManagementToken)
   }
 
   def injectUserTokenIntoSession(): Expression[Session] = {
@@ -93,7 +93,7 @@ object Extractors {
 
   // handles different types of tokens
   def injectTokenIntoSession(): Expression[Session] = {
-    session => session.set("authToken", Setup.getToken())
+    session => session.set("authToken", Setup.getToken)
   }
 
   def injectAnonymousAuth(): Expression[Session] = {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
index d90353a..727c295 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
@@ -35,7 +35,11 @@ object Setup {
   def getToken(tokenUrl:String, username:String, password:String):String = {
     val getToken = client
       .preparePost(tokenUrl)
-      .setBody("{\"username\":\"" + username + "\",\"password\":\"" + password + "\",\"grant_type\":\"password\"}")
+      .setBody(Utils.toJSONStr(Map(
+                          "username" -> username,
+                          "password" -> password,
+                          "grant_type" -> "password"
+      )))
       .setHeader("Cache-Control", "no-cache")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
       .build()
@@ -45,21 +49,21 @@ object Setup {
     tree.get("access_token").asText()
   }
 
-  def getManagementToken():String = {
+  def getManagementToken:String = {
     if(managementToken == null) {
-      managementToken = getToken(Settings.baseUrl + "/management/token", Settings.adminUser, Settings.adminPassword)
+      managementToken = getToken(s"${Settings.baseUrl}/management/token", Settings.adminUser, Settings.adminPassword)
       println("Management token is "+managementToken)
     }
     managementToken
   }
 
   def getUserToken:String = {
-    getToken(Settings.baseAppUrl + "/token", Settings.appUser, Settings.appUserPassword)
+    getToken(s"${Settings.baseAppUrl}/token", Settings.appUser, Settings.appUserPassword)
   }
 
-  def getToken():String = {
+  def getToken:String = {
     var token = ""
-    if (Settings.tokenType == TokenType.Management) token = getManagementToken()
+    if (Settings.tokenType == TokenType.Management) token = getManagementToken
     if (Settings.tokenType == TokenType.User) token = getUserToken
 
     token
@@ -68,7 +72,7 @@ object Setup {
   def setupOrg(): Integer = {
 
     val createOrgPost = client
-      .preparePost(Settings.baseUrl + "/management/organizations")
+      .preparePost(s"${Settings.baseUrl}/management/organizations")
       .setHeader("Cache-Control", "no-cache")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
       .setBody(Utils.toJSONStr(Map(
@@ -82,7 +86,7 @@ object Setup {
 
     val orgResponse = client.executeRequest(createOrgPost).get()
 
-    printResponse("POST ORG",orgResponse.getStatusCode,orgResponse.getResponseBody)
+    printResponse("POST ORG", orgResponse.getStatusCode, orgResponse.getResponseBody)
 
     orgResponse.getStatusCode
   }
@@ -90,17 +94,35 @@ object Setup {
   def setupApplication(): Integer = {
 
     val createAppPost = client
-      .preparePost(Settings.baseUrl + "/management/organizations/" + Settings.org + "/applications")
+      .preparePost(s"${Settings.baseUrl}/management/organizations/${Settings.org}/applications")
       .setBody(Utils.toJSONStr(Map("name" -> Settings.app)))
       .setHeader("Cache-Control", "no-cache")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
-      .setHeader("Authorization", "Bearer " + getManagementToken)
+      .setHeader("Authorization", s"Bearer $getManagementToken")
       .build()
 
-    val appResponse = client.executeRequest(createAppPost).get();
+    val appResponse = client.executeRequest(createAppPost).get()
 
     val statusCode = appResponse.getStatusCode
-    printResponse("POST APP",statusCode, appResponse.getResponseBody)
+    printResponse("POST APP", statusCode, appResponse.getResponseBody)
+
+    statusCode
+  }
+
+  def sandboxCollection(): Integer = {
+
+    val sandboxCollectionPost = client
+      .preparePost(s"${Settings.baseAppUrl}/roles/guest/permissions")
+      .setBody(Utils.toJSONStr(Map("permission" -> s"GET,PUT,POST,DELETE:/${Settings.collection}/**")))
+      .setHeader("Cache-Control", "no-cache")
+      .setHeader("Content-Type", "application/json; charset=UTF-8")
+      .setHeader("Authorization", s"Bearer $getManagementToken")
+      .build()
+
+    val response = client.executeRequest(sandboxCollectionPost).get()
+
+    val statusCode = response.getStatusCode
+    printResponse("SANDBOX COLLECTION", statusCode, response.getResponseBody)
 
     statusCode
   }
@@ -108,21 +130,21 @@ object Setup {
   def setupNotifier():Integer = {
 
     val createNotifier = client
-      .preparePost(Settings.baseAppUrl + "/notifiers")
+      .preparePost(s"${Settings.baseAppUrl}/notifiers")
       .setBody(Utils.toJSONStr(Map("name" -> Settings.pushNotifier, "provider" -> Settings.pushProvider)))
       .setHeader("Cache-Control", "no-cache")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
-      .setHeader("Authorization","Bearer " + getManagementToken)
+      .setHeader("Authorization", s"Bearer $getManagementToken")
       .build()
 
-    val notifierResponse = client.executeRequest(createNotifier).get();
-    printResponse("POST Notifier", notifierResponse.getStatusCode ,notifierResponse.getResponseBody())
+    val notifierResponse = client.executeRequest(createNotifier).get()
+    printResponse("POST Notifier", notifierResponse.getStatusCode ,notifierResponse.getResponseBody)
 
     notifierResponse.getStatusCode
   }
 
   def setupUsers() = {
-    val userFeeder = Settings.getUserFeeder()
+    val userFeeder = Settings.getUserFeeder
     val numUsers = userFeeder.length
     println(s"setupUsers: Sending requests for $numUsers users")
 
@@ -132,7 +154,7 @@ object Setup {
       list.foreach(f => {
         val response = f.get()
         if (response.getStatusCode != 200) {
-          printResponse("Post User", response.getStatusCode, response.getResponseBody())
+          printResponse("Post User", response.getStatusCode, response.getResponseBody)
         } else {
           successCount += 1
         }
@@ -141,7 +163,7 @@ object Setup {
     }
     userFeeder.foreach(user => {
       list += setupUser(user)
-      if (list.length == Integer.getInteger("purgeUsers",100)) {
+      if (list.length == Settings.purgeUsers) {
         purgeList()
       }
     })
@@ -170,12 +192,12 @@ object Setup {
       "displayName":"$displayName","age":"$age","seen":"$seen","weight":"$weight",
       "height":"$height","aboutMe":"$aboutMe","profileId":"$profileId","headline":"$headline",
       "showAge":"$showAge","relationshipStatus":"$relationshipStatus","ethnicity":"$ethnicity","password":"$password"}"""
-    val authToken = getManagementToken()
+    val authToken = getManagementToken
     val createUser = client
-      .preparePost(Settings.baseAppUrl + "/users")
+      .preparePost(s"${Settings.baseAppUrl}/users")
       .setBody(body)
       .setBodyEncoding("UTF-8")
-      .setHeader("Authorization","Bearer "+authToken)
+      .setHeader("Authorization",s"Bearer $authToken")
       .build()
 
     client.executeRequest(createUser)
@@ -183,11 +205,10 @@ object Setup {
 
   def setupEntitiesCollection(numEntities: Int, entityType: String, prefix: String, seed: Int = 1) = {
     val entitiesFeeder = FeederGenerator.generateCustomEntityArray(numEntities, entityType, prefix, seed)
-    val purgeUsers = Integer.getInteger("purgeUsers", 100)
 
-    val list: ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]]
-    var successCount: Int = 0;
-    def purgeList(): Unit = {
+    val list:ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]]
+    var successCount:Int = 0
+    def purgeList():Unit = {
       list.foreach(f => {
         val response = f.get()
         if (response.getStatusCode != 200) {
@@ -202,7 +223,7 @@ object Setup {
     entitiesFeeder.foreach(payload => {
       //println("setupEntitiesCollection: payload=" + payload)
       list += setupEntity(payload)
-      if(list.length == purgeUsers) {
+      if(list.length == Settings.purgeUsers) {
         purgeList()
       }
     })
@@ -213,21 +234,21 @@ object Setup {
   }
 
   def setupEntity(payload: String):ListenableFuture[Response] = {
-    val authToken = getManagementToken()
+    val authToken = getManagementToken
     val createEntity = client
-      .preparePost(Settings.baseAppUrl + "/" + Settings.collectionType)
+      .preparePost(Settings.baseCollectionUrl)
       .setBody(payload)
       .setBodyEncoding("UTF-8")
-      .setHeader("Authorization", "Bearer " + authToken)
+      .setHeader("Authorization", s"Bearer $authToken")
       .setHeader("Content-Type", "application/json; charset=UTF-8")
       .build()
-    //println("setupEntity: baseAppUrl=" + Settings.baseAppUrl + ", collectionType=" + Settings.collectionType + ", payload=" + payload)
+    //println("setupEntity: baseAppUrl=" + Settings.baseAppUrl + ", collection=" + Settings.collection + ", payload=" + payload)
 
     client.executeRequest(createEntity)
   }
 
   def printResponse(caller:String, status:Int, body:String) = {
-    println(caller + ": status: "+status.toString+" body:"+body)
+    println(caller + s"$caller:\nstatus: $status\nbody:\n$body")
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
index 16ade96..91c8081 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
@@ -72,11 +72,12 @@ object Utils {
     var queryString = ""
 
     for (numParams <- 1 to generateRandomInt(1, queryParams.length)) {
-      queryString = "age=" + Utils.generateRandomInt(18, 65).toString
-      if (numParams == 2) {
-        queryString += "%20AND%20height=" + Utils.generateRandomInt(48, 84).toString
-      } else if (numParams == 3) {
-        queryString += "%20AND%20weight=" + Utils.generateRandomInt(120, 350).toString
+      queryString = s"age=${Utils.generateRandomInt(18,65).toString}"
+      if (numParams >= 2) {
+        queryString += s"%20AND%20height=${Utils.generateRandomInt(48,84).toString}"
+      }
+      if (numParams >= 3) {
+        queryString += s"%20AND%20weight=${Utils.generateRandomInt(120,350).toString}"
       }
     }
 
@@ -86,7 +87,7 @@ object Utils {
    def randomEntityNameUrl(prefix: String, numEntities: Int, seed: Int, baseUrl: String): String = {
      val randomVal = generateRandomInt(seed, seed+numEntities-1)
 
-     baseUrl + "/" + prefix.concat(randomVal.toString)
+     s"$baseUrl/$prefix$randomVal"
    }
 
   def createRandomPushNotifierName:String = {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
index 44fe118..085af88 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
@@ -36,10 +36,10 @@ import org.apache.usergrid.settings.{Settings, Headers}
 object ApplicationScenarios {
 
   val createApplication = exec(http("Create Application")
-    .post(Settings.baseUrl +  "/management/organizations/"+Settings.org+"/applications")
+    .post(_ => Settings.baseUrl + "/management/organizations/" + Settings.org + "/applications")
     .headers(Headers.authToken)
-    .body(StringBody("{\"name\":\"" + Settings.app + "\"}"))
-    .check(status.in(200 to 204))
+    .body(StringBody(_ => """ { "name": """" + Settings.app + """" } """))
+    .check(status.in(Range(200,204)))
 
     )
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
index 0ff20a0..56a40bb 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
@@ -52,7 +52,7 @@ object ConnectionScenarios {
      .exec( UserScenarios.getUserByUsername)
      .repeat(2){
        feed(entityNameFeeder)
-         .exec( DeviceScenarios.postDeviceWithNotifier)
+         .exec(DeviceScenarios.postDeviceWithNotifier)
          .exec(ConnectionScenarios.postUserToDeviceConnection)
      }
      .exec(session => {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
index a8a3d9c..57df0b9 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/DeviceScenarios.scala
@@ -47,20 +47,15 @@ object DeviceScenarios {
   val postDeviceWithNotifier = exec(http("Create device with notifier")
     .post("/devices")
     .headers(Headers.authToken)
-    .body(StringBody("""{"deviceModel":"Fake Device",
-    "deviceOSVerion":"Negative Version",
-    """" + notifier + """.notifier.id":"${entityName}"}"""))
+    .body(StringBody(session => """{ "deviceModel": "Fake Device", "deviceOSVersion": "Negative Version", """" + notifier + """.notifier.id": "${entityName}" }"""))
     .check(status.is(200),  jsonPath("$..entities[0]").exists , jsonPath("$..entities[0].uuid").exists , jsonPath("$..entities[0].uuid").saveAs("deviceId")))
 
 
   val postDeviceWithNotifier400ok = exec(http("Create device with notifier")
     .post("/devices")
     .headers(Headers.authToken)
-    .body(StringBody("""{"name":"${entityName}",
-    "deviceModel":"Fake Device",
-    "deviceOSVerion":"Negative Version",
-    "${notifier}.notifier.id":"${entityName}"}"""))
-    .check(status.in(200 to 400), jsonPath("$.entities[0].uuid").saveAs("deviceId")))
+    .body(StringBody(session => """{ "name":"${entityName}", "deviceModel":"Fake Device", "deviceOSVersion":"Negative Version", """" + notifier + """.notifier.id":"${entityName}" }"""))
+    .check(status.in(Range(200, 400)), jsonPath("$.entities[0].uuid").saveAs("deviceId")))
 
 
   /**
@@ -79,11 +74,11 @@ object DeviceScenarios {
       } )
     //create the device if we got a 404
     .doIf("${devices}","[]") {
-      exec(session =>{
+      /*exec(session =>{
         println("adding devices")
         session
-      } )
-      .exec(postDeviceWithNotifier)
+      } )*/
+      exec(postDeviceWithNotifier)
       .exec(ConnectionScenarios.postUserToDeviceConnection)
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 1fa1c07..4e37842 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -17,6 +17,7 @@
 package org.apache.usergrid.scenarios
 
 import io.gatling.core.Predef._
+import io.gatling.core.feeder.RecordSeqFeederBuilder
 import io.gatling.http.Predef._
 import org.apache.usergrid.datagenerators.FeederGenerator
 import org.apache.usergrid.enums.{EndConditionType, AuthType}
@@ -37,16 +38,17 @@ object EntityCollectionScenarios {
   val SessionVarUuid: String = "createUuid"
 
   def entityGetUrl(useCursor: Boolean): String = {
-    val url = Settings.baseAppUrl + "/" + Settings.collectionType + "?dummy" +
-      (if (useCursor) "&cursor=${" + SessionVarCursor + "}" else "") +
-      (if (Settings.searchLimit > 0) "&limit=" + Settings.searchLimit.toString() else "") +
-      (if (Settings.searchQuery != "") "&ql=" + Settings.searchQuery else "")
+    val url = s"/${Settings.collection}?" +
+      (if (useCursor) "cursor=${" + SessionVarCursor + "}&" else "") +
+      (if (Settings.searchQuery != "") s"ql=${Settings.searchQuery}&" else "") +
+      (if (Settings.searchLimit > 0) s"limit=${Settings.searchLimit}&" else "")
 
-    url
+    // remove trailing & or ?
+    url.dropRight(1)
   }
 
   def entityGetByNameUrl(entityName: String): String = {
-    val url = Settings.baseCollectionUrl + "/" + entityName
+    val url = s"/${Settings.collection}/$entityName"
 
     url
   }
@@ -55,6 +57,10 @@ object EntityCollectionScenarios {
     Utils.randomEntityNameUrl(prefix, numEntities, seed, Settings.baseCollectionUrl)
   }
 
+  def uuidFeeder(): RecordSeqFeederBuilder[String] = {
+    csv(Settings.feedUuidFilename).random
+  }
+
   /*
    * Loop through entities using cursor
    */
@@ -75,15 +81,15 @@ object EntityCollectionScenarios {
   val getEntityPagesToEnd = scenario("Get all entities")
     .exec(injectTokenIntoSession())
     .exec(injectAuthType())
-    .doIfOrElse(session => Settings.endConditionType == EndConditionType.MinutesElapsed) {
-      asLongAs(session => (System.currentTimeMillis() - Settings.testStartTime) < Settings.endMinutes*60*1000,"loopCounter",true) {
+    .doIfOrElse(_ => Settings.endConditionType == EndConditionType.MinutesElapsed) {
+      asLongAs(_ => Settings.continueMinutesTest, exitASAP = true) {
         exec(getEntitiesWithoutCursor)
           .asLongAs(stringParamExists(SessionVarCursor)) {
           exec(getEntitiesWithCursor)
         }
       }
     } {
-      repeat(Settings.endRequestCount) {
+      repeat(_ => Settings.endRequestCount.toInt) {
         exec(getEntitiesWithoutCursor)
           .asLongAs(stringParamExists(SessionVarCursor)) {
           exec(getEntitiesWithCursor)
@@ -93,18 +99,18 @@ object EntityCollectionScenarios {
     //.exec(sessionFunction => { sessionFunction })
 
   /*
-   * Get random entities
+   * Get random entities by name
    */
   val getRandomEntityAnonymous = exec(
     http("GET entity by name (anonymous)")
-      .get(_ => randomEntityNameUrl())
+      .get(randomEntityNameUrl())
       .headers(Headers.authAnonymous)
       .check(status.is(200))
   )
 
   val getRandomEntityWithToken = exec(
     http("GET entity by name (token)")
-      .get(_ => randomEntityNameUrl())
+      .get(randomEntityNameUrl())
       .headers(Headers.authToken)
       .check(status.is(200))
   )
@@ -112,21 +118,69 @@ object EntityCollectionScenarios {
   val getRandomEntitiesByName = scenario("Get entities by name randomly")
     .exec(injectTokenIntoSession())
     .exec(injectAuthType())
-    .doIfOrElse(session => Settings.endConditionType == EndConditionType.MinutesElapsed) {
-      asLongAs(session => (System.currentTimeMillis() - Settings.testStartTime) < Settings.endMinutes*60*1000) {
-        doIfOrElse(session => Settings.authType == AuthType.Anonymous) {
-          exec(getRandomEntityAnonymous)
-        } {
-          exec(getRandomEntityWithToken)
-        }
+    .doIfOrElse(_ => Settings.endConditionType == EndConditionType.MinutesElapsed) {
+    asLongAs(_ => Settings.continueMinutesTest) {
+      doIfOrElse(_ => Settings.authType == AuthType.Anonymous) {
+        exec(getRandomEntityAnonymous)
+      } {
+        exec(getRandomEntityWithToken)
+      }
+    }
+  } {
+    repeat(_ => Settings.endRequestCount.toInt) {
+      doIfOrElse(_ => Settings.authType == AuthType.Anonymous) {
+        exec(getRandomEntityAnonymous)
+      } {
+        exec(getRandomEntityWithToken)
+      }
+    }
+  }
+
+  /*
+   * Get random entities by UUID
+   */
+  val getRandomEntityByUuidAnonymous = exec(
+    http("GET entity by UUID (anonymous)")
+      .get("/" + Settings.collection + "/${uuid}")
+      .headers(Headers.authAnonymous)
+      .check(status.is(200))
+  )
+
+  val getRandomEntityByUuidWithToken = exec(
+    http("GET entity by UUID (token)")
+      .get("/" + Settings.collection + "/${uuid}")
+      .headers(Headers.authToken)
+      .check(status.is(200))
+  )
+
+  val getRandomEntitiesByUuid = scenario("Get entities by uuid randomly")
+    .exec(injectTokenIntoSession())
+    .exec(injectAuthType())
+    .doIfOrElse(_ => Settings.endConditionType == EndConditionType.MinutesElapsed) {
+      asLongAs(_ => Settings.continueMinutesTest) {
+        feed(uuidFeeder())
+          /*.exec{
+            session => println(s"UUID: ${session("uuid").as[String]}")
+            session
+          }*/
+          .doIfOrElse(_ => Settings.authType == AuthType.Anonymous) {
+            exec(getRandomEntityByUuidAnonymous)
+          } {
+            exec(getRandomEntityByUuidWithToken)
+          }
       }
     } {
-      repeat(Settings.endRequestCount) {
-        doIfOrElse(session => Settings.authType == AuthType.Anonymous) {
-          exec(getRandomEntityAnonymous)
-        } {
-          exec(getRandomEntityWithToken)
-        }
+      repeat(_ => Settings.endRequestCount.toInt) {
+        feed(uuidFeeder())
+          /*.exec {
+            session => println(s"UUID: ${session("uuid").as[String]}")
+            session
+          }*/
+          .doIfOrElse(_ => Settings.authType == AuthType.Anonymous) {
+            exec(getRandomEntityByUuidAnonymous)
+          } {
+            exec(getRandomEntityByUuidWithToken)
+          }
       }
     }
 
@@ -136,11 +190,15 @@ object EntityCollectionScenarios {
   val loadEntity = exec(
     doIf("${validEntity}", "yes") {
       exec(http("POST load entity")
-        .post(Settings.baseCollectionUrl)
+        .post(_ => "/" + Settings.collection)
         .headers(Headers.authToken)
         .body(StringBody("""${entity}"""))
         // 200 for success, 400 if already exists
-        .check(status.in(Seq(200))))
+        .check(status.in(Seq(200)), extractCreateUuid(SessionVarUuid)))
+        .exec(session => {
+          Settings.addUuid(session("entityNum").as[String], session(SessionVarUuid).as[String])
+          session
+        })
     }
   )
 
@@ -149,12 +207,14 @@ object EntityCollectionScenarios {
     .exec(injectAuthType())
     .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
       feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
-        .exec{
+        /*.exec{
           session => if (session("validEntity").as[String] == "yes") { println("Loading entity #" + session("entityNum").as[String]) }
           session
-        }
+        }*/
         .doIf(session => session("validEntity").as[String] == "yes") {
-          exec(loadEntity)
+          tryMax(5) {
+            exec(loadEntity)
+          }
         }
     }
 
@@ -177,14 +237,14 @@ object EntityCollectionScenarios {
       .exec {
       session => if (session("validEntity").as[String] == "yes") { println("Deleting entity #" + session("entityNum").as[String]) }
         session
-    }
+      }
       .doIf(session => session("validEntity").as[String] == "yes") {
-      exec(deleteEntity)
-    }
+        exec(deleteEntity)
+      }
   }
 
   /*
-   * Delete entities
+   * Update entities
    */
   val updateEntity = exec(
     http("UPDATE entity")
@@ -200,10 +260,10 @@ object EntityCollectionScenarios {
     .exec(injectAuthType())
     .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
       feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
-        .exec {
+        /*.exec {
           session => if (session("validEntity").as[String] == "yes") { println("Updating entity #" + session("entityNum").as[String]) }
           session
-        }
+        }*/
         .doIf(session => session("validEntity").as[String] == "yes") {
           exec(updateEntity)
         }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
index 83a648e..65d0111 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
@@ -31,7 +31,7 @@ object EntityScenarios {
 
   val getEntity = exec(
     http("GET custom entity")
-      .get(Settings.baseAppUrl+"/${collectionType}/${entityName}")
+      .get("/${collection}/${entityName}")
       .headers(Headers.authAnonymous)
       .check(status.is(200))
   )
@@ -39,7 +39,7 @@ object EntityScenarios {
   // not sure why I have to put stringToExpression -- thought String -> Expression[String] conversion would be automatic
   val putEntity = exec(
     http("Put custom entity")
-      .put(stringToExpression(Settings.baseAppUrl + "/${collectionType}/${entityName}"))
+      .put("/${collection}/${entityName}")
       .body(StringBody("""${entity}"""))
       .headers(Headers.auth("${authType}"))
       .check(status.is(200))
@@ -48,14 +48,14 @@ object EntityScenarios {
 
   val deleteEntity = exec(
     http("DELETE custom entity")
-      .get(Settings.baseAppUrl + "/${collectionType}/${entityName}")
+      .delete("/${collection}/${entityName}")
       .headers(Headers.auth("${authType}"))
       .check(status.is(200))
   )
 
   val postEntity = exec(
     http("Post custom entity")
-      .post(stringToExpression(Settings.baseAppUrl + "/${collectionType}"))
+      .post("/${collection}")
       .body(StringBody("""${entity}"""))
       .headers(Headers.auth("${authType}"))
       .check(status.is(200))
@@ -64,7 +64,7 @@ object EntityScenarios {
   /*
   val postEntityWithToken = exec(
     http("Post custom entity")
-      .post(stringToExpression(Settings.baseAppUrl + "/${collectionType}"))
+      .post("/${collection}")
       .body(StringBody("""${entity}"""))
       .headers(Headers.authToken)
       .check(status.is(200))
@@ -72,7 +72,7 @@ object EntityScenarios {
 
   val postEntityWithBasicAuth = exec(
     http("Post custom entity")
-      .post(stringToExpression(Settings.baseAppUrl + "/${collectionType}"))
+      .post("/${collection}")
       .body(StringBody("""${entity}"""))
       .headers(Headers.authBasic)
       .check(status.is(200))

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
index 85c6855..d7b108e 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/GeoScenarios.scala
@@ -40,8 +40,8 @@ object GeoScenarios {
 
   val updateGeolocation = exec(
     http("PUT user location")
-      .put(stringToExpression("/users/user" + Utils.generateRandomInt(1, Settings.totalUsers)))
-      .body(StringBody("{\"location\":{\"latitude\":\"${latitude}\",\"longitude\":\"${longitude}\"}}"))
+      .put(_ => "/users/user" + Utils.generateRandomInt(1, Settings.totalUsers))
+      .body(StringBody("""{ "location": { "latitude": "${latitude}", "longitude": "${longitude}"} }"""))
       .headers(Headers.authToken)
       .check(status.is(200))
   )

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
index 5471426..738c43a 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
@@ -48,21 +48,21 @@ object NotificationScenarios {
    * send the notification now
    */
   val sendNotification = exec(http("Send Single Notification")
-      .post("/devices/${entityName}/notifications")
-      .body(StringBody("{\"payloads\":{\"" + notifier + "\":\"testmessage\"}}"))
-      .headers(Headers.authToken)
-      .check(status.is(200))
-    )
+    .post("/devices/${entityName}/notifications")
+    .body(StringBody(_ => """{ "payloads": { """" + notifier + """": "testmessage"} }"""))
+    .headers(Headers.authToken)
+    .check(status.is(200))
+  )
 
   val sendNotificationToUser= exec(http("Send Notification to All Devices")
     .post("/users/${userId}/notifications")
-    .body(StringBody("{\"payloads\":{\"" + notifier + "\":\"testmessage\"}}"))
+    .body(StringBody(_ => """{ "payloads": {"""" + notifier + """": "testmessage"} }"""))
     .headers(Headers.authToken)
     .check(status.is(200))
   )
 
 
-  val userFeeder = Settings.getInfiniteUserFeeder()
+  val userFeeder = Settings.getInfiniteUserFeeder
   val createScenario = scenario("Create Push Notification")
     .feed(userFeeder)
     .exec(TokenScenarios.getUserToken)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
index 9718ad3..11f57bd 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
@@ -54,13 +54,13 @@ object NotifierScenarios {
     )
 
     .exec(http("Create Notifier")
-    .post(Settings.baseAppUrl+"/notifiers")
-    .headers(Headers.authToken)
-    .body(StringBody("{\"name\":\"" + notifier + "\",\"provider\":\"" + provider + "\"}"))
-    .check(status.in(200 to 400)))
+      .post("/notifiers")
+      .headers(Headers.authToken)
+      .body(StringBody(_ => """{ "name": """" + notifier + """", "provider": """" + provider + """"}"""))
+      .check(status.in(Range(200,400))))
 
   val checkNotifier = exec(http("Get Notifier")
-    .get(Settings.baseAppUrl+"/notifiers/"+notifier)
+    .get("/notifiers/"+notifier)
     .headers(Headers.authToken)
     .check(status.is(200),status.saveAs("notifierStatus"))
   )

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
index 0c1beef..3e6593d 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
@@ -36,10 +36,10 @@ object OrganizationScenarios {
   //register the org with the randomly generated org
   val createOrgAndAdmin =
     exec(http("Create Organization")
-      .post(Settings.baseUrl + "/management/organizations")
+      .post(_ => Settings.baseUrl + "/management/organizations")
       .headers(Headers.authAnonymous)
-      .body(StringBody("{\"organization\":\"" + Settings.org + "\",\"username\":\"" + Settings.adminUser + "\",\"name\":\"${entityName}\",\"email\":\"${entityName}@apigee.com\",\"password\":\"" + Settings.adminPassword + "\"}"))
-      .check(status.in(200 to 400))
+      .body(StringBody(session => """{ "organization": """" + Settings.org + """", "username": """" + Settings.adminUser + """", "name": "${entityName}", "email": "${entityName}@apigee.com", "password":"""" + Settings.adminPassword + """" }"""))
+      .check(status.in(Range(200,400)))
     )
   val createOrgBatch =
     feed(FeederGenerator.generateRandomEntityNameFeeder("org", 1))
@@ -49,7 +49,7 @@ object OrganizationScenarios {
       .exec(NotifierScenarios.createNotifier)
       .exec(session => {
       // print the Session for debugging, don't do that on real Simulations
-      println(session)
+      // println(session)
       session
     })
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
index d0eca02..c7ff4db 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
@@ -39,10 +39,10 @@ import org.apache.usergrid.settings.Settings
 
 object TokenScenarios {
   val getManagementToken = exec(http("POST Org Token")
-    .post(Settings.baseUrl+"/management/token")
+    .post(_ => Settings.baseUrl + "/management/token")
     .headers(Headers.authAnonymous)
     //pass in the the username and password, store the "access_token" json response element as the var "authToken" in the session
-    .body(StringBody("{\"username\":\"" + Settings.adminUser + "\",\"password\":\""+Settings.adminPassword+"\",\"grant_type\":\"password\"}"))
+    .body(StringBody(_ => """{ "username": """" + Settings.adminUser + """", "password": """" + Settings.adminPassword + """", "grant_type": "password" }"""))
     .check(jsonPath("$.access_token").find(0).saveAs("authToken"))
   )
 
@@ -50,7 +50,7 @@ object TokenScenarios {
     exec(
       http("POST user token")
         .post("/token")
-        .body(StringBody("{\"grant_type\":\"password\",\"username\":\"${username}\",\"password\":\"password\"}"))
+        .body(StringBody("""{ "grant_type": "password", "username": "${username}", "password": "password" }"""))
         .check(status.is(200),jsonPath("$..access_token").exists,jsonPath("$..access_token").saveAs("authToken"))
     )
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
index a55f66a..7269af7 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
@@ -68,7 +68,7 @@ object UserScenarios {
      exec(
        http("POST geolocated Users")
          .post("/users")
-         .body(new StringBody( """{"location":{"latitude":"${latitude}","longitude":"${longitude}"},"username":"${username}",
+         .body(StringBody( """{"location":{"latitude":"${latitude}","longitude":"${longitude}"},"username":"${username}",
            "displayName":"${displayName}","age":"${age}","seen":"${seen}","weight":"${weight}",
            "height":"${height}","aboutMe":"${aboutMe}","profileId":"${profileId}","headline":"${headline}",
            "showAge":"${showAge}","relationshipStatus":"${relationshipStatus}","ethnicity":"${ethnicity}","password":"password"}"""))
@@ -91,7 +91,7 @@ object UserScenarios {
      http("PUT geolocated Users")
        .put("/users/${username}")
        .headers(Headers.authToken)
-       .body(new StringBody( """{"location":{"latitude":"${latitude}","longitude":"${longitude}"},"username":"${username}",
+       .body(StringBody( """{"location":{"latitude":"${latitude}","longitude":"${longitude}"},"username":"${username}",
         "displayName":"${displayName}","age":"${age}","seen":"${seen}","weight":"${weight}",
         "height":"${height}","aboutMe":"${aboutMe}","profileId":"${profileId}","headline":"${headline}",
         "showAge":"${showAge}","relationshipStatus":"${relationshipStatus}","ethnicity":"${ethnicity}","password":"password"}"""))
@@ -156,7 +156,7 @@ object UserScenarios {
     * Logs in as the user, then creates 2 devices if they do not exist
     */
    val createUsersWithDevicesScenario = scenario("Create Users")
-     .feed(Settings.getInfiniteUserFeeder())
+     .feed(Settings.getInfiniteUserFeeder)
      .exec(TokenScenarios.getManagementToken)
      .exec(UserScenarios.postUserIfNotExists)
      .exec(TokenScenarios.getUserToken)
@@ -170,7 +170,7 @@ object UserScenarios {
     * Posts a new user every time
     */
    val postUsersInfinitely =  scenario("Post Users")
-        .feed(Settings.getInfiniteUserFeeder())
+        .feed(Settings.getInfiniteUserFeeder)
         .exec(postUser)
 
 
@@ -178,14 +178,14 @@ object UserScenarios {
     * Puts a new user every time
     */
    val putUsersInfinitely =  scenario("Put Users").exec(injectManagementTokenIntoSession)
-     .feed(Settings.getInfiniteUserFeeder())
+     .feed(Settings.getInfiniteUserFeeder)
      .exec(putUser)
 
    /**
     * Deletes user every time
     */
    val deleteUsersInfinitely =  scenario("Delete Users").exec(injectManagementTokenIntoSession)
-     .feed(Settings.getInfiniteUserFeeder())
+     .feed(Settings.getInfiniteUserFeeder)
      .exec(deleteUser)
 
    /**
@@ -202,7 +202,7 @@ object UserScenarios {
    })
 
   val getUsersByUsername = scenario("Get User By Username").exec(injectManagementTokenIntoSession)
-    .feed(Settings.getInfiniteUserFeeder())
+    .feed(Settings.getInfiniteUserFeeder)
          //get users without a cursor
          .exec(getUserByUsername)
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index cca3056..dc7ff73 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -16,55 +16,89 @@
  */
 package org.apache.usergrid.settings
 
+import java.io.{PrintWriter, FileOutputStream}
 import java.nio.charset.StandardCharsets
 import java.util.{Date, Base64}
 
 
 import io.gatling.http.Predef._
+import io.gatling.http.config.HttpProtocolBuilder
 import org.apache.usergrid.datagenerators.FeederGenerator
 import org.apache.usergrid.enums._
 import org.apache.usergrid.helpers.Utils
 
 object Settings {
 
+  def initStrSetting(cfg: String): String = {
+    val setting = System.getProperty(cfg)
+
+    if (setting != null) setting else ConfigProperties.getDefault(cfg).toString
+  }
+
+  def initBoolSetting(cfg: String): Boolean = {
+    val strSetting = System.getProperty(cfg)
+    val default:Boolean = ConfigProperties.getDefault(cfg).asInstanceOf[Boolean]
+
+    if (strSetting != null) {
+      if (default) // default is true
+        strSetting.toLowerCase != "false"
+      else // default is false
+        strSetting.toLowerCase == "true"
+    } else {
+      default
+    }
+  }
+
+  def initIntSetting(cfg: String): Int = {
+    val integerSetting:Integer = Integer.getInteger(cfg)
+
+    if (integerSetting != null)
+      integerSetting.toInt
+    else
+      ConfigProperties.getDefault(cfg).asInstanceOf[Int]
+  }
+
   // load configuration settings via property or default
-  val org = System.getProperty(ConfigProperties.Org)
-  val app = System.getProperty(ConfigProperties.App)
-  val adminUser = System.getProperty(ConfigProperties.AdminUser)
-  val adminPassword = System.getProperty(ConfigProperties.AdminPassword)
-  val baseUrl = System.getProperty(ConfigProperties.BaseUrl)
-  val baseAppUrl = baseUrl + "/" + org + "/" + app
-  val httpConf = http.baseURL(baseAppUrl)
-  val authType = System.getProperty(ConfigProperties.AuthType, AuthType.Anonymous)
-  val tokenType = System.getProperty(ConfigProperties.TokenType, TokenType.User)
-
-  val skipSetup:Boolean = System.getProperty(ConfigProperties.SkipSetup) == "true"
-  val createOrg:Boolean = !skipSetup && (System.getProperty(ConfigProperties.CreateOrg) == "true")
-  val createApp:Boolean = !skipSetup && (System.getProperty(ConfigProperties.CreateApp) != "false")
-  val loadEntities:Boolean = !skipSetup && (System.getProperty(ConfigProperties.LoadEntities) != "false")
-  val scenarioType = System.getProperty(ConfigProperties.ScenarioType, ScenarioType.NameRandomInfinite)
-
-  val rampUsers:Int = Integer.getInteger(ConfigProperties.RampUsers, 0).toInt
-  val constantUsersPerSec:Int = Integer.getInteger(ConfigProperties.ConstantUsersPerSec, 0).toInt // users to add per second during constant injection
-  val constantUsersDuration:Int = Integer.getInteger(ConfigProperties.ConstantUsersDuration, 10).toInt // number of seconds
+  val org = initStrSetting(ConfigProperties.Org)
+  val app = initStrSetting(ConfigProperties.App)
+  val adminUser = initStrSetting(ConfigProperties.AdminUser)
+  val adminPassword = initStrSetting(ConfigProperties.AdminPassword)
+
+  private val cfgBaseUrl = initStrSetting(ConfigProperties.BaseUrl)
+  val baseUrl = if (cfgBaseUrl.takeRight(1) == "/") cfgBaseUrl.dropRight(1) else cfgBaseUrl
+  val baseAppUrl:String = baseUrl + "/" + org + "/" + app
+
+  val httpConf: HttpProtocolBuilder = http.baseURL(baseAppUrl)
+  val authType = initStrSetting(ConfigProperties.AuthType)
+  val tokenType = initStrSetting(ConfigProperties.TokenType)
+
+  val skipSetup:Boolean = initBoolSetting(ConfigProperties.SkipSetup)
+  val createOrg:Boolean = !skipSetup && initBoolSetting(ConfigProperties.CreateOrg)
+  val createApp:Boolean = !skipSetup && initBoolSetting(ConfigProperties.CreateApp)
+  val loadEntities:Boolean = !skipSetup && initBoolSetting(ConfigProperties.LoadEntities)
+  val sandboxCollection:Boolean = initBoolSetting(ConfigProperties.SandboxCollection)
+  val scenarioType = initStrSetting(ConfigProperties.ScenarioType)
+
+  val rampUsers:Int = initIntSetting(ConfigProperties.RampUsers)
+  val constantUsersPerSec:Int = initIntSetting(ConfigProperties.ConstantUsersPerSec) // users to add per second during constant injection
+  val constantUsersDuration:Int = initIntSetting(ConfigProperties.ConstantUsersDuration) // number of seconds
   val totalUsers:Int = rampUsers + (constantUsersPerSec * constantUsersDuration)
-  val userSeed:Int = Integer.getInteger(ConfigProperties.UserSeed,1).toInt
-  val appUser = System.getProperty(ConfigProperties.AppUser)
-  val appUserPassword = System.getProperty(ConfigProperties.AppUserPassword)
+  val userSeed:Int = initIntSetting(ConfigProperties.UserSeed)
+  val appUser = initStrSetting(ConfigProperties.AppUser)
+  val appUserPassword = initStrSetting(ConfigProperties.AppUserPassword)
   val appUserBase64 = Base64.getEncoder.encodeToString((appUser + ":" + appUserPassword).getBytes(StandardCharsets.UTF_8))
 
-  var numEntities:Int = Integer.getInteger(ConfigProperties.NumEntities, 5000).toInt
-  val totalNumEntities:Int = numEntities
-  val numDevices:Int = Integer.getInteger(ConfigProperties.NumDevices, 4000).toInt
+  val totalNumEntities:Int = initIntSetting(ConfigProperties.NumEntities)
+  val numDevices:Int = initIntSetting(ConfigProperties.NumDevices)
 
-  val collectionType = System.getProperty(ConfigProperties.CollectionType, "customentities")
-  val baseCollectionUrl = baseAppUrl + "/" + collectionType
+  val collection = initStrSetting(ConfigProperties.Collection)
+  val baseCollectionUrl = baseAppUrl + "/" + collection
 
-  val rampTime:Int = Integer.getInteger(ConfigProperties.RampTime, 0).toInt // in seconds
-  val throttle:Int = Integer.getInteger(ConfigProperties.Throttle, 50).toInt // in seconds
-  val rpsTarget:Int = Integer.getInteger(ConfigProperties.RpsTarget, 50).toInt // requests per second target
-  val rpsRampTime:Int = Integer.getInteger(ConfigProperties.RpsRampTime, 10).toInt // in seconds
-  val holdDuration:Int = Integer.getInteger(ConfigProperties.HoldDuration, 300).toInt // in seconds
+  val rampTime:Int = initIntSetting(ConfigProperties.RampTime) // in seconds
+  val throttle:Int = initIntSetting(ConfigProperties.Throttle) // in seconds
+  val rpsTarget:Int = initIntSetting(ConfigProperties.RpsTarget) // requests per second target
+  val rpsRampTime:Int = initIntSetting(ConfigProperties.RpsRampTime) // in seconds
+  val holdDuration:Int = initIntSetting(ConfigProperties.HoldDuration) // in seconds
 
   // Geolocation settings
   val centerLatitude:Double = 37.442348 // latitude of center point
@@ -73,78 +107,119 @@ object Settings {
   val geoSearchRadius:Int = 8000 // search area in meters
 
   // Push Notification settings
-  val pushNotifier = System.getProperty(ConfigProperties.PushNotifier, "loadNotifier")
-  val pushProvider = System.getProperty(ConfigProperties.PushProvider, "noop")
+  val pushNotifier = initStrSetting(ConfigProperties.PushNotifier)
+  val pushProvider = initStrSetting(ConfigProperties.PushProvider)
 
   // Large Entity Collection settings
-  val entityPrefix = System.getProperty(ConfigProperties.EntityPrefix, "entity")
-  val entityType = System.getProperty(ConfigProperties.EntityType, EntityType.Basic) // basic/trivial/?
-  var entitySeed = Integer.getInteger(ConfigProperties.EntitySeed, 1).toInt
-  val overallEntitySeed = entitySeed
-  val searchLimit = Integer.getInteger(ConfigProperties.SearchLimit, 0).toInt
-  val searchQuery = System.getProperty(ConfigProperties.SearchQuery, "")
-  val endConditionType = System.getProperty(ConfigProperties.EndConditionType, EndConditionType.MinutesElapsed)
-  val endMinutes = Integer.getInteger(ConfigProperties.EndMinutes, 10).toInt
-  val endRequestCount = Integer.getInteger(ConfigProperties.EndRequestCount, 10).toInt
+  val entityPrefix = initStrSetting(ConfigProperties.EntityPrefix)
+  val entityType = initStrSetting(ConfigProperties.EntityType) // basic/trivial/?
+  val overallEntitySeed = initIntSetting(ConfigProperties.EntitySeed)
+  val searchLimit:Int = initIntSetting(ConfigProperties.SearchLimit)
+  val searchQuery = initStrSetting(ConfigProperties.SearchQuery)
+  val endConditionType = initStrSetting(ConfigProperties.EndConditionType)
+  val endMinutes:Int = initIntSetting(ConfigProperties.EndMinutes)
+  val endRequestCount:Int = initIntSetting(ConfigProperties.EndRequestCount)
 
   // Org creation fields
-  val orgCreationUsername = System.getProperty(ConfigProperties.OrgCreationUsername, org.concat("_admin"))
-  val orgCreationEmail = System.getProperty(ConfigProperties.OrgCreationEmail, orgCreationUsername.concat("@usergrid.com"))
-  val orgCreationName = System.getProperty(ConfigProperties.OrgCreationName, orgCreationUsername)
-  val orgCreationPassword = System.getProperty(ConfigProperties.OrgCreationPassword, "test")
+  private val cfgOrgCreationUsername = initStrSetting(ConfigProperties.OrgCreationUsername)
+  private val cfgOrgCreationEmail = initStrSetting(ConfigProperties.OrgCreationEmail)
+  private val cfgOrgCreationName = initStrSetting(ConfigProperties.OrgCreationName)
+  val orgCreationUsername = if (cfgOrgCreationUsername == "") org.concat("_admin") else cfgOrgCreationUsername
+  val orgCreationEmail = if (cfgOrgCreationEmail == "") orgCreationUsername.concat("@usergrid.com") else cfgOrgCreationEmail
+  val orgCreationName = if (cfgOrgCreationName == "") orgCreationUsername else cfgOrgCreationName
+  val orgCreationPassword = initStrSetting(ConfigProperties.OrgCreationPassword)
 
   // Entity update
-  val updateProperty = System.getProperty(ConfigProperties.UpdateProperty, "updateProp")
-  val updateValue = System.getProperty(ConfigProperties.UpdateValue, new Date().toString)
+  val updateProperty = initStrSetting(ConfigProperties.UpdateProperty)
+  val updateValue = initStrSetting(ConfigProperties.UpdateValue)
   val updateBody = Utils.toJSONStr(Map(updateProperty -> updateValue))
 
   // Entity workers
-  val entityWorkerCount = Integer.getInteger(ConfigProperties.EntityWorkerCount,1)
-  val entityWorkerNum = Integer.getInteger(ConfigProperties.EntityWorkerNum, 1)
-
-  if (entityWorkerCount > 1 && entityWorkerNum >= 1 && entityWorkerNum <= entityWorkerCount) {
-    // split entities across multiple workers
-    val entitiesPerWorkerFloor = totalNumEntities / entityWorkerCount
-    val leftOver = totalNumEntities % entityWorkerCount
-    val zeroBasedWorkerNum = entityWorkerNum - 1
-    val takeExtraEntity = if (entityWorkerNum <= leftOver) 1 else 0
-    entitySeed = overallEntitySeed + zeroBasedWorkerNum * entitiesPerWorkerFloor + (if (takeExtraEntity == 1) zeroBasedWorkerNum else leftOver)
-    numEntities = entitiesPerWorkerFloor + takeExtraEntity
+  private val cfgEntityWorkerCount:Int = initIntSetting(ConfigProperties.EntityWorkerCount)
+  private val cfgEntityWorkerNum:Int = initIntSetting(ConfigProperties.EntityWorkerNum)
+  val useWorkers:Boolean = cfgEntityWorkerCount > 1 && cfgEntityWorkerNum >= 1 && cfgEntityWorkerNum <= cfgEntityWorkerCount
+  val entityWorkerCount:Int = if (useWorkers) cfgEntityWorkerCount else 1
+  val entityWorkerNum:Int = if (useWorkers) cfgEntityWorkerNum else 1
+
+  // if only one worker system, these numbers will still be fine
+  private val entitiesPerWorkerFloor:Int = totalNumEntities / entityWorkerCount
+  private val leftOver:Int = totalNumEntities % entityWorkerCount  // will be 0 if only one worker
+  private val extraEntity:Int = if (entityWorkerNum <= leftOver) 1 else 0
+  private val zeroBasedWorkerNum:Int = entityWorkerNum - 1
+  val entitySeed:Int = overallEntitySeed + zeroBasedWorkerNum * entitiesPerWorkerFloor + (if (extraEntity == 1) zeroBasedWorkerNum else leftOver)
+  val numEntities:Int = entitiesPerWorkerFloor + extraEntity
+
+  // UUID log file, have to go through this because creating a csv feeder with an invalid csv file fails at maven compile time
+  private val dummyCsv = ConfigProperties.getDefault(ConfigProperties.UuidFilename).toString
+  private val uuidFilename = initStrSetting(ConfigProperties.UuidFilename)
+  val captureUuids = uuidFilename != dummyCsv && scenarioType == ScenarioType.LoadEntities
+  val feedUuids = uuidFilename != dummyCsv && scenarioType == ScenarioType.UuidRandomInfinite
+  val captureUuidFilename = if (captureUuids) uuidFilename else dummyCsv
+  val feedUuidFilename = if (feedUuids) uuidFilename else dummyCsv
+  val purgeUsers:Int = initIntSetting(ConfigProperties.PurgeUsers)
+
+  private var uuidMap: Map[String, String] = Map()
+  def addUuid(name: String, uuid: String): Unit = {
+    if (captureUuids) uuidMap += (name -> uuid)
+    // println(s"UUID: ${name},${uuid}")
+  }
+
+  def writeUuidsToFile(): Unit = {
+    if (captureUuids) {
+      val writer = {
+        val fos = new FileOutputStream(captureUuidFilename)
+        new PrintWriter(fos, false)
+      }
+      writer.println("name,uuid")
+      uuidMap.keys.foreach { name =>
+        writer.println(s"${Settings.entityPrefix}${name},${uuidMap(name)}")
+      }
+      writer.flush()
+      writer.close()
+    }
   }
 
-  def getUserFeeder():Array[Map[String, String]]= {
+  def getUserFeeder:Array[Map[String, String]]= {
     FeederGenerator.generateUserWithGeolocationFeeder(totalUsers, userLocationRadius, centerLatitude, centerLongitude)
   }
 
-  def getInfiniteUserFeeder():Iterator[Map[String, String]]= {
+  def getInfiniteUserFeeder:Iterator[Map[String, String]]= {
     FeederGenerator.generateUserWithGeolocationFeederInfinite(userSeed, userLocationRadius, centerLatitude, centerLongitude)
   }
 
-  var testStartTime = System.currentTimeMillis()
+  private var testStartTime: Long = System.currentTimeMillis()
+
+  def getTestStartTime: Long = {
+    testStartTime
+  }
 
   def setTestStartTime(): Unit = {
     testStartTime = System.currentTimeMillis()
   }
 
+  def continueMinutesTest: Boolean = {
+    (System.currentTimeMillis() - testStartTime) < (endMinutes.toLong*60L*1000L)
+  }
+
   def printSettingsSummary(): Unit = {
-    val authTypeStr = authType + (if (authType == AuthType.Token) s"(${tokenType})" else "")
-    val endConditionStr = if (endConditionType == EndConditionType.MinutesElapsed) s"${endMinutes} minutes elapsed" else s"${endRequestCount} requests"
+    val authTypeStr = authType + (if (authType == AuthType.Token) s"($tokenType)" else "")
+    val endConditionStr = if (endConditionType == EndConditionType.MinutesElapsed) s"$endMinutes minutes elapsed" else s"$endRequestCount requests"
     println("-----------------------------------------------------------------------------")
     println("SIMULATION SETTINGS")
     println("-----------------------------------------------------------------------------")
     println()
-    println(s"Org:${org}  App:${app}  Collection:${collectionType}")
-    println(s"CreateOrg:${createOrg}  CreateApp:${createApp}  LoadEntities:${loadEntities}")
-    println(s"ScenarioType:${scenarioType}  AuthType:${authTypeStr}")
+    println(s"Org:$org  App:$app  Collection:$collection")
+    println(s"CreateOrg:$createOrg  CreateApp:$createApp  LoadEntities:$loadEntities")
+    println(s"ScenarioType:$scenarioType  AuthType:$authTypeStr")
     println()
-    println(s"Entity Type:${entityType}  Prefix:${entityPrefix}")
+    println(s"Entity Type:$entityType  Prefix:$entityPrefix")
     println()
-    println(s"Overall: NumEntities:${totalNumEntities}  Seed:${overallEntitySeed}  Workers:${entityWorkerCount}")
-    println(s"Worker:  NumEntities:${numEntities}  Seed:${entitySeed}  WorkerNum:${entityWorkerNum}")
+    println(s"Overall: NumEntities:$totalNumEntities  Seed:$overallEntitySeed  Workers:$entityWorkerCount")
+    println(s"Worker:  NumEntities:$numEntities  Seed:$entitySeed  WorkerNum:$entityWorkerNum")
     println()
-    println(s"Ramp: Users:${rampUsers}  Time:${rampTime}")
-    println(s"Constant: UsersPerSec:${constantUsersPerSec}  Time:${constantUsersDuration}")
-    println(s"End Condition:${endConditionStr}")
+    println(s"Ramp: Users:$rampUsers  Time:$rampTime")
+    println(s"Constant: UsersPerSec:$constantUsersPerSec  Time:$constantUsersDuration")
+    println(s"End Condition:$endConditionStr")
     println()
     println("-----------------------------------------------------------------------------")
   }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index 8151cb1..da5189e 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -29,7 +29,7 @@ import org.apache.usergrid.settings.Settings
  * Configuration items:
  * skipSetup, createOrg, org, createApp, app, adminUser, adminPassword, baseUrl,
  * numEntities, entityType, entityPrefix, entitySeed, rampUsers, rampTime,
- * constantUsersPerSec, constantUsersDuration, collectionType, scenarioType
+ * constantUsersPerSec, constantUsersDuration, collection, scenarioType
  *
  * getAllByCursor scenario: searchQuery, searchLimit
  */
@@ -42,10 +42,11 @@ class ConfigurableSimulation extends Simulation {
       case ScenarioType.UpdateEntities => EntityCollectionScenarios.updateEntities
       case ScenarioType.GetAllByCursor => EntityCollectionScenarios.getEntityPagesToEnd
       case ScenarioType.NameRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByName
+      case ScenarioType.UuidRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByUuid
     }
   }
 
-  before(
+  before{
     if (!Settings.skipSetup) {
       println("Begin setup")
       if (Settings.createOrg) Setup.setupOrg()
@@ -54,7 +55,8 @@ class ConfigurableSimulation extends Simulation {
     } else {
       println("Skipping setup")
     }
-  )
+    if (Settings.sandboxCollection) Setup.sandboxCollection()
+  }
 
   Settings.setTestStartTime()
   if (ScenarioType.isValid(Settings.scenarioType)) {
@@ -70,9 +72,10 @@ class ConfigurableSimulation extends Simulation {
     println(s"scenarioType ${Settings.scenarioType} not found.")
   }
 
-  after(
+  after {
+    if (Settings.captureUuids) Settings.writeUuidsToFile()
     Settings.printSettingsSummary()
-  )
+  }
 
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala
index 9369489..2db4160 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PostCustomEntitySimulation.scala
@@ -30,7 +30,7 @@ import org.apache.usergrid.settings.Settings
  * PostCustomEntitySimulation - creates lots of custom entities
  *
  * Run this way:
- * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.PostCustomEntitySimulation -DcollectionType=yourcollection
+ * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.PostCustomEntitySimulation -Dcollection=yourcollection
  *
  *
  */
@@ -46,8 +46,8 @@ class PostCustomEntitySimulation extends Simulation {
   }
 
   val numEntities:Int = Settings.numEntities
-  val collectionType = Settings.collectionType
-  println("collection type = " + collectionType)
+  val collection = Settings.collection
+  println("collection type = " + collection)
   val rampTime:Int = Settings.rampTime
   val throttle:Int = Settings.throttle
   val feeder = FeederGenerator.generateCustomEntityInfinite(0)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala
index bffed0f..57e4faf 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/PutCustomEntitySimulation.scala
@@ -29,7 +29,7 @@ import org.apache.usergrid.settings.Settings
  * PostCustomEntitySimulation - creates lots of custom entities
  *
  * Run this way:
- * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.PostCustomEntitySimulation -DcollectionType=yourcollection
+ * mvn gatling:execute -DrampTime=10 -DmaxPossibleUsers=10 -Dduration=120 -Dorg=yourorgname -Dapp=sandbox -Dbaseurl=https://api.usergrid.com -DadminUser=yourusername -DadminPassword='yourpassword' -Dgatling.simulationClass=org.apache.usergrid.simulations.deprecated.PostCustomEntitySimulation -Dcollection=yourcollection
  *
  *
  */
@@ -45,8 +45,8 @@ class PutCustomEntitySimulation extends Simulation {
   }
 
   val numEntities:Int = Settings.numEntities
-  val collectionType = Settings.collectionType
-  println("collection type = " + collectionType)
+  val collection = Settings.collection
+  println("collection type = " + collection)
   val rampTime:Int = Settings.rampTime
   val throttle:Int = Settings.throttle
   val feeder = FeederGenerator.generateCustomEntityPutInfinite(0)

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/test/resources/dummy.csv
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/dummy.csv b/stack/loadtests/src/test/resources/dummy.csv
new file mode 100644
index 0000000..187f36b
--- /dev/null
+++ b/stack/loadtests/src/test/resources/dummy.csv
@@ -0,0 +1 @@
+name,uuid

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/logback-test.xml b/stack/loadtests/src/test/resources/logback-test.xml
index 6a188ab..5ad4ea3 100644
--- a/stack/loadtests/src/test/resources/logback-test.xml
+++ b/stack/loadtests/src/test/resources/logback-test.xml
@@ -26,11 +26,11 @@
 	</appender>
 
 	<!-- Uncomment for logging ALL HTTP request and responses -->
-	<!-- 	<logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" /> -->
+	 	<!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" /> -->
 	<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
-		<logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" /> 
+		<logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" />
 
-<logger name="io.gatling.http" level="TRACE" />
+<!-- <logger name="io.gatling.http" level="TRACE" /> -->
         <!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
 
 	<root level="WARN">

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/af446bee/stack/loadtests/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/test/resources/logback.xml b/stack/loadtests/src/test/resources/logback.xml
index 6ba218c..232d333 100644
--- a/stack/loadtests/src/test/resources/logback.xml
+++ b/stack/loadtests/src/test/resources/logback.xml
@@ -27,9 +27,9 @@
 	</appender>
 
 	<!-- Uncomment for logging ALL HTTP request and responses -->
-	 	<logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" />
+	 	<!-- <logger name="io.gatling.http.ahc.AsyncHandlerActor" level="TRACE" /> -->
 	<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
-	 	<!--<logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" />-->
+	 	<logger name="io.gatling.http.ahc.AsyncHandlerActor" level="DEBUG" />
 
 	<root level="WARN">
 		<appender-ref ref="CONSOLE" />


[03/21] incubator-usergrid git commit: USERGRID-871: refactor Gatling load testing code

Posted by to...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c499e421/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/lastNames.txt
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/lastNames.txt b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/lastNames.txt
new file mode 100644
index 0000000..c9ec798
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/lastNames.txt
@@ -0,0 +1,88799 @@
+Smith
+Johnson
+Williams
+Jones
+Brown
+Davis
+Miller
+Wilson
+Moore
+Taylor
+Anderson
+Thomas
+Jackson
+White
+Harris
+Martin
+Thompson
+Garcia
+Martinez
+Robinson
+Clark
+Rodriguez
+Lewis
+Lee
+Walker
+Hall
+Allen
+Young
+Hernandez
+King
+Wright
+Lopez
+Hill
+Scott
+Green
+Adams
+Baker
+Gonzalez
+Nelson
+Carter
+Mitchell
+Perez
+Roberts
+Turner
+Phillips
+Campbell
+Parker
+Evans
+Edwards
+Collins
+Stewart
+Sanchez
+Morris
+Rogers
+Reed
+Cook
+Morgan
+Bell
+Murphy
+Bailey
+Rivera
+Cooper
+Richardson
+Cox
+Howard
+Ward
+Torres
+Peterson
+Gray
+Ramirez
+James
+Watson
+Brooks
+Kelly
+Sanders
+Price
+Bennett
+Wood
+Barnes
+Ross
+Henderson
+Coleman
+Jenkins
+Perry
+Powell
+Long
+Patterson
+Hughes
+Flores
+Washington
+Butler
+Simmons
+Foster
+Gonzales
+Bryant
+Alexander
+Russell
+Griffin
+Diaz
+Hayes
+Myers
+Ford
+Hamilton
+Graham
+Sullivan
+Wallace
+Woods
+Cole
+West
+Jordan
+Owens
+Reynolds
+Fisher
+Ellis
+Harrison
+Gibson
+Mcdonald
+Cruz
+Marshall
+Ortiz
+Gomez
+Murray
+Freeman
+Wells
+Webb
+Simpson
+Stevens
+Tucker
+Porter
+Hunter
+Hicks
+Crawford
+Henry
+Boyd
+Mason
+Morales
+Kennedy
+Warren
+Dixon
+Ramos
+Reyes
+Burns
+Gordon
+Shaw
+Holmes
+Rice
+Robertson
+Hunt
+Black
+Daniels
+Palmer
+Mills
+Nichols
+Grant
+Knight
+Ferguson
+Rose
+Stone
+Hawkins
+Dunn
+Perkins
+Hudson
+Spencer
+Gardner
+Stephens
+Payne
+Pierce
+Berry
+Matthews
+Arnold
+Wagner
+Willis
+Ray
+Watkins
+Olson
+Carroll
+Duncan
+Snyder
+Hart
+Cunningham
+Bradley
+Lane
+Andrews
+Ruiz
+Harper
+Fox
+Riley
+Armstrong
+Carpenter
+Weaver
+Greene
+Lawrence
+Elliott
+Chavez
+Sims
+Austin
+Peters
+Kelley
+Franklin
+Lawson
+Fields
+Gutierrez
+Ryan
+Schmidt
+Carr
+Vasquez
+Castillo
+Wheeler
+Chapman
+Oliver
+Montgomery
+Richards
+Williamson
+Johnston
+Banks
+Meyer
+Bishop
+Mccoy
+Howell
+Alvarez
+Morrison
+Hansen
+Fernandez
+Garza
+Harvey
+Little
+Burton
+Stanley
+Nguyen
+George
+Jacobs
+Reid
+Kim
+Fuller
+Lynch
+Dean
+Gilbert
+Garrett
+Romero
+Welch
+Larson
+Frazier
+Burke
+Hanson
+Day
+Mendoza
+Moreno
+Bowman
+Medina
+Fowler
+Brewer
+Hoffman
+Carlson
+Silva
+Pearson
+Holland
+Douglas
+Fleming
+Jensen
+Vargas
+Byrd
+Davidson
+Hopkins
+May
+Terry
+Herrera
+Wade
+Soto
+Walters
+Curtis
+Neal
+Caldwell
+Lowe
+Jennings
+Barnett
+Graves
+Jimenez
+Horton
+Shelton
+Barrett
+Obrien
+Castro
+Sutton
+Gregory
+Mckinney
+Lucas
+Miles
+Craig
+Rodriquez
+Chambers
+Holt
+Lambert
+Fletcher
+Watts
+Bates
+Hale
+Rhodes
+Pena
+Beck
+Newman
+Haynes
+Mcdaniel
+Mendez
+Bush
+Vaughn
+Parks
+Dawson
+Santiago
+Norris
+Hardy
+Love
+Steele
+Curry
+Powers
+Schultz
+Barker
+Guzman
+Page
+Munoz
+Ball
+Keller
+Chandler
+Weber
+Leonard
+Walsh
+Lyons
+Ramsey
+Wolfe
+Schneider
+Mullins
+Benson
+Sharp
+Bowen
+Daniel
+Barber
+Cummings
+Hines
+Baldwin
+Griffith
+Valdez
+Hubbard
+Salazar
+Reeves
+Warner
+Stevenson
+Burgess
+Santos
+Tate
+Cross
+Garner
+Mann
+Mack
+Moss
+Thornton
+Dennis
+Mcgee
+Farmer
+Delgado
+Aguilar
+Vega
+Glover
+Manning
+Cohen
+Harmon
+Rodgers
+Robbins
+Newton
+Todd
+Blair
+Higgins
+Ingram
+Reese
+Cannon
+Strickland
+Townsend
+Potter
+Goodwin
+Walton
+Rowe
+Hampton
+Ortega
+Patton
+Swanson
+Joseph
+Francis
+Goodman
+Maldonado
+Yates
+Becker
+Erickson
+Hodges
+Rios
+Conner
+Adkins
+Webster
+Norman
+Malone
+Hammond
+Flowers
+Cobb
+Moody
+Quinn
+Blake
+Maxwell
+Pope
+Floyd
+Osborne
+Paul
+Mccarthy
+Guerrero
+Lindsey
+Estrada
+Sandoval
+Gibbs
+Tyler
+Gross
+Fitzgerald
+Stokes
+Doyle
+Sherman
+Saunders
+Wise
+Colon
+Gill
+Alvarado
+Greer
+Padilla
+Simon
+Waters
+Nunez
+Ballard
+Schwartz
+Mcbride
+Houston
+Christensen
+Klein
+Pratt
+Briggs
+Parsons
+Mclaughlin
+Zimmerman
+French
+Buchanan
+Moran
+Copeland
+Roy
+Pittman
+Brady
+Mccormick
+Holloway
+Brock
+Poole
+Frank
+Logan
+Owen
+Bass
+Marsh
+Drake
+Wong
+Jefferson
+Park
+Morton
+Abbott
+Sparks
+Patrick
+Norton
+Huff
+Clayton
+Massey
+Lloyd
+Figueroa
+Carson
+Bowers
+Roberson
+Barton
+Tran
+Lamb
+Harrington
+Casey
+Boone
+Cortez
+Clarke
+Mathis
+Singleton
+Wilkins
+Cain
+Bryan
+Underwood
+Hogan
+Mckenzie
+Collier
+Luna
+Phelps
+Mcguire
+Allison
+Bridges
+Wilkerson
+Nash
+Summers
+Atkins
+Wilcox
+Pitts
+Conley
+Marquez
+Burnett
+Richard
+Cochran
+Chase
+Davenport
+Hood
+Gates
+Clay
+Ayala
+Sawyer
+Roman
+Vazquez
+Dickerson
+Hodge
+Acosta
+Flynn
+Espinoza
+Nicholson
+Monroe
+Wolf
+Morrow
+Kirk
+Randall
+Anthony
+Whitaker
+Oconnor
+Skinner
+Ware
+Molina
+Kirby
+Huffman
+Bradford
+Charles
+Gilmore
+Dominguez
+Oneal
+Bruce
+Lang
+Combs
+Kramer
+Heath
+Hancock
+Gallagher
+Gaines
+Shaffer
+Short
+Wiggins
+Mathews
+Mcclain
+Fischer
+Wall
+Small
+Melton
+Hensley
+Bond
+Dyer
+Cameron
+Grimes
+Contreras
+Christian
+Wyatt
+Baxter
+Snow
+Mosley
+Shepherd
+Larsen
+Hoover
+Beasley
+Glenn
+Petersen
+Whitehead
+Meyers
+Keith
+Garrison
+Vincent
+Shields
+Horn
+Savage
+Olsen
+Schroeder
+Hartman
+Woodard
+Mueller
+Kemp
+Deleon
+Booth
+Patel
+Calhoun
+Wiley
+Eaton
+Cline
+Navarro
+Harrell
+Lester
+Humphrey
+Parrish
+Duran
+Hutchinson
+Hess
+Dorsey
+Bullock
+Robles
+Beard
+Dalton
+Avila
+Vance
+Rich
+Blackwell
+York
+Johns
+Blankenship
+Trevino
+Salinas
+Campos
+Pruitt
+Moses
+Callahan
+Golden
+Montoya
+Hardin
+Guerra
+Mcdowell
+Carey
+Stafford
+Gallegos
+Henson
+Wilkinson
+Booker
+Merritt
+Miranda
+Atkinson
+Orr
+Decker
+Hobbs
+Preston
+Tanner
+Knox
+Pacheco
+Stephenson
+Glass
+Rojas
+Serrano
+Marks
+Hickman
+English
+Sweeney
+Strong
+Prince
+Mcclure
+Conway
+Walter
+Roth
+Maynard
+Farrell
+Lowery
+Hurst
+Nixon
+Weiss
+Trujillo
+Ellison
+Sloan
+Juarez
+Winters
+Mclean
+Randolph
+Leon
+Boyer
+Villarreal
+Mccall
+Gentry
+Carrillo
+Kent
+Ayers
+Lara
+Shannon
+Sexton
+Pace
+Hull
+Leblanc
+Browning
+Velasquez
+Leach
+Chang
+House
+Sellers
+Herring
+Noble
+Foley
+Bartlett
+Mercado
+Landry
+Durham
+Walls
+Barr
+Mckee
+Bauer
+Rivers
+Everett
+Bradshaw
+Pugh
+Velez
+Rush
+Estes
+Dodson
+Morse
+Sheppard
+Weeks
+Camacho
+Bean
+Barron
+Livingston
+Middleton
+Spears
+Branch
+Blevins
+Chen
+Kerr
+Mcconnell
+Hatfield
+Harding
+Ashley
+Solis
+Herman
+Frost
+Giles
+Blackburn
+William
+Pennington
+Woodward
+Finley
+Mcintosh
+Koch
+Best
+Solomon
+Mccullough
+Dudley
+Nolan
+Blanchard
+Rivas
+Brennan
+Mejia
+Kane
+Benton
+Joyce
+Buckley
+Haley
+Valentine
+Maddox
+Russo
+Mcknight
+Buck
+Moon
+Mcmillan
+Crosby
+Berg
+Dotson
+Mays
+Roach
+Church
+Chan
+Richmond
+Meadows
+Faulkner
+Oneill
+Knapp
+Kline
+Barry
+Ochoa
+Jacobson
+Gay
+Avery
+Hendricks
+Horne
+Shepard
+Hebert
+Cherry
+Cardenas
+Mcintyre
+Whitney
+Waller
+Holman
+Donaldson
+Cantu
+Terrell
+Morin
+Gillespie
+Fuentes
+Tillman
+Sanford
+Bentley
+Peck
+Key
+Salas
+Rollins
+Gamble
+Dickson
+Battle
+Santana
+Cabrera
+Cervantes
+Howe
+Hinton
+Hurley
+Spence
+Zamora
+Yang
+Mcneil
+Suarez
+Case
+Petty
+Gould
+Mcfarland
+Sampson
+Carver
+Bray
+Rosario
+Macdonald
+Stout
+Hester
+Melendez
+Dillon
+Farley
+Hopper
+Galloway
+Potts
+Bernard
+Joyner
+Stein
+Aguirre
+Osborn
+Mercer
+Bender
+Franco
+Rowland
+Sykes
+Benjamin
+Travis
+Pickett
+Crane
+Sears
+Mayo
+Dunlap
+Hayden
+Wilder
+Mckay
+Coffey
+Mccarty
+Ewing
+Cooley
+Vaughan
+Bonner
+Cotton
+Holder
+Stark
+Ferrell
+Cantrell
+Fulton
+Lynn
+Lott
+Calderon
+Rosa
+Pollard
+Hooper
+Burch
+Mullen
+Fry
+Riddle
+Levy
+David
+Duke
+Odonnell
+Guy
+Michael
+Britt
+Frederick
+Daugherty
+Berger
+Dillard
+Alston
+Jarvis
+Frye
+Riggs
+Chaney
+Odom
+Duffy
+Fitzpatrick
+Valenzuela
+Merrill
+Mayer
+Alford
+Mcpherson
+Acevedo
+Donovan
+Barrera
+Albert
+Cote
+Reilly
+Compton
+Raymond
+Mooney
+Mcgowan
+Craft
+Cleveland
+Clemons
+Wynn
+Nielsen
+Baird
+Stanton
+Snider
+Rosales
+Bright
+Witt
+Stuart
+Hays
+Holden
+Rutledge
+Kinney
+Clements
+Castaneda
+Slater
+Hahn
+Emerson
+Conrad
+Burks
+Delaney
+Pate
+Lancaster
+Sweet
+Justice
+Tyson
+Sharpe
+Whitfield
+Talley
+Macias
+Irwin
+Burris
+Ratliff
+Mccray
+Madden
+Kaufman
+Beach
+Goff
+Cash
+Bolton
+Mcfadden
+Levine
+Good
+Byers
+Kirkland
+Kidd
+Workman
+Carney
+Dale
+Mcleod
+Holcomb
+England
+Finch
+Head
+Burt
+Hendrix
+Sosa
+Haney
+Franks
+Sargent
+Nieves
+Downs
+Rasmussen
+Bird
+Hewitt
+Lindsay
+Le
+Foreman
+Valencia
+Oneil
+Delacruz
+Vinson
+Dejesus
+Hyde
+Forbes
+Gilliam
+Guthrie
+Wooten
+Huber
+Barlow
+Boyle
+Mcmahon
+Buckner
+Rocha
+Puckett
+Langley
+Knowles
+Cooke
+Velazquez
+Whitley
+Noel
+Vang
+Shea
+Rouse
+Hartley
+Mayfield
+Elder
+Rankin
+Hanna
+Cowan
+Lucero
+Arroyo
+Slaughter
+Haas
+Oconnell
+Minor
+Kendrick
+Shirley
+Kendall
+Boucher
+Archer
+Boggs
+Odell
+Dougherty
+Andersen
+Newell
+Crowe
+Wang
+Friedman
+Bland
+Swain
+Holley
+Felix
+Pearce
+Childs
+Yarbrough
+Galvan
+Proctor
+Meeks
+Lozano
+Mora
+Rangel
+Bacon
+Villanueva
+Schaefer
+Rosado
+Helms
+Boyce
+Goss
+Stinson
+Smart
+Lake
+Ibarra
+Hutchins
+Covington
+Reyna
+Gregg
+Werner
+Crowley
+Hatcher
+Mackey
+Bunch
+Womack
+Polk
+Jamison
+Dodd
+Childress
+Childers
+Camp
+Villa
+Dye
+Springer
+Mahoney
+Dailey
+Belcher
+Lockhart
+Griggs
+Costa
+Connor
+Brandt
+Winter
+Walden
+Moser
+Tracy
+Tatum
+Mccann
+Akers
+Lutz
+Pryor
+Law
+Orozco
+Mcallister
+Lugo
+Davies
+Shoemaker
+Madison
+Rutherford
+Newsome
+Magee
+Chamberlain
+Blanton
+Simms
+Godfrey
+Flanagan
+Crum
+Cordova
+Escobar
+Downing
+Sinclair
+Donahue
+Krueger
+Mcginnis
+Gore
+Farris
+Webber
+Corbett
+Andrade
+Starr
+Lyon
+Yoder
+Hastings
+Mcgrath
+Spivey
+Krause
+Harden
+Crabtree
+Kirkpatrick
+Hollis
+Brandon
+Arrington
+Ervin
+Clifton
+Ritter
+Mcghee
+Bolden
+Maloney
+Gagnon
+Dunbar
+Ponce
+Pike
+Mayes
+Heard
+Beatty
+Mobley
+Kimball
+Butts
+Montes
+Herbert
+Grady
+Eldridge
+Braun
+Hamm
+Gibbons
+Seymour
+Moyer
+Manley
+Herron
+Plummer
+Elmore
+Cramer
+Gary
+Rucker
+Hilton
+Blue
+Pierson
+Fontenot
+Field
+Rubio
+Grace
+Goldstein
+Elkins
+Wills
+Novak
+John
+Hickey
+Worley
+Gorman
+Katz
+Dickinson
+Broussard
+Fritz
+Woodruff
+Crow
+Christopher
+Britton
+Forrest
+Nance
+Lehman
+Bingham
+Zuniga
+Whaley
+Shafer
+Coffman
+Steward
+Delarosa
+Nix
+Neely
+Numbers
+Mata
+Manuel
+Davila
+Mccabe
+Kessler
+Emery
+Bowling
+Hinkle
+Welsh
+Pagan
+Goldberg
+Goins
+Crouch
+Cuevas
+Quinones
+Mcdermott
+Hendrickson
+Samuels
+Denton
+Bergeron
+Lam
+Ivey
+Locke
+Haines
+Thurman
+Snell
+Hoskins
+Byrne
+Milton
+Winston
+Arthur
+Arias
+Stanford
+Roe
+Corbin
+Beltran
+Chappell
+Hurt
+Downey
+Dooley
+Tuttle
+Couch
+Payton
+Mcelroy
+Crockett
+Groves
+Clement
+Leslie
+Cartwright
+Dickey
+Mcgill
+Dubois
+Muniz
+Erwin
+Self
+Tolbert
+Dempsey
+Cisneros
+Sewell
+Latham
+Garland
+Vigil
+Tapia
+Sterling
+Rainey
+Norwood
+Lacy
+Stroud
+Meade
+Amos
+Tipton
+Lord
+Kuhn
+Hilliard
+Bonilla
+Teague
+Courtney
+Gunn
+Ho
+Greenwood
+Correa
+Reece
+Weston
+Poe
+Trent
+Pineda
+Phipps
+Frey
+Kaiser
+Ames
+Paige
+Gunter
+Schmitt
+Milligan
+Espinosa
+Carlton
+Bowden
+Vickers
+Lowry
+Pritchard
+Costello
+Piper
+Mcclellan
+Lovell
+Drew
+Sheehan
+Quick
+Hatch
+Dobson
+Singh
+Jeffries
+Hollingsworth
+Sorensen
+Meza
+Fink
+Donnelly
+Burrell
+Bruno
+Tomlinson
+Colbert
+Billings
+Ritchie
+Helton
+Sutherland
+Peoples
+Mcqueen
+Gaston
+Thomason
+Mckinley
+Givens
+Crocker
+Vogel
+Robison
+Dunham
+Coker
+Swartz
+Keys
+Lilly
+Ladner
+Hannah
+Willard
+Richter
+Hargrove
+Edmonds
+Brantley
+Albright
+Murdock
+Boswell
+Muller
+Quintero
+Padgett
+Kenney
+Daly
+Connolly
+Pierre
+Inman
+Quintana
+Lund
+Barnard
+Villegas
+Simons
+Land
+Huggins
+Tidwell
+Sanderson
+Bullard
+Mcclendon
+Duarte
+Draper
+Meredith
+Marrero
+Dwyer
+Abrams
+Stover
+Goode
+Fraser
+Crews
+Bernal
+Smiley
+Godwin
+Fish
+Conklin
+Mcneal
+Baca
+Esparza
+Crowder
+Bower
+Nicholas
+Chung
+Brewster
+Mcneill
+Dick
+Rodrigues
+Leal
+Coates
+Raines
+Mccain
+Mccord
+Miner
+Holbrook
+Swift
+Dukes
+Carlisle
+Aldridge
+Ackerman
+Starks
+Ricks
+Holliday
+Ferris
+Hairston
+Sheffield
+Lange
+Fountain
+Marino
+Doss
+Betts
+Kaplan
+Carmichael
+Bloom
+Ruffin
+Penn
+Kern
+Bowles
+Sizemore
+Larkin
+Dupree
+Jewell
+Silver
+Seals
+Metcalf
+Hutchison
+Henley
+Farr
+Castle
+Mccauley
+Hankins
+Gustafson
+Deal
+Curran
+Ash
+Waddell
+Ramey
+Cates
+Pollock
+Major
+Irvin
+Cummins
+Messer
+Heller
+Dewitt
+Lin
+Funk
+Cornett
+Palacios
+Galindo
+Cano
+Hathaway
+Singer
+Pham
+Enriquez
+Aaron
+Salgado
+Pelletier
+Painter
+Wiseman
+Blount
+Hand
+Feliciano
+Temple
+Houser
+Doherty
+Mead
+Mcgraw
+Toney
+Swan
+Melvin
+Capps
+Blanco
+Blackmon
+Wesley
+Thomson
+Mcmanus
+Fair
+Burkett
+Post
+Gleason
+Rudolph
+Ott
+Dickens
+Cormier
+Voss
+Rushing
+Rosenberg
+Hurd
+Dumas
+Benitez
+Arellano
+Story
+Marin
+Caudill
+Bragg
+Jaramillo
+Huerta
+Gipson
+Colvin
+Biggs
+Vela
+Platt
+Cassidy
+Tompkins
+Mccollum
+Kay
+Gabriel
+Dolan
+Daley
+Crump
+Street
+Sneed
+Kilgore
+Grove
+Grimm
+Davison
+Brunson
+Prater
+Marcum
+Devine
+Kyle
+Dodge
+Stratton
+Rosas
+Choi
+Tripp
+Ledbetter
+Lay
+Hightower
+Haywood
+Feldman
+Epps
+Yeager
+Posey
+Sylvester
+Scruggs
+Cope
+Stubbs
+Richey
+Overton
+Trotter
+Sprague
+Cordero
+Butcher
+Burger
+Stiles
+Burgos
+Woodson
+Horner
+Bassett
+Purcell
+Haskins
+Gee
+Akins
+Abraham
+Hoyt
+Ziegler
+Spaulding
+Hadley
+Grubbs
+Sumner
+Murillo
+Zavala
+Shook
+Lockwood
+Jarrett
+Driscoll
+Dahl
+Thorpe
+Sheridan
+Redmond
+Putnam
+Mcwilliams
+Mcrae
+Cornell
+Felton
+Romano
+Joiner
+Sadler
+Hedrick
+Hager
+Hagen
+Fitch
+Coulter
+Thacker
+Mansfield
+Langston
+Guidry
+Ferreira
+Corley
+Conn
+Rossi
+Lackey
+Cody
+Baez
+Saenz
+Mcnamara
+Darnell
+Michel
+Mcmullen
+Mckenna
+Mcdonough
+Link
+Engel
+Browne
+Roper
+Peacock
+Eubanks
+Drummond
+Stringer
+Pritchett
+Parham
+Mims
+Landers
+Ham
+Grayson
+Stacy
+Schafer
+Egan
+Timmons
+Ohara
+Keen
+Hamlin
+Finn
+Cortes
+Mcnair
+Louis
+Clifford
+Nadeau
+Moseley
+Michaud
+Rosen
+Oakes
+Kurtz
+Jeffers
+Calloway
+Beal
+Bautista
+Winn
+Suggs
+Stern
+Stapleton
+Lyles
+Laird
+Montano
+Diamond
+Dawkins
+Roland
+Hagan
+Goldman
+Bryson
+Barajas
+Lovett
+Segura
+Metz
+Lockett
+Langford
+Hinson
+Eastman
+Rock
+Hooks
+Woody
+Smallwood
+Shapiro
+Crowell
+Whalen
+Triplett
+Hooker
+Chatman
+Aldrich
+Cahill
+Youngblood
+Ybarra
+Stallings
+Sheets
+Samuel
+Reeder
+Person
+Pack
+Lacey
+Connelly
+Bateman
+Abernathy
+Winkler
+Wilkes
+Masters
+Hackett
+Granger
+Gillis
+Schmitz
+Sapp
+Napier
+Souza
+Lanier
+Gomes
+Weir
+Otero
+Ledford
+Burroughs
+Babcock
+Ventura
+Siegel
+Dugan
+Clinton
+Christie
+Bledsoe
+Atwood
+Wray
+Varner
+Spangler
+Otto
+Anaya
+Staley
+Kraft
+Fournier
+Eddy
+Belanger
+Wolff
+Thorne
+Bynum
+Burnette
+Boykin
+Swenson
+Purvis
+Pina
+Khan
+Duvall
+Darby
+Xiong
+Kauffman
+Ali
+Yu
+Healy
+Engle
+Corona
+Benoit
+Valle
+Steiner
+Spicer
+Shaver
+Randle
+Lundy
+Dow
+Chin
+Calvert
+Staton
+Neff
+Kearney
+Darden
+Oakley
+Medeiros
+Mccracken
+Crenshaw
+Block
+Beaver
+Perdue
+Dill
+Whittaker
+Tobin
+Cornelius
+Washburn
+Hogue
+Goodrich
+Easley
+Bravo
+Dennison
+Vera
+Shipley
+Kerns
+Jorgensen
+Crain
+Abel
+Villalobos
+Maurer
+Longoria
+Keene
+Coon
+Sierra
+Witherspoon
+Staples
+Pettit
+Kincaid
+Eason
+Madrid
+Echols
+Lusk
+Wu
+Stahl
+Currie
+Thayer
+Shultz
+Sherwood
+Mcnally
+Seay
+North
+Maher
+Kenny
+Hope
+Gagne
+Barrow
+Nava
+Myles
+Moreland
+Honeycutt
+Hearn
+Diggs
+Caron
+Whitten
+Westbrook
+Stovall
+Ragland
+Queen
+Munson
+Meier
+Looney
+Kimble
+Jolly
+Hobson
+London
+Goddard
+Culver
+Burr
+Presley
+Negron
+Connell
+Tovar
+Marcus
+Huddleston
+Hammer
+Ashby
+Salter
+Root
+Pendleton
+Oleary
+Nickerson
+Myrick
+Judd
+Jacobsen
+Elliot
+Bain
+Adair
+Starnes
+Sheldon
+Matos
+Light
+Busby
+Herndon
+Hanley
+Bellamy
+Jack
+Doty
+Bartley
+Yazzie
+Rowell
+Parson
+Gifford
+Cullen
+Christiansen
+Benavides
+Barnhart
+Talbot
+Mock
+Crandall
+Connors
+Bonds
+Whitt
+Gage
+Bergman
+Arredondo
+Addison
+Marion
+Lujan
+Dowdy
+Jernigan
+Huynh
+Bouchard
+Dutton
+Rhoades
+Ouellette
+Kiser
+Rubin
+Herrington
+Hare
+Denny
+Blackman
+Babb
+Allred
+Rudd
+Paulson
+Ogden
+Koenig
+Jacob
+Irving
+Geiger
+Begay
+Parra
+Champion
+Lassiter
+Hawk
+Esposito
+Cho
+Waldron
+Vernon
+Ransom
+Prather
+Keenan
+Jean
+Grover
+Chacon
+Vick
+Sands
+Roark
+Parr
+Mayberry
+Greenberg
+Coley
+Bruner
+Whitman
+Skaggs
+Shipman
+Means
+Leary
+Hutton
+Romo
+Medrano
+Ladd
+Kruse
+Friend
+Darling
+Askew
+Valentin
+Schulz
+Alfaro
+Tabor
+Mohr
+Gallo
+Bermudez
+Pereira
+Isaac
+Bliss
+Reaves
+Flint
+Comer
+Boston
+Woodall
+Naquin
+Guevara
+Earl
+Delong
+Carrier
+Pickens
+Brand
+Tilley
+Schaffer
+Read
+Lim
+Knutson
+Fenton
+Doran
+Chu
+Vogt
+Vann
+Prescott
+Mclain
+Landis
+Corcoran
+Ambrose
+Zapata
+Hyatt
+Hemphill
+Faulk
+Call
+Dove
+Boudreaux
+Aragon
+Whitlock
+Trejo
+Tackett
+Shearer
+Saldana
+Hanks
+Gold
+Driver
+Mckinnon
+Koehler
+Champagne
+Bourgeois
+Pool
+Keyes
+Goodson
+Foote
+Early
+Lunsford
+Goldsmith
+Flood
+Winslow
+Sams
+Reagan
+Mccloud
+Hough
+Esquivel
+Naylor
+Loomis
+Coronado
+Ludwig
+Braswell
+Bearden
+Sherrill
+Huang
+Fagan
+Ezell
+Edmondson
+Cyr
+Cronin
+Nunn
+Lemon
+Guillory
+Grier
+Dubose
+Traylor
+Ryder
+Dobbins
+Coyle
+Aponte
+Whitmore
+Smalls
+Rowan
+Malloy
+Cardona
+Braxton
+Borden
+Humphries
+Carrasco
+Ruff
+Metzger
+Huntley
+Hinojosa
+Finney
+Madsen
+Hong
+Hills
+Ernst
+Dozier
+Burkhart
+Bowser
+Peralta
+Daigle
+Whittington
+Sorenson
+Saucedo
+Roche
+Redding
+Loyd
+Fugate
+Avalos
+Waite
+Lind
+Huston
+Hay
+Benedict
+Hawthorne
+Hamby
+Boyles
+Boles
+Regan
+Faust
+Crook
+Beam
+Barger
+Hinds
+Gallardo
+Elias
+Willoughby
+Willingham
+Wilburn
+Eckert
+Busch
+Zepeda
+Worthington
+Tinsley
+Russ
+Li
+Hoff
+Hawley
+Carmona
+Varela
+Rector
+Newcomb
+Mallory
+Kinsey
+Dube
+Whatley
+Strange
+Ragsdale
+Ivy
+Bernstein
+Becerra
+Yost
+Mattson
+Ly
+Felder
+Cheek
+Luke
+Handy
+Grossman
+Gauthier
+Escobedo
+Braden
+Beckman
+Mott
+Hillman
+Gil
+Flaherty
+Dykes
+Doe
+Stockton
+Stearns
+Lofton
+Kitchen
+Coats
+Cavazos
+Beavers
+Barrios
+Tang
+Parish
+Mosher
+Lincoln
+Cardwell
+Coles
+Burnham
+Weller
+Lemons
+Beebe
+Aguilera
+Ring
+Parnell
+Harman
+Couture
+Alley
+Schumacher
+Redd
+Dobbs
+Blum
+Blalock
+Merchant
+Ennis
+Denson
+Cottrell
+Chester
+Brannon
+Bagley
+Aviles
+Watt
+Sousa
+Rosenthal
+Rooney
+Dietz
+Blank
+Paquette
+Mcclelland
+Duff
+Velasco
+Lentz
+Grubb
+Burrows
+Barbour
+Ulrich
+Shockley
+Rader
+German
+Beyer
+Mixon
+Layton
+Altman
+Alonzo
+Weathers
+Titus
+Stoner
+Squires
+Shipp
+Priest
+Lipscomb
+Cutler
+Caballero
+Zimmer
+Willett
+Thurston
+Storey
+Medley
+Lyle
+Epperson
+Shah
+Mcmillian
+Baggett
+Torrez
+Laws
+Hirsch
+Dent
+Corey
+Poirier
+Peachey
+Jacques
+Farrar
+Creech
+Barth
+Trimble
+France
+Dupre
+Albrecht
+Sample
+Lawler
+Crisp
+Conroy
+Chadwick
+Wetzel
+Nesbitt
+Murry
+Jameson
+Wilhelm
+Patten
+Minton
+Matson
+Kimbrough
+Iverson
+Guinn
+Gale
+Fortune
+Croft
+Toth
+Pulliam
+Nugent
+Newby
+Littlejohn
+Dias
+Canales
+Bernier
+Baron
+Barney
+Singletary
+Renteria
+Pruett
+Mchugh
+Mabry
+Landrum
+Brower
+Weldon
+Stoddard
+Ruth
+Cagle
+Stjohn
+Scales
+Kohler
+Kellogg
+Hopson
+Gant
+Tharp
+Gann
+Zeigler
+Pringle
+Hammons
+Fairchild
+Deaton
+Chavis
+Carnes
+Rowley
+Matlock
+Libby
+Kearns
+Irizarry
+Carrington
+Starkey
+Pepper
+Lopes
+Jarrell
+Fay
+Craven
+Beverly
+Baum
+Spain
+Littlefield
+Linn
+Humphreys
+Hook
+High
+Etheridge
+Cuellar
+Chastain
+Chance
+Bundy
+Speer
+Skelton
+Quiroz
+Pyle
+Portillo
+Ponder
+Moulton
+Machado
+Liu
+Killian
+Hutson
+Hitchcock
+Ellsworth
+Dowling
+Cloud
+Burdick
+Spann
+Pedersen
+Levin
+Leggett
+Hayward
+Hacker
+Dietrich
+Beaulieu
+Barksdale
+Wakefield
+Snowden
+Paris
+Briscoe
+Bowie
+Berman
+Ogle
+Mcgregor
+Laughlin
+Helm
+Burden
+Wheatley
+Schreiber
+Pressley
+Parris
+Ng
+Alaniz
+Agee
+Urban
+Swann
+Snodgrass
+Schuster
+Radford
+Monk
+Mattingly
+Main
+Lamar
+Harp
+Girard
+Cheney
+Yancey
+Wagoner
+Ridley
+Lombardo
+Lau
+Hudgins
+Gaskins
+Duckworth
+Coe
+Coburn
+Willey
+Prado
+Newberry
+Magana
+Hammonds
+Elam
+Whipple
+Slade
+Serna
+Ojeda
+Liles
+Dorman
+Diehl
+Angel
+Upton
+Reardon
+Michaels
+Kelsey
+Goetz
+Eller
+Bauman
+Baer
+Augustine
+Layne
+Hummel
+Brenner
+Amaya
+Adamson
+Ornelas
+Dowell
+Cloutier
+Christy
+Castellanos
+Wing
+Wellman
+Saylor
+Orourke
+Moya
+Montalvo
+Kilpatrick
+Harley
+Durbin
+Shell
+Oldham
+Kang
+Garvin
+Foss
+Branham
+Bartholomew
+Templeton
+Maguire
+Holton
+Alonso
+Rider
+Monahan
+Mccormack
+Beaty
+Anders
+Streeter
+Nieto
+Nielson
+Moffett
+Lankford
+Keating
+Heck
+Gatlin
+Delatorre
+Callaway
+Adcock
+Worrell
+Unger
+Robinette
+Nowak
+Jeter
+Brunner
+Ashton
+Steen
+Parrott
+Overstreet
+Nobles
+Montanez
+Luther
+Clevenger
+Brinkley
+Trahan
+Quarles
+Pickering
+Pederson
+Jansen
+Grantham
+Gilchrist
+Crespo
+Aiken
+Schell
+Schaeffer
+Lorenz
+Leyva
+Harms
+Dyson
+Wallis
+Pease
+Leavitt
+Hyman
+Cheng
+Cavanaugh
+Batts
+Warden
+Seaman
+Rockwell
+Quezada
+Paxton
+Linder
+Houck
+Fontaine
+Durant
+Caruso
+Adler
+Pimentel
+Mize
+Lytle
+Donald
+Cleary
+Cason
+Acker
+Switzer
+Salmon
+Isaacs
+Higginbotham
+Han
+Waterman
+Vandyke
+Stamper
+Sisk
+Shuler
+Riddick
+Redman
+Mcmahan
+Levesque
+Hatton
+Bronson
+Bollinger
+Arnett
+Okeefe
+Gerber
+Gannon
+Farnsworth
+Baughman
+Silverman
+Satterfield
+Royal
+Mccrary
+Kowalski
+Joy
+Grigsby
+Greco
+Cabral
+Trout
+Rinehart
+Mahon
+Linton
+Gooden
+Curley
+Baugh
+Wyman
+Weiner
+Schwab
+Schuler
+Morrissey
+Mahan
+Coy
+Bunn
+Andrew
+Thrasher
+Spear
+Waggoner
+Shelley
+Robert
+Qualls
+Purdy
+Mcwhorter
+Mauldin
+Mark
+Jordon
+Gilman
+Perryman
+Newsom
+Menard
+Martino
+Graf
+Billingsley
+Artis
+Simpkins
+Salisbury
+Quintanilla
+Gilliland
+Fraley
+Foust
+Crouse
+Scarborough
+Ngo
+Grissom
+Fultz
+Rico
+Marlow
+Markham
+Madrigal
+Lawton
+Barfield
+Whiting
+Varney
+Schwarz
+Huey
+Gooch
+Arce
+Wheat
+Truong
+Poulin
+Mackenzie
+Leone
+Hurtado
+Selby
+Gaither
+Fortner
+Culpepper
+Coughlin
+Brinson
+Boudreau
+Barkley
+Bales
+Stepp
+Holm
+Tan
+Schilling
+Morrell
+Kahn
+Heaton
+Gamez
+Douglass
+Causey
+Brothers
+Turpin
+Shanks
+Schrader
+Meek
+Isom
+Hardison
+Carranza
+Yanez
+Way
+Scroggins
+Schofield
+Runyon
+Ratcliff
+Murrell
+Moeller
+Irby
+Currier
+Butterfield
+Yee
+Ralston
+Pullen
+Pinson
+Estep
+East
+Carbone
+Lance
+Hawks
+Ellington
+Casillas
+Spurlock
+Sikes
+Motley
+Mccartney
+Kruger
+Isbell
+Houle
+Francisco
+Burk
+Bone
+Tomlin
+Shelby
+Quigley
+Neumann
+Lovelace
+Fennell
+Colby
+Cheatham
+Bustamante
+Skidmore
+Hidalgo
+Forman
+Culp
+Bowens
+Betancourt
+Aquino
+Robb
+Rea
+Milner
+Martel
+Gresham
+Wiles
+Ricketts
+Gavin
+Dowd
+Collazo
+Bostic
+Blakely
+Sherrod
+Power
+Kenyon
+Gandy
+Ebert
+Deloach
+Cary
+Bull
+Allard
+Sauer
+Robins
+Olivares
+Gillette
+Chestnut
+Bourque
+Paine
+Lyman
+Hite
+Hauser
+Devore
+Crawley
+Chapa
+Vu
+Tobias
+Talbert
+Poindexter
+Millard
+Meador
+Mcduffie
+Mattox
+Kraus
+Harkins
+Choate
+Bess
+Wren
+Sledge
+Sanborn
+Outlaw
+Kinder
+Geary
+Cornwell
+Barclay
+Adam
+Abney
+Seward
+Rhoads
+Howland
+Fortier
+Easter
+Benner
+Vines
+Tubbs
+Troutman
+Rapp
+Noe
+Mccurdy
+Harder
+Deluca
+Westmoreland
+South
+Havens
+Guajardo
+Ely
+Clary
+Seal
+Meehan
+Herzog
+Guillen
+Ashcraft
+Waugh
+Renner
+Milam
+Jung
+Elrod
+Churchill
+Buford
+Breaux
+Bolin
+Asher
+Windham
+Tirado
+Pemberton
+Nolen
+Noland
+Knott
+Emmons
+Cornish
+Christenson
+Brownlee
+Barbee
+Waldrop
+Pitt
+Olvera
+Lombardi
+Gruber
+Gaffney
+Eggleston
+Banda
+Archuleta
+Still
+Slone
+Prewitt
+Pfeiffer
+Nettles
+Mena
+Mcadams
+Henning
+Gardiner
+Cromwell
+Chisholm
+Burleson
+Box
+Vest
+Oglesby
+Mccarter
+Malcolm
+Lumpkin
+Larue
+Grey
+Wofford
+Vanhorn
+Thorn
+Teel
+Swafford
+Stclair
+Stanfield
+Ocampo
+Herrmann
+Hannon
+Arsenault
+Roush
+Mcalister
+Hiatt
+Gunderson
+Forsythe
+Duggan
+Delvalle
+Cintron
+Wilks
+Weinstein
+Uribe
+Rizzo
+Noyes
+Mclendon
+Gurley
+Bethea
+Winstead
+Maples
+Harry
+Guyton
+Giordano
+Alderman
+Valdes
+Polanco
+Pappas
+Lively
+Grogan
+Griffiths
+Bobo
+Arevalo
+Whitson
+Sowell
+Rendon
+Matthew
+Julian
+Fernandes
+Farrow
+Edmond
+Benavidez
+Ayres
+Alicea
+Stump
+Smalley
+Seitz
+Schulte
+Gilley
+Gallant
+Dewey
+Casper
+Canfield
+Wolford
+Omalley
+Mcnutt
+Mcnulty
+Mcgovern
+Hardman
+Harbin
+Cowart
+Chavarria
+Brink
+Beckett
+Bagwell
+Armstead
+Anglin
+Abreu
+Reynoso
+Krebs
+Jett
+Hoffmann
+Greenfield
+Forte
+Burney
+Broome
+Sisson
+Parent
+Jude
+Younger
+Trammell
+Partridge
+Marvin
+Mace
+Lomax
+Lemieux
+Gossett
+Frantz
+Fogle
+Cooney
+Broughton
+Pence
+Paulsen
+Neil
+Muncy
+Mcarthur
+Hollins
+Edward
+Beauchamp
+Withers
+Osorio
+Mulligan
+Hoyle
+Foy
+Dockery
+Cockrell
+Begley
+Amador
+Roby
+Rains
+Lindquist
+Gentile
+Everhart
+Bohannon
+Wylie
+Thao
+Sommers
+Purnell
+Palma
+Fortin
+Dunning
+Breeden
+Vail
+Phelan
+Phan
+Marx
+Cosby
+Colburn
+Chong
+Boling
+Biddle
+Ledesma
+Gaddis
+Denney
+Chow
+Bueno
+Berrios
+Wicker
+Tolliver
+Thibodeaux
+Nagle
+Lavoie
+Fisk
+Do
+Crist
+Barbosa
+Reedy
+March
+Locklear
+Kolb
+Himes
+Behrens
+Beckwith
+Beckham
+Weems
+Wahl
+Shorter
+Shackelford
+Rees
+Muse
+Free
+Cerda
+Valadez
+Thibodeau
+Saavedra
+Ridgeway
+Reiter
+Mchenry
+Majors
+Lachance
+Keaton
+Israel
+Ferrara
+Falcon
+Clemens
+Blocker
+Applegate
+Paz
+Needham
+Mojica
+Kuykendall
+Hamel
+Escamilla
+Doughty
+Burchett
+Ainsworth
+Wilbur
+Vidal
+Upchurch
+Thigpen
+Strauss
+Spruill
+Sowers
+Riggins
+Ricker
+Mccombs
+Harlow
+Garnett
+Buffington
+Yi
+Sotelo
+Olivas
+Negrete
+Morey
+Macon
+Logsdon
+Lapointe
+Florence
+Cathey
+Bigelow
+Bello
+Westfall
+Stubblefield
+Peak
+Lindley
+Jeffrey
+Hein
+Hawes
+Farrington
+Edge
+Breen
+Birch
+Wilde
+Steed
+Sepulveda
+Reinhardt
+Proffitt
+Minter
+Messina
+Mcnabb
+Maier
+Keeler
+Gamboa
+Donohue
+Dexter
+Basham
+Shinn
+Orlando
+Crooks
+Cota
+Borders
+Bills
+Bachman
+Tisdale
+Tavares
+Schmid
+Pickard
+Jasper
+Gulley
+Fonseca
+Delossantos
+Condon
+Clancy
+Batista
+Wicks
+Wadsworth
+New
+Martell
+Lo
+Littleton
+Ison
+Haag
+Folsom
+Brumfield
+Broyles
+Brito
+Mireles
+Mcdonnell
+Leclair
+Hamblin
+Gough
+Fanning
+Binder
+Winfield
+Whitworth
+Soriano
+Palumbo
+Newkirk
+Mangum
+Hutcherson
+Comstock
+Cecil
+Carlin
+Beall
+Bair
+Wendt
+Watters
+Walling
+Putman
+Otoole
+Oliva
+Morley
+Mares
+Lemus
+Keener
+Jeffery
+Hundley
+Dial
+Damico
+Billups
+Strother
+Mcfarlane
+Lamm
+Eaves
+Crutcher
+Caraballo
+Canty
+Atwell
+Taft
+Siler
+Rust
+Rawls
+Rawlings
+Prieto
+Niles
+Mcneely
+Mcafee
+Hulsey
+Harlan
+Hackney
+Galvez
+Escalante
+Delagarza
+Crider
+Charlton
+Bandy
+Wilbanks
+Stowe
+Steinberg
+Samson
+Renfro
+Masterson
+Massie
+Lanham
+Haskell
+Hamrick
+Fort
+Dehart
+Card
+Burdette
+Branson
+Bourne
+Babin
+Aleman
+Worthy
+Tibbs
+Sweat
+Smoot
+Slack
+Paradis
+Packard
+Mull
+Luce
+Houghton
+Gantt
+Furman
+Danner
+Christianson
+Burge
+Broderick
+Ashford
+Arndt
+Almeida
+Stallworth
+Shade
+Searcy
+Sager
+Noonan
+Mclemore
+Mcintire
+Maxey
+Lavigne
+Jobe
+Ireland
+Ferrer
+Falk
+Edgar
+Coffin
+Byrnes
+Aranda
+Apodaca
+Stamps
+Rounds
+Peek
+Olmstead
+Lewandowski
+Kaminski
+Her
+Dunaway
+Bruns
+Brackett
+Amato
+Reich
+Mcclung
+Lacroix
+Koontz
+Herrick
+Hardesty
+Flanders
+Cousins
+Close
+Cato
+Cade
+Vickery
+Shank
+Nagel
+Dupuis
+Croteau
+Cotter
+Cable
+Stuckey
+Stine
+Porterfield
+Pauley
+Nye
+Moffitt
+Lu
+Knudsen
+Hardwick
+Goforth
+Dupont
+Blunt
+Barrows
+Barnhill
+Shull
+Rash
+Ralph
+Penny
+Lorenzo
+Loftis
+Lemay
+Kitchens
+Horvath
+Grenier
+Fuchs
+Fairbanks
+Culbertson
+Calkins
+Burnside
+Beattie
+Ashworth
+Albertson
+Wertz
+Vo
+Vaught
+Vallejo
+Tyree
+Turk
+Tuck
+Tijerina
+Sage
+Picard
+Peterman
+Otis
+Marroquin
+Marr
+Lantz
+Hoang
+Demarco
+Daily
+Cone
+Berube
+Barnette
+Wharton
+Stinnett
+Slocum
+Scanlon
+Sander
+Pinto
+Mancuso
+Lima
+Judge
+Headley
+Epstein
+Counts
+Clarkson
+Carnahan
+Brice
+Boren
+Arteaga
+Adame
+Zook
+Whittle
+Whitehurst
+Wenzel
+Saxton
+Rhea
+Reddick
+Puente
+Hazel
+Handley
+Haggerty
+Earley
+Devlin
+Dallas
+Chaffin
+Cady
+Ahmed
+Acuna
+Solano
+Sigler
+Pollack
+Pendergrass
+Ostrander
+Janes
+Francois
+Fine
+Crutchfield
+Cordell
+Chamberlin
+Brubaker
+Baptiste
+Willson
+Reis
+Neeley
+Mullin
+Mercier
+Lira
+Layman
+Keeling
+Higdon
+Guest
+Forrester
+Espinal
+Dion
+Chapin
+Carl
+Warfield
+Toledo
+Pulido
+Peebles
+Nagy
+Montague
+Mello
+Lear
+Jaeger
+Hogg
+Graff
+Furr
+Derrick
+Cave
+Canada
+Soliz
+Poore
+Mendenhall
+Mclaurin
+Maestas
+Low
+Gable
+Belt
+Barraza
+Tillery
+Snead
+Pond
+Neill
+Mcculloch
+Mccorkle
+Lightfoot
+Hutchings
+Holloman
+Harness
+Dorn
+Council
+Bock
+Zielinski
+Turley
+Treadwell
+Stpierre
+Starling
+Somers
+Oswald
+Merrick
+Marquis
+Ivory
+Easterling
+Bivens
+Truitt
+Poston
+Parry
+Ontiveros
+Olivarez
+Neville
+Moreau
+Medlin
+Ma
+Lenz
+Knowlton
+Fairley
+Cobbs
+Chisolm
+Bannister
+Woodworth
+Toler
+Ocasio
+Noriega
+Neuman
+Moye
+Milburn
+Mcclanahan
+Lilley
+Hanes
+Flannery
+Dellinger
+Danielson
+Conti
+Blodgett
+Beers
+Weatherford
+Strain
+Karr
+Hitt
+Denham
+Custer
+Coble
+Clough
+Casteel
+Bolduc
+Batchelor
+Ammons
+Whitlow
+Tierney
+Staten
+Sibley
+Seifert
+Schubert
+Salcedo
+Mattison
+Laney
+Haggard
+Grooms
+Dix
+Dees
+Cromer
+Cooks
+Colson
+Caswell
+Zarate
+Swisher
+Stacey
+Shin
+Ragan
+Pridgen
+Mcvey
+Matheny
+Leigh
+Lafleur
+Franz
+Ferraro
+Dugger
+Whiteside
+Rigsby
+Mcmurray
+Lehmann
+Large
+Jacoby
+Hildebrand
+Hendrick
+Headrick
+Goad
+Fincher
+Drury
+Borges
+Archibald
+Albers
+Woodcock
+Trapp
+Soares
+Seaton
+Richie
+Monson
+Luckett
+Lindberg
+Kopp
+Keeton
+Hsu
+Healey
+Garvey
+Gaddy
+Fain
+Burchfield
+Badger
+Wentworth
+Strand
+Stack
+Spooner
+Saucier
+Sales
+Ruby
+Ricci
+Plunkett
+Pannell
+Ness
+Leger
+Hoy
+Freitas
+Fong
+Elizondo
+Duval
+Chun
+Calvin
+Beaudoin
+Urbina
+Stock
+Rickard
+Partin
+Moe
+Mcgrew
+Mcclintock
+Ledoux
+Forsyth
+Faison
+Devries
+Bertrand
+Wasson
+Tilton
+Scarbrough
+Pride
+Oh
+Leung
+Larry
+Irvine
+Garber
+Denning
+Corral
+Colley
+Castleberry
+Bowlin
+Bogan
+Beale
+Baines
+True
+Trice
+Rayburn
+Parkinson
+Pak
+Nunes
+Mcmillen
+Leahy
+Lea
+Kimmel
+Higgs
+Fulmer
+Carden
+Bedford
+Taggart
+Spearman
+Register
+Prichard
+Morrill
+Koonce
+Heinz
+Hedges
+Guenther
+Grice
+Findley
+Earle
+Dover
+Creighton
+Boothe
+Bayer
+Arreola
+Vitale
+Valles
+See
+Raney
+Peter
+Osgood
+Lowell
+Hanlon
+Burley
+Bounds
+Worden
+Weatherly
+Vetter
+Tanaka
+Stiltner
+Sell
+Nevarez
+Mosby
+Montero
+Melancon
+Harter
+Hamer
+Goble
+Gladden
+Gist
+Ginn
+Akin
+Zaragoza
+Towns
+Tarver
+Sammons
+Royster
+Oreilly
+Muir
+Morehead
+Luster
+Kingsley
+Kelso
+Grisham
+Glynn
+Baumann
+Alves
+Yount
+Tamayo
+Tam
+Paterson
+Oates
+Menendez
+Longo
+Hargis
+Greenlee
+Gillen
+Desantis
+Conover
+Breedlove
+Wayne
+Sumpter
+Scherer
+Rupp
+Reichert
+Heredia
+Fallon
+Creel
+Cohn
+Clemmons
+Casas
+Bickford
+Belton
+Bach
+Williford
+Whitcomb
+Tennant
+Sutter
+Stull
+Sessions
+Mccallum
+Manson
+Langlois
+Keel
+Keegan
+Emanuel
+Dangelo
+Dancy
+Damron
+Clapp
+Clanton
+Bankston
+Trinidad
+Oliveira
+Mintz
+Mcinnis
+Martens
+Mabe
+Laster
+Jolley
+Irish
+Hildreth
+Hefner
+Glaser
+Duckett
+Demers
+Brockman
+Blais
+Back
+Alcorn
+Agnew
+Toliver
+Tice
+Song
+Seeley
+Najera
+Musser
+Mcfall
+Laplante
+Galvin
+Fajardo
+Doan
+Coyne
+Copley
+Clawson
+Cheung
+Barone
+Wynne
+Woodley
+Tremblay
+Stoll
+Sparrow
+Sparkman
+Schweitzer
+Sasser
+Samples
+Roney
+Ramon
+Legg
+Lai
+Joe
+Heim
+Farias
+Concepcion
+Colwell
+Christman
+Bratcher
+Alba
+Winchester
+Upshaw
+Southerland
+Sorrell
+Shay
+Sells
+Mount
+Mccloskey
+Martindale
+Luttrell
+Loveless
+Lovejoy
+Linares
+Latimer
+Holly
+Embry
+Coombs
+Bratton
+Bostick
+Boss
+Venable
+Tuggle
+Toro
+Staggs
+Sandlin
+Jefferies
+Heckman
+Griffis
+Crayton
+Clem
+Button
+Browder
+Allan
+Thorton
+Sturgill
+Sprouse
+Royer
+Rousseau
+Ridenour
+Pogue
+Perales
+Peeples
+Metzler
+Mesa
+Mccutcheon
+Mcbee
+Jay
+Hornsby
+Heffner
+Corrigan
+Armijo
+Vue
+Romeo
+Plante
+Peyton
+Paredes
+Macklin
+Hussey
+Hodgson
+Granados
+Frias
+Carman
+Brent
+Becnel
+Batten
+Almanza
+Turney
+Teal
+Sturgeon
+Meeker
+Mcdaniels
+Limon
+Keeney
+Kee
+Hutto
+Holguin
+Gorham
+Fishman
+Fierro
+Blanchette
+Rodrigue
+Reddy
+Osburn
+Oden
+Lerma
+Kirkwood
+Keefer
+Haugen
+Hammett
+Chalmers
+Carlos
+Brinkman
+Baumgartner
+Zhang
+Valerio
+Tellez
+Steffen
+Shumate
+Sauls
+Ripley
+Kemper
+Jacks
+Guffey
+Evers
+Craddock
+Carvalho
+Blaylock
+Banuelos
+Balderas
+Wooden
+Wheaton
+Turnbull
+Shuman
+Pointer
+Mosier
+Mccue
+Ligon
+Kozlowski
+Johansen
+Ingle
+Herr
+Briones
+Southern
+Snipes
+Rickman
+Pipkin
+Peace
+Pantoja
+Orosco
+Moniz
+Lawless
+Kunkel
+Hibbard
+Galarza
+Enos
+Bussey
+Settle
+Schott
+Salcido
+Perreault
+Mcdougal
+Mccool
+Haight
+Garris
+Ferry
+Easton
+Conyers
+Atherton
+Wimberly
+Utley
+Stephen
+Spellman
+Smithson
+Slagle
+Skipper
+Ritchey
+Rand
+Petit
+Osullivan
+Oaks
+Nutt
+Mcvay
+Mccreary
+Mayhew
+Knoll
+Jewett
+Harwood
+Hailey
+Cardoza
+Ashe
+Arriaga
+Andres
+Zeller
+Wirth
+Whitmire
+Stauffer
+Spring
+Rountree
+Redden
+Mccaffrey
+Martz
+Loving
+Larose
+Langdon
+Humes
+Gaskin
+Faber
+Doll
+Devito
+Cass
+Almond
+Wingfield
+Wingate
+Villareal
+Tyner
+Smothers
+Severson
+Reno
+Pennell
+Maupin
+Leighton
+Janssen
+Hassell
+Hallman
+Halcomb
+Folse
+Fitzsimmons
+Fahey
+Cranford
+Bolen
+Battles
+Battaglia
+Wooldridge
+Weed
+Trask
+Rosser
+Regalado
+Mcewen
+Keefe
+Fuqua
+Echevarria
+Domingo
+Dang
+Caro
+Boynton
+Andrus
+Wild
+Viera
+Vanmeter
+Taber
+Spradlin
+Seibert
+Provost
+Prentice
+Oliphant
+Laporte
+Hwang
+Hatchett
+Hass
+Greiner
+Freedman
+Covert
+Chilton
+Byars
+Wiese
+Venegas
+Swank
+Shrader
+Roderick
+Roberge
+Mullis
+Mortensen
+Mccune
+Marlowe
+Kirchner
+Keck
+Isaacson
+Hostetler
+Halverson
+Gunther
+Griswold
+Gerard
+Fenner
+Durden
+Blackwood
+Bertram
+Ahrens
+Sawyers
+Savoy
+Nabors
+Mcswain
+Mackay
+Loy
+Lavender
+Lash
+Labbe
+Jessup
+Hubert
+Fullerton
+Donnell
+Cruse
+Crittenden
+Correia
+Centeno
+Caudle
+Canady
+Callender
+Alarcon
+Ahern
+Winfrey
+Tribble
+Tom
+Styles
+Salley
+Roden
+Musgrove
+Minnick
+Fortenberry
+Carrion
+Bunting
+Bethel
+Batiste
+Woo
+Whited
+Underhill
+Stillwell
+Silvia
+Rauch
+Pippin
+Perrin
+Messenger
+Mancini
+Lister
+Kinard
+Hartmann
+Fleck
+Broadway
+Wilt
+Treadway
+Thornhill
+Speed
+Spalding
+Sam
+Rafferty
+Pitre
+Patino
+Ordonez
+Linkous
+Kelleher
+Homan
+Holiday
+Galbraith
+Feeney
+Dorris
+Curtin
+Coward
+Camarillo
+Buss
+Bunnell
+Bolt
+Beeler
+Autry
+Alcala
+Witte
+Wentz
+Stidham
+Shively
+Nunley
+Meacham
+Martins
+Lemke
+Lefebvre
+Kaye
+Hynes
+Horowitz
+Hoppe
+Holcombe
+Estrella
+Dunne
+Derr
+Cochrane
+Brittain
+Bedard
+Beauregard
+Torrence
+Strunk
+Soria
+Simonson
+Shumaker
+Scoggins
+Packer
+Oconner
+Moriarty
+Leroy
+Kuntz
+Ives
+Hutcheson
+Horan
+Hales
+Garmon
+Fitts
+Dell
+Bohn
+Atchison
+Worth
+Wisniewski
+Will
+Vanwinkle
+Sturm
+Sallee
+Prosser
+Moen
+Lundberg
+Kunz
+Kohl
+Keane
+Jorgenson
+Jaynes
+Funderburk
+Freed
+Frame
+Durr
+Creamer
+Cosgrove
+Candelaria
+Berlin
+Batson
+Vanhoose
+Thomsen
+Teeter
+Sommer
+Smyth
+Sena
+Redmon
+Orellana
+Maness
+Lennon
+Heflin
+Goulet
+Frick
+Forney
+Dollar
+Bunker
+Asbury
+Aguiar
+Talbott
+Southard
+Pleasant
+Mowery
+Mears
+Lemmon
+Krieger
+Hickson
+Gracia
+Elston
+Duong
+Delgadillo
+Dayton
+Dasilva
+Conaway
+Catron
+Bruton
+Bradbury
+Bordelon
+Bivins
+Bittner
+Bergstrom
+Beals
+Abell
+Whelan
+Travers
+Tejada
+Pulley
+Pino
+Norfleet
+Nealy
+Maes
+Loper
+Held
+Gerald
+Gatewood
+Frierson
+Freund
+Finnegan
+Cupp
+Covey
+Catalano
+Boehm
+Bader
+Yoon
+Walston
+Tenney
+Sipes
+Roller
+Rawlins
+Medlock
+Mccaskill
+Mccallister
+Marcotte
+Maclean
+Hughey
+Henke
+Harwell
+Gladney
+Gilson
+Dew
+Chism
+Caskey
+Brandenburg
+Baylor
+Villasenor
+Veal
+Van
+Thatcher
+Stegall
+Shore
+Petrie
+Nowlin
+Navarrete
+Muhammad
+Lombard
+Loftin
+Lemaster
+Kroll
+Kovach
+Kimbrell
+Kidwell
+Hershberger
+Fulcher
+Eng
+Cantwell
+Bustos
+Boland
+Bobbitt
+Binkley
+Wester
+Weis
+Verdin
+Tong
+Tiller
+Sisco
+Sharkey
+Seymore
+Rosenbaum
+Rohr
+Quinonez
+Pinkston
+Nation
+Malley
+Logue
+Lessard
+Lerner
+Lebron
+Krauss
+Klinger
+Halstead
+Haller
+Getz
+Burrow
+Brant
+Alger
+Victor
+Shores
+Scully
+Pounds
+Pfeifer
+Perron
+Nelms
+Munn
+Mcmaster
+Mckenney
+Manns
+Knudson
+Hutchens
+Huskey
+Goebel
+Flagg
+Cushman
+Click
+Castellano
+Carder
+Bumgarner
+Blaine
+Bible
+Wampler
+Spinks
+Robson
+Neel
+Mcreynolds
+Mathias
+Maas
+Loera
+Kasper
+Jose
+Jenson
+Florez
+Coons
+Buckingham
+Brogan
+Berryman
+Wilmoth
+Wilhite
+Thrash
+Shephard
+Seidel
+Schulze
+Roldan
+Pettis
+Obryan
+Maki
+Mackie
+Hatley
+Frazer
+Fiore
+Falls
+Chesser
+Bui
+Bottoms
+Bisson
+Benefield
+Allman
+Wilke
+Trudeau
+Timm
+Shifflett
+Rau
+Mundy
+Milliken
+Mayers
+Leake
+Kohn
+Huntington
+Horsley
+Hermann
+Guerin
+Fryer
+Frizzell
+Foret
+Flemming
+Fife
+Criswell
+Carbajal
+Bozeman
+Boisvert
+Archie
+Antonio
+Angulo
+Wallen
+Tapp
+Silvers
+Ramsay
+Oshea
+Orta
+Moll
+Mckeever
+Mcgehee
+Luciano
+Linville
+Kiefer
+Ketchum
+Howerton
+Groce
+Gaylord
+Gass
+Fusco
+Corbitt
+Blythe
+Betz
+Bartels
+Amaral
+Aiello
+Yoo
+Weddle
+Troy
+Sun
+Sperry
+Seiler
+Runyan
+Raley
+Overby
+Osteen
+Olds
+Mckeown
+Mauro
+Matney
+Lauer
+Lattimore
+Hindman
+Hartwell
+Fredrickson
+Fredericks
+Espino
+Clegg
+Carswell
+Cambell
+Burkholder
+August
+Woodbury
+Welker
+Totten
+Thornburg
+Theriault
+Stitt
+Stamm
+Stackhouse
+Simone
+Scholl
+Saxon
+Rife
+Razo
+Quinlan
+Pinkerton
+Olivo
+Nesmith
+Nall
+Mattos
+Leak
+Lafferty
+Justus
+Giron
+Geer
+Fielder
+Eagle
+Drayton
+Dortch
+Conners
+Conger
+Chau
+Boatwright
+Billiot
+Barden
+Armenta
+Antoine
+Tibbetts
+Steadman
+Slattery
+Sides
+Rinaldi
+Raynor
+Rayford
+Pinckney
+Pettigrew
+Nickel
+Milne
+Matteson
+Halsey
+Gonsalves
+Fellows
+Durand
+Desimone
+Cowley
+Cowles
+Brill
+Barham
+Barela
+Barba
+Ashmore
+Withrow
+Valenti
+Tejeda
+Spriggs
+Sayre
+Salerno
+Place
+Peltier
+Peel
+Merriman
+Matheson
+Lowman
+Lindstrom
+Hyland
+Homer
+Ha
+Giroux
+Fries
+Frasier
+Earls
+Dugas
+Damon
+Dabney
+Collado
+Briseno
+Baxley
+Andre
+Word
+Whyte
+Wenger
+Vanover
+Vanburen
+Thiel
+Schindler
+Schiller
+Rigby
+Pomeroy
+Passmore
+Marble
+Manzo
+Mahaffey
+Lindgren
+Laflamme
+Greathouse
+Fite
+Ferrari
+Calabrese
+Bayne
+Yamamoto
+Wick
+Townes
+Thames
+Steel
+Reinhart
+Peeler
+Naranjo
+Montez
+Mcdade
+Mast
+Markley
+Marchand
+Leeper
+Kong
+Kellum
+Hudgens
+Hennessey
+Hadden
+Guess
+Gainey
+Coppola
+Borrego
+Bolling
+Beane
+Ault
+Slaton
+Poland
+Pape
+Null
+Mulkey
+Lightner
+Langer
+Hillard
+Glasgow
+Fabian
+Ethridge
+Enright
+Derosa
+Baskin
+Alfred
+Weinberg
+Turman
+Tinker
+Somerville
+Pardo
+Noll
+Lashley
+Ingraham
+Hiller
+Hendon
+Glaze
+Flora
+Cothran
+Cooksey
+Conte
+Carrico
+Apple
+Abner
+Wooley
+Swope
+Summerlin
+Sturgis
+Sturdivant
+Stott
+Spurgeon
+Spillman
+Speight
+Roussel
+Popp
+Nutter
+Mckeon
+Mazza
+Magnuson
+Lanning
+Kozak
+Jankowski
+Heyward
+Forster
+Corwin
+Callaghan
+Bays
+Wortham
+Usher
+Theriot
+Sayers
+Sabo
+Rupert
+Poling
+Nathan
+Loya
+Lieberman
+Levi
+Laroche
+Labelle
+Howes
+Harr
+Garay
+Fogarty
+Everson
+Durkin
+Dominquez
+Chaves
+Chambliss
+Alfonso
+Witcher
+Wilber
+Vieira
+Vandiver
+Terrill
+Stoker
+Schreiner
+Nestor
+Moorman
+Liddell
+Lew
+Lawhorn
+Krug
+Irons
+Hylton
+Hollenbeck
+Herrin
+Hembree
+Hair
+Goolsby
+Goodin
+Gilmer
+Foltz
+Dinkins
+Daughtry
+Caban
+Brim
+Briley
+Bilodeau
+Bear
+Wyant
+Vergara
+Tallent
+Swearingen
+Stroup
+Sherry
+Scribner
+Roger
+Quillen
+Pitman
+Monaco
+Mccants
+Maxfield
+Martinson
+Landon
+Holtz
+Flournoy
+Brookins
+Brody
+Baumgardner
+Angelo
+Straub
+Sills
+Roybal
+Roundtree
+Oswalt
+Money
+Mcgriff
+Mcdougall
+Mccleary
+Maggard
+Gragg
+Gooding
+Godinez
+Doolittle
+Donato
+Cowell
+Cassell
+Bracken
+Appel
+Ahmad
+Zambrano
+Reuter
+Perea
+Olive
+Nakamura
+Monaghan
+Mickens
+Mcclinton
+Mcclary
+Marler
+Kish
+Judkins
+Gilbreath
+Freese
+Flanigan
+Felts
+Erdmann
+Dodds
+Chew
+Brownell
+Brazil
+Boatright
+Barreto
+Slayton
+Sandberg
+Saldivar
+Pettway
+Odum
+Narvaez
+Moultrie
+Montemayor
+Merrell
+Lees
+Keyser
+Hoke
+Hardaway
+Hannan
+Gilbertson
+Fogg
+Dumont
+Deberry
+Coggins
+Carrera
+Buxton
+Bucher
+Broadnax
+Beeson
+Araujo
+Appleton
+Amundson
+Aguayo
+Ackley
+Yocum
+Worsham
+Shivers
+Shelly
+Sanches
+Sacco
+Robey
+Rhoden
+Pender
+Ochs
+Mccurry
+Madera
+Luong
+Luis
+Knotts
+Jackman
+Heinrich
+Hargrave
+Gault
+Forest
+Comeaux
+Chitwood
+Child
+Caraway
+Boettcher
+Bernhardt
+Barrientos
+Zink
+Wickham
+Whiteman
+Thorp
+Stillman
+Settles
+Schoonover
+Roque
+Riddell
+Rey
+Pilcher
+Phifer
+Novotny
+Maple
+Macleod
+Hardee
+Haase
+Grider
+Fredrick
+Earnest
+Doucette
+Clausen
+Christmas
+Bevins
+Beamon
+Badillo
+Tolley
+Tindall
+Soule
+Snook
+Sebastian
+Seale
+Pitcher
+Pinkney
+Pellegrino
+Nowell
+Nemeth
+Nail
+Mondragon
+Mclane
+Lundgren
+Ingalls
+Hudspeth
+Hixson
+Gearhart
+Furlong
+Downes
+Dionne
+Dibble
+Deyoung
+Cornejo
+Camara
+Brookshire
+Boyette
+Wolcott
+Tracey
+Surratt
+Sellars
+Segal
+Salyer
+Reeve
+Rausch
+Philips
+Labonte
+Haro
+Gower
+Freeland
+Fawcett
+Eads
+Driggers
+Donley
+Collett
+Cage
+Bromley
+Boatman
+Ballinger
+Baldridge
+Volz
+Trombley
+Stonge
+Silas
+Shanahan
+Rivard
+Rhyne
+Pedroza
+Matias
+Mallard
+Jamieson
+Hedgepeth
+Hartnett
+Estevez
+Eskridge
+Denman
+Chiu
+Chinn
+Catlett
+Carmack
+Buie
+Book
+Bechtel
+Beardsley
+Bard
+Ballou
+Windsor
+Ulmer
+Storm
+Skeen
+Robledo
+Rincon
+Reitz
+Piazza
+Pearl
+Munger
+Moten
+Mcmichael
+Loftus
+Ledet
+Kersey
+Groff
+Fowlkes
+Folk
+Crumpton
+Collette
+Clouse
+Bettis
+Villagomez
+Timmerman
+Strom
+Saul
+Santoro
+Roddy
+Phillip
+Penrod
+Musselman
+Macpherson
+Leboeuf
+Harless
+Haddad
+Guido
+Golding
+Fulkerson
+Fannin
+Dulaney
+Dowdell
+Deane
+Cottle
+Ceja
+Cate
+Bosley
+Benge
+Albritton
+Voigt
+Trowbridge
+Soileau
+Seely
+Rome
+Rohde
+Pearsall
+Paulk
+Orth
+Nason
+Mota
+Mcmullin
+Marquardt
+Madigan
+Hoag
+Gillum
+Gayle
+Gabbard
+Fenwick
+Fender
+Eck
+Danforth
+Cushing
+Cress
+Creed
+Cazares
+Casanova
+Bey
+Bettencourt
+Barringer
+Baber
+Stansberry
+Schramm
+Rutter
+Rivero
+Race
+Oquendo
+Necaise
+Mouton
+Montenegro
+Miley
+Mcgough
+Marra
+Macmillan
+Lock
+Lamontagne
+Jasso
+Jaime
+Horst
+Hetrick
+Heilman
+Gaytan
+Gall
+Fried
+Fortney
+Eden
+Dingle
+Desjardins
+Dabbs
+Burbank
+Brigham
+Breland
+Beaman
+Banner
+Arriola
+Yarborough
+Wallin
+Treat
+Toscano
+Stowers
+Reiss
+Pichardo
+Orton
+Mitchel
+Michels
+Mcnamee
+Mccrory
+Leatherman
+Kell
+Keister
+Jerome
+Horning
+Hargett
+Guay
+Friday
+Ferro
+Deboer
+Dagostino
+Clemente
+Christ
+Carper
+Bowler
+Blanks
+Beaudry
+Willie
+Towle
+Tafoya
+Stricklin
+Strader
+Soper
+Sonnier
+Sigmon
+Schenk
+Saddler
+Rodman
+Pedigo
+Mendes
+Lunn
+Lohr
+Lahr
+Kingsbury
+Jarman
+Hume
+Holliman
+Hofmann
+Haworth
+Harrelson
+Hambrick
+Flick
+Edmunds
+Dacosta
+Crossman
+Colston
+Chaplin
+Carrell
+Budd
+Weiler
+Waits
+Viola
+Valentino
+Trantham
+Tarr
+Straight
+Solorio
+Roebuck
+Powe
+Plank
+Pettus
+Palm
+Pagano
+Mink
+Luker
+Leathers
+Joslin
+Hartzell
+Gambrell
+Fears
+Deutsch
+Cepeda
+Carty
+Caputo
+Brewington
+Bedell
+Ballew
+Applewhite
+Warnock
+Walz
+Urena
+Tudor
+Reel
+Pigg
+Parton
+Mickelson
+Meagher
+Mclellan
+Mcculley
+Mandel
+Leech
+Lavallee
+Kraemer
+Kling
+Kipp
+Kingston
+Kehoe
+Hochstetler
+Harriman
+Gregoire
+Grabowski
+Gosselin
+Gammon
+Fancher
+Edens
+Desai
+Butt
+Brannan
+Armendariz
+Woolsey
+Whitehouse
+Whetstone
+Ussery
+Towne
+Tower
+Testa
+Tallman
+Studer
+Strait
+Steinmetz
+Sorrells
+Sauceda
+Rolfe
+Rae
+Paddock
+Mitchem
+Mcginn
+Mccrea
+Luck
+Lovato
+Ling
+Hazen
+Gilpin
+Gaynor
+Fike
+Devoe
+Delrio
+Curiel
+Burkhardt
+Bristol
+Bode
+Backus
+Alton
+Zinn
+Watanabe
+Wachter
+Vanpelt
+Turnage
+Shaner
+Schroder
+Sato
+Riordan
+Quimby
+Portis
+Natale
+Mckoy
+Mccown
+Marker
+Lucio
+Kilmer
+Karl
+Hotchkiss
+Hesse
+Halbert
+Gwinn
+Godsey
+Desmond
+Delisle
+Chrisman
+Canter
+Brook
+Arbogast
+Angell
+Acree
+Yancy
+Woolley
+Wesson
+Weatherspoon
+Trainor
+Stockman
+Spiller
+Sipe
+Rooks
+Reavis
+Propst
+Porras
+Neilson
+Mullens
+Loucks
+Llewellyn
+Lamont
+Kumar
+Koester
+Klingensmith
+Kirsch
+Kester
+Honaker
+Hodson
+Hennessy
+Helmick
+Garrity
+Garibay
+Fee
+Drain
+Casarez
+Callis
+Botello
+Bay
+Aycock
+Avant
+Angle
+Wingard
+Wayman
+Tully
+Theisen
+Szymanski
+Stansbury
+Segovia
+Rudy
+Rainwater
+Preece
+Pirtle
+Padron
+Mincey
+Mckelvey
+Mathes
+Marty
+Larrabee
+Kornegay
+Klug
+Judy
+Ingersoll
+Hecht
+Germain
+Eggers
+Dykstra
+Denis
+Deering
+Decoteau
+Deason
+Dearing
+Cofield
+Carrigan
+Brush
+Bonham
+Bahr
+Aucoin
+Appleby
+Almonte
+Yager
+Womble
+Wimmer
+Weimer
+Vanderpool
+Stancil
+Sprinkle
+Romine
+Remington
+Pfaff
+Peckham
+Olivera
+Meraz
+Maze
+Lathrop
+Koehn
+Jonas
+Hazelton
+Halvorson
+Hallock
+Haddock
+Ducharme
+Dehaven
+Colton
+Caruthers
+Brehm
+Bosworth
+Bost
+Blow
+Bias
+Beeman
+Basile
+Bane
+Aikens
+Zachary
+Wold
+Walther
+Tabb
+Suber
+Strawn
+Stocks
+Stocker
+Shirey
+Schlosser
+Salvador
+Riedel
+Rembert
+Reimer
+Pyles
+Pickle
+Peele
+Merriweather
+Letourneau
+Latta
+Kidder
+Hixon
+Hillis
+Hight
+Herbst
+Henriquez
+Haygood
+Hamill
+Gabel
+Fritts
+Eubank
+Duty
+Dawes
+Correll
+Coffee
+Cha
+Bushey
+Buchholz
+Brotherton
+Bridge
+Botts
+Barnwell
+Auger
+Atchley
+Westphal
+Veilleux
+Ulloa
+Truman
+Stutzman
+Shriver
+Ryals
+Prior
+Pilkington
+Newport
+Moyers
+Miracle
+Marrs
+Mangrum
+Maddux
+Lockard
+Laing
+Kuhl
+Harney
+Hammock
+Hamlett
+Felker
+Doerr
+Depriest
+Carrasquillo
+Carothers
+Bogle
+Blood
+Bischoff
+Bergen
+Albanese
+Wyckoff
+Vermillion
+Vansickle
+Thibault
+Tetreault
+Stickney
+Shoemake
+Ruggiero
+Rawson
+Racine
+Philpot
+Paschal
+Mcelhaney
+Mathison
+Legrand
+Lapierre
+Kwan
+Kremer
+Jiles
+Hilbert
+Geyer
+Faircloth
+Ehlers
+Egbert
+Desrosiers
+Dalrymple
+Cotten
+Cashman
+Cadena
+Breeding
+Boardman
+Alcaraz
+Ahn
+Wyrick
+Therrien
+Tankersley
+Strickler
+Puryear
+Plourde
+Pattison
+Pardue
+Milan
+Mcginty
+Mcevoy
+Landreth
+Kuhns
+Koon
+Hewett
+Giddens
+Everette
+Emerick
+Eades
+Deangelis
+Cosme
+Ceballos
+Birdsong
+Benham
+Bemis
+Armour
+Anguiano
+Angeles
+Welborn
+Tsosie
+Storms
+Shoup
+Sessoms
+Samaniego
+Rood
+Rojo
+Rhinehart
+Raby
+Northcutt
+Myer
+Munguia
+Morehouse
+More
+Mcdevitt
+Mateo
+Mallett
+Lozada
+Lemoine
+Kuehn
+Hallett
+Grim
+Gillard
+Gaylor
+Garman
+Gallaher
+Feaster
+Faris
+Darrow
+Dardar
+Coney
+Carreon
+Byron
+Braithwaite
+Boylan
+Boyett
+Born
+Bixler
+Bigham
+Benford
+Barragan
+Barnum
+Zuber
+Wyche
+Westcott
+Vining
+Stoltzfus
+Simonds
+Shupe
+Sabin
+Ruble
+Rittenhouse
+Richman
+Perrone
+Mulholland
+Millan
+Meister
+Mathew
+Lomeli
+Kite
+Jemison
+Hulett
+Holler
+Hickerson
+Herold
+Hazelwood
+Griffen
+Gause
+Forde
+Eisenberg
+Dilworth
+Charron
+Chaisson
+Brodie
+Bristow
+Breunig
+Brace
+Boutwell
+Bentz
+Belk
+Bayless
+Batchelder
+Baran
+Baeza
+Zimmermann
+Weathersby
+Volk
+Toole
+Theis
+Tedesco
+Shine
+Searle
+Schenck
+Satterwhite
+Sandy
+Ruelas
+Royce
+Rankins
+Partida
+Nesbit
+Morel
+Menchaca
+Levasseur
+Kaylor
+Johnstone
+Hulse
+Hollar
+Hersey
+Harrigan
+Harbison
+Guyer
+Gish
+Giese
+Gerlach
+Geller
+Geisler
+Falcone
+Ernest
+Elwell
+Doucet
+Deese
+Darr
+Corder
+Chafin
+Byler
+Bussell
+Burdett
+Brasher
+Bowe
+Bellinger
+Bastian
+Barner
+Alleyne
+Wilborn
+Weil
+Wegner
+Wales
+Tatro
+Spitzer
+Smithers
+Schoen
+Resendez
+Pete
+Parisi
+Overman
+Obrian
+Mudd
+Moy
+Mclaren
+Mahler
+Maggio
+Lindner
+Lalonde
+Lacasse
+Laboy
+Killion
+Kahl
+Jessen
+Jamerson
+Houk
+Henshaw
+Gustin
+Groom
+Graber
+Durst
+Duenas
+Davey
+Cundiff
+Conlon
+Colunga
+Coakley
+Chiles
+Capers
+Buell
+Bricker
+Bissonnette
+Birmingham
+Bartz
+Bagby
+Zayas
+Volpe
+Treece
+Toombs
+Thom
+Terrazas
+Swinney
+Skiles
+Silveira
+Shouse
+Senn
+Rambo
+Ramage
+Nez
+Moua
+Marlin
+Malik
+Langham
+Kyles
+Holston
+Hoagland
+Herd
+Hector
+Feller
+Emory
+Denison
+Corliss
+Carraway
+Burford
+Bickel
+Ambriz
+Abercrombie
+Yamada
+Winner
+Weidner
+Waddle
+Verduzco
+Thurmond
+Swindle
+Schrock
+Sanabria
+Rosenberger
+Probst
+Peabody
+Olinger
+Neighbors
+Nazario
+Mccafferty
+Mcbroom
+Mcabee
+Mazur
+Matherne
+Mapes
+Leverett
+Killingsworth
+Heisler
+Griego
+Grande
+Gosnell
+Frankel
+Franke
+Ferrante
+Fenn
+Elmer
+Ehrlich
+Christopherso
+Chick
+Chasse
+Chancellor
+Caton
+Brunelle
+Bly
+Bloomfield
+Babbitt
+Azevedo
+Abramson
+Ables
+Abeyta
+Youmans
+Wozniak
+Wainwright
+Summer
+Stowell
+Smitherman
+Sites
+Samuelson
+Runge
+Rule
+Rothman
+Rosenfeld
+Quan
+Peake
+Oxford
+Owings
+Olmos
+Munro
+Moreira
+Leatherwood
+Larkins
+Krantz
+Kovacs
+Kizer
+Kindred
+Karnes
+Jaffe
+Hubbell
+Hosey
+Hauck
+Harold
+Goodell
+Favors
+Erdman
+Dvorak
+Doane
+Cureton
+Cofer
+Buehler
+Bierman
+Berndt
+Banta
+Annis
+Abram
+Abdullah
+Warwick
+Waltz
+Turcotte
+Trinh
+Torrey
+Stith
+Seger
+Sachs
+Quesada
+Pinder
+Peppers
+Pascual
+Paschall
+Parkhurst
+Ozuna
+Oster
+Nicholls
+Mortimer
+Lheureux
+Lavalley
+Kimura
+Jablonski
+Haun
+Gourley
+Gilligan
+Fix
+Derby
+Croy
+Cotto
+Cargill
+Burwell
+Burgett
+Buckman
+Brett
+Booher
+Adorno
+Wrenn
+Whittemore
+Urias
+Szabo
+Sayles
+Saiz
+Rutland
+Rael
+Plant
+Pharr
+Penney
+Pelkey
+Ogrady
+Nickell
+Musick
+Moats
+Mather
+Massa
+Laurent
+Kirschner
+Kieffer
+Kellar
+Hendershot
+Gott
+Godoy
+Gadson
+Furtado
+Fiedler
+Erskine
+Edison
+Dutcher
+Dever
+Daggett
+Chevalier
+Chao
+Brake
+Ballesteros
+Amerson
+Alejandro
+Wingo
+Waldon
+Trott
+Spikes
+Silvey
+Showers
+Schlegel
+Rue
+Ritz
+Pepin
+Pelayo
+Parsley
+Palermo
+Moorehead
+Mchale
+Lett
+Kocher
+Kilburn
+Iglesias
+Humble
+Hulbert
+Huckaby
+Hix
+Haven
+Hartford
+Hardiman
+Gurney
+Grigg
+Grasso
+Goings
+Fillmore
+Farber
+Depew
+Dandrea
+Dame
+Cowen
+Covarrubias
+Cory
+Burrus
+Bracy
+Ardoin
+Thompkins
+Suzuki
+Standley
+Russel
+Radcliffe
+Pohl
+Persaud
+Percy
+Parenteau
+Pabon
+Newson
+Newhouse
+Napolitano
+Mulcahy
+Maya
+Malave
+Keim
+Hooten
+Hernandes
+Heffernan
+Hearne
+Greenleaf
+Glick
+Fuhrman
+Fetter
+Faria
+Dishman
+Dickenson
+Crites
+Criss
+Clapper
+Chenault
+Castor
+Casto
+Bugg
+Bove
+Bonney
+Blessing
+Ard
+Anderton
+Allgood
+Alderson
+Woodman
+Wisdom
+Warrick
+Toomey
+Tooley
+Tarrant
+Summerville
+Stebbins
+Sokol
+Sink
+Searles
+Schutz
+Schumann
+Scheer
+Remillard
+Raper
+Proulx
+Palmore
+Monroy
+Miguel
+Messier
+Melo
+Melanson
+Mashburn
+Manzano
+Lussier
+Lovely
+Lien
+Jenks
+Huneycutt
+Hartwig
+Grimsley
+Fulk
+Fielding
+Fidler
+Engstrom
+Eldred
+Dantzler
+Crandell
+Ching
+Calder
+Brumley
+Breton
+Brann
+Bramlett
+Boykins
+Bianco
+Bancroft
+Almaraz
+Alcantar
+Whitmer
+Whitener
+Welton
+Vineyard
+Su
+Rahn
+Paquin
+Mizell
+Mix
+Mcmillin
+Mckean
+Marston
+Maciel
+Lundquist
+Louie
+Liggins
+Lampkin
+Kranz
+Koski
+Kirkham
+Jiminez
+Hazzard
+Harrod
+Graziano
+Grammer
+Gendron
+Garrido
+Fordham
+Englert
+Elwood
+Dryden
+Demoss
+Deluna
+Crabb
+Comeau
+Claudio
+Brummett
+Blume
+Benally
+Wessel
+Vanbuskirk
+Thorson
+Stumpf
+Stockwell
+Rocco
+Reams
+Radtke
+Rackley
+Pelton
+Niemi
+Newland
+Nelsen
+Morrissette
+Miramontes
+Mcginley
+Mccluskey
+Marley
+Marchant
+Luevano
+Lampe
+Lail
+Jeffcoat
+Infante
+Hu
+Hinman
+Gaona
+Erb
+Eady
+Desmarais
+Decosta
+Dansby
+Cisco
+Choe
+Breckenridge
+Bostwick
+Borg
+Bianchi
+Beer
+Alberts
+Adrian
+Wilkie
+Whorton
+Vargo
+Tait
+Sylvia
+Soucy
+Schuman
+Ousley
+Mumford
+Lum
+Lippert
+Leath
+Lavergne
+Laliberte
+Kirksey
+Kenner
+Johnsen
+Izzo
+Hiles
+Gullett
+Greenwell
+Gaspar
+Galbreath
+Gaitan
+Ericson
+Duck
+Delapaz
+Croom
+Cottingham
+Clift
+Bushnell
+Boozer
+Bice
+Bernardo
+Beason
+Arrowood
+Waring
+Voorhees
+Truax
+Shreve
+Shockey
+Schatz
+Sandifer
+Rubino
+Rozier
+Roseberry
+Roll
+Player
+Pieper
+Peden
+Nester
+Nave
+Murphey
+Malinowski
+Macgregor
+Liang
+Lafrance
+Kunkle
+Kirkman
+Jorge
+Hipp
+Hasty
+Haddix
+Gervais
+Gerdes
+Garfield
+Gamache
+Fouts
+Fitzwater
+Dillingham
+Deming
+Deanda
+Cedeno
+Cannady
+Burson
+Bouldin
+Arceneaux
+Woodhouse
+Whitford
+Wescott
+Welty
+Weigel
+Torgerson
+Toms
+Surber
+Sunderland
+Sterner
+Setzer
+Salvatore
+Riojas
+Pumphrey
+Puga
+Pedro
+Patch
+Metts
+Mcgarry
+Mccandless
+Magill
+Lupo
+Loveland
+Llamas
+Leclerc
+Koons
+Kahler
+Huss
+Holbert
+Heintz
+Haupt
+Grimmett
+Gaskill
+Flower
+Ellingson
+Dorr
+Dingess
+Deweese
+Desilva
+Crossley
+Cordeiro
+Converse
+Conde
+Cheeks
+Caldera
+Cairns
+Burmeister
+Burkhalter
+Brawner
+Bott
+Youngs
+Vierra
+Valladares
+Tiffany
+Shrum
+Shropshire
+Sevilla
+Rusk
+Roof
+Rodarte
+Pedraza
+Nino
+Montana
+Merino
+Mcminn
+Markle
+Mapp
+Lucia
+Lajoie
+Koerner
+Kittrell
+Kato
+Hyder
+Hollifield
+Heiser
+Hazlett
+Greenwald
+Fant
+Eldredge
+Dreher
+Delafuente
+Cravens
+Claypool
+Beecher
+Aronson
+Alanis
+Worthen
+Wojcik
+Winger
+Whitacre
+Wellington
+Valverde
+Valdivia
+Troupe
+Thrower
+Swindell
+Suttles
+Suh
+Stroman
+Spires
+Slate
+Shealy
+Sarver
+Sartin
+Sadowski
+Rondeau
+Rolon
+Rick
+Rex
+Rascon
+Priddy
+Pine
+Paulino
+Nolte
+Munroe
+Molloy
+Mellon
+Mciver
+Lykins
+Loggins
+Lillie
+Lenoir
+Klotz
+Kempf
+Jone
+Hupp
+Hollowell
+Hollander
+Haynie
+Hassan
+Harkness
+Harker
+Gottlieb
+Frith
+Eddins
+Driskell
+Doggett
+Densmore
+Charette
+Cassady
+Carrol
+Byrum
+Burcham
+Buggs
+Benn
+Whitted
+Warrington
+Vandusen
+Vaillancourt
+Steger
+Spell
+Siebert
+Scofield
+Quirk
+Purser
+Plumb
+Orcutt
+Northern
+Nordstrom
+Mosely
+Michalski
+Mcphail
+Mcdavid
+Mccraw
+Martini
+Marchese
+Mannino
+Leo
+Lefevre
+Largent
+Lanza
+Kress
+Isham
+Hunsaker
+Hoch
+Hildebrandt
+Guarino
+Grijalva
+Graybill
+Fick
+Ewell
+Ewald
+Deangelo
+Cusick
+Crumley
+Coston
+Cathcart
+Carruthers
+Bullington
+Brian
+Bowes
+Blain
+Blackford
+Barboza
+Yingling
+Woodland
+Wert
+Weiland
+Varga
+Silverstein
+Sievers
+Shuster
+Shumway
+Scudder
+Runnels
+Rumsey
+Renfroe
+Provencher
+Polley
+Mohler
+Middlebrooks
+Kutz
+Koster
+Korn
+Grow
+Groth
+Glidden
+Fazio
+Deen
+Corn
+Copper
+Chipman
+Chenoweth
+Champlin
+Cedillo
+Carrero
+Carmody
+Buckles
+Brien
+Boutin
+Bosch
+Bill
+Berkowitz
+Altamirano
+Wilfong
+Wiegand
+Waites
+Truesdale
+Toussaint
+Tobey
+Tedder
+Steelman
+Sirois
+Schnell
+Robichaud
+Ridge
+Richburg
+Pray
+Plumley
+Pizarro
+Piercy
+Ortego
+Oberg
+Neace
+Music
+Mickey
+Mertz
+Mcnew
+Matta
+Lawyer
+Lapp
+Lair
+Kibler
+Jessie
+Howlett
+Hollister
+Hofer
+Hatten
+Hagler
+Germany
+Falgoust
+Engelhardt
+Eberle
+Eastwood
+Dombrowski
+Dinsmore
+Daye
+Cool
+Casares
+Capone
+Braud
+Balch
+Autrey
+Wendel
+Tyndall
+Toy
+Strobel
+Stoltz
+Spinelli
+Serrato
+Rochester
+Reber
+Real
+Rathbone
+Palomino
+Noah
+Nickels
+Mayle
+Mathers
+Mach
+Loeffler
+Littrell
+Levinson
+Leong
+Lemire
+Lejeune
+Lazo
+Lasley
+Koller
+Kennard
+Jester
+Hoelscher
+Hintz
+Hagerman
+Greaves
+Fore
+Eudy
+Engler
+Corrales
+Cordes
+Brunet
+Bidwell
+Bennet
+Bare
+Tyrrell
+Tharpe
+Swinton
+Stribling
+Steven
+Southworth
+Sisneros
+Shane
+Savoie
+Samons
+Ruvalcaba
+Roscoe
+Ries
+Ramer
+Omara
+Mosqueda
+Millar
+Mcpeak
+Macomber
+Luckey
+Litton
+Lehr
+Lavin
+Hubbs
+Hoard
+Hibbs
+Hagans
+Futrell
+Exum
+Evenson
+Dicks
+Culler
+Chou
+Carbaugh
+Callen
+Brashear
+Bloomer
+Blakeney
+Bigler
+Addington
+Woodford
+Witter
+Unruh
+Tolentino
+Sumrall
+Stgermain
+Smock
+Sherer
+Salem
+Rochelle
+Rayner
+Pooler
+Oquinn
+Nero
+Milano
+Mcglothlin
+Mars
+Linden
+Kowal
+Kerrigan
+Ibrahim
+Harvell
+Hanrahan
+Goodall
+Geist
+Fussell
+Fung
+Ferebee
+Federico
+Eley
+Eggert
+Dorsett
+Dingman
+Destefano
+Colucci
+Clemmer
+Caesar
+Burnell
+Brumbaugh
+Boddie
+Berryhill
+Avelar
+Alcantara
+Abbey
+Winder
+Winchell
+Vandenberg
+Trotman
+Thurber
+Thibeault
+Stlouis
+Stilwell
+Sperling
+Shattuck
+Sarmiento
+Ruppert
+Rumph
+Renaud
+Randazzo
+Rademacher
+Quiles
+Pearman
+Palomo
+Mercurio
+Lowrey
+Lindeman
+Lawlor
+Larosa
+Lander
+Labrecque
+Kimber
+Hovis
+Holifield
+Henninger
+Hawkes
+Hartfield
+Hann
+Hague
+Genovese
+Garrick
+Fudge
+Frink
+Eddings
+Dinh
+Dear
+Cutter
+Cribbs
+Constant
+Calvillo
+Bunton
+Brodeur
+Bolding
+Blanding
+Agosto
+Zahn
+Wiener
+Trussell
+Tew
+Tello
+Teixeira
+Stephan
+Speck
+Sharma
+Shanklin
+Sealy
+Scanlan
+Santamaria
+Roundy
+Robichaux
+Ringer
+Rigney
+Prevost
+Polson
+Philip
+Pass
+Nord
+Moxley
+Mohammed
+Medford
+Mccaslin
+Mcardle
+Macarthur
+Lewin
+Lasher
+Ketcham
+Keiser
+Heine
+Hackworth
+Grose
+Grizzle
+Grass
+Gillman
+Gartner
+Garth
+Frazee
+Fleury
+Fast
+Edson
+Edmonson
+Derry
+Deck
+Cronk
+Conant
+Burress
+Burgin
+Broom
+Brockington
+Bolick
+Boger
+Birchfield
+Billington
+Baily
+Bahena
+Armbruster
+Anson
+Yoho
+Wilcher
+Tinney
+Timberlake
+Thoma
+Thielen
+Sutphin
+Stultz
+Sikora
+Serra
+Schulman
+Scheffler
+Santillan
+Robin
+Rego
+Preciado
+Pinkham
+Monday
+Mickle
+Luu
+Lomas
+Lizotte
+Lent
+Lenard
+Kellerman
+Keil
+Juan
+Johanson
+Hernadez
+Hartsfield
+Hang
+Haber
+Gorski
+Farkas
+Eberhardt
+Duquette
+Delano
+Cropper
+Cozart
+Cockerham
+Chamblee
+Cartagena
+Cahoon
+Buzzell
+Brister
+Brewton
+Blackshear
+Benfield
+Aston
+Ashburn
+Arruda
+Wetmore
+Weise
+Vaccaro
+Tucci
+Sudduth
+Stromberg
+Stoops
+Showalter
+Shears
+Runion
+Rowden
+Rosenblum
+Riffle
+Renfrow
+Peres
+Obryant
+Nicolas
+Leftwich
+Lark
+Landeros
+Kistler
+Killough
+Kerley
+Kastner
+Hoggard
+Hartung
+Guertin
+Govan
+Gatling
+Gailey
+Fullmer
+Fulford
+Flatt
+Esquibel
+Endicott
+Edmiston
+Edelstein
+Dufresne
+Dressler
+Dickman
+Chee
+Busse
+Bonnett
+Bogart
+Berard
+Barrington
+Arena
+Anton
+Yoshida
+Velarde
+Veach
+Vanhouten
+Vachon
+Tolson
+Tolman
+Tennyson
+Stites
+Soler
+Shutt
+Ruggles
+Rhone
+Pegues
+Ong
+Neese
+Muro
+Moncrief
+Mefford
+Mcphee
+Mcmorris
+Mceachern
+Mcclurg
+Mansour
+Mai
+Mader
+Leija
+Lecompte
+Lafountain
+Labrie
+Jaquez
+Heald
+Hash
+Hartle
+Gainer
+Frisby
+Farina
+Eidson
+Edgerton
+Dyke
+Durrett
+Duhon
+Cuomo
+Cobos
+Cervantez
+Bybee
+Brockway
+Borowski
+Binion
+Beery
+Arguello
+Amaro
+Acton
+Yuen
+Winton
+Wigfall
+Weekley
+Vidrine
+Vannoy
+Tardiff
+Shoop
+Shilling
+Schick
+Sand
+Safford
+Prendergast
+Pilgrim
+Pellerin
+Osuna
+Nissen
+Nalley
+Moritz
+Moller
+Messner
+Messick
+Merry
+Merrifield
+Mcguinness
+Matherly
+Marcano
+Mahone
+Lemos
+Lebrun
+Jara
+Hoffer
+Hewlett
+Herren
+Hecker
+Haws
+Haug
+Hack
+Gwin
+Gober
+Gilliard
+Fredette
+Favela
+Echeverria
+Downer
+Donofrio
+Desrochers
+Dee
+Crozier
+Corson
+Clyde
+Bechtold
+Argueta
+Aparicio
+Zamudio
+Willette
+Westover
+Westerman
+Utter
+Troyer
+Thies
+Tapley
+Slavin
+Shirk
+Sandler
+Roop
+Rimmer
+Raymer
+Range
+Radcliff
+Otten
+Moorer
+Millet
+Mckibben
+Mccutchen
+Mcavoy
+Mcadoo
+Mayorga
+Mastin
+Martineau
+Marek
+Madore
+Leflore
+Kroeger
+Kennon
+Jimerson
+Javier
+Hostetter
+Hornback
+Hendley
+Hance
+Guardado
+Granado
+Gowen
+Goodale
+Flinn
+Fleetwood
+Fitz
+Durkee
+Duprey
+Dipietro
+Dilley
+Clyburn
+Brawley
+Beckley
+Arana
+Weatherby
+Vollmer
+Victoria
+Vestal
+Tunnell
+Trigg
+Tingle
+Takahashi
+Sweatt
+Storer
+Snapp
+Shiver
+Rooker
+Red
+Rathbun
+Poisson
+Perrine
+Perri
+Pastor
+Parmer
+Parke
+Pare
+Papa
+Palmieri
+Nottingham
+Midkiff
+Mecham
+Mccomas
+Mcalpine
+Lovelady
+Lillard
+Lally
+Knopp
+Kile
+Kiger
+Haile
+Gupta
+Goldsberry
+Gilreath
+Fulks
+Friesen
+Franzen
+Flack
+Findlay
+Ferland
+Dreyer
+Dore
+Dennard
+Deckard
+Debose
+Crim
+Coulombe
+Cork
+Chancey
+Cantor
+Branton
+Bissell
+Barns
+Woolard
+Witham
+Wasserman
+Waldo
+Spiegel
+Shoffner
+Scholz
+Ruch
+Rossman
+Ready
+Petry
+Palacio
+Paez
+Neary
+Mortenson
+Millsap
+Miele
+Mick
+Menke
+Mckim
+Mcanally
+Martines
+Manor
+Malcom
+Lemley
+Larochelle
+Klaus
+Klatt
+Kaufmann
+Kapp
+Helmer
+Hedge
+Halloran
+Glisson
+Frechette
+Fontana
+Enoch
+Eagan
+Drum
+Distefano
+Danley
+Creekmore
+Chartier
+Chaffee
+Carillo
+Burg
+Bolinger
+Berkley
+Benz
+Basso
+Bash
+Barrier
+Zelaya
+Woodring
+Witkowski
+Wilmot
+Wilkens
+Wieland
+Virgil
+Verdugo
+Urquhart
+Tsai
+Timms
+Swiger
+Swaim
+Sussman
+Scarlett
+Pires
+Molnar
+Mcatee
+Maurice
+Lowder
+Loos
+Linker
+Landes
+Kingery
+Keeley
+Hufford
+Higa
+Hendren
+Hammack
+Hamann
+Gillam
+Gerhardt
+Fell
+Eugene
+Edelman
+Eby
+Delk
+Deans
+Curl
+Constantine
+Cleaver
+Claar
+Casiano
+Carruth
+Carlyle
+Bump
+Brophy
+Bolanos
+Bibbs
+Bessette
+Beggs
+Baugher
+Bartel
+Averill
+Andresen
+Amin
+Alden
+Adames
+Wildman
+Via
+Valente
+Turnbow
+Tse
+Swink
+Sublett
+Stroh
+Stringfellow
+Ridgway
+Pugliese
+Poteat
+Pang
+Ohare
+Neubauer
+Murchison
+Mohamed
+Mingo
+Lucky
+Lemmons
+Kwon
+Kellam
+Kean
+Jarmon
+Hyden
+Hudak
+Hollinger
+Henkel
+Hemingway
+Hasson
+Hansel
+Halter
+Haire
+Goodnight
+Ginsberg
+Gillispie
+Fogel
+Flory
+Etter
+Elledge
+Eckman
+Deas
+Currin
+Crafton
+Coomer
+Colter
+Claxton
+Bulter
+Braddock
+Bowyer
+Blizzard
+Binns
+Bing
+Bellows
+Baskerville
+Barros
+Ansley
+Woolf
+Wight
+Waldman
+Wadley
+Tull
+Trull
+Tesch
+Struck
+Stouffer
+Stadler
+Slay
+Shubert
+Sedillo
+Santacruz
+Reinke
+Raleigh
+Poynter
+Neri
+Neale
+Natividad
+Mowry
+Moralez
+Monger
+Mitchum
+Merryman
+Manion
+Macdougall
+Lux
+Litchfield
+Ley
+Levitt
+Lepage
+Lasalle
+Laine
+Khoury
+Kavanagh
+Karns
+Ivie
+Huebner
+Hodgkins
+Halpin
+Garica
+Eversole
+Dutra
+Dunagan
+Duffey
+Dillman
+Dillion
+Deville
+Dearborn
+Damato
+Courson
+Coulson
+Burdine
+Bryce
+Bousquet
+Bonin
+Bish
+Atencio
+Westbrooks
+Wages
+Vaca
+Tye
+Toner
+Tomas
+Tillis
+Swett
+Surface
+Struble
+Stanfill
+Son
+Solorzano
+Slusher
+Sipple
+Sim
+Silvas
+Shults
+Schexnayder
+Saez
+Rodas
+Rager
+Pulver
+Plaza
+Penton
+Paniagua
+Meneses
+Mcfarlin
+Mcauley
+Matz
+Maloy
+Magruder
+Lohman
+Landa
+Lacombe
+Jaimes
+Hom
+Holzer
+Holst
+Heil
+Hackler
+Grundy
+Gregor
+Gilkey
+Farnham
+Durfee
+Dunton
+Dunston
+Duda
+Dews
+Dana
+Craver
+Corriveau
+Conwell
+Colella
+Chambless
+Bremer
+Boutte
+Bourassa
+Blaisdell
+Backman
+Babineaux
+Audette
+Alleman
+Towner
+Taveras
+Tarango
+Sullins
+Suiter
+Stallard
+Solberg
+Schlueter
+Poulos
+Pimental
+Owsley
+Olivier
+Okelley
+Nations
+Moffatt
+Metcalfe
+Meekins
+Medellin
+Mcglynn
+Mccowan
+Marriott
+Marable
+Lennox
+Lamoureux
+Koss
+Kerby
+Karp
+Jason
+Isenberg
+Howze
+Hockenberry
+Highsmith
+Harbour
+Hallmark
+Gusman
+Greeley
+Giddings
+Gaudet
+Gallup
+Fleenor
+Eicher
+Edington
+Dimaggio
+Dement
+Demello
+Decastro
+Cruise
+Bushman
+Brundage
+Brooker
+Brooke
+Bourg
+Board
+Blackstock
+Bergmann
+Beaton
+Banister
+Argo
+Appling
+Wortman
+Watterson
+Villalpando
+Tillotson
+Tighe
+Sundberg
+Sternberg
+Stamey
+Speaks
+Shipe
+Seeger
+Scarberry
+Sattler
+Sain
+Rothstein
+Poteet
+Plowman
+Pettiford
+Penland
+Peach
+Partain
+Pankey
+Oyler
+Ogletree
+Ogburn
+Moton
+Million
+Merkel
+Mask
+Markus
+Lucier
+Lazarus
+Lavelle
+Lakey
+Kratz
+Kinser
+Kershaw
+Josephson
+Jesse
+Imhoff
+Ibanez
+Hendry
+Hammon
+Frisbie
+Friedrich
+Frawley
+Fraga
+Forester
+Eskew
+Emmert
+Drennan
+Doyon
+Dominick
+Dandridge
+Cumming
+Cawley
+Carvajal
+Bracey
+Belisle
+Batey
+Ahner
+Wysocki
+Weiser
+Veliz
+Tincher
+Sherlock
+Santo
+Sansone
+Sankey
+Sandstrom
+Sale
+Rohrer
+Risner
+Pridemore
+Pfeffer
+Persinger
+Peery
+Oubre
+Orange
+Nowicki
+Musgrave
+Murdoch
+Mullinax
+Mccary
+Mathieu
+Livengood
+Leonardo
+Kyser
+Klink
+Kimes
+Kellner
+Kavanaugh
+Kasten
+Imes
+Hoey
+Hinshaw
+Halley
+Hake
+Gurule
+Grube
+Grillo
+Geter
+Gatto
+Garver
+Garretson
+Farwell
+Eiland
+Dunford
+Decarlo
+Corso
+Core
+Colman
+Collard
+Cleghorn
+Chasteen
+Cavender
+Carlile
+Calvo
+Byerly
+Brogdon
+Broadwater
+Breault
+Bono
+Bergin
+Behr
+Ballenger
+Amick
+Yan
+Vice
+Tamez
+Stiffler
+Steinke
+Simmon
+Shankle
+Schaller
+Salmons
+Sackett
+Saad
+Rideout
+Reader
+Ratcliffe
+Rao
+Ranson
+Randell
+Plascencia
+Petterson
+Olszewski
+Olney
+Olguin
+Nilsson
+Nevels
+Morelli
+Montiel
+Monge
+Michell
+Michaelson
+Mertens
+Mcchesney
+Mcalpin
+Mathewson
+Lower
+Loudermilk
+Lineberry
+Liggett
+Lamp
+Kinlaw
+Kight
+Just
+Jost
+Hereford
+Hardeman
+Halpern
+Halliday
+Hafer
+Gaul
+Friel
+Freitag
+Frances
+Forsberg
+Evangelista
+Doering
+Dicarlo
+Dendy
+Delp
+Deguzman
+Dameron
+Curtiss
+Cousin
+Cosper
+Charley
+Cauthen
+Cao
+Camper
+Bradberry
+Bouton
+Bonnell
+Bixby
+Bieber
+Beveridge
+Belle
+Bedwell
+Barhorst
+Bannon
+Baltazar
+Baier
+Ayotte
+Attaway
+Arenas
+Alex
+Abrego
+Watford
+Valley
+Turgeon
+Tunstall
+Thaxton
+Thai
+Tenorio
+Stotts
+Sthilaire
+Spiker
+Shedd
+Seng
+Seabolt
+Scalf
+Salyers
+Ruhl
+Rowlett
+Robinett
+Pfister
+Perlman
+Pepe
+Parkman
+Paradise
+Olin
+Nunnally
+Norvell
+Napper
+Modlin
+Mckellar
+Mcclean
+Mascarenas
+Manchester
+Leibowitz
+Ledezma
+Kuhlman
+Kobayashi
+Hunley
+Holmquist
+Hinkley
+Hazard
+Hartsell
+Gribble
+Gravely
+Fifield
+Eliason
+Doctor
+Doak
+Crossland
+Cover
+Clair
+Carleton
+Butters
+Bridgeman
+Bojorquez
+Boggess
+Banker
+Auten
+Woosley
+Wine
+Whiteley
+Wexler
+Twomey
+Tullis
+Townley
+To
+Standridge
+Stamp
+Springs
+Santoyo
+Rueda
+Riendeau
+Revell
+Pless
+Ottinger
+Nigro
+Nickles
+Mulvey
+Menefee
+Mcshane
+Mcloughlin
+Mckinzie
+Marrow
+Markey
+Mariano
+Lockridge
+Lipsey
+Knisley
+Knepper
+Kitts
+Kiel
+Jinks
+Hathcock
+Godin
+Gallego
+Fikes
+Fecteau
+Estabrook
+Ellinger
+Dustin
+Dunlop
+Dudek
+Diego
+Countryman
+Chauvin
+Chatham
+Bullins
+Brownfield
+Boughton
+Bloodworth
+Bibb
+Baucom
+Barbieri
+Aubin
+Armitage
+Alessi
+Absher
+Abbate
+Zito
+Woolery
+Wiggs
+Wacker
+Violette
+Tynes
+Tolle
+Telles
+Tarter
+Swarey
+Strode
+Stockdale
+Stella
+Stalnaker
+Spina
+Schiff
+Saari
+Risley
+Reading
+Rameriz
+Rakes
+Pettaway
+Penner
+Paulus
+Palladino
+Omeara
+Montelongo
+Melnick
+Mehta
+Mcgary
+Mccourt
+Mccollough
+Marchetti
+Manzanares
+Lowther
+Leiva
+Lauderdale
+Lafontaine
+Kowalczyk
+Knighton
+Joubert
+Jaworski
+Ide
+Huth
+Hurdle
+Hung
+Housley
+Hackman
+Gulick
+Gordy
+Gilstrap
+Gehrke
+Gebhart
+Gaudette
+Foxworth
+Finger
+Essex
+Endres
+Dunkle
+Clare
+Cimino
+Cardinal
+Caddell
+Brauer
+Braley
+Bodine
+Blackmore
+Belden
+Backer
+Ayer
+Andress
+Alva
+Wisner
+Walk
+Vuong
+Valliere
+Twigg
+Tso
+Tavarez
+Strahan
+Steib
+Staub
+Sowder
+Shoulders
+Seiber
+Schutt
+Scharf
+Schade
+Rodriques
+Risinger
+Renshaw
+Rath
+Rahman
+Presnell
+Pillow
+Piatt
+Pasquale
+Nieman
+Nicol
+Nevins
+Milford
+Mcilwain
+Mcgaha
+Mccully
+Mccomb
+Maye
+Massengale
+Macedo
+Lines
+Lesher
+Leland
+Kearse
+Jauregui
+Husted
+Hudnall
+Holmberg
+Hertel
+Hershey
+Hardie
+Glidewell
+Frausto
+Fassett
+Dash
+Dalessandro
+Dahlgren
+Corum
+Constantino
+Conlin
+Colquitt
+Colombo
+Claycomb
+Carley
+Cardin
+Cancel
+Buller
+Boring
+Boney
+Bocanegra
+Blazer
+Biggers
+Benedetto
+Araiza
+Andino
+Albin
+Zorn
+Werth
+Weisman
+Walley
+Vanegas
+Ulibarri
+Towers
+Towe
+Tedford
+Teasley
+Suttle
+Steffens
+Stcyr
+Squire
+Smythe
+Singley
+Sifuentes
+Shuck
+Session
+Schram
+Sass
+Rieger
+Ridenhour
+Rickert
+Richerson
+Rayborn
+Rabe
+Raab
+Pendley
+Pastore
+Ordway
+Moynihan
+Mellott
+Mckissick
+Mcgann
+Mccready
+Mauney
+Marrufo
+List
+Lenhart
+Lazar
+Lafave
+Keele
+Kautz
+Jardine
+Jahnke
+Jacobo
+Hord
+Hardcastle
+Hageman
+Griffey
+Giglio
+Gehring
+Fortson
+Duque
+Duplessis
+Donner
+Dicken
+Derosier
+Deitz
+Dalessio
+Cyrus
+Cram
+Chi
+Center
+Castleman
+Candelario
+Callison
+Caceres
+Bozarth
+Biles
+Bejarano
+Beech
+Bashaw
+Avina
+Armentrout
+Angus
+Alverez
+Acord
+Zack
+Waterhouse
+Vereen
+Vanlandingham
+Uhl
+Strawser
+Shotwell
+Severance
+Seltzer
+Schoonmaker
+Schock
+Schaub
+Schaffner
+Roeder
+Rodrigez
+Riffe
+Rhine
+Rasberry
+Rancourt
+Railey
+Quade
+Pursley
+Prouty
+Perdomo
+Oxley
+Osterman
+Nickens
+Murphree
+Mounts
+Monte
+Merida
+Maus
+Mattern
+Masse
+Martinelli
+Mangan
+Lutes
+Ludwick
+Loney
+Laureano
+Lasater
+Knighten
+Kissinger
+Kimsey
+Kessinger
+Honea
+Hollingshead
+Hockett
+Heyer
+Heron
+Gurrola
+Gove
+Glasscock
+Gillett
+Galan
+Featherstone
+Eckhardt
+Duron
+Dunson
+Dasher
+Culbreth
+Cowden
+Cowans
+Claypoole
+Churchwell
+Chabot
+Caviness
+Cater
+Caston
+Callan
+Byington
+Burkey
+Boden
+Beckford
+Atwater
+Arms
+Archambault
+Alvey
+Alsup
+Yon
+Whisenant
+Weese
+Voyles
+Verret
+Tsang
+Tessier
+Sweitzer
+Sherwin
+Shaughnessy
+Revis
+Remy
+Prine
+Philpott
+Peavy
+Paynter
+Parmenter
+Ovalle
+Offutt
+Nightingale
+Newlin
+Nakano
+Myatt
+Muth
+Mohan
+Mcmillon
+Mccarley
+Mccaleb
+Maxson
+Marinelli
+Maley
+Macy
+Liston
+Letendre
+Kain
+Huntsman
+Hirst
+Hagerty
+Gulledge
+Greenway
+Grajeda
+Gorton
+Goines
+Gittens
+Frederickson
+Fanelli
+Embree
+Eichelberger
+Dunkin
+Dull
+Dixson
+Dillow
+Defelice
+Chumley
+Burleigh
+Borkowski
+Binette
+Biggerstaff
+Berglund
+Beller
+Audet
+Arbuckle
+Allain
+Alfano
+Zander
+Youngman
+Wittman
+Weintraub
+Vanzant
+Vaden
+Twitty
+Trader
+Toon
+Till
+Stollings
+Standifer
+Spinner
+Sines
+Shope
+Scalise
+Saville
+Romans
+Posada
+Pisano
+Otte
+Nolasco
+Napoli
+Mier
+Merkle
+Mendiola
+Melcher
+Mejias
+Mcmurry
+Mccalla
+Markowitz
+Marine
+Manis
+Mallette
+Macfarlane
+Lough
+Looper
+Landin
+Kittle
+Kinsella
+Kinnard
+Hobart
+Herald
+Helman
+Hellman
+Hartsock
+Halford
+Hage
+Gordan
+Glasser
+Gayton
+Gattis
+Gastelum
+Gaspard
+Frisch
+Force
+Fitzhugh
+Eckstein
+Eberly
+Dowden
+Despain
+Crumpler
+Crotty
+Cornelison
+Collin
+Colin
+Chouinard
+Chamness
+Catlin
+Cann
+Bumgardner
+Budde
+Branum
+Bradfield
+Braddy
+Borst
+Birdwell
+Bent
+Bazan
+Bank
+Banas
+Bade
+Aubrey
+Arango
+Ahearn
+Addis
+Zumwalt
+Wurth
+Wilk
+Widener
+Wagstaff
+Vella
+Urrutia
+Terwilliger
+Tart
+Steinman
+Staats
+Sloat
+Rives
+Riggle
+Revels
+Reichard
+Prickett
+Poff
+Pitzer
+Petro
+Pell
+Northrup
+Nicks
+Moline
+Mielke
+Maynor
+Mallon
+Magness
+Lingle
+Lindell
+Lieb
+Lesko
+Lebeau
+Lammers
+Lafond
+Kiernan
+Ketron
+Jurado
+Holmgren
+Hilburn
+Hayashi
+Hashimoto
+Harbaugh
+Hans
+Guillot
+Gard
+Froehlich
+Felipe
+Feinberg
+Falco
+Dufour
+Drees
+Doney
+Diep
+Delao
+Daves
+Dail
+Cutting
+Crowson
+Coss
+Congdon
+Carner
+Camarena
+Butterworth
+Burlingame
+Bouffard
+Bloch
+Bilyeu
+Barta
+Bakke
+Baillargeon
+Avent
+Aquilar
+Ake
+Aho
+Zeringue
+Yeh
+Yarber
+Wolfson
+Wendell
+Vogler
+Voelker
+Truss
+Troxell
+Thrift
+Strouse
+Spielman
+Sistrunk
+Shows
+Sevigny
+Schuller
+Schaaf
+Ruffner
+Routh
+Roseman
+Ricciardi
+Peraza
+Pegram
+Overturf
+Olander
+Odaniel
+Neu
+Millner
+Melchor
+Maxie
+Marvel
+Maroney
+Machuca
+Macaluso
+Livesay
+Layfield
+Laskowski
+Kwiatkowski
+Ko
+Kiley
+Kilby
+Julien
+Hovey
+Heywood
+Hayman
+Havard
+Harville
+Haigh
+Hagood
+Grieco
+Glassman
+Gebhardt
+Garry
+Freeze
+Fleischer
+Fann
+Elson
+Eccles
+Cunha
+Crumb
+Crew
+Blakley
+Bardwell
+Abshire
+Woodham
+Wines
+Welter
+Wargo
+Varnado
+Tutt
+Traynor
+Swaney
+Svoboda
+Stricker
+Stoffel
+Stambaugh
+Sickler
+Shackleford
+Selman
+Seaver
+Sansom
+Sanmiguel
+Royston
+Rourke
+Rockett
+Rioux
+Puleo
+Pitchford
+Persons
+Normand
+Nardi
+Mulvaney
+Middaugh
+Manners
+Malek
+Lodge
+Leos
+Lathan
+Kujawa
+Kimbro
+Killebrew
+Joshua
+Houlihan
+Hobby
+Hinckley
+Herod
+Hepler
+Hamner
+Hammel
+Hallowell
+Gonsalez
+Gingerich
+Gambill
+Funkhouser
+Fricke
+Fewell
+Falkner
+Endsley
+Dulin
+Drennen
+Deaver
+Dambrosio
+Clover
+Chadwell
+Ceasar
+Castanon
+Canon
+Burkes
+Brune
+Brisco
+Brinker
+Bowker
+Boldt
+Berner
+Bee
+Beaumont
+Beaird
+Bazemore
+Barrick
+Arnette
+Albano
+Younts
+Wunderlich
+Weidman
+Vanness
+Tu
+Toland
+Theobald
+Stickler
+Steiger
+Stanger
+Spies
+Spector
+Sollars
+Smedley
+Seibel
+Scoville
+Saito
+Rye
+Rummel
+Rude
+Rowles
+Rouleau
+Roos
+Rogan
+Roemer
+Ream
+Raya
+Purkey
+Priester
+Perreira
+Penick
+Paulin
+Parkins
+Overcash
+Oleson
+Nicely
+Neves
+Muldrow
+Minard
+Midgett
+Michalak
+Melgar
+Mcentire
+Mcauliffe
+Marti
+Marte
+Lydon
+Lindholm
+Leyba
+Leader
+Langevin
+Lagasse
+Lafayette
+Kesler
+Kelton
+Kao
+Kaminsky
+Jump
+Jaggers
+Humbert
+Huck
+Howarth
+Hinrichs
+Higley
+Gupton
+Guimond
+Gravois
+Giguere
+Fretwell
+Fontes
+Feeley
+Faucher
+Fall
+Evan
+Eichhorn
+Ecker
+Earp
+Dole
+Dinger
+Derryberry
+Demars
+Deel
+Copenhaver
+Collinsworth
+Colangelo
+Cloyd
+Claiborne
+Caulfield
+Carlsen
+Calzada
+Caffey
+Broadus
+Brenneman
+Bouie
+Bodnar
+Blaney
+Blanc
+Blades
+Beltz
+Behling
+Begin
+Barahona
+Yun
+Yockey
+Winkle
+Windom
+Wimer
+Wilford
+Wash
+Villatoro
+Trexler
+Teran
+Taliaferro
+Sydnor
+Swinson
+Snelling
+Smtih
+Siu
+Simonton
+Simoneaux
+Simoneau
+Sherrer
+Seavey
+Scheel
+Rushton
+Rupe
+Ruano
+Rodney
+Rippy
+Reiner
+Reiff
+Rabinowitz
+Quach
+Penley
+Odle
+Nock
+Minnich
+Mckown
+Mccarver
+Mcandrew
+Longley
+Laux
+Lamothe
+Lafreniere
+Kropp
+Krick
+Kates
+Jepson
+Huie
+Howse
+Howie
+Henriques
+Haydon
+Haught
+Hatter
+Hartzog
+Harkey
+Grimaldo
+Goshorn
+Gormley
+Gluck
+Gilroy
+Gillenwater
+Giffin
+Folks
+Fluker
+Feder
+Eyre
+Eshelman
+Eakins
+Dryer
+Disney
+Detwiler
+Delrosario
+Davisson
+Celestine
+Catalan
+Canning
+Calton
+Buster
+Brammer
+Botelho
+Blakney
+Bartell
+Averett
+Askins
+Aker
+Zak
+Worcester
+Witmer
+Wiser
+Winkelman
+Widmer
+Whittier
+Western
+Weitzel
+Wardell
+Wagers
+Ullman
+Tupper
+Tingley
+Tilghman
+Talton
+Simard
+Seda
+Scheller
+Sala
+Rundell
+Rost
+Roa
+Ribeiro
+Rabideau
+Primm
+Porch
+Polite
+Pinon
+Peart
+Ostrom
+Ober
+Nystrom
+Nussbaum
+Nurse
+Naughton
+Murr
+Moorhead
+Monti
+Monteiro
+Melson
+Meissner
+Mclin
+Mcgruder
+Marotta
+Makowski
+Majewski
+Madewell
+Lunt
+Lukens
+Leininger
+Lebel
+Lakin
+Laguna
+Kepler
+Jaques
+Hunnicutt
+Hungerford
+Hoopes
+Hertz
+Heins
+Hammers
+Halliburton
+Grosso
+Gravitt
+Glasper
+Gideon
+Gallman
+Gallaway
+Funke
+Fulbright
+Falgout
+Eakin
+Dostie
+Dorado
+Dewberry
+Derose
+Cutshall
+Crampton
+Costanzo
+Colletti
+Cloninger
+Claytor
+Chiang
+Canterbury
+Campagna
+Burd
+Brokaw
+Broaddus
+Bretz
+Brainard
+Binford
+Bilbrey
+Alpert
+Aitken
+Ahlers
+Zajac
+Yale
+Woolfolk
+Witten
+Windle
+Wayland
+Tramel
+Tittle
+Talavera
+Suter
+Straley
+Stetson
+Specht
+Sommerville
+Soloman
+So
+Skeens
+Sigman
+Sibert
+Shavers
+Schuck
+Schmit
+Sartain
+Sabol
+Rosenblatt
+Rollo
+Rashid
+Rabb
+Province
+Polston
+Nyberg
+Northrop
+Navarra
+Muldoon
+Mulder
+Mikesell
+Mcdougald
+Mcburney
+Mauricio
+Mariscal
+Lui
+Lozier
+Lingerfelt
+Legere
+Latour
+Lagunas
+Lacour
+Kurth
+Ku
+Killen
+Kiely
+Kayser
+Kahle
+Julius
+Isley
+Huertas
+Hower
+Hinz
+Haugh
+Gumm
+Given
+Galicia
+Fortunato
+Flake
+Dunleavy
+Duggins
+Doby
+Digiovanni
+Devaney
+Deltoro
+Cribb
+Crank
+Corpuz
+Coronel
+Comfort
+Coen
+Charbonneau
+Caine
+Burchette
+Blakey
+Blakemore
+Bergquist
+Beene
+Beaudette
+Bayles
+Ballance
+Bakker
+Bailes
+Asberry
+Arwood
+Zucker
+Willman
+Whitesell
+Wald
+Walcott
+Vancleave
+Trump
+Trail
+Strasser
+Simas
+Shorts
+Shick
+Schleicher
+Schaal
+Saleh
+Rotz
+Resnick
+Raphael
+Rainer
+Partee
+Ollis
+Oller
+Oday
+Noles
+Munday
+Mountain
+Mong
+Millican
+Merwin
+Mazzola
+Mansell
+Magallanes
+Llanes
+Lewellen
+Lepore
+Kisner
+Keesee
+Jim
+Jeanlouis
+Ingham
+Hornbeck
+Hermes
+Hawn
+Hartz
+Harber
+Haffner
+Gutshall
+Guth
+Grays
+Grams
+Gowan
+Finlay
+Finkelstein
+Eyler
+Enloe
+Dungan
+Diez
+Dearman
+Dann
+Cull
+Crosson
+Creek
+Chronister
+Cassity
+Campion
+Callihan
+Butz
+Breazeale
+Blumenthal
+Billy
+Berkey
+Batty
+Batton
+Barge
+Arvizu
+Alexis
+Alderete
+Aldana
+Albaugh
+Abernethy
+Work
+Wolter
+Wille
+Tweed
+Tollefson
+Thomasson
+Teter
+Testerman
+Sproul
+Spates
+Southwick
+Soukup
+Skelly
+Senter
+Sealey
+Sawicki
+Sargeant
+Rossiter
+Rosemond
+Repp
+Pound
+Pink
+Pifer
+Ormsby
+Nickelson
+Naumann
+Morabito
+Monzon
+Millsaps
+Millen
+Mcelrath
+Marcoux
+Mantooth
+Madson
+Macneil
+Mackinnon
+Louque
+Leister
+Lampley
+Kushner
+Krouse
+Kirwan
+June
+Jessee
+Janson
+Jahn
+Jacquez
+Islas
+Hutt
+Holladay
+Hillyer
+Hepburn
+Hensel
+Harrold
+Guadalupe
+Gingrich
+Geis
+Gales
+Fults
+Finnell
+Ferri
+Featherston
+Epley
+Ebersole
+Eames
+Dunigan
+Drye
+Dismuke
+Devaughn
+Delorenzo
+Damiano
+Confer
+Collum
+Clower
+Clow
+Claussen
+Clack
+Caylor
+Cawthon
+Casias
+Carreno
+Carlo
+Bluhm
+Bingaman
+Bewley
+Belew
+Beckner
+Beamer
+Barefoot
+Auld
+Amey
+Wolfenbarger
+Wilkey
+Wicklund
+Waltman
+Villalba
+Valero
+Valdovinos
+Ung
+Ullrich
+Tyus
+Twyman
+Trost
+Tardif
+Tanguay
+Stripling
+Steinbach
+Shumpert
+Sasaki
+Sappington
+Sandusky
+Reinhold
+Reinert
+Quijano
+Pye
+Poor
+Placencia
+Pinkard
+Phinney
+Perrotta
+Pernell
+Parrett
+Oxendine
+Owensby
+Orman
+Nuno
+Mori
+Mcroberts
+Mcneese
+Mckamey
+Mccullum
+Markel
+Mardis
+Maines
+Lueck
+Lubin
+Lefler
+Leffler
+Lavery
+Larios
+Labarbera
+Kershner
+Josey
+Jeanbaptiste
+Izaguirre
+Hermosillo
+Haviland
+Hartshorn
+Hamlet
+Hafner
+Ginter
+Getty
+Franck
+Fiske
+Emmett
+Dufrene
+Doody
+Davie
+Dangerfield
+Dahlberg
+Cuthbertson
+Crone
+Coffelt
+Claus
+Chidester
+Chesson
+Cauley
+Caudell
+Cantara
+Campo
+Caines
+Bullis
+Bucci
+Brochu
+Bosco
+Bogard
+Bickerstaff
+Benning
+Arzola
+Antonelli
+Adkinson
+Zellers
+Wulf
+Worsley
+Woolridge
+Whitton
+Westerfield
+Walczak
+Vassar
+Truett
+Trueblood
+Trawick
+Townsley
+Topping
+Tobar
+Telford
+Sung
+Steverson
+Stagg
+Sitton
+Sill
+Sherrell
+Sergent
+Schoenfeld
+Sarabia
+Rutkowski
+Rubenstein
+Rigdon
+Prentiss
+Pomerleau
+Plumlee
+Phoenix
+Philbrick
+Peer
+Patty
+Patnode
+Oloughlin
+Obregon
+Nuss
+Napoleon
+Morell
+Moose
+Mikell
+Mele
+Mcinerney
+Mcguigan
+Mcbrayer
+Lore
+Lor
+Look
+Lollar
+Lakes
+Kuehl
+Kinzer
+Kamp
+Joplin
+Jacobi
+Howells
+Holstein
+Hedden
+Hassler
+Harty
+Halle
+Greig
+Granville
+Gouge
+Goodrum
+Gerhart
+Geier
+Geddes
+Gast
+Forehand
+Ferree
+Fendley
+Feltner
+Fang
+Esqueda
+Encarnacion
+Eichler
+Egger
+Edmundson
+Eatmon
+Dragon
+Doud
+Donohoe
+Donelson
+Dilorenzo
+Digiacomo
+Diggins
+Delozier
+Dejong
+Danford
+Crippen
+Coppage
+Cogswell
+Clardy
+Cioffi
+Cabe
+Brunette
+Bresnahan
+Bramble
+Blomquist
+Blackstone
+Biller
+Bevis
+Bevan
+Bethune
+Benbow
+Baty
+Basinger
+Balcom
+Andes
+Aman
+Aguero
+Adkisson
+Yandell
+Wilds
+Whisenhunt
+Weigand
+Weeden
+Voight
+Villar
+Trottier
+Tillett
+Suazo
+Setser
+Scurry
+Schuh
+Schreck
+Schauer
+Samora
+Roane
+Rinker
+Reimers
+Reason
+Ratchford
+Popovich
+Parkin
+Nichol
+Natal
+Melville
+Mcbryde
+Magdaleno
+Loehr
+Lockman
+Lingo
+Leduc
+Larocca
+Lao
+Lamere
+Laclair
+Krall
+Korte
+Koger
+Jumper
+Jalbert
+Hughs
+Higbee
+Henton
+Heaney
+Haith
+Gump
+Greeson
+Goodloe
+Gholston
+Gasper
+Gagliardi
+Fregoso
+Farthing
+Fabrizio
+Ensor
+Elswick
+Elgin
+Eklund
+Eaddy
+Drouin
+Dorton
+Dizon
+Derouen
+Delia
+Deherrera
+Davy
+Dark
+Dampier
+Cullum
+Culley
+Cowgill
+Cardoso
+Cardinale
+Brodsky
+Broadbent
+Brimmer
+Briceno
+Branscum
+Bolyard
+Boley
+Bennington
+Beadle
+Baur
+Ballentine
+Azure
+Aultman
+Augustus
+Asuncion
+Arciniega
+Aguila
+Aceves
+Yepez
+Yap
+Woodrum
+Wethington
+Weissman
+Veloz
+Trusty
+Troup
+Trammel
+Theodore
+Tarpley
+Stivers
+Steck
+Sprayberry
+Spraggins
+Spitler
+Spiers
+Sohn
+Seagraves
+Schiffman
+Rudnick
+Rizo
+Riccio
+Rennie
+Quinton
+Quackenbush
+Puma
+Plott
+Pearcy
+Parada
+Paiz
+Munford
+Moskowitz
+Mease
+Mcnary
+Mccusker
+Matt
+Lozoya
+Longmire
+Loesch
+Lasky
+Kuhlmann
+Krieg
+Koziol
+Kowalewski
+Konrad
+Kindle
+Jowers
+Jolin
+Jaco
+Hua
+Horgan
+Hine
+Hileman
+Hepner
+Heise
+Heady
+Hawkinson
+Hannigan
+Haberman
+Guilford
+Grimaldi
+Gilles
+Garton
+Gagliano
+Fruge
+Follett
+Fiscus
+Ferretti
+Ebner
+Easterday
+Eanes
+Dirks
+Dimarco
+Depalma
+Deforest
+Dance
+Cruce
+Craighead
+Christner
+Candler
+Cadwell
+Burchell
+Buettner
+Brinton
+Breed
+Brazier
+Brannen
+Brame
+Bova
+Bomar
+Blakeslee
+Belknap
+Bangs
+Balzer
+Athey
+Armes
+Alvis
+Alverson
+Alvardo
+Alter
+Zhao
+Yeung
+Yen
+Wheelock
+Westlund
+Wessels
+Volkman
+Threadgill
+Thelen
+Tandy
+Tague
+Ta
+Symons
+Swinford
+Sturtevant
+Straka
+Stier
+Stagner
+Segarra
+Seawright
+Sack
+Rutan
+Roux
+Ringler
+Riker
+Ramsdell
+Quattlebaum
+Purifoy
+Poulson
+Permenter
+Peloquin
+Pasley
+Pagel
+Osman
+Obannon
+Nygaard
+Nipper
+Newcomer
+Munos
+Motta
+Meadors
+Mcquiston
+Mcniel
+Mcmann
+Mccrae
+Mayne
+Matte
+Martine
+Lucy
+Legault
+Lechner
+Lack
+Kucera
+Krohn
+Kratzer
+Koopman
+Judson
+Jeske
+Horrocks
+Homes
+Hock
+Hibbler
+Hesson
+Hersh
+Harvin
+Halvorsen
+Griner
+Grindle
+Glen
+Gladstone
+Garofalo
+Frampton
+Forbis
+Fernando
+Eddington
+Diorio
+Dingus
+Dewar
+Desalvo
+Curcio
+Creasy
+Cortese
+Cordoba
+Connally
+Cluff
+Cascio
+Capuano
+Canaday
+Calabro
+Bussard
+Brayton
+Borja
+Bigley
+Arnone
+Arguelles
+Acuff
+Zamarripa
+Wooton
+Wolfgang
+Widner
+Wideman
+Threatt
+Thiele
+Templin
+Teeters
+Synder
+Swint
+Swick
+Sturges
+Stogner
+Stedman
+Spratt
+Six
+Siegfried
+Shetler
+Scull
+Savino
+Sather
+Rothwell
+Rook
+Rone
+Rolf
+Rhee
+Quevedo
+Privett
+Pouliot
+Poche
+Pickel
+Petrillo
+Pellegrini
+Peaslee
+Partlow
+Otey
+Nunnery
+Morelock
+Morello
+Meunier
+Messinger
+Mckie
+Mccubbin
+Mccarron
+Maria
+Lerch
+Lavine
+Laverty
+Lariviere
+Lamkin
+Kugler
+Krol
+Kissel
+Keeter
+Hummer
+Hubble
+Hickox
+Hetzel
+Hayner
+Hagy
+Hadlock
+Groh
+Gregorio
+Gottschalk
+Goodsell
+Gloria
+Gerry
+Gassaway
+Garrard
+Galligan
+Fye
+Firth
+Fenderson
+Feinstein
+Etienne
+Engleman
+Emrick
+Ellender
+Drews
+Doiron
+Degraw
+Deegan
+Dart
+Crissman
+Corr
+Cookson
+Coil
+Cleaves
+Charest
+Chapple
+Chaparro
+Castano
+Carpio
+Byer
+Bufford
+Bridgewater
+Bridgers
+Brandes
+Borrero
+Bonanno
+Aube
+Ancheta
+Abarca
+Abad
+Yung
+Yim
+Wooster
+Woodrow
+Wimbush
+Willhite
+Willams
+Wigley
+Weisberg
+Wardlaw
+Vigue
+Vanhook
+Unknow
+Torre
+Tasker
+Tarbox
+Strachan
+Standard
+Slover
+Shamblin
+Semple
+Schuyler
+Schrimsher
+Sayer
+Salzman
+Salomon
+Rubalcava
+Riles
+Rickey
+Reneau
+Reichel
+Rayfield
+Rabon
+Pyatt
+Prindle
+Poss
+Polito
+Plemmons
+Pesce
+Perrault
+Pereyra
+Ostrowski
+Nilsen
+Niemeyer
+Nick
+Munsey
+Mundell
+Moncada
+Miceli
+Meader
+Mcmasters
+Mckeehan
+Matsumoto
+Marron
+Marden
+Lizarraga
+Lingenfelter
+Lewallen
+Laurence
+Langan
+Lamanna
+Kovac
+Kinsler
+Kephart
+Keown
+Kass
+Kammerer
+Jeffreys
+Hysell
+Householder
+Hosmer
+Hardnett
+Hanner
+Guyette
+Greening
+Glazer
+Ginder
+Fromm
+Fortuna
+Fluellen
+Finkle
+Fey
+Fessler
+Essary
+Eisele
+Duren
+Dittmer
+Crochet
+Cosentino
+Cogan
+Coelho
+Cavin
+Carrizales
+Campuzano
+Brough
+Bow
+Bopp
+Bookman
+Bobb
+Blouin
+Beesley
+Battista
+Bascom
+Bakken
+Badgett
+Arneson
+Anselmo
+Albino
+Ahumada
+Agustin
+Woodyard
+Wolters
+Wireman
+Wilton
+Willison
+Warman
+Wan
+Waldrup
+Vowell
+Vantassel
+Vale
+Twombly
+Toomer
+Tennison
+Teets
+Tedeschi
+Swanner
+Swallow
+Stutz
+Stelly
+Sheehy
+Schermerhorn
+Scala
+Sandidge
+Salters
+Salo
+Saechao
+Roseboro
+Rolle
+Ressler
+Renz
+Renn
+Redford
+Raposa
+Rainbolt
+Pompey
+Pelfrey
+Orndorff
+Oney
+Nolin
+Nimmons
+Ney
+Nardone
+Myhre
+Morman
+Mines
+Menjivar
+Mcglone
+Mccammon
+Maxon
+Maris
+Marciano
+Manus
+Maiden
+Lowrance
+Lorenzen
+Lonergan
+Lollis
+Littles
+Lindahl
+Lansing
+Lamas
+Lach
+Kuster
+Krawczyk
+Knuth
+Knecht
+Kirkendall
+Keitt
+Keever
+Kantor
+Jarboe
+Hoye
+Houchens
+Holter
+Holsinger
+Hickok
+Herb
+Helwig
+Helgeson
+Heater
+Hassett
+Harner
+Hamman
+Hames
+Hadfield
+Goree
+Goldfarb
+Gaughan
+Gaudreau
+Gantz
+Gallion
+Frady
+Foti
+Flesher
+Ferrin
+Faught
+Engram
+Elbert
+Donegan
+Desouza
+Degroot
+Cutright
+Crowl
+Criner
+Coke
+Coan
+Clinkscales
+Chewning
+Chavira
+Catchings
+Carlock
+Bye
+Bulger
+Buenrostro
+Bramblett
+Brack
+Boulware
+Bordeaux
+Bookout
+Bitner
+Birt
+Baranowski
+Baisden
+Augustin
+Allmon
+Alberto
+Acklin
+Yoakum
+Wilbourn
+Whisler
+Weinberger
+Washer
+Vasques
+Vanzandt
+Vanatta
+Troxler
+Tomes
+Tindle
+Tims
+Throckmorton
+Thach
+Stpeter
+Stlaurent
+Stenson
+Spry
+Spitz
+Songer
+Snavely
+Sly
+Sleeper
+Shroyer
+Shortridge
+Shenk
+Sevier
+Seabrook
+Scrivner
+Saltzman
+Rosenberry
+Rockwood
+Robeson
+Roan
+Reiser
+Redwine
+Ramires
+Raber
+Profit
+Posner
+Popham
+Pipes
+Piotrowski
+Pinard
+Peterkin
+Pelham
+Peiffer
+Peay
+Peavey
+Nadler
+Musso
+Milo
+Millett
+Mestas
+Mcgowen
+Marques
+Marasco
+Manriquez
+Manos
+Mair
+Lipps
+Lesser
+Leiker
+Leeds
+Krumm
+Knorr
+Kinslow
+Kessel
+Kendricks
+Kelm
+Ito
+Irick
+Ickes
+Hurlburt
+Horta
+Hoekstra
+Heuer
+Helmuth
+Heatherly
+Hampson
+Hagar
+Haga
+Greenlaw
+Grau
+Godbey
+Gingras
+Gillies
+Gibb
+Gayden
+Gauvin
+Garrow
+Fontanez
+Florio
+Fleischman
+Finke
+Fasano
+Fan
+Faith
+Ezzell
+Ewers
+Eveland
+Eckenrode
+Duclos
+Drumm
+Dimmick
+Delancey
+Defazio
+Deacon
+Dashiell
+Damian
+Cusack
+Crowther
+Crigger
+Cray
+Coolidge
+Coldiron
+Cleland
+Chalfant
+Cassel
+Cape
+Camire
+Cabrales
+Broomfield
+Brittingham
+Brisson
+Brickey
+Braziel
+Brazell
+Bragdon
+Boulanger
+Bos
+Boman
+Bohannan
+Beem
+Barto
+Barre
+Barley
+Baptist
+Azar
+Ashbaugh
+Armistead
+Almazan
+Adamski
+Zendejas
+Winburn
+Willaims
+Wilhoit
+Westberry
+Wentzel
+Wendling
+Wager
+Visser
+Vanscoy
+Vankirk
+Vallee
+Tweedy
+Thornberry
+Sweeny
+Stalker
+Spradling
+Spano
+Smelser
+Shim
+Sechrist
+Schall
+Scaife
+Rugg
+Ruben
+Rothrock
+Roesler
+Riehl
+Ridings
+Render
+Ransdell
+Radke
+Pinero
+Petree
+Pendergast
+Peluso
+Pecoraro
+Pascoe
+Panek
+Oshiro
+Noon
+Navarrette
+Murguia
+Moores
+Moberg
+Mike
+Michaelis
+Mcwhirter
+Mcsweeney
+Mcquade
+Mccay
+Mauk
+Mariani
+Marceau
+Mandeville
+Maeda
+Lunde
+Ludlow
+Loeb
+Lindo
+Linderman
+Leveille
+Leith
+Larock
+Lambrecht
+Kulp
+Kinsley
+Kimberlin
+Kesterson
+Jacinto
+Ice
+Hui
+Hoyos
+Helfrich
+Hanke
+Hail
+Guillermo
+Grisby
+Goyette
+Gouveia
+Glazier
+Gile
+Gerena
+Gelinas
+Gasaway
+Garden
+Funches
+Fujimoto
+Flynt
+Fenske
+Fellers
+Fehr
+Eslinger
+Escalera
+Enciso
+Duley
+Dittman
+Dineen
+Diller
+Devault
+Dao
+Collings
+Clymer
+Clowers
+Chavers
+Charland
+Castorena
+Castello
+Camargo
+Bunce
+Bullen
+Boyes
+Borchers
+Borchardt
+Birnbaum
+Birdsall
+Billman
+Benites
+Bankhead
+Ange
+Ammerman
+Adkison
+Yuan
+Winegar
+Wickman
+Wear
+Warr
+Warnke
+Villeneuve
+Veasey
+Vassallo
+Vannatta
+Vadnais
+Twilley
+Truelove
+Towery
+Tomblin
+Tippett
+Theiss
+Talkington
+Talamantes
+Swart
+Swanger
+Streit
+Straw
+Stines
+Stabler
+Spurling
+Sobel
+Sine
+Simmers
+Shippy
+Shiflett
+Shearin
+Sauter
+Sanderlin
+Rusch
+Runkle
+Ruckman
+Rorie
+Roesch
+Roberto
+Richert
+Rehm
+Randel
+Ragin
+Quesenberry
+Puentes
+Plyler
+Plotkin
+Paugh
+Oshaughnessy
+Ohalloran
+Norsworthy
+Niemann
+Nader
+Moorefield
+Mooneyham
+Modica
+Miyamoto
+Mickel
+Mebane
+Mckinnie
+Mazurek
+Mancilla
+Lukas
+Lovins
+Loughlin
+Lotz
+Lindsley
+Liddle
+Levan
+Lederman
+Leclaire
+Lasseter
+Lapoint
+Lamoreaux
+Lafollette
+Kubiak
+Kirtley
+Keffer
+Kaczmarek
+Jennette
+Housman
+Honey
+Hiers
+Hibbert
+Herrod
+Hegarty
+Hathorn
+Harsh
+Greenhaw
+Grafton
+Govea
+Gardener
+Futch
+Furst
+Frisbee
+Fred
+Franko
+Forcier
+Foran
+Flickinger
+Fairfield
+Eure
+Emrich
+Embrey
+Edgington
+Ecklund
+Eckard
+Durante
+Deyo
+Delvecchio
+Deeds
+Dade
+Currey
+Cuff
+Creswell
+Cottrill
+Casavant
+Cartier
+Cargile
+Capel
+Cammack
+Calfee
+Buzzard
+Burse
+Burruss
+Brust
+Brousseau
+Bridwell
+Braaten
+Borkholder
+Bloomquist
+Bjork
+Bartelt
+Arp
+Amburgey
+Yeary
+Yao
+Whitefield
+Vinyard
+Vicente
+Vanvalkenburg
+Twitchell
+Timmins
+Tester
+Tapper
+Stringham
+Starcher
+Spotts
+Slaugh
+Simonsen
+Sheffer
+Sequeira
+Rosati
+Rode
+Rhymes
+Reza
+Record
+Quint
+Pollak
+Peirce
+Patillo
+Parkerson
+Paiva
+Nilson
+Nice
+Nevin
+Narcisse
+Nair
+Mitton
+Merriam
+Merced
+Meiners
+Mckain
+Mcelveen
+Mcbeth
+Marsden
+Marez
+Manke
+Mahurin
+Mabrey
+Luper
+Krull
+Kees
+Iles
+Hunsicker
+Hornbuckle
+Holtzclaw
+Hirt
+Hinnant
+Heston
+Hering
+Hemenway
+Hegwood
+Hearns
+Halterman
+Halls
+Guiterrez
+Grote
+Granillo
+Grainger
+Glasco
+Gilder
+Garren
+Garlock
+Garey
+Fu
+Fryar
+Fredricks
+Fraizer
+Foxx
+Foshee
+Ferrel
+Felty
+Feathers
+Everitt
+Evens
+Esser
+Elkin
+Eberhart
+Durso
+Duguay
+Driskill
+Doster
+Dewall
+Deveau
+Demps
+Demaio
+Delreal
+Deleo
+Delay
+Deem
+Darrah
+Cumberbatch
+Culberson
+Cranmer
+Cordle
+Colgan
+Chesley
+Cavallo
+Castellon
+Castelli
+Carreras
+Carnell
+Carmon
+Carmen
+Carlucci
+Bottom
+Bontrager
+Blumberg
+Blasingame
+Becton
+Ayon
+Artrip
+Arline
+Andujar
+Alkire
+Alder
+Agan
+Zukowski
+Zuckerman
+Zehr
+Wroblewski
+Wrigley
+Woodside
+Wigginton
+Westman
+Westgate
+Werts
+Washam
+Wardlow
+Walser
+Waiters
+Teller
+Tadlock
+Stuck
+Stringfield
+Stimpson
+Stickley
+Starbuck
+Standish
+Spurlin
+Spindler
+Speller
+Spaeth
+Sotomayor
+Sok
+Sluder
+Shryock
+Shepardson
+Shatley
+Scannell
+Santistevan
+Rosner
+Rolland
+Rhode
+Resto
+Reinhard
+Rathburn
+Prisco
+Poulsen
+Pinney
+Phares
+Pennock
+Pastrana
+Oviedo
+Ostler
+Noto
+Nauman
+Mulford
+Moise
+Moberly
+Mirabal
+Ming
+Metoyer
+Metheny
+Mentzer
+Meldrum
+Mcinturff
+Mcelyea
+Mcdougle
+Massaro
+Lumpkins
+Loveday
+Lofgren
+Loe
+Lirette
+Lesperance
+Lefkowitz
+Ledger
+Lauzon
+Lain
+Lachapelle
+Kurz
+Klassen
+Keough
+Kempton
+Kaelin
+Jeffords
+Im
+Huot
+Hsieh
+Hoyer
+Horwitz
+Hopp
+Hoeft
+Hennig
+Haskin
+Grill
+Gourdine
+Golightly
+Girouard
+Fulgham
+Fritsch
+Freer
+Frasher
+Foulk
+Firestone
+Fiorentino
+Fedor
+Feather
+Ensley
+Englehart
+Eells
+Ebel
+Dunphy
+Donahoe
+Dimas
+Dileo
+Dibenedetto
+Dabrowski
+Crick
+Coonrod
+Conder
+Coddington
+Chunn
+Choy
+Chaput
+Cerna
+Carreiro
+Calahan
+Braggs
+Bourdon
+Boner
+Bollman
+Bittle
+Ben
+Behm
+Bauder
+Batt
+Barreras
+Aubuchon
+Anzalone
+Adamo
+Zhou
+Zerbe
+Zachery
+Witty
+Wirt
+Willcox
+Westberg
+Weikel
+Waymire
+Vroman
+Vinci
+Vallejos
+Tutor
+Truesdell
+Troutt
+Trotta
+Tollison
+Toles
+Tichenor
+Tai
+Symonds
+Surles
+Sunday
+Strayer
+Stgeorge
+Sroka
+Sorrentino
+Solares
+Snelson
+Silvestri
+Sikorski
+Shawver
+Schumaker
+Schorr
+Schooley
+Scates
+Satterlee
+Satchell
+Sacks
+Rymer
+Roselli
+Robitaille
+Riegel
+Richer
+Regis
+Reames
+Provenzano
+Proper
+Priestley
+Plaisance
+Pettey
+Palomares
+Oman
+Nowakowski
+Nace
+Monette
+Minyard
+Mclamb
+Mchone
+Mccarroll
+Masson
+Marco
+Magoon
+Maddy
+Lundin
+Loza
+Licata
+Lesley
+Leonhardt
+Lema
+Landwehr
+Kircher
+Kinch
+Karpinski
+Johannsen
+Hussain
+Houghtaling
+Hoskinson
+Hollaway
+Holeman
+Hobgood
+Hilt
+Hiebert
+Gros
+Gram
+Goggin
+Gentle
+Geissler
+Gadbois
+Gabaldon
+Fleshman
+Flannigan
+Files
+Fairman
+Epp
+Eilers
+Dycus
+Dunmire
+Duffield
+Dowler
+Ditto
+Deloatch
+Dehaan
+Deemer
+Corner
+Clayborn
+Christofferso
+Chilson
+Chesney
+Chatfield
+Charlie
+Caster
+Carron
+Canale
+Camden
+Buff
+Brigman
+Branstetter
+Bosse
+Borton
+Bonar
+Blau
+Biron
+Beagle
+Barroso
+Arvin
+Arispe
+Zacharias
+Zabel
+Yaeger
+Works
+Woolford
+Whetzel
+Weakley
+Veatch
+Vandeusen
+Tufts
+Troxel
+Troche
+Traver
+Townsel
+Tosh
+Talarico
+Swilley
+Sterrett
+Stenger
+Springfield
+Speakman
+Sowards
+Sours
+Souders
+Souder
+Soles
+Sobers
+Snoddy
+Smither
+Sias
+Shute
+Shoaf
+Shahan
+Schuetz
+Scaggs
+Santini
+Rosson
+Rolen
+Robidoux
+Rentas
+Recio
+Pixley
+Pawlowski
+Pawlak
+Paull
+Pascal
+Overbey
+Orear
+Oliveri
+Oldenburg
+Nutting
+Naugle
+Mote
+Mossman
+Moor
+Misner
+Milazzo
+Michelson
+Mei
+Mcentee
+Mccullar
+Mccree
+Mcaleer
+Mazzone
+Maxim
+Marshal
+Mandell
+Manahan
+Malott
+Maisonet
+Mailloux
+Lumley
+Lowrie
+Louviere
+Lipinski
+Lindemann
+Leppert
+Leopold
+Leasure
+Leaf
+Labarge
+Kubik
+Knisely
+Knepp
+Kenworthy
+Kennelly
+Kelch
+Karg
+Kanter
+Ignacio
+Hyer
+Houchin
+Hosley
+Hosler
+Hollon
+Holleman
+Heitman
+Hebb
+Haggins
+Gwaltney
+Guin
+Greenman
+Goulding
+Gorden
+Goodyear
+Geraci
+Georges
+Gathers
+Frison
+Feagin
+Falconer
+Espada
+Erving
+Erikson
+Eisenhauer
+Eder
+Ebeling
+Durgin
+Drown
+Dowdle
+Dinwiddie
+Delcastillo
+Dedrick
+Crimmins
+Covell
+Cournoyer
+Coria
+Cohan
+Cataldo
+Carpentier
+Canas
+Campa
+Brode
+Brashears
+Blaser
+Bicknell
+Berk
+Bednar
+Barwick
+Ascencio
+Althoff
+Almodovar
+Alamo
+Zirkle
+Zabala
+Xu
+Wolverton
+Winebrenner
+Wetherell
+Westlake
+Wegener
+Weddington
+Vong
+Tuten
+Trosclair
+Trim
+Tressler
+Theroux
+Teske
+Sword
+Swinehart
+Swensen
+Sundquist
+Southall
+Socha
+Sizer
+Silverberg
+Shortt
+Shimizu
+Sherrard
+Shen
+Shaeffer
+Seth
+Scheid
+Scheetz
+Saravia
+Sanner
+Rubinstein
+Rozell
+Romer
+Ringo
+Rheaume
+Reisinger
+Raven
+Randles
+Pullum
+Petrella
+Payan
+Papp
+Pablo
+Nordin
+Norcross
+Nicoletti
+

<TRUNCATED>