Merge
authorduke
Wed, 05 Jul 2017 18:15:14 +0200
changeset 13120 d842aa2e4941
parent 13119 c35f7a2acbec (current diff)
parent 13118 90920558e06c (diff)
child 13122 eed43d7c9df5
Merge
--- a/.hgtags-top-repo	Thu Jun 28 09:33:05 2012 -0700
+++ b/.hgtags-top-repo	Wed Jul 05 18:15:14 2017 +0200
@@ -166,3 +166,4 @@
 1ce5dc16416611c58b7480ca67a2eee5153498a6 jdk8-b42
 661c9aae602bbd9766d12590800c90f1edd1d8dd jdk8-b43
 e4f81a817447c3a4f6868f083c81c2fb1b15d44c jdk8-b44
+633f2378c904c92bb922a6e19e9f62fe8eac14af jdk8-b45
--- a/hotspot/.hgtags	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/.hgtags	Wed Jul 05 18:15:14 2017 +0200
@@ -256,3 +256,5 @@
 e77b8e0ed1f84e3e268239e276c7ab64fa573baa jdk8-b43
 5ba29a1db46ecb80a321ca873adb56a3fe6ad320 hs24-b14
 831e5c76a20af18f3c08c5a95ed31be0e128a010 jdk8-b44
+9d5f20961bc5846fa8d098d534effafbbdae0a58 jdk8-b45
+40e5a3f2907ed02b335c7caa8ecf068cc801380d hs24-b15
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpot.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/BugSpot.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -657,7 +657,7 @@
     while (fr != null) {
       trace.add(new StackTraceEntry(fr, getCDebugger()));
       try {
-        fr = fr.sender();
+        fr = fr.sender(t);
       } catch (AddressException e) {
         e.printStackTrace();
         showMessageDialog("Error while walking stack; stack trace will be truncated\n(see console for details)",
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/amd64/BsdAMD64CFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/amd64/BsdAMD64CFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.debugger.bsd.amd64;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.debugger.amd64.*;
 import sun.jvm.hotspot.debugger.bsd.*;
 import sun.jvm.hotspot.debugger.cdbg.*;
 import sun.jvm.hotspot.debugger.cdbg.basic.*;
@@ -51,8 +52,11 @@
       return rbp;
    }
 
-   public CFrame sender() {
-      if (rbp == null) {
+   public CFrame sender(ThreadProxy thread) {
+      AMD64ThreadContext context = (AMD64ThreadContext) thread.getContext();
+      Address rsp = context.getRegisterAsAddress(AMD64ThreadContext.RSP);
+
+      if ( (rbp == null) || rbp.lessThan(rsp) ) {
         return null;
       }
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/x86/BsdX86CFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/bsd/x86/BsdX86CFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 import sun.jvm.hotspot.debugger.bsd.*;
 import sun.jvm.hotspot.debugger.cdbg.*;
 import sun.jvm.hotspot.debugger.cdbg.basic.*;
+import sun.jvm.hotspot.debugger.x86.*;
 
 final public class BsdX86CFrame extends BasicCFrame {
    // package/class internals only
@@ -52,8 +53,11 @@
       return ebp;
    }
 
-   public CFrame sender() {
-      if (ebp == null) {
+   public CFrame sender(ThreadProxy thread) {
+      X86ThreadContext context = (X86ThreadContext) thread.getContext();
+      Address esp = context.getRegisterAsAddress(X86ThreadContext.ESP);
+
+      if ( (ebp == null) || ebp.lessThan(esp) ) {
         return null;
       }
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/CFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/CFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -34,7 +34,7 @@
 
 public interface CFrame {
   /** Returns null when no more frames on stack */
-  public CFrame sender();
+  public CFrame sender(ThreadProxy th);
 
   /** Get the program counter of this frame */
   public Address pc();
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/amd64/AMD64CFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/amd64/AMD64CFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.debugger.cdbg.basic.amd64;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.debugger.amd64.*;
 import sun.jvm.hotspot.debugger.cdbg.*;
 import sun.jvm.hotspot.debugger.cdbg.basic.*;
 
@@ -43,8 +44,11 @@
     this.pc  = pc;
   }
 
-  public CFrame sender() {
-    if (rbp == null) {
+  public CFrame sender(ThreadProxy thread) {
+    AMD64ThreadContext context = (AMD64ThreadContext) thread.getContext();
+    Address rsp = context.getRegisterAsAddress(AMD64ThreadContext.RSP);
+
+    if ( (rbp == null) || rbp.lessThan(rsp) ) {
       return null;
     }
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/x86/X86CFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/cdbg/basic/x86/X86CFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.debugger.cdbg.basic.x86;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.debugger.x86.*;
 import sun.jvm.hotspot.debugger.cdbg.*;
 import sun.jvm.hotspot.debugger.cdbg.basic.*;
 
@@ -43,8 +44,11 @@
     this.pc  = pc;
   }
 
-  public CFrame sender() {
-    if (ebp == null) {
+  public CFrame sender(ThreadProxy thread) {
+    X86ThreadContext context = (X86ThreadContext) thread.getContext();
+    Address esp = context.getRegisterAsAddress(X86ThreadContext.ESP);
+
+    if ( (ebp == null) || ebp.lessThan(esp) ) {
       return null;
     }
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.debugger.linux.amd64;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.debugger.amd64.*;
 import sun.jvm.hotspot.debugger.linux.*;
 import sun.jvm.hotspot.debugger.cdbg.*;
 import sun.jvm.hotspot.debugger.cdbg.basic.*;
@@ -51,8 +52,11 @@
       return rbp;
    }
 
-   public CFrame sender() {
-      if (rbp == null) {
+   public CFrame sender(ThreadProxy thread) {
+      AMD64ThreadContext context = (AMD64ThreadContext) thread.getContext();
+      Address rsp = context.getRegisterAsAddress(AMD64ThreadContext.RSP);
+
+      if ( (rbp == null) || rbp.lessThan(rsp) ) {
         return null;
       }
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/sparc/LinuxSPARCCFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/sparc/LinuxSPARCCFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,7 +57,7 @@
       return sp;
    }
 
-   public CFrame sender() {
+   public CFrame sender(ThreadProxy thread) {
       if (sp == null) {
         return null;
       }
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86CFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/x86/LinuxX86CFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 import sun.jvm.hotspot.debugger.linux.*;
 import sun.jvm.hotspot.debugger.cdbg.*;
 import sun.jvm.hotspot.debugger.cdbg.basic.*;
+import sun.jvm.hotspot.debugger.x86.*;
 
 final public class LinuxX86CFrame extends BasicCFrame {
    // package/class internals only
@@ -52,8 +53,11 @@
       return ebp;
    }
 
-   public CFrame sender() {
-      if (ebp == null) {
+   public CFrame sender(ThreadProxy thread) {
+      X86ThreadContext context = (X86ThreadContext) thread.getContext();
+      Address esp = context.getRegisterAsAddress(X86ThreadContext.ESP);
+
+      if ( (ebp == null) || ebp.lessThan(esp) ) {
         return null;
       }
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcCFrame.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcCFrame.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,7 +37,7 @@
       return fp;
    }
 
-   public CFrame sender() {
+   public CFrame sender(ThreadProxy t) {
       return sender;
    }
 
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -141,18 +141,19 @@
   public static String stringOopToString(Oop stringOop) {
     if (offsetField == null) {
       InstanceKlass k = (InstanceKlass) stringOop.getKlass();
-      offsetField = (IntField) k.findField("offset", "I");
-      countField  = (IntField) k.findField("count",  "I");
+      offsetField = (IntField) k.findField("offset", "I");   // optional
+      countField  = (IntField) k.findField("count",  "I");   // optional
       valueField  = (OopField) k.findField("value",  "[C");
       if (Assert.ASSERTS_ENABLED) {
-        Assert.that(offsetField != null &&
-                    countField != null &&
-                    valueField != null, "must find all java.lang.String fields");
+         Assert.that(valueField != null, "Field \'value\' of java.lang.String not found");
       }
     }
-    return charArrayToString((TypeArray) valueField.getValue(stringOop),
-                             offsetField.getValue(stringOop),
-                             countField.getValue(stringOop));
+    if (offsetField != null && countField != null) {
+      return charArrayToString((TypeArray) valueField.getValue(stringOop),
+                               offsetField.getValue(stringOop),
+                               countField.getValue(stringOop));
+    }
+    return  charArrayToString((TypeArray) valueField.getValue(stringOop));
   }
 
   public static String stringOopToEscapedString(Oop stringOop) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/PStack.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/tools/PStack.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -158,7 +158,7 @@
                         printUnknown(out);
                      }
                   }
-                  f = f.sender();
+                  f = f.sender(th);
                }
             } catch (Exception exp) {
                exp.printStackTrace();
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/ObjectReader.java	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/ObjectReader.java	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -85,6 +85,21 @@
       this(new ProcImageClassLoader());
    }
 
+   static void debugPrintln(String msg) {
+      if (DEBUG) {
+         System.err.println("DEBUG>" + msg);
+      }
+   }
+
+   static void debugPrintStackTrace(Exception exp) {
+      if (DEBUG) {
+         StackTraceElement[] els = exp.getStackTrace();
+         for (int i = 0; i < els.length; i++) {
+            System.err.println("DEBUG>" + els[i].toString());
+         }
+      }
+   }
+
    public Object readObject(Oop oop) throws ClassNotFoundException {
       if (oop instanceof Instance) {
          return readInstance((Instance) oop);
@@ -120,13 +135,96 @@
    }
 
    protected Symbol javaLangString;
+   protected Symbol javaUtilHashtableEntry;
+   protected Symbol javaUtilHashtable;
+   protected Symbol javaUtilProperties;
+
+   protected Symbol getVMSymbol(String name) {
+      return VM.getVM().getSymbolTable().probe(name);
+   }
+
    protected Symbol javaLangString() {
       if (javaLangString == null) {
-         javaLangString = VM.getVM().getSymbolTable().probe("java/lang/String");
+         javaLangString = getVMSymbol("java/lang/String");
       }
       return javaLangString;
    }
 
+   protected Symbol javaUtilHashtableEntry() {
+      if (javaUtilHashtableEntry == null) {
+         javaUtilHashtableEntry = getVMSymbol("java/util/Hashtable$Entry");
+      }
+      return javaUtilHashtableEntry;
+   }
+
+   protected Symbol javaUtilHashtable() {
+      if (javaUtilHashtable == null) {
+         javaUtilHashtable = getVMSymbol("java/util/Hashtable");
+      }
+      return javaUtilHashtable;
+   }
+
+   protected Symbol javaUtilProperties() {
+      if (javaUtilProperties == null) {
+         javaUtilProperties = getVMSymbol("java/util/Properties");
+      }
+      return javaUtilProperties;
+   }
+
+   private void setHashtableEntry(java.util.Hashtable p, Oop oop) {
+      InstanceKlass ik = (InstanceKlass)oop.getKlass();
+      OopField keyField = (OopField)ik.findField("key", "Ljava/lang/Object;");
+      OopField valueField = (OopField)ik.findField("value", "Ljava/lang/Object;");
+      OopField nextField = (OopField)ik.findField("next", "Ljava/util/Hashtable$Entry;");
+      if (DEBUG) {
+         if (Assert.ASSERTS_ENABLED) {
+            Assert.that(ik.getName().equals(javaUtilHashtableEntry()), "Not a Hashtable$Entry?");
+            Assert.that(keyField != null && valueField != null && nextField != null, "Invalid fields!");
+         }
+      }
+
+      Object key = null;
+      Object value = null;
+      Oop next = null;
+      try {
+         key = readObject(keyField.getValue(oop));
+         value = readObject(valueField.getValue(oop));
+         next =  (Oop)nextField.getValue(oop);
+         // For Properties, should use setProperty(k, v). Since it only runs in SA
+         // using put(k, v) should be OK.
+         p.put(key, value);
+         if (next != null) {
+            setHashtableEntry(p, next);
+         }
+      } catch (ClassNotFoundException ce) {
+         if( DEBUG) {
+            debugPrintln("Class not found " + ce);
+            debugPrintStackTrace(ce);
+         }
+      }
+   }
+
+   protected Object getHashtable(Instance oop, boolean isProperties) {
+      InstanceKlass k = (InstanceKlass)oop.getKlass();
+      OopField tableField = (OopField)k.findField("table", "[Ljava/util/Hashtable$Entry;");
+      if (tableField == null) {
+         debugPrintln("Could not find field of [Ljava/util/Hashtable$Entry;");
+         return null;
+      }
+      java.util.Hashtable table = (isProperties) ? new java.util.Properties()
+                                                 : new java.util.Hashtable();
+      ObjArray kvs = (ObjArray)tableField.getValue(oop);
+      long size = kvs.getLength();
+      debugPrintln("Hashtable$Entry Size = " + size);
+      for (long i=0; i<size; i++) {
+         Oop entry = kvs.getObjAt(i);
+         if (entry != null && entry.isInstance()) {
+            setHashtableEntry(table, entry);
+         }
+      }
+      return table;
+   }
+
    public Object readInstance(Instance oop) throws ClassNotFoundException {
       Object result = getFromObjTable(oop);
       if (result == null) {
@@ -134,11 +232,21 @@
          // Handle java.lang.String instances differently. As part of JSR-133, fields of immutable
          // classes have been made final. The algorithm below will not be able to read Strings from
          // debuggee (can't use reflection to set final fields). But, need to read Strings is very
-         // important. FIXME: need a framework to handle many other special cases.
+         // important.
+         // Same for Hashtable, key and hash are final, could not be set in the algorithm too.
+         // FIXME: need a framework to handle many other special cases.
          if (kls.getName().equals(javaLangString())) {
             return OopUtilities.stringOopToString(oop);
          }
 
+         if (kls.getName().equals(javaUtilHashtable())) {
+            return getHashtable(oop, false);
+         }
+
+         if (kls.getName().equals(javaUtilProperties())) {
+            return getHashtable(oop, true);
+         }
+
          Class clz = readClass(kls);
          try {
             result = clz.newInstance();
@@ -164,8 +272,8 @@
                   break;
                } catch (Exception exp) {
                   if (DEBUG) {
-                     System.err.println("Can't create object using " + c);
-                     exp.printStackTrace();
+                     debugPrintln("Can't create object using " + c);
+                     debugPrintStackTrace(exp);
                   }
                }
             }
@@ -329,8 +437,8 @@
                                      arrayObj[ifd.getIndex()] = readObject(field.getValue(getObj()));
                                   } catch (Exception e) {
                                      if (DEBUG) {
-                                        System.err.println("Array element set failed for " + ifd);
-                                        e.printStackTrace();
+                                        debugPrintln("Array element set failed for " + ifd);
+                                        debugPrintStackTrace(e);
                                      }
                                   }
                                }
@@ -348,8 +456,8 @@
 
       private void printFieldSetError(java.lang.reflect.Field f, Exception ex) {
          if (DEBUG) {
-            if (f != null) System.err.println("Field set failed for " + f);
-            ex.printStackTrace();
+            if (f != null) debugPrintln("Field set failed for " + f);
+            debugPrintStackTrace(ex);
          }
       }
 
@@ -601,7 +709,7 @@
             return Class.forName(className, true, cl);
          } catch (Exception e) {
             if (DEBUG) {
-               System.err.println("Can't load class " + className);
+               debugPrintln("Can't load class " + className);
             }
             throw new RuntimeException(e);
          }
--- a/hotspot/make/bsd/makefiles/universal.gmk	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/bsd/makefiles/universal.gmk	Wed Jul 05 18:15:14 2017 +0200
@@ -110,4 +110,5 @@
 
 .PHONY:	universal_product universal_fastdebug universal_debug \
 	all_product_universal all_fastdebug_universal all_debug_universal \
-	universalize export_universal copy_universal
+	universalize export_universal copy_universal \
+	$(UNIVERSAL_LIPO_LIST) $(UNIVERSAL_COPY_LIST)
--- a/hotspot/make/hotspot_version	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/hotspot_version	Wed Jul 05 18:15:14 2017 +0200
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=24
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=14
+HS_BUILD_NUMBER=15
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=8
--- a/hotspot/make/jprt.properties	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/jprt.properties	Wed Jul 05 18:15:14 2017 +0200
@@ -102,6 +102,11 @@
 jprt.my.linux.armvfp.jdk7u6=${jprt.my.linux.armvfp.jdk7}
 jprt.my.linux.armvfp=${jprt.my.linux.armvfp.${jprt.tools.default.release}}
 
+jprt.my.linux.armv6.jdk8=linux_armv6_2.6
+jprt.my.linux.armv6.jdk7=linux_armv6_2.6
+jprt.my.linux.armv6.jdk7u6=${jprt.my.linux.armv6.jdk7}
+jprt.my.linux.armv6=${jprt.my.linux.armv6.${jprt.tools.default.release}}
+
 jprt.my.linux.armsflt.jdk8=linux_armsflt_2.6
 jprt.my.linux.armsflt.jdk7=linux_armsflt_2.6
 jprt.my.linux.armsflt.jdk7u6=${jprt.my.linux.armsflt.jdk7}
@@ -134,7 +139,7 @@
     ${jprt.my.macosx.x64}-{product|fastdebug|debug}, \
     ${jprt.my.windows.i586}-{product|fastdebug|debug}, \
     ${jprt.my.windows.x64}-{product|fastdebug|debug}, \
-    ${jprt.my.linux.armvfp}-{product|fastdebug}
+    ${jprt.my.linux.armv6}-{product|fastdebug}
 
 jprt.build.targets.open= \
     ${jprt.my.solaris.i586}-{productOpen}, \
--- a/hotspot/make/pic.make	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/pic.make	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 #
 # This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,13 @@
 
 ifneq ($(OSNAME), windows)
   ifndef LP64
+    PARTIAL_NONPIC=1
+  endif
+  PIC_ARCH = ppc
+  ifneq ("$(filter $(PIC_ARCH),$(BUILDARCH))","")
+    PARTIAL_NONPIC=0
+  endif
+  ifeq ($(PARTIAL_NONPIC),1)
     NONPIC_DIRS  = memory oops gc_implementation gc_interface 
     NONPIC_DIRS  := $(foreach dir,$(NONPIC_DIRS), $(GAMMADIR)/src/share/vm/$(dir))
     # Look for source files under NONPIC_DIRS
--- a/hotspot/make/solaris/makefiles/add_gnu_debuglink.make	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/solaris/makefiles/add_gnu_debuglink.make	Wed Jul 05 18:15:14 2017 +0200
@@ -24,8 +24,11 @@
 
 # Rules to build add_gnu_debuglink, used by vm.make on Solaris
 
-GENERATED                 = ../generated
-ADD_GNU_DEBUGLINK         = $(GENERATED)/add_gnu_debuglink
+# Allow $(ADD_GNU_DEBUGLINK) to be called from any directory.
+# We don't set or use the GENERATED macro to avoid affecting
+# other HotSpot Makefiles.
+TOPDIR                    = $(shell echo `pwd`)
+ADD_GNU_DEBUGLINK         = $(TOPDIR)/../generated/add_gnu_debuglink
 
 ADD_GNU_DEBUGLINK_DIR     = $(GAMMADIR)/src/os/solaris/add_gnu_debuglink
 ADD_GNU_DEBUGLINK_SRC     = $(ADD_GNU_DEBUGLINK_DIR)/add_gnu_debuglink.c
--- a/hotspot/make/solaris/makefiles/defs.make	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/solaris/makefiles/defs.make	Wed Jul 05 18:15:14 2017 +0200
@@ -203,10 +203,18 @@
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.diz
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.diz
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.diz
+      ifeq ($(ARCH_DATA_MODEL),32)
+        EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.diz
+        EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.diz
+      endif
     else
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.debuginfo
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_db.debuginfo
       EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm_dtrace.debuginfo
+      ifeq ($(ARCH_DATA_MODEL),32)
+        EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_db.debuginfo
+        EXPORT_LIST += $(EXPORT_SERVER_DIR)/64/libjvm_dtrace.debuginfo
+      endif
     endif
   endif
 endif
--- a/hotspot/make/solaris/makefiles/dtrace.make	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/solaris/makefiles/dtrace.make	Wed Jul 05 18:15:14 2017 +0200
@@ -94,23 +94,24 @@
 # Making 64/libjvm_db.so: 64-bit version of libjvm_db.so which handles 32-bit libjvm.so
 ifneq ("${ISA}","${BUILDARCH}")
 
-XLIBJVM_DB = 64/$(LIBJVM_DB)
-XLIBJVM_DB_G = 64/$(LIBJVM_DB_G)
-XLIBJVM_DTRACE = 64/$(LIBJVM_DTRACE)
-XLIBJVM_DTRACE_G = 64/$(LIBJVM_DTRACE_G)
+XLIBJVM_DIR = 64
+XLIBJVM_DB = $(XLIBJVM_DIR)/$(LIBJVM_DB)
+XLIBJVM_DB_G = $(XLIBJVM_DIR)/$(LIBJVM_DB_G)
+XLIBJVM_DTRACE = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE)
+XLIBJVM_DTRACE_G = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_G)
 
-XLIBJVM_DB_DEBUGINFO       = 64/$(LIBJVM_DB_DEBUGINFO)
-XLIBJVM_DB_DIZ             = 64/$(LIBJVM_DB_DIZ)
-XLIBJVM_DB_G_DEBUGINFO     = 64/$(LIBJVM_DB_G_DEBUGINFO)
-XLIBJVM_DB_G_DIZ           = 64/$(LIBJVM_DB_G_DIZ)
-XLIBJVM_DTRACE_DEBUGINFO   = 64/$(LIBJVM_DTRACE_DEBUGINFO)
-XLIBJVM_DTRACE_DIZ         = 64/$(LIBJVM_DTRACE_DIZ)
-XLIBJVM_DTRACE_G_DEBUGINFO = 64/$(LIBJVM_DTRACE_G_DEBUGINFO)
-XLIBJVM_DTRACE_G_DIZ       = 64/$(LIBJVM_DTRACE_G_DIZ)
+XLIBJVM_DB_DEBUGINFO       = $(XLIBJVM_DIR)/$(LIBJVM_DB_DEBUGINFO)
+XLIBJVM_DB_DIZ             = $(XLIBJVM_DIR)/$(LIBJVM_DB_DIZ)
+XLIBJVM_DB_G_DEBUGINFO     = $(XLIBJVM_DIR)/$(LIBJVM_DB_G_DEBUGINFO)
+XLIBJVM_DB_G_DIZ           = $(XLIBJVM_DIR)/$(LIBJVM_DB_G_DIZ)
+XLIBJVM_DTRACE_DEBUGINFO   = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DEBUGINFO)
+XLIBJVM_DTRACE_DIZ         = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_DIZ)
+XLIBJVM_DTRACE_G_DEBUGINFO = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_G_DEBUGINFO)
+XLIBJVM_DTRACE_G_DIZ       = $(XLIBJVM_DIR)/$(LIBJVM_DTRACE_G_DIZ)
 
 $(XLIBJVM_DB): $(ADD_GNU_DEBUGLINK) $(FIX_EMPTY_SEC_HDR_FLAGS) $(DTRACE_SRCDIR)/$(JVM_DB).c $(JVMOFFS).h $(LIBJVM_DB_MAPFILE)
 	@echo Making $@
-	$(QUIETLY) mkdir -p 64/ ; \
+	$(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \
 	$(CC) $(SYMFLAG) $(ARCHFLAG/$(ISA)) -D$(TYPE) -I. -I$(GENERATED) \
 		$(SHARED_FLAG) $(LFLAGS_JVM_DB) -o $@ $(DTRACE_SRCDIR)/$(JVM_DB).c -lc
 	[ -f $(XLIBJVM_DB_G) ] || { ln -s $(LIBJVM_DB) $(XLIBJVM_DB_G); }
@@ -124,8 +125,10 @@
 	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DB_DEBUGINFO)
 # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
 # Use $(ADD_GNU_DEBUGLINK) until a fixed $(OBJCOPY) is available.
-#	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(XLIBJVM_DB_DEBUGINFO) $@
-	$(QUIETLY) $(ADD_GNU_DEBUGLINK) $(XLIBJVM_DB_DEBUGINFO) $@
+#         $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB) ;
+# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
+# in the link name:
+	( cd $(XLIBJVM_DIR) && $(ADD_GNU_DEBUGLINK) $(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB) )
   ifeq ($(STRIP_POLICY),all_strip)
 	$(QUIETLY) $(STRIP) $@
   else
@@ -134,17 +137,19 @@
     # implied else here is no stripping at all
     endif
   endif
-	[ -f $(XLIBJVM_DB_G_DEBUGINFO) ] || { ln -s $(XLIBJVM_DB_DEBUGINFO) $(XLIBJVM_DB_G_DEBUGINFO); }
+	[ -f $(XLIBJVM_DB_G_DEBUGINFO) ] || { cd $(XLIBJVM_DIR) && ln -s $(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB_G_DEBUGINFO); }
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
-	$(ZIPEXE) -q -y $(XLIBJVM_DB_DIZ) $(XLIBJVM_DB_DEBUGINFO) $(XLIBJVM_DB_G_DEBUGINFO)
+# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
+# in the archived name:
+	( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DB_DIZ) $(LIBJVM_DB_DEBUGINFO) $(LIBJVM_DB_G_DEBUGINFO) )
 	$(RM) $(XLIBJVM_DB_DEBUGINFO) $(XLIBJVM_DB_G_DEBUGINFO)
-	[ -f $(XLIBJVM_DB_G_DIZ) ] || { ln -s $(XLIBJVM_DB_DIZ) $(XLIBJVM_DB_G_DIZ); }
+	[ -f $(XLIBJVM_DB_G_DIZ) ] || { cd $(XLIBJVM_DIR) && ln -s $(LIBJVM_DB_DIZ) $(LIBJVM_DB_G_DIZ); }
   endif
 endif
 
 $(XLIBJVM_DTRACE): $(ADD_GNU_DEBUGLINK) $(FIX_EMPTY_SEC_HDR_FLAGS) $(DTRACE_SRCDIR)/$(JVM_DTRACE).c $(DTRACE_SRCDIR)/$(JVM_DTRACE).h $(LIBJVM_DTRACE_MAPFILE)
 	@echo Making $@
-	$(QUIETLY) mkdir -p 64/ ; \
+	$(QUIETLY) mkdir -p $(XLIBJVM_DIR) ; \
 	$(CC) $(SYMFLAG) $(ARCHFLAG/$(ISA)) -D$(TYPE) -I. \
 		$(SHARED_FLAG) $(LFLAGS_JVM_DTRACE) -o $@ $(DTRACE_SRCDIR)/$(JVM_DTRACE).c -lc -lthread -ldoor
 	[ -f $(XLIBJVM_DTRACE_G) ] || { ln -s $(LIBJVM_DTRACE) $(XLIBJVM_DTRACE_G); }
@@ -153,8 +158,10 @@
 	$(QUIETLY) $(FIX_EMPTY_SEC_HDR_FLAGS) $@
 	$(QUIETLY) $(OBJCOPY) --only-keep-debug $@ $(XLIBJVM_DTRACE_DEBUGINFO)
 # $(OBJCOPY) --add-gnu-debuglink=... corrupts SUNW_* sections.
-#	$(QUIETLY) $(OBJCOPY) --add-gnu-debuglink=$(XLIBJVM_DTRACE_DEBUGINFO) $@
-	$(QUIETLY) $(ADD_GNU_DEBUGLINK) $(XLIBJVM_DTRACE_DEBUGINFO) $@
+#         $(OBJCOPY) --add-gnu-debuglink=$(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE) ;
+# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
+# in the link name:
+	( cd $(XLIBJVM_DIR) && $(ADD_GNU_DEBUGLINK) $(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE) )
   ifeq ($(STRIP_POLICY),all_strip)
 	$(QUIETLY) $(STRIP) $@
   else
@@ -163,11 +170,13 @@
     # implied else here is no stripping at all
     endif
   endif
-	[ -f $(XLIBJVM_DTRACE_G_DEBUGINFO) ] || { ln -s $(XLIBJVM_DTRACE_DEBUGINFO) $(XLIBJVM_DTRACE_G_DEBUGINFO); }
+	[ -f $(XLIBJVM_DTRACE_G_DEBUGINFO) ] || { cd $(XLIBJVM_DIR) && ln -s $(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE_G_DEBUGINFO); }
   ifeq ($(ZIP_DEBUGINFO_FILES),1)
-	$(ZIPEXE) -q -y $(XLIBJVM_DTRACE_DIZ) $(XLIBJVM_DTRACE_DEBUGINFO) $(XLIBJVM_DTRACE_G_DEBUGINFO)
+# Do this part in the $(XLIBJVM_DIR) subdir so $(XLIBJVM_DIR) is not
+# in the archived name:
+	( cd $(XLIBJVM_DIR) && $(ZIPEXE) -q -y $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_DEBUGINFO) $(LIBJVM_DTRACE_G_DEBUGINFO) )
 	$(RM) $(XLIBJVM_DTRACE_DEBUGINFO) $(XLIBJVM_DTRACE_G_DEBUGINFO)
-	[ -f $(XLIBJVM_DTRACE_G_DIZ) ] || { ln -s $(XLIBJVM_DTRACE_DIZ) $(XLIBJVM_DTRACE_G_DIZ); }
+	[ -f $(XLIBJVM_DTRACE_G_DIZ) ] || { cd $(XLIBJVM_DIR) && ln -s $(LIBJVM_DTRACE_DIZ) $(LIBJVM_DTRACE_G_DIZ); }
   endif
 endif
 
--- a/hotspot/make/solaris/makefiles/fix_empty_sec_hdr_flags.make	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/make/solaris/makefiles/fix_empty_sec_hdr_flags.make	Wed Jul 05 18:15:14 2017 +0200
@@ -24,8 +24,11 @@
 
 # Rules to build fix_empty_sec_hdr_flags, used by vm.make on Solaris
 
-GENERATED                       = ../generated
-FIX_EMPTY_SEC_HDR_FLAGS         = $(GENERATED)/fix_empty_sec_hdr_flags
+# Allow $(FIX_EMPTY_SEC_HDR_FLAGS) to be called from any directory.
+# We don't set or use the GENERATED macro to avoid affecting
+# other HotSpot Makefiles.
+TOPDIR                          = $(shell echo `pwd`)
+FIX_EMPTY_SEC_HDR_FLAGS         = $(TOPDIR)/../generated/fix_empty_sec_hdr_flags
 
 FIX_EMPTY_SEC_HDR_FLAGS_DIR     = $(GAMMADIR)/src/os/solaris/fix_empty_sec_hdr_flags
 FIX_EMPTY_SEC_HDR_FLAGS_SRC     = $(FIX_EMPTY_SEC_HDR_FLAGS_DIR)/fix_empty_sec_hdr_flags.c
--- a/hotspot/src/cpu/sparc/vm/sparc.ad	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -678,18 +678,26 @@
 
 static inline jdouble replicate_immI(int con, int count, int width) {
   // Load a constant replicated "count" times with width "width"
+  assert(count*width == 8 && width <= 4, "sanity");
   int bit_width = width * 8;
-  jlong elt_val = con;
-  elt_val &= (((jlong) 1) << bit_width) - 1;  // mask off sign bits
-  jlong val = elt_val;
+  jlong val = con;
+  val &= (((jlong) 1) << bit_width) - 1;  // mask off sign bits
   for (int i = 0; i < count - 1; i++) {
-    val <<= bit_width;
-    val |= elt_val;
+    val |= (val << bit_width);
   }
   jdouble dval = *((jdouble*) &val);  // coerce to double type
   return dval;
 }
 
+static inline jdouble replicate_immF(float con) {
+  // Replicate float con 2 times and pack into vector.
+  int val = *((int*)&con);
+  jlong lval = val;
+  lval = (lval << 32) | (lval & 0xFFFFFFFFl);
+  jdouble dval = *((jdouble*) &lval);  // coerce to double type
+  return dval;
+}
+
 // Standard Sparc opcode form2 field breakdown
 static inline void emit2_19(CodeBuffer &cbuf, int f30, int f29, int f25, int f22, int f20, int f19, int f0 ) {
   f0 &= (1<<19)-1;     // Mask displacement to 19 bits
@@ -791,6 +799,7 @@
     case Assembler::stdf_op3: st_op = Op_StoreD; break;
 
     case Assembler::ldsb_op3: ld_op = Op_LoadB; break;
+    case Assembler::ldub_op3: ld_op = Op_LoadUB; break;
     case Assembler::lduh_op3: ld_op = Op_LoadUS; break;
     case Assembler::ldsh_op3: ld_op = Op_LoadS; break;
     case Assembler::ldx_op3:  // may become LoadP or stay LoadI
@@ -799,7 +808,6 @@
     case Assembler::ldd_op3:  ld_op = Op_LoadL; break;
     case Assembler::ldf_op3:  ld_op = Op_LoadF; break;
     case Assembler::lddf_op3: ld_op = Op_LoadD; break;
-    case Assembler::ldub_op3: ld_op = Op_LoadB; break;
     case Assembler::prefetch_op3: ld_op = Op_LoadI; break;
 
     default: ShouldNotReachHere();
@@ -840,10 +848,7 @@
           !(n->ideal_Opcode()==Op_PrefetchRead  && ld_op==Op_LoadI) &&
           !(n->ideal_Opcode()==Op_PrefetchWrite && ld_op==Op_LoadI) &&
           !(n->ideal_Opcode()==Op_PrefetchAllocation && ld_op==Op_LoadI) &&
-          !(n->ideal_Opcode()==Op_Load2I    && ld_op==Op_LoadD) &&
-          !(n->ideal_Opcode()==Op_Load4C    && ld_op==Op_LoadD) &&
-          !(n->ideal_Opcode()==Op_Load4S    && ld_op==Op_LoadD) &&
-          !(n->ideal_Opcode()==Op_Load8B    && ld_op==Op_LoadD) &&
+          !(n->ideal_Opcode()==Op_LoadVector && ld_op==Op_LoadD) &&
           !(n->rule() == loadUB_rule)) {
         verify_oops_warning(n, n->ideal_Opcode(), ld_op);
       }
@@ -855,9 +860,7 @@
           !(n->ideal_Opcode()==Op_StoreI && st_op==Op_StoreF) &&
           !(n->ideal_Opcode()==Op_StoreF && st_op==Op_StoreI) &&
           !(n->ideal_Opcode()==Op_StoreL && st_op==Op_StoreI) &&
-          !(n->ideal_Opcode()==Op_Store2I && st_op==Op_StoreD) &&
-          !(n->ideal_Opcode()==Op_Store4C && st_op==Op_StoreD) &&
-          !(n->ideal_Opcode()==Op_Store8B && st_op==Op_StoreD) &&
+          !(n->ideal_Opcode()==Op_StoreVector && st_op==Op_StoreD) &&
           !(n->ideal_Opcode()==Op_StoreD && st_op==Op_StoreI && n->rule() == storeD0_rule)) {
         verify_oops_warning(n, n->ideal_Opcode(), st_op);
       }
@@ -1849,16 +1852,45 @@
 address last_rethrow = NULL;  // debugging aid for Rethrow encoding
 #endif
 
+// Map Types to machine register types
+const int Matcher::base2reg[Type::lastype] = {
+  Node::NotAMachineReg,0,0, Op_RegI, Op_RegL, 0, Op_RegN,
+  Node::NotAMachineReg, Node::NotAMachineReg, /* tuple, array */
+  0, Op_RegD, 0, 0, /* Vectors */
+  Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, /* the pointers */
+  0, 0/*abio*/,
+  Op_RegP /* Return address */, 0, /* the memories */
+  Op_RegF, Op_RegF, Op_RegF, Op_RegD, Op_RegD, Op_RegD,
+  0  /*bottom*/
+};
+
 // Vector width in bytes
-const uint Matcher::vector_width_in_bytes(void) {
+const int Matcher::vector_width_in_bytes(BasicType bt) {
+  assert(MaxVectorSize == 8, "");
   return 8;
 }
 
 // Vector ideal reg
-const uint Matcher::vector_ideal_reg(void) {
+const int Matcher::vector_ideal_reg(int size) {
+  assert(MaxVectorSize == 8, "");
   return Op_RegD;
 }
 
+// Limits on vector size (number of elements) loaded into vector.
+const int Matcher::max_vector_size(const BasicType bt) {
+  assert(is_java_primitive(bt), "only primitive type vectors");
+  return vector_width_in_bytes(bt)/type2aelembytes(bt);
+}
+
+const int Matcher::min_vector_size(const BasicType bt) {
+  return max_vector_size(bt); // Same as max.
+}
+
+// SPARC doesn't support misaligned vectors store/load.
+const bool Matcher::misaligned_vectors_ok() {
+  return false;
+}
+
 // USII supports fxtof through the whole range of number, USIII doesn't
 const bool Matcher::convL2FSupported(void) {
   return VM_Version::has_fast_fxtof();
@@ -3125,50 +3157,6 @@
     __ membar( Assembler::Membar_mask_bits(Assembler::StoreLoad) );
   %}
 
-  enc_class enc_repl8b( iRegI src, iRegL dst ) %{
-    MacroAssembler _masm(&cbuf);
-    Register src_reg = reg_to_register_object($src$$reg);
-    Register dst_reg = reg_to_register_object($dst$$reg);
-    __ sllx(src_reg, 56, dst_reg);
-    __ srlx(dst_reg,  8, O7);
-    __ or3 (dst_reg, O7, dst_reg);
-    __ srlx(dst_reg, 16, O7);
-    __ or3 (dst_reg, O7, dst_reg);
-    __ srlx(dst_reg, 32, O7);
-    __ or3 (dst_reg, O7, dst_reg);
-  %}
-
-  enc_class enc_repl4b( iRegI src, iRegL dst ) %{
-    MacroAssembler _masm(&cbuf);
-    Register src_reg = reg_to_register_object($src$$reg);
-    Register dst_reg = reg_to_register_object($dst$$reg);
-    __ sll(src_reg, 24, dst_reg);
-    __ srl(dst_reg,  8, O7);
-    __ or3(dst_reg, O7, dst_reg);
-    __ srl(dst_reg, 16, O7);
-    __ or3(dst_reg, O7, dst_reg);
-  %}
-
-  enc_class enc_repl4s( iRegI src, iRegL dst ) %{
-    MacroAssembler _masm(&cbuf);
-    Register src_reg = reg_to_register_object($src$$reg);
-    Register dst_reg = reg_to_register_object($dst$$reg);
-    __ sllx(src_reg, 48, dst_reg);
-    __ srlx(dst_reg, 16, O7);
-    __ or3 (dst_reg, O7, dst_reg);
-    __ srlx(dst_reg, 32, O7);
-    __ or3 (dst_reg, O7, dst_reg);
-  %}
-
-  enc_class enc_repl2i( iRegI src, iRegL dst ) %{
-    MacroAssembler _masm(&cbuf);
-    Register src_reg = reg_to_register_object($src$$reg);
-    Register dst_reg = reg_to_register_object($dst$$reg);
-    __ sllx(src_reg, 32, dst_reg);
-    __ srlx(dst_reg, 32, O7);
-    __ or3 (dst_reg, O7, dst_reg);
-  %}
-
 %}
 
 //----------FRAME--------------------------------------------------------------
@@ -5932,50 +5920,6 @@
   ins_pipe(iload_mem);
 %}
 
-// Load Aligned Packed Byte into a Double Register
-instruct loadA8B(regD dst, memory mem) %{
-  match(Set dst (Load8B mem));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "LDDF   $mem,$dst\t! packed8B" %}
-  opcode(Assembler::lddf_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
-  ins_pipe(floadD_mem);
-%}
-
-// Load Aligned Packed Char into a Double Register
-instruct loadA4C(regD dst, memory mem) %{
-  match(Set dst (Load4C mem));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "LDDF   $mem,$dst\t! packed4C" %}
-  opcode(Assembler::lddf_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
-  ins_pipe(floadD_mem);
-%}
-
-// Load Aligned Packed Short into a Double Register
-instruct loadA4S(regD dst, memory mem) %{
-  match(Set dst (Load4S mem));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "LDDF   $mem,$dst\t! packed4S" %}
-  opcode(Assembler::lddf_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
-  ins_pipe(floadD_mem);
-%}
-
-// Load Aligned Packed Int into a Double Register
-instruct loadA2I(regD dst, memory mem) %{
-  match(Set dst (Load2I mem));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "LDDF   $mem,$dst\t! packed2I" %}
-  opcode(Assembler::lddf_op3);
-  ins_encode(simple_form3_mem_reg( mem, dst ) );
-  ins_pipe(floadD_mem);
-%}
-
 // Load Range
 instruct loadRange(iRegI dst, memory mem) %{
   match(Set dst (LoadRange mem));
@@ -6599,17 +6543,6 @@
   ins_pipe(fstoreF_mem_zero);
 %}
 
-// Store Aligned Packed Bytes in Double register to memory
-instruct storeA8B(memory mem, regD src) %{
-  match(Set mem (Store8B mem src));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "STDF   $src,$mem\t! packed8B" %}
-  opcode(Assembler::stdf_op3);
-  ins_encode(simple_form3_mem_reg( mem, src ) );
-  ins_pipe(fstoreD_mem_reg);
-%}
-
 // Convert oop pointer into compressed form
 instruct encodeHeapOop(iRegN dst, iRegP src) %{
   predicate(n->bottom_type()->make_ptr()->ptr() != TypePtr::NotNull);
@@ -6654,62 +6587,6 @@
 %}
 
 
-// Store Zero into Aligned Packed Bytes
-instruct storeA8B0(memory mem, immI0 zero) %{
-  match(Set mem (Store8B mem zero));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "STX    $zero,$mem\t! packed8B" %}
-  opcode(Assembler::stx_op3);
-  ins_encode(simple_form3_mem_reg( mem, R_G0 ) );
-  ins_pipe(fstoreD_mem_zero);
-%}
-
-// Store Aligned Packed Chars/Shorts in Double register to memory
-instruct storeA4C(memory mem, regD src) %{
-  match(Set mem (Store4C mem src));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "STDF   $src,$mem\t! packed4C" %}
-  opcode(Assembler::stdf_op3);
-  ins_encode(simple_form3_mem_reg( mem, src ) );
-  ins_pipe(fstoreD_mem_reg);
-%}
-
-// Store Zero into Aligned Packed Chars/Shorts
-instruct storeA4C0(memory mem, immI0 zero) %{
-  match(Set mem (Store4C mem (Replicate4C zero)));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "STX    $zero,$mem\t! packed4C" %}
-  opcode(Assembler::stx_op3);
-  ins_encode(simple_form3_mem_reg( mem, R_G0 ) );
-  ins_pipe(fstoreD_mem_zero);
-%}
-
-// Store Aligned Packed Ints in Double register to memory
-instruct storeA2I(memory mem, regD src) %{
-  match(Set mem (Store2I mem src));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "STDF   $src,$mem\t! packed2I" %}
-  opcode(Assembler::stdf_op3);
-  ins_encode(simple_form3_mem_reg( mem, src ) );
-  ins_pipe(fstoreD_mem_reg);
-%}
-
-// Store Zero into Aligned Packed Ints
-instruct storeA2I0(memory mem, immI0 zero) %{
-  match(Set mem (Store2I mem zero));
-  ins_cost(MEMORY_REF_COST);
-  size(4);
-  format %{ "STX    $zero,$mem\t! packed2I" %}
-  opcode(Assembler::stx_op3);
-  ins_encode(simple_form3_mem_reg( mem, R_G0 ) );
-  ins_pipe(fstoreD_mem_zero);
-%}
-
-
 //----------MemBar Instructions-----------------------------------------------
 // Memory barrier flavors
 
@@ -8880,150 +8757,6 @@
   ins_pipe(ialu_reg_imm);
 %}
 
-// Replicate scalar to packed byte values in Double register
-instruct Repl8B_reg_helper(iRegL dst, iRegI src) %{
-  effect(DEF dst, USE src);
-  format %{ "SLLX  $src,56,$dst\n\t"
-            "SRLX  $dst, 8,O7\n\t"
-            "OR    $dst,O7,$dst\n\t"
-            "SRLX  $dst,16,O7\n\t"
-            "OR    $dst,O7,$dst\n\t"
-            "SRLX  $dst,32,O7\n\t"
-            "OR    $dst,O7,$dst\t! replicate8B" %}
-  ins_encode( enc_repl8b(src, dst));
-  ins_pipe(ialu_reg);
-%}
-
-// Replicate scalar to packed byte values in Double register
-instruct Repl8B_reg(stackSlotD dst, iRegI src) %{
-  match(Set dst (Replicate8B src));
-  expand %{
-    iRegL tmp;
-    Repl8B_reg_helper(tmp, src);
-    regL_to_stkD(dst, tmp);
-  %}
-%}
-
-// Replicate scalar constant to packed byte values in Double register
-instruct Repl8B_immI(regD dst, immI13 con, o7RegI tmp) %{
-  match(Set dst (Replicate8B con));
-  effect(KILL tmp);
-  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl8B($con)" %}
-  ins_encode %{
-    // XXX This is a quick fix for 6833573.
-    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immI($con$$constant, 8, 1)), $dst$$FloatRegister);
-    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immI($con$$constant, 8, 1)), $tmp$$Register);
-    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
-  %}
-  ins_pipe(loadConFD);
-%}
-
-// Replicate scalar to packed char values into stack slot
-instruct Repl4C_reg_helper(iRegL dst, iRegI src) %{
-  effect(DEF dst, USE src);
-  format %{ "SLLX  $src,48,$dst\n\t"
-            "SRLX  $dst,16,O7\n\t"
-            "OR    $dst,O7,$dst\n\t"
-            "SRLX  $dst,32,O7\n\t"
-            "OR    $dst,O7,$dst\t! replicate4C" %}
-  ins_encode( enc_repl4s(src, dst) );
-  ins_pipe(ialu_reg);
-%}
-
-// Replicate scalar to packed char values into stack slot
-instruct Repl4C_reg(stackSlotD dst, iRegI src) %{
-  match(Set dst (Replicate4C src));
-  expand %{
-    iRegL tmp;
-    Repl4C_reg_helper(tmp, src);
-    regL_to_stkD(dst, tmp);
-  %}
-%}
-
-// Replicate scalar constant to packed char values in Double register
-instruct Repl4C_immI(regD dst, immI con, o7RegI tmp) %{
-  match(Set dst (Replicate4C con));
-  effect(KILL tmp);
-  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl4C($con)" %}
-  ins_encode %{
-    // XXX This is a quick fix for 6833573.
-    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immI($con$$constant, 4, 2)), $dst$$FloatRegister);
-    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immI($con$$constant, 4, 2)), $tmp$$Register);
-    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
-  %}
-  ins_pipe(loadConFD);
-%}
-
-// Replicate scalar to packed short values into stack slot
-instruct Repl4S_reg_helper(iRegL dst, iRegI src) %{
-  effect(DEF dst, USE src);
-  format %{ "SLLX  $src,48,$dst\n\t"
-            "SRLX  $dst,16,O7\n\t"
-            "OR    $dst,O7,$dst\n\t"
-            "SRLX  $dst,32,O7\n\t"
-            "OR    $dst,O7,$dst\t! replicate4S" %}
-  ins_encode( enc_repl4s(src, dst) );
-  ins_pipe(ialu_reg);
-%}
-
-// Replicate scalar to packed short values into stack slot
-instruct Repl4S_reg(stackSlotD dst, iRegI src) %{
-  match(Set dst (Replicate4S src));
-  expand %{
-    iRegL tmp;
-    Repl4S_reg_helper(tmp, src);
-    regL_to_stkD(dst, tmp);
-  %}
-%}
-
-// Replicate scalar constant to packed short values in Double register
-instruct Repl4S_immI(regD dst, immI con, o7RegI tmp) %{
-  match(Set dst (Replicate4S con));
-  effect(KILL tmp);
-  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl4S($con)" %}
-  ins_encode %{
-    // XXX This is a quick fix for 6833573.
-    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immI($con$$constant, 4, 2)), $dst$$FloatRegister);
-    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immI($con$$constant, 4, 2)), $tmp$$Register);
-    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
-  %}
-  ins_pipe(loadConFD);
-%}
-
-// Replicate scalar to packed int values in Double register
-instruct Repl2I_reg_helper(iRegL dst, iRegI src) %{
-  effect(DEF dst, USE src);
-  format %{ "SLLX  $src,32,$dst\n\t"
-            "SRLX  $dst,32,O7\n\t"
-            "OR    $dst,O7,$dst\t! replicate2I" %}
-  ins_encode( enc_repl2i(src, dst));
-  ins_pipe(ialu_reg);
-%}
-
-// Replicate scalar to packed int values in Double register
-instruct Repl2I_reg(stackSlotD dst, iRegI src) %{
-  match(Set dst (Replicate2I src));
-  expand %{
-    iRegL tmp;
-    Repl2I_reg_helper(tmp, src);
-    regL_to_stkD(dst, tmp);
-  %}
-%}
-
-// Replicate scalar zero constant to packed int values in Double register
-instruct Repl2I_immI(regD dst, immI con, o7RegI tmp) %{
-  match(Set dst (Replicate2I con));
-  effect(KILL tmp);
-  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl2I($con)" %}
-  ins_encode %{
-    // XXX This is a quick fix for 6833573.
-    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immI($con$$constant, 2, 4)), $dst$$FloatRegister);
-    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immI($con$$constant, 2, 4)), $tmp$$Register);
-    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
-  %}
-  ins_pipe(loadConFD);
-%}
-
 //----------Control Flow Instructions------------------------------------------
 // Compare Instructions
 // Compare Integers
@@ -10742,6 +10475,308 @@
   ins_pipe(istore_mem_reg);
 %}
 
+// ====================VECTOR INSTRUCTIONS=====================================
+
+// Load Aligned Packed values into a Double Register
+instruct loadV8(regD dst, memory mem) %{
+  predicate(n->as_LoadVector()->memory_size() == 8);
+  match(Set dst (LoadVector mem));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+  format %{ "LDDF   $mem,$dst\t! load vector (8 bytes)" %}
+  ins_encode %{
+    __ ldf(FloatRegisterImpl::D, $mem$$Address, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(floadD_mem);
+%}
+
+// Store Vector in Double register to memory
+instruct storeV8(memory mem, regD src) %{
+  predicate(n->as_StoreVector()->memory_size() == 8);
+  match(Set mem (StoreVector mem src));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+  format %{ "STDF   $src,$mem\t! store vector (8 bytes)" %}
+  ins_encode %{
+    __ stf(FloatRegisterImpl::D, as_DoubleFloatRegister($src$$reg), $mem$$Address);
+  %}
+  ins_pipe(fstoreD_mem_reg);
+%}
+
+// Store Zero into vector in memory
+instruct storeV8B_zero(memory mem, immI0 zero) %{
+  predicate(n->as_StoreVector()->memory_size() == 8);
+  match(Set mem (StoreVector mem (ReplicateB zero)));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+  format %{ "STX    $zero,$mem\t! store zero vector (8 bytes)" %}
+  ins_encode %{
+    __ stx(G0, $mem$$Address);
+  %}
+  ins_pipe(fstoreD_mem_zero);
+%}
+
+instruct storeV4S_zero(memory mem, immI0 zero) %{
+  predicate(n->as_StoreVector()->memory_size() == 8);
+  match(Set mem (StoreVector mem (ReplicateS zero)));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+  format %{ "STX    $zero,$mem\t! store zero vector (4 shorts)" %}
+  ins_encode %{
+    __ stx(G0, $mem$$Address);
+  %}
+  ins_pipe(fstoreD_mem_zero);
+%}
+
+instruct storeV2I_zero(memory mem, immI0 zero) %{
+  predicate(n->as_StoreVector()->memory_size() == 8);
+  match(Set mem (StoreVector mem (ReplicateI zero)));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+  format %{ "STX    $zero,$mem\t! store zero vector (2 ints)" %}
+  ins_encode %{
+    __ stx(G0, $mem$$Address);
+  %}
+  ins_pipe(fstoreD_mem_zero);
+%}
+
+instruct storeV2F_zero(memory mem, immF0 zero) %{
+  predicate(n->as_StoreVector()->memory_size() == 8);
+  match(Set mem (StoreVector mem (ReplicateF zero)));
+  ins_cost(MEMORY_REF_COST);
+  size(4);
+  format %{ "STX    $zero,$mem\t! store zero vector (2 floats)" %}
+  ins_encode %{
+    __ stx(G0, $mem$$Address);
+  %}
+  ins_pipe(fstoreD_mem_zero);
+%}
+
+// Replicate scalar to packed byte values into Double register
+instruct Repl8B_reg(regD dst, iRegI src, iRegL tmp, o7RegL tmp2) %{
+  predicate(n->as_Vector()->length() == 8 && UseVIS >= 3);
+  match(Set dst (ReplicateB src));
+  effect(DEF dst, USE src, TEMP tmp, KILL tmp2);
+  format %{ "SLLX  $src,56,$tmp\n\t"
+            "SRLX  $tmp, 8,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\n\t"
+            "SRLX  $tmp,16,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\n\t"
+            "SRLX  $tmp,32,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\t! replicate8B\n\t"
+            "MOVXTOD $tmp,$dst\t! MoveL2D" %}
+  ins_encode %{
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    Register Rtmp2 = $tmp2$$Register;
+    __ sllx(Rsrc,    56, Rtmp);
+    __ srlx(Rtmp,     8, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ srlx(Rtmp,    16, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ srlx(Rtmp,    32, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ movxtod(Rtmp, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Replicate scalar to packed byte values into Double stack
+instruct Repl8B_stk(stackSlotD dst, iRegI src, iRegL tmp, o7RegL tmp2) %{
+  predicate(n->as_Vector()->length() == 8 && UseVIS < 3);
+  match(Set dst (ReplicateB src));
+  effect(DEF dst, USE src, TEMP tmp, KILL tmp2);
+  format %{ "SLLX  $src,56,$tmp\n\t"
+            "SRLX  $tmp, 8,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\n\t"
+            "SRLX  $tmp,16,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\n\t"
+            "SRLX  $tmp,32,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\t! replicate8B\n\t"
+            "STX   $tmp,$dst\t! regL to stkD" %}
+  ins_encode %{
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    Register Rtmp2 = $tmp2$$Register;
+    __ sllx(Rsrc,    56, Rtmp);
+    __ srlx(Rtmp,     8, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ srlx(Rtmp,    16, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ srlx(Rtmp,    32, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ set ($dst$$disp + STACK_BIAS, Rtmp2);
+    __ stx (Rtmp, Rtmp2, $dst$$base$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Replicate scalar constant to packed byte values in Double register
+instruct Repl8B_immI(regD dst, immI13 con, o7RegI tmp) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateB con));
+  effect(KILL tmp);
+  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl8B($con)" %}
+  ins_encode %{
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immI($con$$constant, 8, 1)), $dst$$FloatRegister);
+    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immI($con$$constant, 8, 1)), $tmp$$Register);
+    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(loadConFD);
+%}
+
+// Replicate scalar to packed char/short values into Double register
+instruct Repl4S_reg(regD dst, iRegI src, iRegL tmp, o7RegL tmp2) %{
+  predicate(n->as_Vector()->length() == 4 && UseVIS >= 3);
+  match(Set dst (ReplicateS src));
+  effect(DEF dst, USE src, TEMP tmp, KILL tmp2);
+  format %{ "SLLX  $src,48,$tmp\n\t"
+            "SRLX  $tmp,16,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\n\t"
+            "SRLX  $tmp,32,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\t! replicate4S\n\t"
+            "MOVXTOD $tmp,$dst\t! MoveL2D" %}
+  ins_encode %{
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    Register Rtmp2 = $tmp2$$Register;
+    __ sllx(Rsrc,    48, Rtmp);
+    __ srlx(Rtmp,    16, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ srlx(Rtmp,    32, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ movxtod(Rtmp, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Replicate scalar to packed char/short values into Double stack
+instruct Repl4S_stk(stackSlotD dst, iRegI src, iRegL tmp, o7RegL tmp2) %{
+  predicate(n->as_Vector()->length() == 4 && UseVIS < 3);
+  match(Set dst (ReplicateS src));
+  effect(DEF dst, USE src, TEMP tmp, KILL tmp2);
+  format %{ "SLLX  $src,48,$tmp\n\t"
+            "SRLX  $tmp,16,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\n\t"
+            "SRLX  $tmp,32,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\t! replicate4S\n\t"
+            "STX   $tmp,$dst\t! regL to stkD" %}
+  ins_encode %{
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    Register Rtmp2 = $tmp2$$Register;
+    __ sllx(Rsrc,    48, Rtmp);
+    __ srlx(Rtmp,    16, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ srlx(Rtmp,    32, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ set ($dst$$disp + STACK_BIAS, Rtmp2);
+    __ stx (Rtmp, Rtmp2, $dst$$base$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Replicate scalar constant to packed char/short values in Double register
+instruct Repl4S_immI(regD dst, immI con, o7RegI tmp) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateS con));
+  effect(KILL tmp);
+  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl4S($con)" %}
+  ins_encode %{
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immI($con$$constant, 4, 2)), $dst$$FloatRegister);
+    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immI($con$$constant, 4, 2)), $tmp$$Register);
+    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(loadConFD);
+%}
+
+// Replicate scalar to packed int values into Double register
+instruct Repl2I_reg(regD dst, iRegI src, iRegL tmp, o7RegL tmp2) %{
+  predicate(n->as_Vector()->length() == 2 && UseVIS >= 3);
+  match(Set dst (ReplicateI src));
+  effect(DEF dst, USE src, TEMP tmp, KILL tmp2);
+  format %{ "SLLX  $src,32,$tmp\n\t"
+            "SRLX  $tmp,32,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\t! replicate2I\n\t"
+            "MOVXTOD $tmp,$dst\t! MoveL2D" %}
+  ins_encode %{
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    Register Rtmp2 = $tmp2$$Register;
+    __ sllx(Rsrc,    32, Rtmp);
+    __ srlx(Rtmp,    32, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ movxtod(Rtmp, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Replicate scalar to packed int values into Double stack
+instruct Repl2I_stk(stackSlotD dst, iRegI src, iRegL tmp, o7RegL tmp2) %{
+  predicate(n->as_Vector()->length() == 2 && UseVIS < 3);
+  match(Set dst (ReplicateI src));
+  effect(DEF dst, USE src, TEMP tmp, KILL tmp2);
+  format %{ "SLLX  $src,32,$tmp\n\t"
+            "SRLX  $tmp,32,$tmp2\n\t"
+            "OR    $tmp,$tmp2,$tmp\t! replicate2I\n\t"
+            "STX   $tmp,$dst\t! regL to stkD" %}
+  ins_encode %{
+    Register Rsrc = $src$$Register;
+    Register Rtmp = $tmp$$Register;
+    Register Rtmp2 = $tmp2$$Register;
+    __ sllx(Rsrc,    32, Rtmp);
+    __ srlx(Rtmp,    32, Rtmp2);
+    __ or3 (Rtmp, Rtmp2, Rtmp);
+    __ set ($dst$$disp + STACK_BIAS, Rtmp2);
+    __ stx (Rtmp, Rtmp2, $dst$$base$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
+// Replicate scalar zero constant to packed int values in Double register
+instruct Repl2I_immI(regD dst, immI con, o7RegI tmp) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateI con));
+  effect(KILL tmp);
+  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl2I($con)" %}
+  ins_encode %{
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immI($con$$constant, 2, 4)), $dst$$FloatRegister);
+    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immI($con$$constant, 2, 4)), $tmp$$Register);
+    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(loadConFD);
+%}
+
+// Replicate scalar to packed float values into Double stack
+instruct Repl2F_stk(stackSlotD dst, regF src) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateF src));
+  ins_cost(MEMORY_REF_COST*2);
+  format %{ "STF    $src,$dst.hi\t! packed2F\n\t"
+            "STF    $src,$dst.lo" %}
+  opcode(Assembler::stf_op3);
+  ins_encode(simple_form3_mem_reg(dst, src), form3_mem_plus_4_reg(dst, src));
+  ins_pipe(fstoreF_stk_reg);
+%}
+
+// Replicate scalar zero constant to packed float values in Double register
+instruct Repl2F_immF(regD dst, immF con, o7RegI tmp) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateF con));
+  effect(KILL tmp);
+  format %{ "LDDF   [$constanttablebase + $constantoffset],$dst\t! load from constant table: Repl2F($con)" %}
+  ins_encode %{
+    // XXX This is a quick fix for 6833573.
+    //__ ldf(FloatRegisterImpl::D, $constanttablebase, $constantoffset(replicate_immF($con$$constant)), $dst$$FloatRegister);
+    RegisterOrConstant con_offset = __ ensure_simm13_or_reg($constantoffset(replicate_immF($con$$constant)), $tmp$$Register);
+    __ ldf(FloatRegisterImpl::D, $constanttablebase, con_offset, as_DoubleFloatRegister($dst$$reg));
+  %}
+  ins_pipe(loadConFD);
+%}
+
 //----------PEEPHOLE RULES-----------------------------------------------------
 // These must follow all instruction definitions as they use the names
 // defined in the instructions definitions.
--- a/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -217,6 +217,8 @@
   // Currently not supported anywhere.
   FLAG_SET_DEFAULT(UseFPUForSpilling, false);
 
+  MaxVectorSize = 8;
+
   assert((InteriorEntryAlignment % relocInfo::addr_unit()) == 0, "alignment is not a multiple of NOP size");
 #endif
 
--- a/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1637,6 +1637,13 @@
   emit_byte(0xC0 | encode);
 }
 
+void Assembler::movlhps(XMMRegister dst, XMMRegister src) {
+  NOT_LP64(assert(VM_Version::supports_sse(), ""));
+  int encode = simd_prefix_and_encode(dst, src, src, VEX_SIMD_NONE);
+  emit_byte(0x16);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::movb(Register dst, Address src) {
   NOT_LP64(assert(dst->has_byte_register(), "must have byte register"));
   InstructionMark im(this);
@@ -1686,6 +1693,14 @@
   emit_operand(dst, src);
 }
 
+void Assembler::movdl(Address dst, XMMRegister src) {
+  NOT_LP64(assert(VM_Version::supports_sse2(), ""));
+  InstructionMark im(this);
+  simd_prefix(dst, src, VEX_SIMD_66);
+  emit_byte(0x7E);
+  emit_operand(src, dst);
+}
+
 void Assembler::movdqa(XMMRegister dst, XMMRegister src) {
   NOT_LP64(assert(VM_Version::supports_sse2(), ""));
   int encode = simd_prefix_and_encode(dst, src, VEX_SIMD_66);
@@ -1716,6 +1731,35 @@
   emit_operand(src, dst);
 }
 
+// Move Unaligned 256bit Vector
+void Assembler::vmovdqu(XMMRegister dst, XMMRegister src) {
+  assert(UseAVX, "");
+  bool vector256 = true;
+  int encode = vex_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_F3, vector256);
+  emit_byte(0x6F);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::vmovdqu(XMMRegister dst, Address src) {
+  assert(UseAVX, "");
+  InstructionMark im(this);
+  bool vector256 = true;
+  vex_prefix(dst, xnoreg, src, VEX_SIMD_F3, vector256);
+  emit_byte(0x6F);
+  emit_operand(dst, src);
+}
+
+void Assembler::vmovdqu(Address dst, XMMRegister src) {
+  assert(UseAVX, "");
+  InstructionMark im(this);
+  bool vector256 = true;
+  // swap src<->dst for encoding
+  assert(src != xnoreg, "sanity");
+  vex_prefix(src, xnoreg, dst, VEX_SIMD_F3, vector256);
+  emit_byte(0x7F);
+  emit_operand(src, dst);
+}
+
 // Uses zero extension on 64bit
 
 void Assembler::movl(Register dst, int32_t imm32) {
@@ -3112,6 +3156,13 @@
   emit_operand(dst, src);
 }
 
+void Assembler::vxorpd(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) {
+  assert(VM_Version::supports_avx(), "");
+  int encode = vex_prefix_and_encode(dst, nds, src, VEX_SIMD_66, vector256);
+  emit_byte(0x57);
+  emit_byte(0xC0 | encode);
+}
+
 void Assembler::vxorps(XMMRegister dst, XMMRegister nds, Address src) {
   assert(VM_Version::supports_avx(), "");
   InstructionMark im(this);
@@ -3120,6 +3171,30 @@
   emit_operand(dst, src);
 }
 
+void Assembler::vxorps(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) {
+  assert(VM_Version::supports_avx(), "");
+  int encode = vex_prefix_and_encode(dst, nds, src, VEX_SIMD_NONE, vector256);
+  emit_byte(0x57);
+  emit_byte(0xC0 | encode);
+}
+
+void Assembler::vinsertf128h(XMMRegister dst, XMMRegister nds, XMMRegister src) {
+  assert(VM_Version::supports_avx(), "");
+  bool vector256 = true;
+  int encode = vex_prefix_and_encode(dst, nds, src, VEX_SIMD_66, vector256, VEX_OPCODE_0F_3A);
+  emit_byte(0x18);
+  emit_byte(0xC0 | encode);
+  // 0x00 - insert into lower 128 bits
+  // 0x01 - insert into upper 128 bits
+  emit_byte(0x01);
+}
+
+void Assembler::vzeroupper() {
+  assert(VM_Version::supports_avx(), "");
+  (void)vex_prefix_and_encode(xmm0, xmm0, xmm0, VEX_SIMD_NONE);
+  emit_byte(0x77);
+}
+
 
 #ifndef _LP64
 // 32bit only pieces of the assembler
--- a/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -591,8 +591,9 @@
 
   void vex_prefix(XMMRegister dst, XMMRegister nds, Address src,
                   VexSimdPrefix pre, bool vector256 = false) {
-     vex_prefix(src, nds->encoding(), dst->encoding(),
-                pre, VEX_OPCODE_0F, false, vector256);
+    int dst_enc = dst->encoding();
+    int nds_enc = nds->is_valid() ? nds->encoding() : 0;
+    vex_prefix(src, nds_enc, dst_enc, pre, VEX_OPCODE_0F, false, vector256);
   }
 
   int  vex_prefix_and_encode(int dst_enc, int nds_enc, int src_enc,
@@ -600,9 +601,12 @@
                              bool vex_w, bool vector256);
 
   int  vex_prefix_and_encode(XMMRegister dst, XMMRegister nds, XMMRegister src,
-                             VexSimdPrefix pre, bool vector256 = false) {
-     return vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(),
-                                  pre, VEX_OPCODE_0F, false, vector256);
+                             VexSimdPrefix pre, bool vector256 = false,
+                             VexOpcode opc = VEX_OPCODE_0F) {
+    int src_enc = src->encoding();
+    int dst_enc = dst->encoding();
+    int nds_enc = nds->is_valid() ? nds->encoding() : 0;
+    return vex_prefix_and_encode(dst_enc, nds_enc, src_enc, pre, opc, false, vector256);
   }
 
   void simd_prefix(XMMRegister xreg, XMMRegister nds, Address adr,
@@ -1261,6 +1265,7 @@
   void movdl(XMMRegister dst, Register src);
   void movdl(Register dst, XMMRegister src);
   void movdl(XMMRegister dst, Address src);
+  void movdl(Address dst, XMMRegister src);
 
   // Move Double Quadword
   void movdq(XMMRegister dst, Register src);
@@ -1274,6 +1279,14 @@
   void movdqu(XMMRegister dst, Address src);
   void movdqu(XMMRegister dst, XMMRegister src);
 
+  // Move Unaligned 256bit Vector
+  void vmovdqu(Address dst, XMMRegister src);
+  void vmovdqu(XMMRegister dst, Address src);
+  void vmovdqu(XMMRegister dst, XMMRegister src);
+
+  // Move lower 64bit to high 64bit in 128bit register
+  void movlhps(XMMRegister dst, XMMRegister src);
+
   void movl(Register dst, int32_t imm32);
   void movl(Address dst, int32_t imm32);
   void movl(Register dst, Register src);
@@ -1615,6 +1628,17 @@
   void vxorpd(XMMRegister dst, XMMRegister nds, Address src);
   void vxorps(XMMRegister dst, XMMRegister nds, Address src);
 
+  // AVX Vector instrucitons.
+  void vxorpd(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256);
+  void vxorps(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256);
+  void vinsertf128h(XMMRegister dst, XMMRegister nds, XMMRegister src);
+
+  // AVX instruction which is used to clear upper 128 bits of YMM registers and
+  // to avoid transaction penalty between AVX and SSE states. There is no
+  // penalty if legacy SSE instructions are encoded using VEX prefix because
+  // they always clear upper 128 bits. It should be used before calling
+  // runtime code and native libraries.
+  void vzeroupper();
 
  protected:
   // Next instructions require address alignment 16 bytes SSE mode.
@@ -2529,9 +2553,13 @@
   void vsubss(XMMRegister dst, XMMRegister nds, Address src)     { Assembler::vsubss(dst, nds, src); }
   void vsubss(XMMRegister dst, XMMRegister nds, AddressLiteral src);
 
+  // AVX Vector instructions
+
+  void vxorpd(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) { Assembler::vxorpd(dst, nds, src, vector256); }
   void vxorpd(XMMRegister dst, XMMRegister nds, Address src) { Assembler::vxorpd(dst, nds, src); }
   void vxorpd(XMMRegister dst, XMMRegister nds, AddressLiteral src);
 
+  void vxorps(XMMRegister dst, XMMRegister nds, XMMRegister src, bool vector256) { Assembler::vxorps(dst, nds, src, vector256); }
   void vxorps(XMMRegister dst, XMMRegister nds, Address src) { Assembler::vxorps(dst, nds, src); }
   void vxorps(XMMRegister dst, XMMRegister nds, AddressLiteral src);
 
--- a/hotspot/src/cpu/x86/vm/register_x86.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/register_x86.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,7 +35,7 @@
 const int ConcreteRegisterImpl::max_fpr = ConcreteRegisterImpl::max_gpr +
                                                                  2 * FloatRegisterImpl::number_of_registers;
 const int ConcreteRegisterImpl::max_xmm = ConcreteRegisterImpl::max_fpr +
-                                                                 2 * XMMRegisterImpl::number_of_registers;
+                                                                 8 * XMMRegisterImpl::number_of_registers;
 const char* RegisterImpl::name() const {
   const char* names[number_of_registers] = {
 #ifndef AMD64
--- a/hotspot/src/cpu/x86/vm/register_x86.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/register_x86.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -158,7 +158,7 @@
   XMMRegister successor() const                          { return as_XMMRegister(encoding() + 1); }
 
   // accessors
-  int   encoding() const                          { assert(is_valid(), "invalid register"); return (intptr_t)this; }
+  int   encoding() const                          { assert(is_valid(), err_msg("invalid register (%d)", (int)(intptr_t)this )); return (intptr_t)this; }
   bool  is_valid() const                          { return 0 <= (intptr_t)this && (intptr_t)this < number_of_registers; }
   const char* name() const;
 };
@@ -216,7 +216,7 @@
                                RegisterImpl::number_of_registers +  // "H" half of a 64bit register
 #endif // AMD64
                            2 * FloatRegisterImpl::number_of_registers +
-                           2 * XMMRegisterImpl::number_of_registers +
+                           8 * XMMRegisterImpl::number_of_registers +
                            1 // eflags
   };
 
--- a/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -467,6 +467,32 @@
   if (!supports_avx ()) // Drop to 0 if no AVX  support
     UseAVX = 0;
 
+#ifdef COMPILER2
+  if (UseFPUForSpilling) {
+    if (UseSSE < 2) {
+      // Only supported with SSE2+
+      FLAG_SET_DEFAULT(UseFPUForSpilling, false);
+    }
+  }
+  if (MaxVectorSize > 0) {
+    if (!is_power_of_2(MaxVectorSize)) {
+      warning("MaxVectorSize must be a power of 2");
+      FLAG_SET_DEFAULT(MaxVectorSize, 32);
+    }
+    if (MaxVectorSize > 32) {
+      FLAG_SET_DEFAULT(MaxVectorSize, 32);
+    }
+    if (MaxVectorSize > 16 && UseAVX == 0) {
+      // Only supported with AVX+
+      FLAG_SET_DEFAULT(MaxVectorSize, 16);
+    }
+    if (UseSSE < 2) {
+      // Only supported with SSE2+
+      FLAG_SET_DEFAULT(MaxVectorSize, 0);
+    }
+  }
+#endif
+
   // On new cpus instructions which update whole XMM register should be used
   // to prevent partial register stall due to dependencies on high half.
   //
@@ -544,6 +570,12 @@
       }
     }
 
+#ifdef COMPILER2
+    if (MaxVectorSize > 16) {
+      // Limit vectors size to 16 bytes on current AMD cpus.
+      FLAG_SET_DEFAULT(MaxVectorSize, 16);
+    }
+#endif // COMPILER2
   }
 
   if( is_intel() ) { // Intel cpus specific settings
@@ -606,15 +638,6 @@
     FLAG_SET_DEFAULT(UsePopCountInstruction, false);
   }
 
-#ifdef COMPILER2
-  if (UseFPUForSpilling) {
-    if (UseSSE < 2) {
-      // Only supported with SSE2+
-      FLAG_SET_DEFAULT(UseFPUForSpilling, false);
-    }
-  }
-#endif
-
   assert(0 <= ReadPrefetchInstr && ReadPrefetchInstr <= 3, "invalid value");
   assert(0 <= AllocatePrefetchInstr && AllocatePrefetchInstr <= 3, "invalid value");
 
--- a/hotspot/src/cpu/x86/vm/vmreg_x86.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/vmreg_x86.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -48,8 +48,9 @@
 
   XMMRegister xreg = ::as_XMMRegister(0);
   for ( ; i < ConcreteRegisterImpl::max_xmm ; ) {
-    regName[i++] = xreg->name();
-    regName[i++] = xreg->name();
+    for (int j = 0 ; j < 8 ; j++) {
+      regName[i++] = xreg->name();
+    }
     xreg = xreg->successor();
   }
   for ( ; i < ConcreteRegisterImpl::number_of_registers ; i ++ ) {
--- a/hotspot/src/cpu/x86/vm/vmreg_x86.inline.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/vmreg_x86.inline.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,7 +39,7 @@
 }
 
 inline VMReg XMMRegisterImpl::as_VMReg() {
-  return VMRegImpl::as_VMReg((encoding() << 1) + ConcreteRegisterImpl::max_fpr);
+  return VMRegImpl::as_VMReg((encoding() << 3) + ConcreteRegisterImpl::max_fpr);
 }
 
 
@@ -75,7 +75,7 @@
 inline XMMRegister VMRegImpl::as_XMMRegister() {
   assert( is_XMMRegister() && is_even(value()), "must be" );
   // Yuk
-  return ::as_XMMRegister((value() - ConcreteRegisterImpl::max_fpr) >> 1);
+  return ::as_XMMRegister((value() - ConcreteRegisterImpl::max_fpr) >> 3);
 }
 
 inline   bool VMRegImpl::is_concrete() {
--- a/hotspot/src/cpu/x86/vm/x86.ad	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/x86.ad	Wed Jul 05 18:15:14 2017 +0200
@@ -24,6 +24,456 @@
 
 // X86 Common Architecture Description File
 
+//----------REGISTER DEFINITION BLOCK------------------------------------------
+// This information is used by the matcher and the register allocator to
+// describe individual registers and classes of registers within the target
+// archtecture.
+
+register %{
+//----------Architecture Description Register Definitions----------------------
+// General Registers
+// "reg_def"  name ( register save type, C convention save type,
+//                   ideal register type, encoding );
+// Register Save Types:
+//
+// NS  = No-Save:       The register allocator assumes that these registers
+//                      can be used without saving upon entry to the method, &
+//                      that they do not need to be saved at call sites.
+//
+// SOC = Save-On-Call:  The register allocator assumes that these registers
+//                      can be used without saving upon entry to the method,
+//                      but that they must be saved at call sites.
+//
+// SOE = Save-On-Entry: The register allocator assumes that these registers
+//                      must be saved before using them upon entry to the
+//                      method, but they do not need to be saved at call
+//                      sites.
+//
+// AS  = Always-Save:   The register allocator assumes that these registers
+//                      must be saved before using them upon entry to the
+//                      method, & that they must be saved at call sites.
+//
+// Ideal Register Type is used to determine how to save & restore a
+// register.  Op_RegI will get spilled with LoadI/StoreI, Op_RegP will get
+// spilled with LoadP/StoreP.  If the register supports both, use Op_RegI.
+//
+// The encoding number is the actual bit-pattern placed into the opcodes.
+
+// XMM registers.  256-bit registers or 8 words each, labeled (a)-h.
+// Word a in each register holds a Float, words ab hold a Double.
+// The whole registers are used in SSE4.2 version intrinsics,
+// array copy stubs and superword operations (see UseSSE42Intrinsics,
+// UseXMMForArrayCopy and UseSuperword flags).
+// XMM8-XMM15 must be encoded with REX (VEX for UseAVX).
+// Linux ABI:   No register preserved across function calls
+//              XMM0-XMM7 might hold parameters
+// Windows ABI: XMM6-XMM15 preserved across function calls
+//              XMM0-XMM3 might hold parameters
+
+reg_def XMM0 ( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg());
+reg_def XMM0b( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next());
+reg_def XMM0c( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next()->next());
+reg_def XMM0d( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next()->next()->next());
+reg_def XMM0e( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next()->next()->next()->next());
+reg_def XMM0f( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM0g( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM0h( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM1 ( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg());
+reg_def XMM1b( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next());
+reg_def XMM1c( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next()->next());
+reg_def XMM1d( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next()->next()->next());
+reg_def XMM1e( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next()->next()->next()->next());
+reg_def XMM1f( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM1g( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM1h( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM2 ( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg());
+reg_def XMM2b( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next());
+reg_def XMM2c( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next()->next());
+reg_def XMM2d( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next()->next()->next());
+reg_def XMM2e( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next()->next()->next()->next());
+reg_def XMM2f( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM2g( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM2h( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM3 ( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg());
+reg_def XMM3b( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next());
+reg_def XMM3c( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next()->next());
+reg_def XMM3d( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next()->next()->next());
+reg_def XMM3e( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next()->next()->next()->next());
+reg_def XMM3f( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM3g( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM3h( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM4 ( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg());
+reg_def XMM4b( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next());
+reg_def XMM4c( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next()->next());
+reg_def XMM4d( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next()->next()->next());
+reg_def XMM4e( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next()->next()->next()->next());
+reg_def XMM4f( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM4g( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM4h( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM5 ( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg());
+reg_def XMM5b( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next());
+reg_def XMM5c( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next()->next());
+reg_def XMM5d( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next()->next()->next());
+reg_def XMM5e( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next()->next()->next()->next());
+reg_def XMM5f( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM5g( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM5h( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+#ifdef _WIN64
+
+reg_def XMM6 ( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg());
+reg_def XMM6b( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg()->next());
+reg_def XMM6c( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg()->next()->next());
+reg_def XMM6d( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next());
+reg_def XMM6e( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next());
+reg_def XMM6f( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM6g( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM6h( SOC, SOE, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM7 ( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg());
+reg_def XMM7b( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg()->next());
+reg_def XMM7c( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg()->next()->next());
+reg_def XMM7d( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next());
+reg_def XMM7e( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next());
+reg_def XMM7f( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM7g( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM7h( SOC, SOE, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM8 ( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg());
+reg_def XMM8b( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg()->next());
+reg_def XMM8c( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg()->next()->next());
+reg_def XMM8d( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next());
+reg_def XMM8e( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next());
+reg_def XMM8f( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM8g( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM8h( SOC, SOE, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM9 ( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg());
+reg_def XMM9b( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg()->next());
+reg_def XMM9c( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg()->next()->next());
+reg_def XMM9d( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next());
+reg_def XMM9e( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next());
+reg_def XMM9f( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM9g( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM9h( SOC, SOE, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM10 ( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg());
+reg_def XMM10b( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next());
+reg_def XMM10c( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next()->next());
+reg_def XMM10d( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next());
+reg_def XMM10e( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next());
+reg_def XMM10f( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM10g( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM10h( SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM11 ( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg());
+reg_def XMM11b( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next());
+reg_def XMM11c( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next()->next());
+reg_def XMM11d( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next());
+reg_def XMM11e( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next());
+reg_def XMM11f( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM11g( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM11h( SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM12 ( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg());
+reg_def XMM12b( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next());
+reg_def XMM12c( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next()->next());
+reg_def XMM12d( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next());
+reg_def XMM12e( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next());
+reg_def XMM12f( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM12g( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM12h( SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM13 ( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg());
+reg_def XMM13b( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next());
+reg_def XMM13c( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next()->next());
+reg_def XMM13d( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next());
+reg_def XMM13e( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next());
+reg_def XMM13f( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM13g( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM13h( SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM14 ( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg());
+reg_def XMM14b( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next());
+reg_def XMM14c( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next()->next());
+reg_def XMM14d( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next());
+reg_def XMM14e( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next());
+reg_def XMM14f( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM14g( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM14h( SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM15 ( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg());
+reg_def XMM15b( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next());
+reg_def XMM15c( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next()->next());
+reg_def XMM15d( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next());
+reg_def XMM15e( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next());
+reg_def XMM15f( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM15g( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM15h( SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+#else // _WIN64
+
+reg_def XMM6 ( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg());
+reg_def XMM6b( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next());
+reg_def XMM6c( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next()->next());
+reg_def XMM6d( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next());
+reg_def XMM6e( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next());
+reg_def XMM6f( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM6g( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM6h( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM7 ( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg());
+reg_def XMM7b( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next());
+reg_def XMM7c( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next()->next());
+reg_def XMM7d( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next());
+reg_def XMM7e( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next());
+reg_def XMM7f( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM7g( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM7h( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+#ifdef _LP64
+
+reg_def XMM8 ( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg());
+reg_def XMM8b( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg()->next());
+reg_def XMM8c( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg()->next()->next());
+reg_def XMM8d( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next());
+reg_def XMM8e( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next());
+reg_def XMM8f( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM8g( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM8h( SOC, SOC, Op_RegF, 8, xmm8->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM9 ( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg());
+reg_def XMM9b( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg()->next());
+reg_def XMM9c( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg()->next()->next());
+reg_def XMM9d( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next());
+reg_def XMM9e( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next());
+reg_def XMM9f( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM9g( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM9h( SOC, SOC, Op_RegF, 9, xmm9->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM10 ( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg());
+reg_def XMM10b( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next());
+reg_def XMM10c( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next()->next());
+reg_def XMM10d( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next());
+reg_def XMM10e( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next());
+reg_def XMM10f( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM10g( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM10h( SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM11 ( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg());
+reg_def XMM11b( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next());
+reg_def XMM11c( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next()->next());
+reg_def XMM11d( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next());
+reg_def XMM11e( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next());
+reg_def XMM11f( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM11g( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM11h( SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM12 ( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg());
+reg_def XMM12b( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next());
+reg_def XMM12c( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next()->next());
+reg_def XMM12d( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next());
+reg_def XMM12e( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next());
+reg_def XMM12f( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM12g( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM12h( SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM13 ( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg());
+reg_def XMM13b( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next());
+reg_def XMM13c( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next()->next());
+reg_def XMM13d( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next());
+reg_def XMM13e( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next());
+reg_def XMM13f( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM13g( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM13h( SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM14 ( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg());
+reg_def XMM14b( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next());
+reg_def XMM14c( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next()->next());
+reg_def XMM14d( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next());
+reg_def XMM14e( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next());
+reg_def XMM14f( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM14g( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM14h( SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+reg_def XMM15 ( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg());
+reg_def XMM15b( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next());
+reg_def XMM15c( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next()->next());
+reg_def XMM15d( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next());
+reg_def XMM15e( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next());
+reg_def XMM15f( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next()->next());
+reg_def XMM15g( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next()->next()->next());
+reg_def XMM15h( SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next()->next()->next()->next()->next()->next()->next());
+
+#endif // _LP64
+
+#endif // _WIN64
+
+#ifdef _LP64
+reg_def RFLAGS(SOC, SOC, 0, 16, VMRegImpl::Bad());
+#else
+reg_def RFLAGS(SOC, SOC, 0, 8, VMRegImpl::Bad());
+#endif // _LP64
+
+alloc_class chunk1(XMM0,  XMM0b,  XMM0c,  XMM0d,  XMM0e,  XMM0f,  XMM0g,  XMM0h,
+                   XMM1,  XMM1b,  XMM1c,  XMM1d,  XMM1e,  XMM1f,  XMM1g,  XMM1h,
+                   XMM2,  XMM2b,  XMM2c,  XMM2d,  XMM2e,  XMM2f,  XMM2g,  XMM2h,
+                   XMM3,  XMM3b,  XMM3c,  XMM3d,  XMM3e,  XMM3f,  XMM3g,  XMM3h,
+                   XMM4,  XMM4b,  XMM4c,  XMM4d,  XMM4e,  XMM4f,  XMM4g,  XMM4h,
+                   XMM5,  XMM5b,  XMM5c,  XMM5d,  XMM5e,  XMM5f,  XMM5g,  XMM5h,
+                   XMM6,  XMM6b,  XMM6c,  XMM6d,  XMM6e,  XMM6f,  XMM6g,  XMM6h,
+                   XMM7,  XMM7b,  XMM7c,  XMM7d,  XMM7e,  XMM7f,  XMM7g,  XMM7h
+#ifdef _LP64
+                  ,XMM8,  XMM8b,  XMM8c,  XMM8d,  XMM8e,  XMM8f,  XMM8g,  XMM8h,
+                   XMM9,  XMM9b,  XMM9c,  XMM9d,  XMM9e,  XMM9f,  XMM9g,  XMM9h,
+                   XMM10, XMM10b, XMM10c, XMM10d, XMM10e, XMM10f, XMM10g, XMM10h,
+                   XMM11, XMM11b, XMM11c, XMM11d, XMM11e, XMM11f, XMM11g, XMM11h,
+                   XMM12, XMM12b, XMM12c, XMM12d, XMM12e, XMM12f, XMM12g, XMM12h,
+                   XMM13, XMM13b, XMM13c, XMM13d, XMM13e, XMM13f, XMM13g, XMM13h,
+                   XMM14, XMM14b, XMM14c, XMM14d, XMM14e, XMM14f, XMM14g, XMM14h,
+                   XMM15, XMM15b, XMM15c, XMM15d, XMM15e, XMM15f, XMM15g, XMM15h
+#endif
+                   );
+
+// flags allocation class should be last.
+alloc_class chunk2(RFLAGS);
+
+// Singleton class for condition codes
+reg_class int_flags(RFLAGS);
+
+// Class for all float registers
+reg_class float_reg(XMM0,
+                    XMM1,
+                    XMM2,
+                    XMM3,
+                    XMM4,
+                    XMM5,
+                    XMM6,
+                    XMM7
+#ifdef _LP64
+                   ,XMM8,
+                    XMM9,
+                    XMM10,
+                    XMM11,
+                    XMM12,
+                    XMM13,
+                    XMM14,
+                    XMM15
+#endif
+                    );
+
+// Class for all double registers
+reg_class double_reg(XMM0,  XMM0b,
+                     XMM1,  XMM1b,
+                     XMM2,  XMM2b,
+                     XMM3,  XMM3b,
+                     XMM4,  XMM4b,
+                     XMM5,  XMM5b,
+                     XMM6,  XMM6b,
+                     XMM7,  XMM7b
+#ifdef _LP64
+                    ,XMM8,  XMM8b,
+                     XMM9,  XMM9b,
+                     XMM10, XMM10b,
+                     XMM11, XMM11b,
+                     XMM12, XMM12b,
+                     XMM13, XMM13b,
+                     XMM14, XMM14b,
+                     XMM15, XMM15b
+#endif
+                     );
+
+// Class for all 32bit vector registers
+reg_class vectors_reg(XMM0,
+                      XMM1,
+                      XMM2,
+                      XMM3,
+                      XMM4,
+                      XMM5,
+                      XMM6,
+                      XMM7
+#ifdef _LP64
+                     ,XMM8,
+                      XMM9,
+                      XMM10,
+                      XMM11,
+                      XMM12,
+                      XMM13,
+                      XMM14,
+                      XMM15
+#endif
+                      );
+
+// Class for all 64bit vector registers
+reg_class vectord_reg(XMM0,  XMM0b,
+                      XMM1,  XMM1b,
+                      XMM2,  XMM2b,
+                      XMM3,  XMM3b,
+                      XMM4,  XMM4b,
+                      XMM5,  XMM5b,
+                      XMM6,  XMM6b,
+                      XMM7,  XMM7b
+#ifdef _LP64
+                     ,XMM8,  XMM8b,
+                      XMM9,  XMM9b,
+                      XMM10, XMM10b,
+                      XMM11, XMM11b,
+                      XMM12, XMM12b,
+                      XMM13, XMM13b,
+                      XMM14, XMM14b,
+                      XMM15, XMM15b
+#endif
+                      );
+
+// Class for all 128bit vector registers
+reg_class vectorx_reg(XMM0,  XMM0b,  XMM0c,  XMM0d,
+                      XMM1,  XMM1b,  XMM1c,  XMM1d,
+                      XMM2,  XMM2b,  XMM2c,  XMM2d,
+                      XMM3,  XMM3b,  XMM3c,  XMM3d,
+                      XMM4,  XMM4b,  XMM4c,  XMM4d,
+                      XMM5,  XMM5b,  XMM5c,  XMM5d,
+                      XMM6,  XMM6b,  XMM6c,  XMM6d,
+                      XMM7,  XMM7b,  XMM7c,  XMM7d
+#ifdef _LP64
+                     ,XMM8,  XMM8b,  XMM8c,  XMM8d,
+                      XMM9,  XMM9b,  XMM9c,  XMM9d,
+                      XMM10, XMM10b, XMM10c, XMM10d,
+                      XMM11, XMM11b, XMM11c, XMM11d,
+                      XMM12, XMM12b, XMM12c, XMM12d,
+                      XMM13, XMM13b, XMM13c, XMM13d,
+                      XMM14, XMM14b, XMM14c, XMM14d,
+                      XMM15, XMM15b, XMM15c, XMM15d
+#endif
+                      );
+
+// Class for all 256bit vector registers
+reg_class vectory_reg(XMM0,  XMM0b,  XMM0c,  XMM0d,  XMM0e,  XMM0f,  XMM0g,  XMM0h,
+                      XMM1,  XMM1b,  XMM1c,  XMM1d,  XMM1e,  XMM1f,  XMM1g,  XMM1h,
+                      XMM2,  XMM2b,  XMM2c,  XMM2d,  XMM2e,  XMM2f,  XMM2g,  XMM2h,
+                      XMM3,  XMM3b,  XMM3c,  XMM3d,  XMM3e,  XMM3f,  XMM3g,  XMM3h,
+                      XMM4,  XMM4b,  XMM4c,  XMM4d,  XMM4e,  XMM4f,  XMM4g,  XMM4h,
+                      XMM5,  XMM5b,  XMM5c,  XMM5d,  XMM5e,  XMM5f,  XMM5g,  XMM5h,
+                      XMM6,  XMM6b,  XMM6c,  XMM6d,  XMM6e,  XMM6f,  XMM6g,  XMM6h,
+                      XMM7,  XMM7b,  XMM7c,  XMM7d,  XMM7e,  XMM7f,  XMM7g,  XMM7h
+#ifdef _LP64
+                     ,XMM8,  XMM8b,  XMM8c,  XMM8d,  XMM8e,  XMM8f,  XMM8g,  XMM8h,
+                      XMM9,  XMM9b,  XMM9c,  XMM9d,  XMM9e,  XMM9f,  XMM9g,  XMM9h,
+                      XMM10, XMM10b, XMM10c, XMM10d, XMM10e, XMM10f, XMM10g, XMM10h,
+                      XMM11, XMM11b, XMM11c, XMM11d, XMM11e, XMM11f, XMM11g, XMM11h,
+                      XMM12, XMM12b, XMM12c, XMM12d, XMM12e, XMM12f, XMM12g, XMM12h,
+                      XMM13, XMM13b, XMM13c, XMM13d, XMM13e, XMM13f, XMM13g, XMM13h,
+                      XMM14, XMM14b, XMM14c, XMM14d, XMM14e, XMM14f, XMM14g, XMM14h,
+                      XMM15, XMM15b, XMM15c, XMM15d, XMM15e, XMM15f, XMM15g, XMM15h
+#endif
+                      );
+
+%}
+
 source %{
   // Float masks come from different places depending on platform.
 #ifdef _LP64
@@ -38,6 +488,252 @@
   static address double_signflip() { return (address)double_signflip_pool; }
 #endif
 
+// Map Types to machine register types
+const int Matcher::base2reg[Type::lastype] = {
+  Node::NotAMachineReg,0,0, Op_RegI, Op_RegL, 0, Op_RegN,
+  Node::NotAMachineReg, Node::NotAMachineReg, /* tuple, array */
+  Op_VecS, Op_VecD, Op_VecX, Op_VecY, /* Vectors */
+  Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, /* the pointers */
+  0, 0/*abio*/,
+  Op_RegP /* Return address */, 0, /* the memories */
+  Op_RegF, Op_RegF, Op_RegF, Op_RegD, Op_RegD, Op_RegD,
+  0  /*bottom*/
+};
+
+// Max vector size in bytes. 0 if not supported.
+const int Matcher::vector_width_in_bytes(BasicType bt) {
+  assert(is_java_primitive(bt), "only primitive type vectors");
+  if (UseSSE < 2) return 0;
+  // SSE2 supports 128bit vectors for all types.
+  // AVX2 supports 256bit vectors for all types.
+  int size = (UseAVX > 1) ? 32 : 16;
+  // AVX1 supports 256bit vectors only for FLOAT and DOUBLE.
+  if (UseAVX > 0 && (bt == T_FLOAT || bt == T_DOUBLE))
+    size = 32;
+  // Use flag to limit vector size.
+  size = MIN2(size,(int)MaxVectorSize);
+  // Minimum 2 values in vector (or 4 for bytes).
+  switch (bt) {
+  case T_DOUBLE:
+  case T_LONG:
+    if (size < 16) return 0;
+  case T_FLOAT:
+  case T_INT:
+    if (size < 8) return 0;
+  case T_BOOLEAN:
+  case T_BYTE:
+  case T_CHAR:
+  case T_SHORT:
+    if (size < 4) return 0;
+    break;
+  default:
+    ShouldNotReachHere();
+  }
+  return size;
+}
+
+// Limits on vector size (number of elements) loaded into vector.
+const int Matcher::max_vector_size(const BasicType bt) {
+  return vector_width_in_bytes(bt)/type2aelembytes(bt);
+}
+const int Matcher::min_vector_size(const BasicType bt) {
+  int max_size = max_vector_size(bt);
+  // Min size which can be loaded into vector is 4 bytes.
+  int size = (type2aelembytes(bt) == 1) ? 4 : 2;
+  return MIN2(size,max_size);
+}
+
+// Vector ideal reg corresponding to specidied size in bytes
+const int Matcher::vector_ideal_reg(int size) {
+  assert(MaxVectorSize >= size, "");
+  switch(size) {
+    case  4: return Op_VecS;
+    case  8: return Op_VecD;
+    case 16: return Op_VecX;
+    case 32: return Op_VecY;
+  }
+  ShouldNotReachHere();
+  return 0;
+}
+
+// x86 supports misaligned vectors store/load.
+const bool Matcher::misaligned_vectors_ok() {
+  return !AlignVector; // can be changed by flag
+}
+
+// Helper methods for MachSpillCopyNode::implementation().
+static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo,
+                          int src_hi, int dst_hi, uint ireg, outputStream* st) {
+  // In 64-bit VM size calculation is very complex. Emitting instructions
+  // into scratch buffer is used to get size in 64-bit VM.
+  LP64_ONLY( assert(!do_size, "this method calculates size only for 32-bit VM"); )
+  assert(ireg == Op_VecS || // 32bit vector
+         (src_lo & 1) == 0 && (src_lo + 1) == src_hi &&
+         (dst_lo & 1) == 0 && (dst_lo + 1) == dst_hi,
+         "no non-adjacent vector moves" );
+  if (cbuf) {
+    MacroAssembler _masm(cbuf);
+    int offset = __ offset();
+    switch (ireg) {
+    case Op_VecS: // copy whole register
+    case Op_VecD:
+    case Op_VecX:
+      __ movdqu(as_XMMRegister(Matcher::_regEncode[dst_lo]), as_XMMRegister(Matcher::_regEncode[src_lo]));
+      break;
+    case Op_VecY:
+      __ vmovdqu(as_XMMRegister(Matcher::_regEncode[dst_lo]), as_XMMRegister(Matcher::_regEncode[src_lo]));
+      break;
+    default:
+      ShouldNotReachHere();
+    }
+    int size = __ offset() - offset;
+#ifdef ASSERT
+    // VEX_2bytes prefix is used if UseAVX > 0, so it takes the same 2 bytes as SIMD prefix.
+    assert(!do_size || size == 4, "incorrect size calculattion");
+#endif
+    return size;
+#ifndef PRODUCT
+  } else if (!do_size) {
+    switch (ireg) {
+    case Op_VecS:
+    case Op_VecD:
+    case Op_VecX:
+      st->print("movdqu  %s,%s\t# spill",Matcher::regName[dst_lo],Matcher::regName[src_lo]);
+      break;
+    case Op_VecY:
+      st->print("vmovdqu %s,%s\t# spill",Matcher::regName[dst_lo],Matcher::regName[src_lo]);
+      break;
+    default:
+      ShouldNotReachHere();
+    }
+#endif
+  }
+  // VEX_2bytes prefix is used if UseAVX > 0, and it takes the same 2 bytes as SIMD prefix.
+  return 4;
+}
+
+static int vec_spill_helper(CodeBuffer *cbuf, bool do_size, bool is_load,
+                            int stack_offset, int reg, uint ireg, outputStream* st) {
+  // In 64-bit VM size calculation is very complex. Emitting instructions
+  // into scratch buffer is used to get size in 64-bit VM.
+  LP64_ONLY( assert(!do_size, "this method calculates size only for 32-bit VM"); )
+  if (cbuf) {
+    MacroAssembler _masm(cbuf);
+    int offset = __ offset();
+    if (is_load) {
+      switch (ireg) {
+      case Op_VecS:
+        __ movdl(as_XMMRegister(Matcher::_regEncode[reg]), Address(rsp, stack_offset));
+        break;
+      case Op_VecD:
+        __ movq(as_XMMRegister(Matcher::_regEncode[reg]), Address(rsp, stack_offset));
+        break;
+      case Op_VecX:
+        __ movdqu(as_XMMRegister(Matcher::_regEncode[reg]), Address(rsp, stack_offset));
+        break;
+      case Op_VecY:
+        __ vmovdqu(as_XMMRegister(Matcher::_regEncode[reg]), Address(rsp, stack_offset));
+        break;
+      default:
+        ShouldNotReachHere();
+      }
+    } else { // store
+      switch (ireg) {
+      case Op_VecS:
+        __ movdl(Address(rsp, stack_offset), as_XMMRegister(Matcher::_regEncode[reg]));
+        break;
+      case Op_VecD:
+        __ movq(Address(rsp, stack_offset), as_XMMRegister(Matcher::_regEncode[reg]));
+        break;
+      case Op_VecX:
+        __ movdqu(Address(rsp, stack_offset), as_XMMRegister(Matcher::_regEncode[reg]));
+        break;
+      case Op_VecY:
+        __ vmovdqu(Address(rsp, stack_offset), as_XMMRegister(Matcher::_regEncode[reg]));
+        break;
+      default:
+        ShouldNotReachHere();
+      }
+    }
+    int size = __ offset() - offset;
+#ifdef ASSERT
+    int offset_size = (stack_offset == 0) ? 0 : ((stack_offset < 0x80) ? 1 : 4);
+    // VEX_2bytes prefix is used if UseAVX > 0, so it takes the same 2 bytes as SIMD prefix.
+    assert(!do_size || size == (5+offset_size), "incorrect size calculattion");
+#endif
+    return size;
+#ifndef PRODUCT
+  } else if (!do_size) {
+    if (is_load) {
+      switch (ireg) {
+      case Op_VecS:
+        st->print("movd    %s,[rsp + %d]\t# spill", Matcher::regName[reg], stack_offset);
+        break;
+      case Op_VecD:
+        st->print("movq    %s,[rsp + %d]\t# spill", Matcher::regName[reg], stack_offset);
+        break;
+       case Op_VecX:
+        st->print("movdqu  %s,[rsp + %d]\t# spill", Matcher::regName[reg], stack_offset);
+        break;
+      case Op_VecY:
+        st->print("vmovdqu %s,[rsp + %d]\t# spill", Matcher::regName[reg], stack_offset);
+        break;
+      default:
+        ShouldNotReachHere();
+      }
+    } else { // store
+      switch (ireg) {
+      case Op_VecS:
+        st->print("movd    [rsp + %d],%s\t# spill", stack_offset, Matcher::regName[reg]);
+        break;
+      case Op_VecD:
+        st->print("movq    [rsp + %d],%s\t# spill", stack_offset, Matcher::regName[reg]);
+        break;
+       case Op_VecX:
+        st->print("movdqu  [rsp + %d],%s\t# spill", stack_offset, Matcher::regName[reg]);
+        break;
+      case Op_VecY:
+        st->print("vmovdqu [rsp + %d],%s\t# spill", stack_offset, Matcher::regName[reg]);
+        break;
+      default:
+        ShouldNotReachHere();
+      }
+    }
+#endif
+  }
+  int offset_size = (stack_offset == 0) ? 0 : ((stack_offset < 0x80) ? 1 : 4);
+  // VEX_2bytes prefix is used if UseAVX > 0, so it takes the same 2 bytes as SIMD prefix.
+  return 5+offset_size;
+}
+
+static inline jfloat replicate4_imm(int con, int width) {
+  // Load a constant of "width" (in bytes) and replicate it to fill 32bit.
+  assert(width == 1 || width == 2, "only byte or short types here");
+  int bit_width = width * 8;
+  jint val = con;
+  val &= (1 << bit_width) - 1;  // mask off sign bits
+  while(bit_width < 32) {
+    val |= (val << bit_width);
+    bit_width <<= 1;
+  }
+  jfloat fval = *((jfloat*) &val);  // coerce to float type
+  return fval;
+}
+
+static inline jdouble replicate8_imm(int con, int width) {
+  // Load a constant of "width" (in bytes) and replicate it to fill 64bit.
+  assert(width == 1 || width == 2 || width == 4, "only byte, short or int types here");
+  int bit_width = width * 8;
+  jlong val = con;
+  val &= (((jlong) 1) << bit_width) - 1;  // mask off sign bits
+  while(bit_width < 64) {
+    val |= (val << bit_width);
+    bit_width <<= 1;
+  }
+  jdouble dval = *((jdouble*) &val);  // coerce to double type
+  return dval;
+}
+
 #ifndef PRODUCT
   void MachNopNode::format(PhaseRegAlloc*, outputStream* st) const {
     st->print("nop \t# %d bytes pad for loops and calls", _count);
@@ -103,6 +799,46 @@
 
 %}
 
+
+//----------OPERANDS-----------------------------------------------------------
+// Operand definitions must precede instruction definitions for correct parsing
+// in the ADLC because operands constitute user defined types which are used in
+// instruction definitions.
+
+// Vectors
+operand vecS() %{
+  constraint(ALLOC_IN_RC(vectors_reg));
+  match(VecS);
+
+  format %{ %}
+  interface(REG_INTER);
+%}
+
+operand vecD() %{
+  constraint(ALLOC_IN_RC(vectord_reg));
+  match(VecD);
+
+  format %{ %}
+  interface(REG_INTER);
+%}
+
+operand vecX() %{
+  constraint(ALLOC_IN_RC(vectorx_reg));
+  match(VecX);
+
+  format %{ %}
+  interface(REG_INTER);
+%}
+
+operand vecY() %{
+  constraint(ALLOC_IN_RC(vectory_reg));
+  match(VecY);
+
+  format %{ %}
+  interface(REG_INTER);
+%}
+
+
 // INSTRUCTIONS -- Platform independent definitions (same for 32- and 64-bit)
 
 // ============================================================================
@@ -852,3 +1588,797 @@
   ins_pipe(pipe_slow);
 %}
 
+
+// ====================VECTOR INSTRUCTIONS=====================================
+
+// Load vectors (4 bytes long)
+instruct loadV4(vecS dst, memory mem) %{
+  predicate(n->as_LoadVector()->memory_size() == 4);
+  match(Set dst (LoadVector mem));
+  ins_cost(125);
+  format %{ "movd    $dst,$mem\t! load vector (4 bytes)" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $mem$$Address);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Load vectors (8 bytes long)
+instruct loadV8(vecD dst, memory mem) %{
+  predicate(n->as_LoadVector()->memory_size() == 8);
+  match(Set dst (LoadVector mem));
+  ins_cost(125);
+  format %{ "movq    $dst,$mem\t! load vector (8 bytes)" %}
+  ins_encode %{
+    __ movq($dst$$XMMRegister, $mem$$Address);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Load vectors (16 bytes long)
+instruct loadV16(vecX dst, memory mem) %{
+  predicate(n->as_LoadVector()->memory_size() == 16);
+  match(Set dst (LoadVector mem));
+  ins_cost(125);
+  format %{ "movdqu  $dst,$mem\t! load vector (16 bytes)" %}
+  ins_encode %{
+    __ movdqu($dst$$XMMRegister, $mem$$Address);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Load vectors (32 bytes long)
+instruct loadV32(vecY dst, memory mem) %{
+  predicate(n->as_LoadVector()->memory_size() == 32);
+  match(Set dst (LoadVector mem));
+  ins_cost(125);
+  format %{ "vmovdqu $dst,$mem\t! load vector (32 bytes)" %}
+  ins_encode %{
+    __ vmovdqu($dst$$XMMRegister, $mem$$Address);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Store vectors
+instruct storeV4(memory mem, vecS src) %{
+  predicate(n->as_StoreVector()->memory_size() == 4);
+  match(Set mem (StoreVector mem src));
+  ins_cost(145);
+  format %{ "movd    $mem,$src\t! store vector (4 bytes)" %}
+  ins_encode %{
+    __ movdl($mem$$Address, $src$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct storeV8(memory mem, vecD src) %{
+  predicate(n->as_StoreVector()->memory_size() == 8);
+  match(Set mem (StoreVector mem src));
+  ins_cost(145);
+  format %{ "movq    $mem,$src\t! store vector (8 bytes)" %}
+  ins_encode %{
+    __ movq($mem$$Address, $src$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct storeV16(memory mem, vecX src) %{
+  predicate(n->as_StoreVector()->memory_size() == 16);
+  match(Set mem (StoreVector mem src));
+  ins_cost(145);
+  format %{ "movdqu  $mem,$src\t! store vector (16 bytes)" %}
+  ins_encode %{
+    __ movdqu($mem$$Address, $src$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct storeV32(memory mem, vecY src) %{
+  predicate(n->as_StoreVector()->memory_size() == 32);
+  match(Set mem (StoreVector mem src));
+  ins_cost(145);
+  format %{ "vmovdqu $mem,$src\t! store vector (32 bytes)" %}
+  ins_encode %{
+    __ vmovdqu($mem$$Address, $src$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate byte scalar to be vector
+instruct Repl4B(vecS dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateB src));
+  format %{ "movd    $dst,$src\n\t"
+            "punpcklbw $dst,$dst\n\t"
+            "pshuflw $dst,$dst,0x00\t! replicate4B" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl8B(vecD dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateB src));
+  format %{ "movd    $dst,$src\n\t"
+            "punpcklbw $dst,$dst\n\t"
+            "pshuflw $dst,$dst,0x00\t! replicate8B" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl16B(vecX dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 16);
+  match(Set dst (ReplicateB src));
+  format %{ "movd    $dst,$src\n\t"
+            "punpcklbw $dst,$dst\n\t"
+            "pshuflw $dst,$dst,0x00\n\t"
+            "movlhps $dst,$dst\t! replicate16B" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl32B(vecY dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 32);
+  match(Set dst (ReplicateB src));
+  format %{ "movd    $dst,$src\n\t"
+            "punpcklbw $dst,$dst\n\t"
+            "pshuflw $dst,$dst,0x00\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate32B" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate byte scalar immediate to be vector by loading from const table.
+instruct Repl4B_imm(vecS dst, immI con) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateB con));
+  format %{ "movss   $dst,[$constantaddress]\t! replicate4B($con)" %}
+  ins_encode %{
+    __ movflt($dst$$XMMRegister, $constantaddress(replicate4_imm($con$$constant, 1)));
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl8B_imm(vecD dst, immI con) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateB con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate8B($con)" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 1)));
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl16B_imm(vecX dst, immI con) %{
+  predicate(n->as_Vector()->length() == 16);
+  match(Set dst (ReplicateB con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate16B($con)\n\t"
+            "movlhps $dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 1)));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl32B_imm(vecY dst, immI con) %{
+  predicate(n->as_Vector()->length() == 32);
+  match(Set dst (ReplicateB con));
+  format %{ "movsd   $dst,[$constantaddress]\t! lreplicate32B($con)\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 1)));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate byte scalar zero to be vector
+instruct Repl4B_zero(vecS dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateB zero));
+  format %{ "pxor    $dst,$dst\t! replicate4B zero" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl8B_zero(vecD dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateB zero));
+  format %{ "pxor    $dst,$dst\t! replicate8B zero" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl16B_zero(vecX dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 16);
+  match(Set dst (ReplicateB zero));
+  format %{ "pxor    $dst,$dst\t! replicate16B zero" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl32B_zero(vecY dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 32);
+  match(Set dst (ReplicateB zero));
+  format %{ "vxorpd  $dst,$dst,$dst\t! replicate32B zero" %}
+  ins_encode %{
+    // Use vxorpd since AVX does not have vpxor for 256-bit (AVX2 will have it).
+    bool vector256 = true;
+    __ vxorpd($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, vector256);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+// Replicate char/short (2 byte) scalar to be vector
+instruct Repl2S(vecS dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateS src));
+  format %{ "movd    $dst,$src\n\t"
+            "pshuflw $dst,$dst,0x00\t! replicate2S" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4S(vecD dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateS src));
+  format %{ "movd    $dst,$src\n\t"
+            "pshuflw $dst,$dst,0x00\t! replicate4S" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl8S(vecX dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateS src));
+  format %{ "movd    $dst,$src\n\t"
+            "pshuflw $dst,$dst,0x00\n\t"
+            "movlhps $dst,$dst\t! replicate8S" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl16S(vecY dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 16);
+  match(Set dst (ReplicateS src));
+  format %{ "movd    $dst,$src\n\t"
+            "pshuflw $dst,$dst,0x00\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate16S" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate char/short (2 byte) scalar immediate to be vector by loading from const table.
+instruct Repl2S_imm(vecS dst, immI con) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateS con));
+  format %{ "movss   $dst,[$constantaddress]\t! replicate2S($con)" %}
+  ins_encode %{
+    __ movflt($dst$$XMMRegister, $constantaddress(replicate4_imm($con$$constant, 2)));
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4S_imm(vecD dst, immI con) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateS con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate4S($con)" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 2)));
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl8S_imm(vecX dst, immI con) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateS con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate8S($con)\n\t"
+            "movlhps $dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 2)));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl16S_imm(vecY dst, immI con) %{
+  predicate(n->as_Vector()->length() == 16);
+  match(Set dst (ReplicateS con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate16S($con)\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 2)));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate char/short (2 byte) scalar zero to be vector
+instruct Repl2S_zero(vecS dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateS zero));
+  format %{ "pxor    $dst,$dst\t! replicate2S zero" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4S_zero(vecD dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateS zero));
+  format %{ "pxor    $dst,$dst\t! replicate4S zero" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl8S_zero(vecX dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateS zero));
+  format %{ "pxor    $dst,$dst\t! replicate8S zero" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl16S_zero(vecY dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 16);
+  match(Set dst (ReplicateS zero));
+  format %{ "vxorpd  $dst,$dst,$dst\t! replicate16S zero" %}
+  ins_encode %{
+    // Use vxorpd since AVX does not have vpxor for 256-bit (AVX2 will have it).
+    bool vector256 = true;
+    __ vxorpd($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, vector256);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+// Replicate integer (4 byte) scalar to be vector
+instruct Repl2I(vecD dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateI src));
+  format %{ "movd    $dst,$src\n\t"
+            "pshufd  $dst,$dst,0x00\t! replicate2I" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4I(vecX dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateI src));
+  format %{ "movd    $dst,$src\n\t"
+            "pshufd  $dst,$dst,0x00\t! replicate4I" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl8I(vecY dst, rRegI src) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateI src));
+  format %{ "movd    $dst,$src\n\t"
+            "pshufd  $dst,$dst,0x00\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate8I" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate integer (4 byte) scalar immediate to be vector by loading from const table.
+instruct Repl2I_imm(vecD dst, immI con) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateI con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate2I($con)" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 4)));
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4I_imm(vecX dst, immI con) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateI con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate4I($con)\n\t"
+            "movlhps $dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 4)));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl8I_imm(vecY dst, immI con) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateI con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate8I($con)\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress(replicate8_imm($con$$constant, 4)));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Integer could be loaded into xmm register directly from memory.
+instruct Repl2I_mem(vecD dst, memory mem) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateI (LoadVector mem)));
+  format %{ "movd    $dst,$mem\n\t"
+            "pshufd  $dst,$dst,0x00\t! replicate2I" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $mem$$Address);
+    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4I_mem(vecX dst, memory mem) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateI (LoadVector mem)));
+  format %{ "movd    $dst,$mem\n\t"
+            "pshufd  $dst,$dst,0x00\t! replicate4I" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $mem$$Address);
+    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl8I_mem(vecY dst, memory mem) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateI (LoadVector mem)));
+  format %{ "movd    $dst,$mem\n\t"
+            "pshufd  $dst,$dst,0x00\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate8I" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $mem$$Address);
+    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate integer (4 byte) scalar zero to be vector
+instruct Repl2I_zero(vecD dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateI zero));
+  format %{ "pxor    $dst,$dst\t! replicate2I" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4I_zero(vecX dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateI zero));
+  format %{ "pxor    $dst,$dst\t! replicate4I zero)" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl8I_zero(vecY dst, immI0 zero) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateI zero));
+  format %{ "vxorpd  $dst,$dst,$dst\t! replicate8I zero" %}
+  ins_encode %{
+    // Use vxorpd since AVX does not have vpxor for 256-bit (AVX2 will have it).
+    bool vector256 = true;
+    __ vxorpd($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, vector256);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+// Replicate long (8 byte) scalar to be vector
+#ifdef _LP64
+instruct Repl2L(vecX dst, rRegL src) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateL src));
+  format %{ "movdq   $dst,$src\n\t"
+            "movlhps $dst,$dst\t! replicate2L" %}
+  ins_encode %{
+    __ movdq($dst$$XMMRegister, $src$$Register);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl4L(vecY dst, rRegL src) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateL src));
+  format %{ "movdq   $dst,$src\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate4L" %}
+  ins_encode %{
+    __ movdq($dst$$XMMRegister, $src$$Register);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+#else // _LP64
+instruct Repl2L(vecX dst, eRegL src, regD tmp) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateL src));
+  effect(TEMP dst, USE src, TEMP tmp);
+  format %{ "movdl   $dst,$src.lo\n\t"
+            "movdl   $tmp,$src.hi\n\t"
+            "punpckldq $dst,$tmp\n\t"
+            "movlhps $dst,$dst\t! replicate2L"%}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ movdl($tmp$$XMMRegister, HIGH_FROM_LOW($src$$Register));
+    __ punpckldq($dst$$XMMRegister, $tmp$$XMMRegister);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl4L(vecY dst, eRegL src, regD tmp) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateL src));
+  effect(TEMP dst, USE src, TEMP tmp);
+  format %{ "movdl   $dst,$src.lo\n\t"
+            "movdl   $tmp,$src.hi\n\t"
+            "punpckldq $dst,$tmp\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate4L" %}
+  ins_encode %{
+    __ movdl($dst$$XMMRegister, $src$$Register);
+    __ movdl($tmp$$XMMRegister, HIGH_FROM_LOW($src$$Register));
+    __ punpckldq($dst$$XMMRegister, $tmp$$XMMRegister);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+#endif // _LP64
+
+// Replicate long (8 byte) scalar immediate to be vector by loading from const table.
+instruct Repl2L_imm(vecX dst, immL con) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateL con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate2L($con)\n\t"
+            "movlhps $dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress($con));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl4L_imm(vecY dst, immL con) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateL con));
+  format %{ "movsd   $dst,[$constantaddress]\t! replicate4L($con)\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst" %}
+  ins_encode %{
+    __ movdbl($dst$$XMMRegister, $constantaddress($con));
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Long could be loaded into xmm register directly from memory.
+instruct Repl2L_mem(vecX dst, memory mem) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateL (LoadVector mem)));
+  format %{ "movq    $dst,$mem\n\t"
+            "movlhps $dst,$dst\t! replicate2L" %}
+  ins_encode %{
+    __ movq($dst$$XMMRegister, $mem$$Address);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl4L_mem(vecY dst, memory mem) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateL (LoadVector mem)));
+  format %{ "movq    $dst,$mem\n\t"
+            "movlhps $dst,$dst\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate4L" %}
+  ins_encode %{
+    __ movq($dst$$XMMRegister, $mem$$Address);
+    __ movlhps($dst$$XMMRegister, $dst$$XMMRegister);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate long (8 byte) scalar zero to be vector
+instruct Repl2L_zero(vecX dst, immL0 zero) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateL zero));
+  format %{ "pxor    $dst,$dst\t! replicate2L zero" %}
+  ins_encode %{
+    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4L_zero(vecY dst, immL0 zero) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateL zero));
+  format %{ "vxorpd  $dst,$dst,$dst\t! replicate4L zero" %}
+  ins_encode %{
+    // Use vxorpd since AVX does not have vpxor for 256-bit (AVX2 will have it).
+    bool vector256 = true;
+    __ vxorpd($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, vector256);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+// Replicate float (4 byte) scalar to be vector
+instruct Repl2F(vecD dst, regF src) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateF src));
+  format %{ "pshufd  $dst,$dst,0x00\t! replicate2F" %}
+  ins_encode %{
+    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0x00);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4F(vecX dst, regF src) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateF src));
+  format %{ "pshufd  $dst,$dst,0x00\t! replicate4F" %}
+  ins_encode %{
+    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0x00);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl8F(vecY dst, regF src) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateF src));
+  format %{ "pshufd  $dst,$src,0x00\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate8F" %}
+  ins_encode %{
+    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0x00);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate float (4 byte) scalar zero to be vector
+instruct Repl2F_zero(vecD dst, immF0 zero) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateF zero));
+  format %{ "xorps   $dst,$dst\t! replicate2F zero" %}
+  ins_encode %{
+    __ xorps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4F_zero(vecX dst, immF0 zero) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateF zero));
+  format %{ "xorps   $dst,$dst\t! replicate4F zero" %}
+  ins_encode %{
+    __ xorps($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl8F_zero(vecY dst, immF0 zero) %{
+  predicate(n->as_Vector()->length() == 8);
+  match(Set dst (ReplicateF zero));
+  format %{ "vxorps  $dst,$dst,$dst\t! replicate8F zero" %}
+  ins_encode %{
+    bool vector256 = true;
+    __ vxorps($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, vector256);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+// Replicate double (8 bytes) scalar to be vector
+instruct Repl2D(vecX dst, regD src) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateD src));
+  format %{ "pshufd  $dst,$src,0x44\t! replicate2D" %}
+  ins_encode %{
+    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0x44);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+instruct Repl4D(vecY dst, regD src) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateD src));
+  format %{ "pshufd  $dst,$src,0x44\n\t"
+            "vinsertf128h $dst,$dst,$dst\t! replicate4D" %}
+  ins_encode %{
+    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0x44);
+    __ vinsertf128h($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( pipe_slow );
+%}
+
+// Replicate double (8 byte) scalar zero to be vector
+instruct Repl2D_zero(vecX dst, immD0 zero) %{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (ReplicateD zero));
+  format %{ "xorpd   $dst,$dst\t! replicate2D zero" %}
+  ins_encode %{
+    __ xorpd($dst$$XMMRegister, $dst$$XMMRegister);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
+instruct Repl4D_zero(vecY dst, immD0 zero) %{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (ReplicateD zero));
+  format %{ "vxorpd  $dst,$dst,$dst,vect256\t! replicate4D zero" %}
+  ins_encode %{
+    bool vector256 = true;
+    __ vxorpd($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, vector256);
+  %}
+  ins_pipe( fpu_reg_reg );
+%}
+
--- a/hotspot/src/cpu/x86/vm/x86_32.ad	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/x86_32.ad	Wed Jul 05 18:15:14 2017 +0200
@@ -74,9 +74,6 @@
 reg_def EAX(SOC, SOC, Op_RegI, 0, rax->as_VMReg());
 reg_def ESP( NS,  NS, Op_RegI, 4, rsp->as_VMReg());
 
-// Special Registers
-reg_def EFLAGS(SOC, SOC, 0, 8, VMRegImpl::Bad());
-
 // Float registers.  We treat TOS/FPR0 special.  It is invisible to the
 // allocator, and only shows up in the encodings.
 reg_def FPR0L( SOC, SOC, Op_RegF, 0, VMRegImpl::Bad());
@@ -105,27 +102,6 @@
 reg_def FPR7L( SOC, SOC, Op_RegF, 7, as_FloatRegister(6)->as_VMReg());
 reg_def FPR7H( SOC, SOC, Op_RegF, 7, as_FloatRegister(6)->as_VMReg()->next());
 
-// XMM registers.  128-bit registers or 4 words each, labeled a-d.
-// Word a in each register holds a Float, words ab hold a Double.
-// We currently do not use the SIMD capabilities, so registers cd
-// are unused at the moment.
-reg_def XMM0a( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg());
-reg_def XMM0b( SOC, SOC, Op_RegF, 0, xmm0->as_VMReg()->next());
-reg_def XMM1a( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg());
-reg_def XMM1b( SOC, SOC, Op_RegF, 1, xmm1->as_VMReg()->next());
-reg_def XMM2a( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg());
-reg_def XMM2b( SOC, SOC, Op_RegF, 2, xmm2->as_VMReg()->next());
-reg_def XMM3a( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg());
-reg_def XMM3b( SOC, SOC, Op_RegF, 3, xmm3->as_VMReg()->next());
-reg_def XMM4a( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg());
-reg_def XMM4b( SOC, SOC, Op_RegF, 4, xmm4->as_VMReg()->next());
-reg_def XMM5a( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg());
-reg_def XMM5b( SOC, SOC, Op_RegF, 5, xmm5->as_VMReg()->next());
-reg_def XMM6a( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg());
-reg_def XMM6b( SOC, SOC, Op_RegF, 6, xmm6->as_VMReg()->next());
-reg_def XMM7a( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg());
-reg_def XMM7b( SOC, SOC, Op_RegF, 7, xmm7->as_VMReg()->next());
-
 // Specify priority of register selection within phases of register
 // allocation.  Highest priority is first.  A useful heuristic is to
 // give registers a low priority when they are required by machine
@@ -138,15 +114,6 @@
                     FPR3L, FPR3H, FPR4L, FPR4H, FPR5L, FPR5H,
                     FPR6L, FPR6H, FPR7L, FPR7H );
 
-alloc_class chunk1( XMM0a, XMM0b,
-                    XMM1a, XMM1b,
-                    XMM2a, XMM2b,
-                    XMM3a, XMM3b,
-                    XMM4a, XMM4b,
-                    XMM5a, XMM5b,
-                    XMM6a, XMM6b,
-                    XMM7a, XMM7b, EFLAGS);
-
 
 //----------Architecture Description Register Classes--------------------------
 // Several register classes are automatically defined based upon information in
@@ -159,12 +126,12 @@
 // Class for all registers
 reg_class any_reg(EAX, EDX, EBP, EDI, ESI, ECX, EBX, ESP);
 // Class for general registers
-reg_class e_reg(EAX, EDX, EBP, EDI, ESI, ECX, EBX);
+reg_class int_reg(EAX, EDX, EBP, EDI, ESI, ECX, EBX);
 // Class for general registers which may be used for implicit null checks on win95
 // Also safe for use by tailjump. We don't want to allocate in rbp,
-reg_class e_reg_no_rbp(EAX, EDX, EDI, ESI, ECX, EBX);
+reg_class int_reg_no_rbp(EAX, EDX, EDI, ESI, ECX, EBX);
 // Class of "X" registers
-reg_class x_reg(EBX, ECX, EDX, EAX);
+reg_class int_x_reg(EBX, ECX, EDX, EAX);
 // Class of registers that can appear in an address with no offset.
 // EBP and ESP require an extra instruction byte for zero offset.
 // Used in fast-unlock
@@ -193,8 +160,6 @@
 reg_class sp_reg(ESP);
 // Singleton class for instruction pointer
 // reg_class ip_reg(EIP);
-// Singleton class for condition codes
-reg_class int_flags(EFLAGS);
 // Class of integer register pairs
 reg_class long_reg( EAX,EDX, ECX,EBX, EBP,EDI );
 // Class of integer register pairs that aligns with calling convention
@@ -206,29 +171,18 @@
 // Floating point registers.  Notice FPR0 is not a choice.
 // FPR0 is not ever allocated; we use clever encodings to fake
 // a 2-address instructions out of Intels FP stack.
-reg_class flt_reg( FPR1L,FPR2L,FPR3L,FPR4L,FPR5L,FPR6L,FPR7L );
-
-// make a register class for SSE registers
-reg_class xmm_reg(XMM0a, XMM1a, XMM2a, XMM3a, XMM4a, XMM5a, XMM6a, XMM7a);
-
-// make a double register class for SSE2 registers
-reg_class xdb_reg(XMM0a,XMM0b, XMM1a,XMM1b, XMM2a,XMM2b, XMM3a,XMM3b,
-                  XMM4a,XMM4b, XMM5a,XMM5b, XMM6a,XMM6b, XMM7a,XMM7b );
-
-reg_class dbl_reg( FPR1L,FPR1H, FPR2L,FPR2H, FPR3L,FPR3H,
-                   FPR4L,FPR4H, FPR5L,FPR5H, FPR6L,FPR6H,
-                   FPR7L,FPR7H );
-
-reg_class flt_reg0( FPR1L );
-reg_class dbl_reg0( FPR1L,FPR1H );
-reg_class dbl_reg1( FPR2L,FPR2H );
-reg_class dbl_notreg0( FPR2L,FPR2H, FPR3L,FPR3H, FPR4L,FPR4H,
-                       FPR5L,FPR5H, FPR6L,FPR6H, FPR7L,FPR7H );
-
-// XMM6 and XMM7 could be used as temporary registers for long, float and
-// double values for SSE2.
-reg_class xdb_reg6( XMM6a,XMM6b );
-reg_class xdb_reg7( XMM7a,XMM7b );
+reg_class fp_flt_reg( FPR1L,FPR2L,FPR3L,FPR4L,FPR5L,FPR6L,FPR7L );
+
+reg_class fp_dbl_reg( FPR1L,FPR1H, FPR2L,FPR2H, FPR3L,FPR3H,
+                      FPR4L,FPR4H, FPR5L,FPR5H, FPR6L,FPR6H,
+                      FPR7L,FPR7H );
+
+reg_class fp_flt_reg0( FPR1L );
+reg_class fp_dbl_reg0( FPR1L,FPR1H );
+reg_class fp_dbl_reg1( FPR2L,FPR2H );
+reg_class fp_dbl_notreg0( FPR2L,FPR2H, FPR3L,FPR3H, FPR4L,FPR4H,
+                          FPR5L,FPR5H, FPR6L,FPR6H, FPR7L,FPR7H );
+
 %}
 
 
@@ -412,7 +366,7 @@
   }
 }
 
-   // eRegI ereg, memory mem) %{    // emit_reg_mem
+   // rRegI ereg, memory mem) %{    // emit_reg_mem
 void encode_RegMem( CodeBuffer &cbuf, int reg_encoding, int base, int index, int scale, int displace, bool displace_is_oop ) {
   // There is no index & no scale, use form without SIB byte
   if ((index == 0x4) &&
@@ -787,7 +741,7 @@
 #endif
   }
   int offset_size = (offset == 0) ? 0 : ((offset <= 127) ? 1 : 4);
-  // VEX_2bytes prefix is used if UseAVX > 0, so it takes the same 2 bytes.
+  // VEX_2bytes prefix is used if UseAVX > 0, so it takes the same 2 bytes as SIMD prefix.
   return size+5+offset_size;
 }
 
@@ -821,7 +775,7 @@
     }
 #endif
   }
-  // VEX_2bytes prefix is used if UseAVX > 0, and it takes the same 2 bytes.
+  // VEX_2bytes prefix is used if UseAVX > 0, and it takes the same 2 bytes as SIMD prefix.
   // Only MOVAPS SSE prefix uses 1 byte.
   int sz = 4;
   if (!(src_lo+1 == src_hi && dst_lo+1 == dst_hi) &&
@@ -903,6 +857,108 @@
   return impl_helper(cbuf,do_size,false,offset,st_op,op,op_str,size, st);
 }
 
+// Next two methods are shared by 32- and 64-bit VM. They are defined in x86.ad.
+static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo,
+                          int src_hi, int dst_hi, uint ireg, outputStream* st);
+
+static int vec_spill_helper(CodeBuffer *cbuf, bool do_size, bool is_load,
+                            int stack_offset, int reg, uint ireg, outputStream* st);
+
+static int vec_stack_to_stack_helper(CodeBuffer *cbuf, bool do_size, int src_offset,
+                                     int dst_offset, uint ireg, outputStream* st) {
+  int calc_size = 0;
+  int src_offset_size = (src_offset == 0) ? 0 : ((src_offset < 0x80) ? 1 : 4);
+  int dst_offset_size = (dst_offset == 0) ? 0 : ((dst_offset < 0x80) ? 1 : 4);
+  switch (ireg) {
+  case Op_VecS:
+    calc_size = 3+src_offset_size + 3+dst_offset_size;
+    break;
+  case Op_VecD:
+    calc_size = 3+src_offset_size + 3+dst_offset_size;
+    src_offset += 4;
+    dst_offset += 4;
+    src_offset_size = (src_offset == 0) ? 0 : ((src_offset < 0x80) ? 1 : 4);
+    dst_offset_size = (dst_offset == 0) ? 0 : ((dst_offset < 0x80) ? 1 : 4);
+    calc_size += 3+src_offset_size + 3+dst_offset_size;
+    break;
+  case Op_VecX:
+    calc_size = 6 + 6 + 5+src_offset_size + 5+dst_offset_size;
+    break;
+  case Op_VecY:
+    calc_size = 6 + 6 + 5+src_offset_size + 5+dst_offset_size;
+    break;
+  default:
+    ShouldNotReachHere();
+  }
+  if (cbuf) {
+    MacroAssembler _masm(cbuf);
+    int offset = __ offset();
+    switch (ireg) {
+    case Op_VecS:
+      __ pushl(Address(rsp, src_offset));
+      __ popl (Address(rsp, dst_offset));
+      break;
+    case Op_VecD:
+      __ pushl(Address(rsp, src_offset));
+      __ popl (Address(rsp, dst_offset));
+      __ pushl(Address(rsp, src_offset+4));
+      __ popl (Address(rsp, dst_offset+4));
+      break;
+    case Op_VecX:
+      __ movdqu(Address(rsp, -16), xmm0);
+      __ movdqu(xmm0, Address(rsp, src_offset));
+      __ movdqu(Address(rsp, dst_offset), xmm0);
+      __ movdqu(xmm0, Address(rsp, -16));
+      break;
+    case Op_VecY:
+      __ vmovdqu(Address(rsp, -32), xmm0);
+      __ vmovdqu(xmm0, Address(rsp, src_offset));
+      __ vmovdqu(Address(rsp, dst_offset), xmm0);
+      __ vmovdqu(xmm0, Address(rsp, -32));
+      break;
+    default:
+      ShouldNotReachHere();
+    }
+    int size = __ offset() - offset;
+    assert(size == calc_size, "incorrect size calculattion");
+    return size;
+#ifndef PRODUCT
+  } else if (!do_size) {
+    switch (ireg) {
+    case Op_VecS:
+      st->print("pushl   [rsp + #%d]\t# 32-bit mem-mem spill\n\t"
+                "popl    [rsp + #%d]",
+                src_offset, dst_offset);
+      break;
+    case Op_VecD:
+      st->print("pushl   [rsp + #%d]\t# 64-bit mem-mem spill\n\t"
+                "popq    [rsp + #%d]\n\t"
+                "pushl   [rsp + #%d]\n\t"
+                "popq    [rsp + #%d]",
+                src_offset, dst_offset, src_offset+4, dst_offset+4);
+      break;
+     case Op_VecX:
+      st->print("movdqu  [rsp - #16], xmm0\t# 128-bit mem-mem spill\n\t"
+                "movdqu  xmm0, [rsp + #%d]\n\t"
+                "movdqu  [rsp + #%d], xmm0\n\t"
+                "movdqu  xmm0, [rsp - #16]",
+                src_offset, dst_offset);
+      break;
+    case Op_VecY:
+      st->print("vmovdqu [rsp - #32], xmm0\t# 256-bit mem-mem spill\n\t"
+                "vmovdqu xmm0, [rsp + #%d]\n\t"
+                "vmovdqu [rsp + #%d], xmm0\n\t"
+                "vmovdqu xmm0, [rsp - #32]",
+                src_offset, dst_offset);
+      break;
+    default:
+      ShouldNotReachHere();
+    }
+#endif
+  }
+  return calc_size;
+}
+
 uint MachSpillCopyNode::implementation( CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, outputStream* st ) const {
   // Get registers to move
   OptoReg::Name src_second = ra_->get_reg_second(in(1));
@@ -923,6 +979,29 @@
   if( src_first == dst_first && src_second == dst_second )
     return size;            // Self copy, no move
 
+  if (bottom_type()->isa_vect() != NULL) {
+    uint ireg = ideal_reg();
+    assert((src_first_rc != rc_int && dst_first_rc != rc_int), "sanity");
+    assert((src_first_rc != rc_float && dst_first_rc != rc_float), "sanity");
+    assert((ireg == Op_VecS || ireg == Op_VecD || ireg == Op_VecX || ireg == Op_VecY), "sanity");
+    if( src_first_rc == rc_stack && dst_first_rc == rc_stack ) {
+      // mem -> mem
+      int src_offset = ra_->reg2offset(src_first);
+      int dst_offset = ra_->reg2offset(dst_first);
+      return vec_stack_to_stack_helper(cbuf, do_size, src_offset, dst_offset, ireg, st);
+    } else if (src_first_rc == rc_xmm && dst_first_rc == rc_xmm ) {
+      return vec_mov_helper(cbuf, do_size, src_first, dst_first, src_second, dst_second, ireg, st);
+    } else if (src_first_rc == rc_xmm && dst_first_rc == rc_stack ) {
+      int stack_offset = ra_->reg2offset(dst_first);
+      return vec_spill_helper(cbuf, do_size, false, stack_offset, src_first, ireg, st);
+    } else if (src_first_rc == rc_stack && dst_first_rc == rc_xmm ) {
+      int stack_offset = ra_->reg2offset(src_first);
+      return vec_spill_helper(cbuf, do_size, true,  stack_offset, dst_first, ireg, st);
+    } else {
+      ShouldNotReachHere();
+    }
+  }
+
   // --------------------------------------
   // Check for mem-mem move.  push/pop to move.
   if( src_first_rc == rc_stack && dst_first_rc == rc_stack ) {
@@ -1313,16 +1392,6 @@
   return true;
 }
 
-// Vector width in bytes
-const uint Matcher::vector_width_in_bytes(void) {
-  return UseSSE >= 2 ? 8 : 0;
-}
-
-// Vector ideal reg
-const uint Matcher::vector_ideal_reg(void) {
-  return Op_RegD;
-}
-
 // Is this branch offset short enough that a short branch can be used?
 //
 // NOTE: If the platform does not provide any short branch variants, then
@@ -1452,7 +1521,7 @@
 // arguments in those registers not be available to the callee.
 bool Matcher::can_be_java_arg( int reg ) {
   if(  reg == ECX_num   || reg == EDX_num   ) return true;
-  if( (reg == XMM0a_num || reg == XMM1a_num) && UseSSE>=1 ) return true;
+  if( (reg == XMM0_num  || reg == XMM1_num ) && UseSSE>=1 ) return true;
   if( (reg == XMM0b_num || reg == XMM1b_num) && UseSSE>=2 ) return true;
   return false;
 }
@@ -1565,16 +1634,16 @@
     emit_opcode(cbuf,0x66);
   %}
 
-  enc_class RegReg (eRegI dst, eRegI src) %{    // RegReg(Many)
+  enc_class RegReg (rRegI dst, rRegI src) %{    // RegReg(Many)
     emit_rm(cbuf, 0x3, $dst$$reg, $src$$reg);
   %}
 
-  enc_class OpcRegReg (immI opcode, eRegI dst, eRegI src) %{    // OpcRegReg(Many)
+  enc_class OpcRegReg (immI opcode, rRegI dst, rRegI src) %{    // OpcRegReg(Many)
     emit_opcode(cbuf,$opcode$$constant);
     emit_rm(cbuf, 0x3, $dst$$reg, $src$$reg);
   %}
 
-  enc_class mov_r32_imm0( eRegI dst ) %{
+  enc_class mov_r32_imm0( rRegI dst ) %{
     emit_opcode( cbuf, 0xB8 + $dst$$reg ); // 0xB8+ rd   -- MOV r32  ,imm32
     emit_d32   ( cbuf, 0x0  );             //                         imm32==0x0
   %}
@@ -1621,7 +1690,7 @@
   %}
 
   // Dense encoding for older common ops
-  enc_class Opc_plus(immI opcode, eRegI reg) %{
+  enc_class Opc_plus(immI opcode, rRegI reg) %{
     emit_opcode(cbuf, $opcode$$constant + $reg$$reg);
   %}
 
@@ -1637,7 +1706,7 @@
     }
   %}
 
-  enc_class OpcSErm (eRegI dst, immI imm) %{    // OpcSEr/m
+  enc_class OpcSErm (rRegI dst, immI imm) %{    // OpcSEr/m
     // Emit primary opcode and set sign-extend bit
     // Check for 8-bit immediate, and set sign extend bit in opcode
     if (($imm$$constant >= -128) && ($imm$$constant <= 127)) {
@@ -1682,7 +1751,7 @@
     else                               emit_d32(cbuf,con);
   %}
 
-  enc_class OpcSReg (eRegI dst) %{    // BSWAP
+  enc_class OpcSReg (rRegI dst) %{    // BSWAP
     emit_cc(cbuf, $secondary, $dst$$reg );
   %}
 
@@ -1700,7 +1769,7 @@
     emit_rm(cbuf, 0x3, destlo, desthi);
   %}
 
-  enc_class RegOpc (eRegI div) %{    // IDIV, IMOD, JMP indirect, ...
+  enc_class RegOpc (rRegI div) %{    // IDIV, IMOD, JMP indirect, ...
     emit_rm(cbuf, 0x3, $secondary, $div$$reg );
   %}
 
@@ -1891,20 +1960,20 @@
 //                 runtime_call_Relocation::spec(), RELOC_IMM32 );
 //   %}
 
-  enc_class RegOpcImm (eRegI dst, immI8 shift) %{    // SHL, SAR, SHR
+  enc_class RegOpcImm (rRegI dst, immI8 shift) %{    // SHL, SAR, SHR
     $$$emit8$primary;
     emit_rm(cbuf, 0x3, $secondary, $dst$$reg);
     $$$emit8$shift$$constant;
   %}
 
-  enc_class LdImmI (eRegI dst, immI src) %{    // Load Immediate
+  enc_class LdImmI (rRegI dst, immI src) %{    // Load Immediate
     // Load immediate does not have a zero or sign extended version
     // for 8-bit immediates
     emit_opcode(cbuf, 0xB8 + $dst$$reg);
     $$$emit32$src$$constant;
   %}
 
-  enc_class LdImmP (eRegI dst, immI src) %{    // Load Immediate
+  enc_class LdImmP (rRegI dst, immI src) %{    // Load Immediate
     // Load immediate does not have a zero or sign extended version
     // for 8-bit immediates
     emit_opcode(cbuf, $primary + $dst$$reg);
@@ -1943,15 +2012,15 @@
 
 
   // Encode a reg-reg copy.  If it is useless, then empty encoding.
-  enc_class enc_Copy( eRegI dst, eRegI src ) %{
+  enc_class enc_Copy( rRegI dst, rRegI src ) %{
     encode_Copy( cbuf, $dst$$reg, $src$$reg );
   %}
 
-  enc_class enc_CopyL_Lo( eRegI dst, eRegL src ) %{
+  enc_class enc_CopyL_Lo( rRegI dst, eRegL src ) %{
     encode_Copy( cbuf, $dst$$reg, $src$$reg );
   %}
 
-  enc_class RegReg (eRegI dst, eRegI src) %{    // RegReg(Many)
+  enc_class RegReg (rRegI dst, rRegI src) %{    // RegReg(Many)
     emit_rm(cbuf, 0x3, $dst$$reg, $src$$reg);
   %}
 
@@ -1973,7 +2042,7 @@
     emit_rm(cbuf, 0x3, HIGH_FROM_LOW($dst$$reg), HIGH_FROM_LOW($src$$reg));
   %}
 
-  enc_class RegReg_HiLo( eRegL src, eRegI dst ) %{
+  enc_class RegReg_HiLo( eRegL src, rRegI dst ) %{
     emit_rm(cbuf, 0x3, $dst$$reg, HIGH_FROM_LOW($src$$reg));
   %}
 
@@ -2068,7 +2137,7 @@
     cbuf.set_insts_mark();            // Mark start of opcode for reloc info in mem operand
   %}
 
-  enc_class RegMem (eRegI ereg, memory mem) %{    // emit_reg_mem
+  enc_class RegMem (rRegI ereg, memory mem) %{    // emit_reg_mem
     int reg_encoding = $ereg$$reg;
     int base  = $mem$$base;
     int index = $mem$$index;
@@ -2132,7 +2201,7 @@
 
   // Clone of RegMem but accepts an extra parameter to access each
   // half of a double in memory; it never needs relocation info.
-  enc_class Mov_MemD_half_to_Reg (immI opcode, memory mem, immI disp_for_half, eRegI rm_reg) %{
+  enc_class Mov_MemD_half_to_Reg (immI opcode, memory mem, immI disp_for_half, rRegI rm_reg) %{
     emit_opcode(cbuf,$opcode$$constant);
     int reg_encoding = $rm_reg$$reg;
     int base     = $mem$$base;
@@ -2168,7 +2237,7 @@
     encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, disp_is_oop);
   %}
 
-  enc_class RegLea (eRegI dst, eRegI src0, immI src1 ) %{    // emit_reg_lea
+  enc_class RegLea (rRegI dst, rRegI src0, immI src1 ) %{    // emit_reg_lea
     int reg_encoding = $dst$$reg;
     int base         = $src0$$reg;      // 0xFFFFFFFF indicates no base
     int index        = 0x04;            // 0x04 indicates no index
@@ -2178,7 +2247,7 @@
     encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_is_oop);
   %}
 
-  enc_class min_enc (eRegI dst, eRegI src) %{    // MIN
+  enc_class min_enc (rRegI dst, rRegI src) %{    // MIN
     // Compare dst,src
     emit_opcode(cbuf,0x3B);
     emit_rm(cbuf, 0x3, $dst$$reg, $src$$reg);
@@ -2190,7 +2259,7 @@
     emit_rm(cbuf, 0x3, $dst$$reg, $src$$reg);
   %}
 
-  enc_class max_enc (eRegI dst, eRegI src) %{    // MAX
+  enc_class max_enc (rRegI dst, rRegI src) %{    // MAX
     // Compare dst,src
     emit_opcode(cbuf,0x3B);
     emit_rm(cbuf, 0x3, $dst$$reg, $src$$reg);
@@ -2221,7 +2290,7 @@
     encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_is_oop);
   %}
 
-  enc_class neg_reg(eRegI dst) %{
+  enc_class neg_reg(rRegI dst) %{
     // NEG $dst
     emit_opcode(cbuf,0xF7);
     emit_rm(cbuf, 0x3, 0x03, $dst$$reg );
@@ -2251,7 +2320,7 @@
     emit_rm(cbuf, 0x3, $p$$reg, tmpReg);
   %}
 
-  enc_class enc_cmpLTP_mem(eRegI p, eRegI q, memory mem, eCXRegI tmp) %{    // cadd_cmpLT
+  enc_class enc_cmpLTP_mem(rRegI p, rRegI q, memory mem, eCXRegI tmp) %{    // cadd_cmpLT
     int tmpReg = $tmp$$reg;
 
     // SUB $p,$q
@@ -2390,12 +2459,12 @@
   %}
 
   // Special case for moving an integer register to a stack slot.
-  enc_class OpcPRegSS( stackSlotI dst, eRegI src ) %{ // RegSS
+  enc_class OpcPRegSS( stackSlotI dst, rRegI src ) %{ // RegSS
     store_to_stackslot( cbuf, $primary, $src$$reg, $dst$$disp );
   %}
 
   // Special case for moving a register to a stack slot.
-  enc_class RegSS( stackSlotI dst, eRegI src ) %{ // RegSS
+  enc_class RegSS( stackSlotI dst, rRegI src ) %{ // RegSS
     // Opcode already emitted
     emit_rm( cbuf, 0x02, $src$$reg, ESP_enc );   // R/M byte
     emit_rm( cbuf, 0x00, ESP_enc, ESP_enc);          // SIB byte
@@ -2640,7 +2709,7 @@
 // equal_result    = 0;
 // nan_result      = -1;
 
-  enc_class CmpF_Result(eRegI dst) %{
+  enc_class CmpF_Result(rRegI dst) %{
     // fnstsw_ax();
     emit_opcode( cbuf, 0xDF);
     emit_opcode( cbuf, 0xE0);
@@ -2685,7 +2754,7 @@
 // done:
   %}
 
-  enc_class convert_int_long( regL dst, eRegI src ) %{
+  enc_class convert_int_long( regL dst, rRegI src ) %{
     // mov $dst.lo,$src
     int dst_encoding = $dst$$reg;
     int src_encoding = $src$$reg;
@@ -2754,7 +2823,7 @@
     emit_rm( cbuf, 0x3, 0x4, $src$$reg);
   %}
 
-  enc_class long_multiply( eADXRegL dst, eRegL src, eRegI tmp ) %{
+  enc_class long_multiply( eADXRegL dst, eRegL src, rRegI tmp ) %{
     // Basic idea: lo(result) = lo(x_lo * y_lo)
     //             hi(result) = hi(x_lo * y_lo) + lo(x_hi * y_lo) + lo(x_lo * y_hi)
     // MOV    $tmp,$src.lo
@@ -2780,7 +2849,7 @@
     emit_rm( cbuf, 0x3, HIGH_FROM_LOW($dst$$reg), $tmp$$reg );
   %}
 
-  enc_class long_multiply_con( eADXRegL dst, immL_127 src, eRegI tmp ) %{
+  enc_class long_multiply_con( eADXRegL dst, immL_127 src, rRegI tmp ) %{
     // Basic idea: lo(result) = lo(src * y_lo)
     //             hi(result) = hi(src * y_lo) + lo(src * y_hi)
     // IMUL   $tmp,EDX,$src
@@ -2836,7 +2905,7 @@
     emit_d8(cbuf, 4*4);
   %}
 
-  enc_class long_cmp_flags0( eRegL src, eRegI tmp ) %{
+  enc_class long_cmp_flags0( eRegL src, rRegI tmp ) %{
     // MOV   $tmp,$src.lo
     emit_opcode(cbuf, 0x8B);
     emit_rm(cbuf, 0x3, $tmp$$reg, $src$$reg);
@@ -2857,7 +2926,7 @@
     emit_rm(cbuf, 0x3, HIGH_FROM_LOW($src1$$reg), HIGH_FROM_LOW($src2$$reg) );
   %}
 
-  enc_class long_cmp_flags2( eRegL src1, eRegL src2, eRegI tmp ) %{
+  enc_class long_cmp_flags2( eRegL src1, eRegL src2, rRegI tmp ) %{
     // CMP    $src1.lo,$src2.lo\t! Long compare; set flags for low bits
     emit_opcode( cbuf, 0x3B );
     emit_rm(cbuf, 0x3, $src1$$reg, $src2$$reg );
@@ -2869,7 +2938,7 @@
     emit_rm(cbuf, 0x3, $tmp$$reg, HIGH_FROM_LOW($src2$$reg) );
   %}
 
-  enc_class long_cmp_flags3( eRegL src, eRegI tmp ) %{
+  enc_class long_cmp_flags3( eRegL src, rRegI tmp ) %{
     // XOR    $tmp,$tmp
     emit_opcode(cbuf,0x33);  // XOR
     emit_rm(cbuf,0x3, $tmp$$reg, $tmp$$reg);
@@ -3762,9 +3831,9 @@
     // in SSE2+ mode we want to keep the FPU stack clean so pretend
     // that C functions return float and double results in XMM0.
     if( ideal_reg == Op_RegD && UseSSE>=2 )
-      return OptoRegPair(XMM0b_num,XMM0a_num);
+      return OptoRegPair(XMM0b_num,XMM0_num);
     if( ideal_reg == Op_RegF && UseSSE>=2 )
-      return OptoRegPair(OptoReg::Bad,XMM0a_num);
+      return OptoRegPair(OptoReg::Bad,XMM0_num);
 
     return OptoRegPair(hi[ideal_reg],lo[ideal_reg]);
   %}
@@ -3775,9 +3844,9 @@
     static int lo[Op_RegL+1] = { 0, 0, OptoReg::Bad, EAX_num,      EAX_num,      FPR1L_num,    FPR1L_num, EAX_num };
     static int hi[Op_RegL+1] = { 0, 0, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, OptoReg::Bad, FPR1H_num, EDX_num };
     if( ideal_reg == Op_RegD && UseSSE>=2 )
-      return OptoRegPair(XMM0b_num,XMM0a_num);
+      return OptoRegPair(XMM0b_num,XMM0_num);
     if( ideal_reg == Op_RegF && UseSSE>=1 )
-      return OptoRegPair(OptoReg::Bad,XMM0a_num);
+      return OptoRegPair(OptoReg::Bad,XMM0_num);
     return OptoRegPair(hi[ideal_reg],lo[ideal_reg]);
   %}
 
@@ -4147,8 +4216,8 @@
 
 // Register Operands
 // Integer Register
-operand eRegI() %{
-  constraint(ALLOC_IN_RC(e_reg));
+operand rRegI() %{
+  constraint(ALLOC_IN_RC(int_reg));
   match(RegI);
   match(xRegI);
   match(eAXRegI);
@@ -4163,8 +4232,8 @@
 %}
 
 // Subset of Integer Register
-operand xRegI(eRegI reg) %{
-  constraint(ALLOC_IN_RC(x_reg));
+operand xRegI(rRegI reg) %{
+  constraint(ALLOC_IN_RC(int_x_reg));
   match(reg);
   match(eAXRegI);
   match(eBXRegI);
@@ -4179,7 +4248,7 @@
 operand eAXRegI(xRegI reg) %{
   constraint(ALLOC_IN_RC(eax_reg));
   match(reg);
-  match(eRegI);
+  match(rRegI);
 
   format %{ "EAX" %}
   interface(REG_INTER);
@@ -4189,7 +4258,7 @@
 operand eBXRegI(xRegI reg) %{
   constraint(ALLOC_IN_RC(ebx_reg));
   match(reg);
-  match(eRegI);
+  match(rRegI);
 
   format %{ "EBX" %}
   interface(REG_INTER);
@@ -4198,7 +4267,7 @@
 operand eCXRegI(xRegI reg) %{
   constraint(ALLOC_IN_RC(ecx_reg));
   match(reg);
-  match(eRegI);
+  match(rRegI);
 
   format %{ "ECX" %}
   interface(REG_INTER);
@@ -4207,7 +4276,7 @@
 operand eDXRegI(xRegI reg) %{
   constraint(ALLOC_IN_RC(edx_reg));
   match(reg);
-  match(eRegI);
+  match(rRegI);
 
   format %{ "EDX" %}
   interface(REG_INTER);
@@ -4216,7 +4285,7 @@
 operand eDIRegI(xRegI reg) %{
   constraint(ALLOC_IN_RC(edi_reg));
   match(reg);
-  match(eRegI);
+  match(rRegI);
 
   format %{ "EDI" %}
   interface(REG_INTER);
@@ -4263,7 +4332,7 @@
 operand eSIRegI(xRegI reg) %{
    constraint(ALLOC_IN_RC(esi_reg));
    match(reg);
-   match(eRegI);
+   match(rRegI);
 
    format %{ "ESI" %}
    interface(REG_INTER);
@@ -4284,7 +4353,7 @@
 %}
 
 operand eRegP() %{
-  constraint(ALLOC_IN_RC(e_reg));
+  constraint(ALLOC_IN_RC(int_reg));
   match(RegP);
   match(eAXRegP);
   match(eBXRegP);
@@ -4297,7 +4366,7 @@
 
 // On windows95, EBP is not safe to use for implicit null tests.
 operand eRegP_no_EBP() %{
-  constraint(ALLOC_IN_RC(e_reg_no_rbp));
+  constraint(ALLOC_IN_RC(int_reg_no_rbp));
   match(RegP);
   match(eAXRegP);
   match(eBXRegP);
@@ -4477,7 +4546,7 @@
 // Float register operands
 operand regDPR() %{
   predicate( UseSSE < 2 );
-  constraint(ALLOC_IN_RC(dbl_reg));
+  constraint(ALLOC_IN_RC(fp_dbl_reg));
   match(RegD);
   match(regDPR1);
   match(regDPR2);
@@ -4487,7 +4556,7 @@
 
 operand regDPR1(regDPR reg) %{
   predicate( UseSSE < 2 );
-  constraint(ALLOC_IN_RC(dbl_reg0));
+  constraint(ALLOC_IN_RC(fp_dbl_reg0));
   match(reg);
   format %{ "FPR1" %}
   interface(REG_INTER);
@@ -4495,7 +4564,7 @@
 
 operand regDPR2(regDPR reg) %{
   predicate( UseSSE < 2 );
-  constraint(ALLOC_IN_RC(dbl_reg1));
+  constraint(ALLOC_IN_RC(fp_dbl_reg1));
   match(reg);
   format %{ "FPR2" %}
   interface(REG_INTER);
@@ -4503,45 +4572,16 @@
 
 operand regnotDPR1(regDPR reg) %{
   predicate( UseSSE < 2 );
-  constraint(ALLOC_IN_RC(dbl_notreg0));
+  constraint(ALLOC_IN_RC(fp_dbl_notreg0));
   match(reg);
   format %{ %}
   interface(REG_INTER);
 %}
 
-// XMM Double register operands
-operand regD() %{
-  predicate( UseSSE>=2 );
-  constraint(ALLOC_IN_RC(xdb_reg));
-  match(RegD);
-  match(regD6);
-  match(regD7);
-  format %{ %}
-  interface(REG_INTER);
-%}
-
-// XMM6 double register operands
-operand regD6(regD reg) %{
-  predicate( UseSSE>=2 );
-  constraint(ALLOC_IN_RC(xdb_reg6));
-  match(reg);
-  format %{ "XMM6" %}
-  interface(REG_INTER);
-%}
-
-// XMM7 double register operands
-operand regD7(regD reg) %{
-  predicate( UseSSE>=2 );
-  constraint(ALLOC_IN_RC(xdb_reg7));
-  match(reg);
-  format %{ "XMM7" %}
-  interface(REG_INTER);
-%}
-
 // Float register operands
 operand regFPR() %{
   predicate( UseSSE < 2 );
-  constraint(ALLOC_IN_RC(flt_reg));
+  constraint(ALLOC_IN_RC(fp_flt_reg));
   match(RegF);
   match(regFPR1);
   format %{ %}
@@ -4551,21 +4591,30 @@
 // Float register operands
 operand regFPR1(regFPR reg) %{
   predicate( UseSSE < 2 );
-  constraint(ALLOC_IN_RC(flt_reg0));
+  constraint(ALLOC_IN_RC(fp_flt_reg0));
   match(reg);
   format %{ "FPR1" %}
   interface(REG_INTER);
 %}
 
-// XMM register operands
+// XMM Float register operands
 operand regF() %{
   predicate( UseSSE>=1 );
-  constraint(ALLOC_IN_RC(xmm_reg));
+  constraint(ALLOC_IN_RC(float_reg));
   match(RegF);
   format %{ %}
   interface(REG_INTER);
 %}
 
+// XMM Double register operands
+operand regD() %{
+  predicate( UseSSE>=2 );
+  constraint(ALLOC_IN_RC(double_reg));
+  match(RegD);
+  format %{ %}
+  interface(REG_INTER);
+%}
+
 
 //----------Memory Operands----------------------------------------------------
 // Direct Memory Operand
@@ -4583,7 +4632,7 @@
 
 // Indirect Memory Operand
 operand indirect(eRegP reg) %{
-  constraint(ALLOC_IN_RC(e_reg));
+  constraint(ALLOC_IN_RC(int_reg));
   match(reg);
 
   format %{ "[$reg]" %}
@@ -4622,7 +4671,7 @@
 %}
 
 // Indirect Memory Plus Long Offset Operand
-operand indOffset32X(eRegI reg, immP off) %{
+operand indOffset32X(rRegI reg, immP off) %{
   match(AddP off reg);
 
   format %{ "[$reg + $off]" %}
@@ -4635,7 +4684,7 @@
 %}
 
 // Indirect Memory Plus Index Register Plus Offset Operand
-operand indIndexOffset(eRegP reg, eRegI ireg, immI off) %{
+operand indIndexOffset(eRegP reg, rRegI ireg, immI off) %{
   match(AddP (AddP reg ireg) off);
 
   op_cost(10);
@@ -4649,7 +4698,7 @@
 %}
 
 // Indirect Memory Plus Index Register Plus Offset Operand
-operand indIndex(eRegP reg, eRegI ireg) %{
+operand indIndex(eRegP reg, rRegI ireg) %{
   match(AddP reg ireg);
 
   op_cost(10);
@@ -4667,7 +4716,7 @@
 // // -------------------------------------------------------------------------
 // // Scaled Memory Operands
 // // Indirect Memory Times Scale Plus Offset Operand
-// operand indScaleOffset(immP off, eRegI ireg, immI2 scale) %{
+// operand indScaleOffset(immP off, rRegI ireg, immI2 scale) %{
 //   match(AddP off (LShiftI ireg scale));
 //
 //   op_cost(10);
@@ -4681,7 +4730,7 @@
 // %}
 
 // Indirect Memory Times Scale Plus Index Register
-operand indIndexScale(eRegP reg, eRegI ireg, immI2 scale) %{
+operand indIndexScale(eRegP reg, rRegI ireg, immI2 scale) %{
   match(AddP reg (LShiftI ireg scale));
 
   op_cost(10);
@@ -4695,7 +4744,7 @@
 %}
 
 // Indirect Memory Times Scale Plus Index Register Plus Offset Operand
-operand indIndexScaleOffset(eRegP reg, immI off, eRegI ireg, immI2 scale) %{
+operand indIndexScaleOffset(eRegP reg, immI off, rRegI ireg, immI2 scale) %{
   match(AddP (AddP reg (LShiftI ireg scale)) off);
 
   op_cost(10);
@@ -4823,7 +4872,7 @@
 // Indirect Memory Operand
 operand indirect_win95_safe(eRegP_no_EBP reg)
 %{
-  constraint(ALLOC_IN_RC(e_reg));
+  constraint(ALLOC_IN_RC(int_reg));
   match(reg);
 
   op_cost(100);
@@ -4867,7 +4916,7 @@
 %}
 
 // Indirect Memory Plus Index Register Plus Offset Operand
-operand indIndexOffset_win95_safe(eRegP_no_EBP reg, eRegI ireg, immI off)
+operand indIndexOffset_win95_safe(eRegP_no_EBP reg, rRegI ireg, immI off)
 %{
   match(AddP (AddP reg ireg) off);
 
@@ -4882,7 +4931,7 @@
 %}
 
 // Indirect Memory Times Scale Plus Index Register
-operand indIndexScale_win95_safe(eRegP_no_EBP reg, eRegI ireg, immI2 scale)
+operand indIndexScale_win95_safe(eRegP_no_EBP reg, rRegI ireg, immI2 scale)
 %{
   match(AddP reg (LShiftI ireg scale));
 
@@ -4897,7 +4946,7 @@
 %}
 
 // Indirect Memory Times Scale Plus Index Register Plus Offset Operand
-operand indIndexScaleOffset_win95_safe(eRegP_no_EBP reg, immI off, eRegI ireg, immI2 scale)
+operand indIndexScaleOffset_win95_safe(eRegP_no_EBP reg, immI off, rRegI ireg, immI2 scale)
 %{
   match(AddP (AddP reg (LShiftI ireg scale)) off);
 
@@ -5086,7 +5135,7 @@
 //   Or: _mem if it requires the big decoder and a memory unit.
 
 // Integer ALU reg operation
-pipe_class ialu_reg(eRegI dst) %{
+pipe_class ialu_reg(rRegI dst) %{
     single_instruction;
     dst    : S4(write);
     dst    : S3(read);
@@ -5104,7 +5153,7 @@
 %}
 
 // Integer ALU reg operation using big decoder
-pipe_class ialu_reg_fat(eRegI dst) %{
+pipe_class ialu_reg_fat(rRegI dst) %{
     single_instruction;
     dst    : S4(write);
     dst    : S3(read);
@@ -5122,7 +5171,7 @@
 %}
 
 // Integer ALU reg-reg operation
-pipe_class ialu_reg_reg(eRegI dst, eRegI src) %{
+pipe_class ialu_reg_reg(rRegI dst, rRegI src) %{
     single_instruction;
     dst    : S4(write);
     src    : S3(read);
@@ -5140,7 +5189,7 @@
 %}
 
 // Integer ALU reg-reg operation
-pipe_class ialu_reg_reg_fat(eRegI dst, memory src) %{
+pipe_class ialu_reg_reg_fat(rRegI dst, memory src) %{
     single_instruction;
     dst    : S4(write);
     src    : S3(read);
@@ -5158,7 +5207,7 @@
 %}
 
 // Integer ALU reg-mem operation
-pipe_class ialu_reg_mem(eRegI dst, memory mem) %{
+pipe_class ialu_reg_mem(rRegI dst, memory mem) %{
     single_instruction;
     dst    : S5(write);
     mem    : S3(read);
@@ -5187,7 +5236,7 @@
 %}
 
 // Integer Store to Memory
-pipe_class ialu_mem_reg(memory mem, eRegI src) %{
+pipe_class ialu_mem_reg(memory mem, rRegI src) %{
     single_instruction;
     mem    : S3(read);
     src    : S5(read);
@@ -5216,7 +5265,7 @@
 %}
 
 // Integer ALU0 reg-reg operation
-pipe_class ialu_reg_reg_alu0(eRegI dst, eRegI src) %{
+pipe_class ialu_reg_reg_alu0(rRegI dst, rRegI src) %{
     single_instruction;
     dst    : S4(write);
     src    : S3(read);
@@ -5225,7 +5274,7 @@
 %}
 
 // Integer ALU0 reg-mem operation
-pipe_class ialu_reg_mem_alu0(eRegI dst, memory mem) %{
+pipe_class ialu_reg_mem_alu0(rRegI dst, memory mem) %{
     single_instruction;
     dst    : S5(write);
     mem    : S3(read);
@@ -5235,7 +5284,7 @@
 %}
 
 // Integer ALU reg-reg operation
-pipe_class ialu_cr_reg_reg(eFlagsReg cr, eRegI src1, eRegI src2) %{
+pipe_class ialu_cr_reg_reg(eFlagsReg cr, rRegI src1, rRegI src2) %{
     single_instruction;
     cr     : S4(write);
     src1   : S3(read);
@@ -5245,7 +5294,7 @@
 %}
 
 // Integer ALU reg-imm operation
-pipe_class ialu_cr_reg_imm(eFlagsReg cr, eRegI src1) %{
+pipe_class ialu_cr_reg_imm(eFlagsReg cr, rRegI src1) %{
     single_instruction;
     cr     : S4(write);
     src1   : S3(read);
@@ -5254,7 +5303,7 @@
 %}
 
 // Integer ALU reg-mem operation
-pipe_class ialu_cr_reg_mem(eFlagsReg cr, eRegI src1, memory src2) %{
+pipe_class ialu_cr_reg_mem(eFlagsReg cr, rRegI src1, memory src2) %{
     single_instruction;
     cr     : S4(write);
     src1   : S3(read);
@@ -5265,7 +5314,7 @@
 %}
 
 // Conditional move reg-reg
-pipe_class pipe_cmplt( eRegI p, eRegI q, eRegI y ) %{
+pipe_class pipe_cmplt( rRegI p, rRegI q, rRegI y ) %{
     instruction_count(4);
     y      : S4(read);
     q      : S3(read);
@@ -5274,7 +5323,7 @@
 %}
 
 // Conditional move reg-reg
-pipe_class pipe_cmov_reg( eRegI dst, eRegI src, eFlagsReg cr ) %{
+pipe_class pipe_cmov_reg( rRegI dst, rRegI src, eFlagsReg cr ) %{
     single_instruction;
     dst    : S4(write);
     src    : S3(read);
@@ -5283,7 +5332,7 @@
 %}
 
 // Conditional move reg-mem
-pipe_class pipe_cmov_mem( eFlagsReg cr, eRegI dst, memory src) %{
+pipe_class pipe_cmov_mem( eFlagsReg cr, rRegI dst, memory src) %{
     single_instruction;
     dst    : S4(write);
     src    : S3(read);
@@ -5534,7 +5583,7 @@
 //               in the encode section of the architecture description.
 
 //----------BSWAP-Instruction--------------------------------------------------
-instruct bytes_reverse_int(eRegI dst) %{
+instruct bytes_reverse_int(rRegI dst) %{
   match(Set dst (ReverseBytesI dst));
 
   format %{ "BSWAP  $dst" %}
@@ -5555,7 +5604,7 @@
   ins_pipe( ialu_reg_reg);
 %}
 
-instruct bytes_reverse_unsigned_short(eRegI dst, eFlagsReg cr) %{
+instruct bytes_reverse_unsigned_short(rRegI dst, eFlagsReg cr) %{
   match(Set dst (ReverseBytesUS dst));
   effect(KILL cr);
 
@@ -5568,7 +5617,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct bytes_reverse_short(eRegI dst, eFlagsReg cr) %{
+instruct bytes_reverse_short(rRegI dst, eFlagsReg cr) %{
   match(Set dst (ReverseBytesS dst));
   effect(KILL cr);
 
@@ -5584,7 +5633,7 @@
 
 //---------- Zeros Count Instructions ------------------------------------------
 
-instruct countLeadingZerosI(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct countLeadingZerosI(rRegI dst, rRegI src, eFlagsReg cr) %{
   predicate(UseCountLeadingZerosInstruction);
   match(Set dst (CountLeadingZerosI src));
   effect(KILL cr);
@@ -5596,7 +5645,7 @@
   ins_pipe(ialu_reg);
 %}
 
-instruct countLeadingZerosI_bsr(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct countLeadingZerosI_bsr(rRegI dst, rRegI src, eFlagsReg cr) %{
   predicate(!UseCountLeadingZerosInstruction);
   match(Set dst (CountLeadingZerosI src));
   effect(KILL cr);
@@ -5621,7 +5670,7 @@
   ins_pipe(ialu_reg);
 %}
 
-instruct countLeadingZerosL(eRegI dst, eRegL src, eFlagsReg cr) %{
+instruct countLeadingZerosL(rRegI dst, eRegL src, eFlagsReg cr) %{
   predicate(UseCountLeadingZerosInstruction);
   match(Set dst (CountLeadingZerosL src));
   effect(TEMP dst, KILL cr);
@@ -5644,7 +5693,7 @@
   ins_pipe(ialu_reg);
 %}
 
-instruct countLeadingZerosL_bsr(eRegI dst, eRegL src, eFlagsReg cr) %{
+instruct countLeadingZerosL_bsr(rRegI dst, eRegL src, eFlagsReg cr) %{
   predicate(!UseCountLeadingZerosInstruction);
   match(Set dst (CountLeadingZerosL src));
   effect(TEMP dst, KILL cr);
@@ -5680,7 +5729,7 @@
   ins_pipe(ialu_reg);
 %}
 
-instruct countTrailingZerosI(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct countTrailingZerosI(rRegI dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (CountTrailingZerosI src));
   effect(KILL cr);
 
@@ -5699,7 +5748,7 @@
   ins_pipe(ialu_reg);
 %}
 
-instruct countTrailingZerosL(eRegI dst, eRegL src, eFlagsReg cr) %{
+instruct countTrailingZerosL(rRegI dst, eRegL src, eFlagsReg cr) %{
   match(Set dst (CountTrailingZerosL src));
   effect(TEMP dst, KILL cr);
 
@@ -5731,7 +5780,7 @@
 
 //---------- Population Count Instructions -------------------------------------
 
-instruct popCountI(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct popCountI(rRegI dst, rRegI src, eFlagsReg cr) %{
   predicate(UsePopCountInstruction);
   match(Set dst (PopCountI src));
   effect(KILL cr);
@@ -5743,7 +5792,7 @@
   ins_pipe(ialu_reg);
 %}
 
-instruct popCountI_mem(eRegI dst, memory mem, eFlagsReg cr) %{
+instruct popCountI_mem(rRegI dst, memory mem, eFlagsReg cr) %{
   predicate(UsePopCountInstruction);
   match(Set dst (PopCountI (LoadI mem)));
   effect(KILL cr);
@@ -5756,7 +5805,7 @@
 %}
 
 // Note: Long.bitCount(long) returns an int.
-instruct popCountL(eRegI dst, eRegL src, eRegI tmp, eFlagsReg cr) %{
+instruct popCountL(rRegI dst, eRegL src, rRegI tmp, eFlagsReg cr) %{
   predicate(UsePopCountInstruction);
   match(Set dst (PopCountL src));
   effect(KILL cr, TEMP tmp, TEMP dst);
@@ -5773,7 +5822,7 @@
 %}
 
 // Note: Long.bitCount(long) returns an int.
-instruct popCountL_mem(eRegI dst, memory mem, eRegI tmp, eFlagsReg cr) %{
+instruct popCountL_mem(rRegI dst, memory mem, rRegI tmp, eFlagsReg cr) %{
   predicate(UsePopCountInstruction);
   match(Set dst (PopCountL (LoadL mem)));
   effect(KILL cr, TEMP tmp, TEMP dst);
@@ -5877,7 +5926,7 @@
 %}
 
 // Load Short (16bit signed)
-instruct loadS(eRegI dst, memory mem) %{
+instruct loadS(rRegI dst, memory mem) %{
   match(Set dst (LoadS mem));
 
   ins_cost(125);
@@ -5891,7 +5940,7 @@
 %}
 
 // Load Short (16 bit signed) to Byte (8 bit signed)
-instruct loadS2B(eRegI dst, memory mem, immI_24 twentyfour) %{
+instruct loadS2B(rRegI dst, memory mem, immI_24 twentyfour) %{
   match(Set dst (RShiftI (LShiftI (LoadS mem) twentyfour) twentyfour));
 
   ins_cost(125);
@@ -5922,7 +5971,7 @@
 %}
 
 // Load Unsigned Short/Char (16bit unsigned)
-instruct loadUS(eRegI dst, memory mem) %{
+instruct loadUS(rRegI dst, memory mem) %{
   match(Set dst (LoadUS mem));
 
   ins_cost(125);
@@ -5936,7 +5985,7 @@
 %}
 
 // Load Unsigned Short/Char (16 bit UNsigned) to Byte (8 bit signed)
-instruct loadUS2B(eRegI dst, memory mem, immI_24 twentyfour) %{
+instruct loadUS2B(rRegI dst, memory mem, immI_24 twentyfour) %{
   match(Set dst (RShiftI (LShiftI (LoadUS mem) twentyfour) twentyfour));
 
   ins_cost(125);
@@ -5997,7 +6046,7 @@
 %}
 
 // Load Integer
-instruct loadI(eRegI dst, memory mem) %{
+instruct loadI(rRegI dst, memory mem) %{
   match(Set dst (LoadI mem));
 
   ins_cost(125);
@@ -6011,7 +6060,7 @@
 %}
 
 // Load Integer (32 bit signed) to Byte (8 bit signed)
-instruct loadI2B(eRegI dst, memory mem, immI_24 twentyfour) %{
+instruct loadI2B(rRegI dst, memory mem, immI_24 twentyfour) %{
   match(Set dst (RShiftI (LShiftI (LoadI mem) twentyfour) twentyfour));
 
   ins_cost(125);
@@ -6023,7 +6072,7 @@
 %}
 
 // Load Integer (32 bit signed) to Unsigned Byte (8 bit UNsigned)
-instruct loadI2UB(eRegI dst, memory mem, immI_255 mask) %{
+instruct loadI2UB(rRegI dst, memory mem, immI_255 mask) %{
   match(Set dst (AndI (LoadI mem) mask));
 
   ins_cost(125);
@@ -6035,7 +6084,7 @@
 %}
 
 // Load Integer (32 bit signed) to Short (16 bit signed)
-instruct loadI2S(eRegI dst, memory mem, immI_16 sixteen) %{
+instruct loadI2S(rRegI dst, memory mem, immI_16 sixteen) %{
   match(Set dst (RShiftI (LShiftI (LoadI mem) sixteen) sixteen));
 
   ins_cost(125);
@@ -6047,7 +6096,7 @@
 %}
 
 // Load Integer (32 bit signed) to Unsigned Short/Char (16 bit UNsigned)
-instruct loadI2US(eRegI dst, memory mem, immI_65535 mask) %{
+instruct loadI2US(rRegI dst, memory mem, immI_65535 mask) %{
   match(Set dst (AndI (LoadI mem) mask));
 
   ins_cost(125);
@@ -6208,7 +6257,7 @@
 %}
 
 // Load Range
-instruct loadRange(eRegI dst, memory mem) %{
+instruct loadRange(rRegI dst, memory mem) %{
   match(Set dst (LoadRange mem));
 
   ins_cost(125);
@@ -6305,66 +6354,6 @@
   ins_pipe( fpu_reg_mem );
 %}
 
-// Load Aligned Packed Byte to XMM register
-instruct loadA8B(regD dst, memory mem) %{
-  predicate(UseSSE>=1);
-  match(Set dst (Load8B mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed8B" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Short to XMM register
-instruct loadA4S(regD dst, memory mem) %{
-  predicate(UseSSE>=1);
-  match(Set dst (Load4S mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed4S" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Char to XMM register
-instruct loadA4C(regD dst, memory mem) %{
-  predicate(UseSSE>=1);
-  match(Set dst (Load4C mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed4C" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Integer to XMM register
-instruct load2IU(regD dst, memory mem) %{
-  predicate(UseSSE>=1);
-  match(Set dst (Load2I mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed2I" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Single to XMM
-instruct loadA2F(regD dst, memory mem) %{
-  predicate(UseSSE>=1);
-  match(Set dst (Load2F mem));
-  ins_cost(145);
-  format %{ "MOVQ  $dst,$mem\t! packed2F" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
 // Load Effective Address
 instruct leaP8(eRegP dst, indOffset8 mem) %{
   match(Set dst mem);
@@ -6417,7 +6406,7 @@
 %}
 
 // Load Constant
-instruct loadConI(eRegI dst, immI src) %{
+instruct loadConI(rRegI dst, immI src) %{
   match(Set dst src);
 
   format %{ "MOV    $dst,$src" %}
@@ -6426,7 +6415,7 @@
 %}
 
 // Load Constant zero
-instruct loadConI0(eRegI dst, immI0 src, eFlagsReg cr) %{
+instruct loadConI0(rRegI dst, immI0 src, eFlagsReg cr) %{
   match(Set dst src);
   effect(KILL cr);
 
@@ -6594,7 +6583,7 @@
 %}
 
 // Load Stack Slot
-instruct loadSSI(eRegI dst, stackSlotI src) %{
+instruct loadSSI(rRegI dst, stackSlotI src) %{
   match(Set dst src);
   ins_cost(125);
 
@@ -6821,7 +6810,7 @@
 %}
 
 // Store Char/Short
-instruct storeC(memory mem, eRegI src) %{
+instruct storeC(memory mem, rRegI src) %{
   match(Set mem (StoreC mem src));
 
   ins_cost(125);
@@ -6832,7 +6821,7 @@
 %}
 
 // Store Integer
-instruct storeI(memory mem, eRegI src) %{
+instruct storeI(memory mem, rRegI src) %{
   match(Set mem (StoreI mem src));
 
   ins_cost(125);
@@ -6976,42 +6965,6 @@
   ins_pipe( ialu_mem_imm );
 %}
 
-// Store Aligned Packed Byte XMM register to memory
-instruct storeA8B(memory mem, regD src) %{
-  predicate(UseSSE>=1);
-  match(Set mem (Store8B mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed8B" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Store Aligned Packed Char/Short XMM register to memory
-instruct storeA4C(memory mem, regD src) %{
-  predicate(UseSSE>=1);
-  match(Set mem (Store4C mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed4C" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Store Aligned Packed Integer XMM register to memory
-instruct storeA2I(memory mem, regD src) %{
-  predicate(UseSSE>=1);
-  match(Set mem (Store2I mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed2I" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
 // Store CMS card-mark Immediate
 instruct storeImmCM(memory mem, immI8 src) %{
   match(Set mem (StoreCM mem src));
@@ -7073,18 +7026,6 @@
   ins_pipe( pipe_slow );
 %}
 
-// Store Aligned Packed Single Float XMM register to memory
-instruct storeA2F(memory mem, regD src) %{
-  predicate(UseSSE>=1);
-  match(Set mem (Store2F mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed2F" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
 // Store Float
 instruct storeFPR( memory mem, regFPR1 src) %{
   predicate(UseSSE==0);
@@ -7146,7 +7087,7 @@
 %}
 
 // Store Integer to stack slot
-instruct storeSSI(stackSlotI dst, eRegI src) %{
+instruct storeSSI(stackSlotI dst, rRegI src) %{
   match(Set dst src);
 
   ins_cost(100);
@@ -7271,7 +7212,7 @@
   ins_pipe(empty);
 %}
 
-instruct castP2X(eRegI dst, eRegP src ) %{
+instruct castP2X(rRegI dst, eRegP src ) %{
   match(Set dst (CastP2X src));
   ins_cost(50);
   format %{ "MOV    $dst, $src\t# CastP2X" %}
@@ -7281,7 +7222,7 @@
 
 //----------Conditional Move---------------------------------------------------
 // Conditional move
-instruct jmovI_reg(cmpOp cop, eFlagsReg cr, eRegI dst, eRegI src) %{
+instruct jmovI_reg(cmpOp cop, eFlagsReg cr, rRegI dst, rRegI src) %{
   predicate(!VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst src)));
   ins_cost(200);
@@ -7298,7 +7239,7 @@
   ins_pipe( pipe_cmov_reg );
 %}
 
-instruct jmovI_regU(cmpOpU cop, eFlagsRegU cr, eRegI dst, eRegI src) %{
+instruct jmovI_regU(cmpOpU cop, eFlagsRegU cr, rRegI dst, rRegI src) %{
   predicate(!VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst src)));
   ins_cost(200);
@@ -7315,7 +7256,7 @@
   ins_pipe( pipe_cmov_reg );
 %}
 
-instruct cmovI_reg(eRegI dst, eRegI src, eFlagsReg cr, cmpOp cop ) %{
+instruct cmovI_reg(rRegI dst, rRegI src, eFlagsReg cr, cmpOp cop ) %{
   predicate(VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst src)));
   ins_cost(200);
@@ -7325,7 +7266,7 @@
   ins_pipe( pipe_cmov_reg );
 %}
 
-instruct cmovI_regU( cmpOpU cop, eFlagsRegU cr, eRegI dst, eRegI src ) %{
+instruct cmovI_regU( cmpOpU cop, eFlagsRegU cr, rRegI dst, rRegI src ) %{
   predicate(VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst src)));
   ins_cost(200);
@@ -7335,7 +7276,7 @@
   ins_pipe( pipe_cmov_reg );
 %}
 
-instruct cmovI_regUCF( cmpOpUCF cop, eFlagsRegUCF cr, eRegI dst, eRegI src ) %{
+instruct cmovI_regUCF( cmpOpUCF cop, eFlagsRegUCF cr, rRegI dst, rRegI src ) %{
   predicate(VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst src)));
   ins_cost(200);
@@ -7345,7 +7286,7 @@
 %}
 
 // Conditional move
-instruct cmovI_mem(cmpOp cop, eFlagsReg cr, eRegI dst, memory src) %{
+instruct cmovI_mem(cmpOp cop, eFlagsReg cr, rRegI dst, memory src) %{
   predicate(VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst (LoadI src))));
   ins_cost(250);
@@ -7356,7 +7297,7 @@
 %}
 
 // Conditional move
-instruct cmovI_memU(cmpOpU cop, eFlagsRegU cr, eRegI dst, memory src) %{
+instruct cmovI_memU(cmpOpU cop, eFlagsRegU cr, rRegI dst, memory src) %{
   predicate(VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst (LoadI src))));
   ins_cost(250);
@@ -7366,7 +7307,7 @@
   ins_pipe( pipe_cmov_mem );
 %}
 
-instruct cmovI_memUCF(cmpOpUCF cop, eFlagsRegUCF cr, eRegI dst, memory src) %{
+instruct cmovI_memUCF(cmpOpUCF cop, eFlagsRegUCF cr, rRegI dst, memory src) %{
   predicate(VM_Version::supports_cmov() );
   match(Set dst (CMoveI (Binary cop cr) (Binary dst (LoadI src))));
   ins_cost(250);
@@ -7620,7 +7561,7 @@
 //----------Arithmetic Instructions--------------------------------------------
 //----------Addition Instructions----------------------------------------------
 // Integer Addition Instructions
-instruct addI_eReg(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct addI_eReg(rRegI dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (AddI dst src));
   effect(KILL cr);
 
@@ -7631,7 +7572,7 @@
   ins_pipe( ialu_reg_reg );
 %}
 
-instruct addI_eReg_imm(eRegI dst, immI src, eFlagsReg cr) %{
+instruct addI_eReg_imm(rRegI dst, immI src, eFlagsReg cr) %{
   match(Set dst (AddI dst src));
   effect(KILL cr);
 
@@ -7641,7 +7582,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct incI_eReg(eRegI dst, immI1 src, eFlagsReg cr) %{
+instruct incI_eReg(rRegI dst, immI1 src, eFlagsReg cr) %{
   predicate(UseIncDec);
   match(Set dst (AddI dst src));
   effect(KILL cr);
@@ -7653,7 +7594,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct leaI_eReg_immI(eRegI dst, eRegI src0, immI src1) %{
+instruct leaI_eReg_immI(rRegI dst, rRegI src0, immI src1) %{
   match(Set dst (AddI src0 src1));
   ins_cost(110);
 
@@ -7673,7 +7614,7 @@
   ins_pipe( ialu_reg_reg );
 %}
 
-instruct decI_eReg(eRegI dst, immI_M1 src, eFlagsReg cr) %{
+instruct decI_eReg(rRegI dst, immI_M1 src, eFlagsReg cr) %{
   predicate(UseIncDec);
   match(Set dst (AddI dst src));
   effect(KILL cr);
@@ -7685,7 +7626,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct addP_eReg(eRegP dst, eRegI src, eFlagsReg cr) %{
+instruct addP_eReg(eRegP dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (AddP dst src));
   effect(KILL cr);
 
@@ -7707,7 +7648,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct addI_eReg_mem(eRegI dst, memory src, eFlagsReg cr) %{
+instruct addI_eReg_mem(rRegI dst, memory src, eFlagsReg cr) %{
   match(Set dst (AddI dst (LoadI src)));
   effect(KILL cr);
 
@@ -7718,7 +7659,7 @@
   ins_pipe( ialu_reg_mem );
 %}
 
-instruct addI_mem_eReg(memory dst, eRegI src, eFlagsReg cr) %{
+instruct addI_mem_eReg(memory dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (StoreI dst (AddI (LoadI dst) src)));
   effect(KILL cr);
 
@@ -7780,7 +7721,7 @@
   ins_pipe( empty );
 %}
 
-instruct castII( eRegI dst ) %{
+instruct castII( rRegI dst ) %{
   match(Set dst (CastII dst));
   format %{ "#castII of $dst" %}
   ins_encode( /*empty encoding*/ );
@@ -7814,7 +7755,7 @@
 
 // Conditional-store of an int value.
 // ZF flag is set on success, reset otherwise.  Implemented with a CMPXCHG on Intel.
-instruct storeIConditional( memory mem, eAXRegI oldval, eRegI newval, eFlagsReg cr ) %{
+instruct storeIConditional( memory mem, eAXRegI oldval, rRegI newval, eFlagsReg cr ) %{
   match(Set cr (StoreIConditional mem (Binary oldval newval)));
   effect(KILL oldval);
   format %{ "CMPXCHG $mem,$newval\t# If EAX==$mem Then store $newval into $mem" %}
@@ -7847,7 +7788,7 @@
 
 // No flag versions for CompareAndSwap{P,I,L} because matcher can't match them
 
-instruct compareAndSwapL( eRegI res, eSIRegP mem_ptr, eADXRegL oldval, eBCXRegL newval, eFlagsReg cr ) %{
+instruct compareAndSwapL( rRegI res, eSIRegP mem_ptr, eADXRegL oldval, eBCXRegL newval, eFlagsReg cr ) %{
   match(Set res (CompareAndSwapL mem_ptr (Binary oldval newval)));
   effect(KILL cr, KILL oldval);
   format %{ "CMPXCHG8 [$mem_ptr],$newval\t# If EDX:EAX==[$mem_ptr] Then store $newval into [$mem_ptr]\n\t"
@@ -7860,7 +7801,7 @@
   ins_pipe( pipe_cmpxchg );
 %}
 
-instruct compareAndSwapP( eRegI res,  pRegP mem_ptr, eAXRegP oldval, eCXRegP newval, eFlagsReg cr) %{
+instruct compareAndSwapP( rRegI res,  pRegP mem_ptr, eAXRegP oldval, eCXRegP newval, eFlagsReg cr) %{
   match(Set res (CompareAndSwapP mem_ptr (Binary oldval newval)));
   effect(KILL cr, KILL oldval);
   format %{ "CMPXCHG [$mem_ptr],$newval\t# If EAX==[$mem_ptr] Then store $newval into [$mem_ptr]\n\t"
@@ -7872,7 +7813,7 @@
   ins_pipe( pipe_cmpxchg );
 %}
 
-instruct compareAndSwapI( eRegI res, pRegP mem_ptr, eAXRegI oldval, eCXRegI newval, eFlagsReg cr) %{
+instruct compareAndSwapI( rRegI res, pRegP mem_ptr, eAXRegI oldval, eCXRegI newval, eFlagsReg cr) %{
   match(Set res (CompareAndSwapI mem_ptr (Binary oldval newval)));
   effect(KILL cr, KILL oldval);
   format %{ "CMPXCHG [$mem_ptr],$newval\t# If EAX==[$mem_ptr] Then store $newval into [$mem_ptr]\n\t"
@@ -7886,7 +7827,7 @@
 
 //----------Subtraction Instructions-------------------------------------------
 // Integer Subtraction Instructions
-instruct subI_eReg(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct subI_eReg(rRegI dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (SubI dst src));
   effect(KILL cr);
 
@@ -7897,7 +7838,7 @@
   ins_pipe( ialu_reg_reg );
 %}
 
-instruct subI_eReg_imm(eRegI dst, immI src, eFlagsReg cr) %{
+instruct subI_eReg_imm(rRegI dst, immI src, eFlagsReg cr) %{
   match(Set dst (SubI dst src));
   effect(KILL cr);
 
@@ -7908,7 +7849,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct subI_eReg_mem(eRegI dst, memory src, eFlagsReg cr) %{
+instruct subI_eReg_mem(rRegI dst, memory src, eFlagsReg cr) %{
   match(Set dst (SubI dst (LoadI src)));
   effect(KILL cr);
 
@@ -7919,7 +7860,7 @@
   ins_pipe( ialu_reg_mem );
 %}
 
-instruct subI_mem_eReg(memory dst, eRegI src, eFlagsReg cr) %{
+instruct subI_mem_eReg(memory dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (StoreI dst (SubI (LoadI dst) src)));
   effect(KILL cr);
 
@@ -7931,7 +7872,7 @@
 %}
 
 // Subtract from a pointer
-instruct subP_eReg(eRegP dst, eRegI src, immI0 zero, eFlagsReg cr) %{
+instruct subP_eReg(eRegP dst, rRegI src, immI0 zero, eFlagsReg cr) %{
   match(Set dst (AddP dst (SubI zero src)));
   effect(KILL cr);
 
@@ -7942,7 +7883,7 @@
   ins_pipe( ialu_reg_reg );
 %}
 
-instruct negI_eReg(eRegI dst, immI0 zero, eFlagsReg cr) %{
+instruct negI_eReg(rRegI dst, immI0 zero, eFlagsReg cr) %{
   match(Set dst (SubI zero dst));
   effect(KILL cr);
 
@@ -7957,7 +7898,7 @@
 //----------Multiplication/Division Instructions-------------------------------
 // Integer Multiplication Instructions
 // Multiply Register
-instruct mulI_eReg(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct mulI_eReg(rRegI dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (MulI dst src));
   effect(KILL cr);
 
@@ -7970,7 +7911,7 @@
 %}
 
 // Multiply 32-bit Immediate
-instruct mulI_eReg_imm(eRegI dst, eRegI src, immI imm, eFlagsReg cr) %{
+instruct mulI_eReg_imm(rRegI dst, rRegI src, immI imm, eFlagsReg cr) %{
   match(Set dst (MulI src imm));
   effect(KILL cr);
 
@@ -8026,7 +7967,7 @@
 %}
 
 // Multiply Memory 32-bit Immediate
-instruct mulI_mem_imm(eRegI dst, memory src, immI imm, eFlagsReg cr) %{
+instruct mulI_mem_imm(rRegI dst, memory src, immI imm, eFlagsReg cr) %{
   match(Set dst (MulI (LoadI src) imm));
   effect(KILL cr);
 
@@ -8038,7 +7979,7 @@
 %}
 
 // Multiply Memory
-instruct mulI(eRegI dst, memory src, eFlagsReg cr) %{
+instruct mulI(rRegI dst, memory src, eFlagsReg cr) %{
   match(Set dst (MulI dst (LoadI src)));
   effect(KILL cr);
 
@@ -8075,7 +8016,7 @@
 %}
 
 // Multiply Register Long
-instruct mulL_eReg(eADXRegL dst, eRegL src, eRegI tmp, eFlagsReg cr) %{
+instruct mulL_eReg(eADXRegL dst, eRegL src, rRegI tmp, eFlagsReg cr) %{
   match(Set dst (MulL dst src));
   effect(KILL cr, TEMP tmp);
   ins_cost(4*100+3*400);
@@ -8093,7 +8034,7 @@
 %}
 
 // Multiply Register Long where the left operand's high 32 bits are zero
-instruct mulL_eReg_lhi0(eADXRegL dst, eRegL src, eRegI tmp, eFlagsReg cr) %{
+instruct mulL_eReg_lhi0(eADXRegL dst, eRegL src, rRegI tmp, eFlagsReg cr) %{
   predicate(is_operand_hi32_zero(n->in(1)));
   match(Set dst (MulL dst src));
   effect(KILL cr, TEMP tmp);
@@ -8114,7 +8055,7 @@
 %}
 
 // Multiply Register Long where the right operand's high 32 bits are zero
-instruct mulL_eReg_rhi0(eADXRegL dst, eRegL src, eRegI tmp, eFlagsReg cr) %{
+instruct mulL_eReg_rhi0(eADXRegL dst, eRegL src, rRegI tmp, eFlagsReg cr) %{
   predicate(is_operand_hi32_zero(n->in(2)));
   match(Set dst (MulL dst src));
   effect(KILL cr, TEMP tmp);
@@ -8150,7 +8091,7 @@
 %}
 
 // Multiply Register Long by small constant
-instruct mulL_eReg_con(eADXRegL dst, immL_127 src, eRegI tmp, eFlagsReg cr) %{
+instruct mulL_eReg_con(eADXRegL dst, immL_127 src, rRegI tmp, eFlagsReg cr) %{
   match(Set dst (MulL dst src));
   effect(KILL cr, TEMP tmp);
   ins_cost(2*100+2*400);
@@ -8248,7 +8189,7 @@
 %}
 
 // Divide Register Long (no special case since divisor != -1)
-instruct divL_eReg_imm32( eADXRegL dst, immL32 imm, eRegI tmp, eRegI tmp2, eFlagsReg cr ) %{
+instruct divL_eReg_imm32( eADXRegL dst, immL32 imm, rRegI tmp, rRegI tmp2, eFlagsReg cr ) %{
   match(Set dst (DivL dst imm));
   effect( TEMP tmp, TEMP tmp2, KILL cr );
   ins_cost(1000);
@@ -8319,7 +8260,7 @@
 %}
 
 // Remainder Register Long (remainder fit into 32 bits)
-instruct modL_eReg_imm32( eADXRegL dst, immL32 imm, eRegI tmp, eRegI tmp2, eFlagsReg cr ) %{
+instruct modL_eReg_imm32( eADXRegL dst, immL32 imm, rRegI tmp, rRegI tmp2, eFlagsReg cr ) %{
   match(Set dst (ModL dst imm));
   effect( TEMP tmp, TEMP tmp2, KILL cr );
   ins_cost(1000);
@@ -8387,7 +8328,7 @@
 
 // Integer Shift Instructions
 // Shift Left by one
-instruct shlI_eReg_1(eRegI dst, immI1 shift, eFlagsReg cr) %{
+instruct shlI_eReg_1(rRegI dst, immI1 shift, eFlagsReg cr) %{
   match(Set dst (LShiftI dst shift));
   effect(KILL cr);
 
@@ -8399,7 +8340,7 @@
 %}
 
 // Shift Left by 8-bit immediate
-instruct salI_eReg_imm(eRegI dst, immI8 shift, eFlagsReg cr) %{
+instruct salI_eReg_imm(rRegI dst, immI8 shift, eFlagsReg cr) %{
   match(Set dst (LShiftI dst shift));
   effect(KILL cr);
 
@@ -8411,7 +8352,7 @@
 %}
 
 // Shift Left by variable
-instruct salI_eReg_CL(eRegI dst, eCXRegI shift, eFlagsReg cr) %{
+instruct salI_eReg_CL(rRegI dst, eCXRegI shift, eFlagsReg cr) %{
   match(Set dst (LShiftI dst shift));
   effect(KILL cr);
 
@@ -8423,7 +8364,7 @@
 %}
 
 // Arithmetic shift right by one
-instruct sarI_eReg_1(eRegI dst, immI1 shift, eFlagsReg cr) %{
+instruct sarI_eReg_1(rRegI dst, immI1 shift, eFlagsReg cr) %{
   match(Set dst (RShiftI dst shift));
   effect(KILL cr);
 
@@ -8445,7 +8386,7 @@
 %}
 
 // Arithmetic Shift Right by 8-bit immediate
-instruct sarI_eReg_imm(eRegI dst, immI8 shift, eFlagsReg cr) %{
+instruct sarI_eReg_imm(rRegI dst, immI8 shift, eFlagsReg cr) %{
   match(Set dst (RShiftI dst shift));
   effect(KILL cr);
 
@@ -8468,7 +8409,7 @@
 %}
 
 // Arithmetic Shift Right by variable
-instruct sarI_eReg_CL(eRegI dst, eCXRegI shift, eFlagsReg cr) %{
+instruct sarI_eReg_CL(rRegI dst, eCXRegI shift, eFlagsReg cr) %{
   match(Set dst (RShiftI dst shift));
   effect(KILL cr);
 
@@ -8480,7 +8421,7 @@
 %}
 
 // Logical shift right by one
-instruct shrI_eReg_1(eRegI dst, immI1 shift, eFlagsReg cr) %{
+instruct shrI_eReg_1(rRegI dst, immI1 shift, eFlagsReg cr) %{
   match(Set dst (URShiftI dst shift));
   effect(KILL cr);
 
@@ -8492,7 +8433,7 @@
 %}
 
 // Logical Shift Right by 8-bit immediate
-instruct shrI_eReg_imm(eRegI dst, immI8 shift, eFlagsReg cr) %{
+instruct shrI_eReg_imm(rRegI dst, immI8 shift, eFlagsReg cr) %{
   match(Set dst (URShiftI dst shift));
   effect(KILL cr);
 
@@ -8506,7 +8447,7 @@
 
 // Logical Shift Right by 24, followed by Arithmetic Shift Left by 24.
 // This idiom is used by the compiler for the i2b bytecode.
-instruct i2b(eRegI dst, xRegI src, immI_24 twentyfour) %{
+instruct i2b(rRegI dst, xRegI src, immI_24 twentyfour) %{
   match(Set dst (RShiftI (LShiftI src twentyfour) twentyfour));
 
   size(3);
@@ -8519,7 +8460,7 @@
 
 // Logical Shift Right by 16, followed by Arithmetic Shift Left by 16.
 // This idiom is used by the compiler the i2s bytecode.
-instruct i2s(eRegI dst, xRegI src, immI_16 sixteen) %{
+instruct i2s(rRegI dst, xRegI src, immI_16 sixteen) %{
   match(Set dst (RShiftI (LShiftI src sixteen) sixteen));
 
   size(3);
@@ -8532,7 +8473,7 @@
 
 
 // Logical Shift Right by variable
-instruct shrI_eReg_CL(eRegI dst, eCXRegI shift, eFlagsReg cr) %{
+instruct shrI_eReg_CL(rRegI dst, eCXRegI shift, eFlagsReg cr) %{
   match(Set dst (URShiftI dst shift));
   effect(KILL cr);
 
@@ -8548,7 +8489,7 @@
 //----------Integer Logical Instructions---------------------------------------
 // And Instructions
 // And Register with Register
-instruct andI_eReg(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct andI_eReg(rRegI dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (AndI dst src));
   effect(KILL cr);
 
@@ -8560,7 +8501,7 @@
 %}
 
 // And Register with Immediate
-instruct andI_eReg_imm(eRegI dst, immI src, eFlagsReg cr) %{
+instruct andI_eReg_imm(rRegI dst, immI src, eFlagsReg cr) %{
   match(Set dst (AndI dst src));
   effect(KILL cr);
 
@@ -8572,7 +8513,7 @@
 %}
 
 // And Register with Memory
-instruct andI_eReg_mem(eRegI dst, memory src, eFlagsReg cr) %{
+instruct andI_eReg_mem(rRegI dst, memory src, eFlagsReg cr) %{
   match(Set dst (AndI dst (LoadI src)));
   effect(KILL cr);
 
@@ -8584,7 +8525,7 @@
 %}
 
 // And Memory with Register
-instruct andI_mem_eReg(memory dst, eRegI src, eFlagsReg cr) %{
+instruct andI_mem_eReg(memory dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (StoreI dst (AndI (LoadI dst) src)));
   effect(KILL cr);
 
@@ -8610,7 +8551,7 @@
 
 // Or Instructions
 // Or Register with Register
-instruct orI_eReg(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct orI_eReg(rRegI dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (OrI dst src));
   effect(KILL cr);
 
@@ -8621,7 +8562,7 @@
   ins_pipe( ialu_reg_reg );
 %}
 
-instruct orI_eReg_castP2X(eRegI dst, eRegP src, eFlagsReg cr) %{
+instruct orI_eReg_castP2X(rRegI dst, eRegP src, eFlagsReg cr) %{
   match(Set dst (OrI dst (CastP2X src)));
   effect(KILL cr);
 
@@ -8634,7 +8575,7 @@
 
 
 // Or Register with Immediate
-instruct orI_eReg_imm(eRegI dst, immI src, eFlagsReg cr) %{
+instruct orI_eReg_imm(rRegI dst, immI src, eFlagsReg cr) %{
   match(Set dst (OrI dst src));
   effect(KILL cr);
 
@@ -8646,7 +8587,7 @@
 %}
 
 // Or Register with Memory
-instruct orI_eReg_mem(eRegI dst, memory src, eFlagsReg cr) %{
+instruct orI_eReg_mem(rRegI dst, memory src, eFlagsReg cr) %{
   match(Set dst (OrI dst (LoadI src)));
   effect(KILL cr);
 
@@ -8658,7 +8599,7 @@
 %}
 
 // Or Memory with Register
-instruct orI_mem_eReg(memory dst, eRegI src, eFlagsReg cr) %{
+instruct orI_mem_eReg(memory dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (StoreI dst (OrI (LoadI dst) src)));
   effect(KILL cr);
 
@@ -8684,7 +8625,7 @@
 
 // ROL/ROR
 // ROL expand
-instruct rolI_eReg_imm1(eRegI dst, immI1 shift, eFlagsReg cr) %{
+instruct rolI_eReg_imm1(rRegI dst, immI1 shift, eFlagsReg cr) %{
   effect(USE_DEF dst, USE shift, KILL cr);
 
   format %{ "ROL    $dst, $shift" %}
@@ -8693,7 +8634,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct rolI_eReg_imm8(eRegI dst, immI8 shift, eFlagsReg cr) %{
+instruct rolI_eReg_imm8(rRegI dst, immI8 shift, eFlagsReg cr) %{
   effect(USE_DEF dst, USE shift, KILL cr);
 
   format %{ "ROL    $dst, $shift" %}
@@ -8713,7 +8654,7 @@
 // end of ROL expand
 
 // ROL 32bit by one once
-instruct rolI_eReg_i1(eRegI dst, immI1 lshift, immI_M1 rshift, eFlagsReg cr) %{
+instruct rolI_eReg_i1(rRegI dst, immI1 lshift, immI_M1 rshift, eFlagsReg cr) %{
   match(Set dst ( OrI (LShiftI dst lshift) (URShiftI dst rshift)));
 
   expand %{
@@ -8722,7 +8663,7 @@
 %}
 
 // ROL 32bit var by imm8 once
-instruct rolI_eReg_i8(eRegI dst, immI8 lshift, immI8 rshift, eFlagsReg cr) %{
+instruct rolI_eReg_i8(rRegI dst, immI8 lshift, immI8 rshift, eFlagsReg cr) %{
   predicate(  0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & 0x1f));
   match(Set dst ( OrI (LShiftI dst lshift) (URShiftI dst rshift)));
 
@@ -8750,7 +8691,7 @@
 %}
 
 // ROR expand
-instruct rorI_eReg_imm1(eRegI dst, immI1 shift, eFlagsReg cr) %{
+instruct rorI_eReg_imm1(rRegI dst, immI1 shift, eFlagsReg cr) %{
   effect(USE_DEF dst, USE shift, KILL cr);
 
   format %{ "ROR    $dst, $shift" %}
@@ -8759,7 +8700,7 @@
   ins_pipe( ialu_reg );
 %}
 
-instruct rorI_eReg_imm8(eRegI dst, immI8 shift, eFlagsReg cr) %{
+instruct rorI_eReg_imm8(rRegI dst, immI8 shift, eFlagsReg cr) %{
   effect (USE_DEF dst, USE shift, KILL cr);
 
   format %{ "ROR    $dst, $shift" %}
@@ -8779,7 +8720,7 @@
 // end of ROR expand
 
 // ROR right once
-instruct rorI_eReg_i1(eRegI dst, immI1 rshift, immI_M1 lshift, eFlagsReg cr) %{
+instruct rorI_eReg_i1(rRegI dst, immI1 rshift, immI_M1 lshift, eFlagsReg cr) %{
   match(Set dst ( OrI (URShiftI dst rshift) (LShiftI dst lshift)));
 
   expand %{
@@ -8788,7 +8729,7 @@
 %}
 
 // ROR 32bit by immI8 once
-instruct rorI_eReg_i8(eRegI dst, immI8 rshift, immI8 lshift, eFlagsReg cr) %{
+instruct rorI_eReg_i8(rRegI dst, immI8 rshift, immI8 lshift, eFlagsReg cr) %{
   predicate(  0 == ((n->in(1)->in(2)->get_int() + n->in(2)->in(2)->get_int()) & 0x1f));
   match(Set dst ( OrI (URShiftI dst rshift) (LShiftI dst lshift)));
 
@@ -8817,7 +8758,7 @@
 
 // Xor Instructions
 // Xor Register with Register
-instruct xorI_eReg(eRegI dst, eRegI src, eFlagsReg cr) %{
+instruct xorI_eReg(rRegI dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (XorI dst src));
   effect(KILL cr);
 
@@ -8829,7 +8770,7 @@
 %}
 
 // Xor Register with Immediate -1
-instruct xorI_eReg_im1(eRegI dst, immI_M1 imm) %{
+instruct xorI_eReg_im1(rRegI dst, immI_M1 imm) %{
   match(Set dst (XorI dst imm));  
 
   size(2);
@@ -8841,7 +8782,7 @@
 %}
 
 // Xor Register with Immediate
-instruct xorI_eReg_imm(eRegI dst, immI src, eFlagsReg cr) %{
+instruct xorI_eReg_imm(rRegI dst, immI src, eFlagsReg cr) %{
   match(Set dst (XorI dst src));
   effect(KILL cr);
 
@@ -8853,7 +8794,7 @@
 %}
 
 // Xor Register with Memory
-instruct xorI_eReg_mem(eRegI dst, memory src, eFlagsReg cr) %{
+instruct xorI_eReg_mem(rRegI dst, memory src, eFlagsReg cr) %{
   match(Set dst (XorI dst (LoadI src)));
   effect(KILL cr);
 
@@ -8865,7 +8806,7 @@
 %}
 
 // Xor Memory with Register
-instruct xorI_mem_eReg(memory dst, eRegI src, eFlagsReg cr) %{
+instruct xorI_mem_eReg(memory dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (StoreI dst (XorI (LoadI dst) src)));
   effect(KILL cr);
 
@@ -8890,14 +8831,14 @@
 
 //----------Convert Int to Boolean---------------------------------------------
 
-instruct movI_nocopy(eRegI dst, eRegI src) %{
+instruct movI_nocopy(rRegI dst, rRegI src) %{
   effect( DEF dst, USE src );
   format %{ "MOV    $dst,$src" %}
   ins_encode( enc_Copy( dst, src) );
   ins_pipe( ialu_reg_reg );
 %}
 
-instruct ci2b( eRegI dst, eRegI src, eFlagsReg cr ) %{
+instruct ci2b( rRegI dst, rRegI src, eFlagsReg cr ) %{
   effect( USE_DEF dst, USE src, KILL cr );
 
   size(4);
@@ -8908,7 +8849,7 @@
   ins_pipe( ialu_reg_reg_long );
 %}
 
-instruct convI2B( eRegI dst, eRegI src, eFlagsReg cr ) %{
+instruct convI2B( rRegI dst, rRegI src, eFlagsReg cr ) %{
   match(Set dst (Conv2B src));
 
   expand %{
@@ -8917,14 +8858,14 @@
   %}
 %}
 
-instruct movP_nocopy(eRegI dst, eRegP src) %{
+instruct movP_nocopy(rRegI dst, eRegP src) %{
   effect( DEF dst, USE src );
   format %{ "MOV    $dst,$src" %}
   ins_encode( enc_Copy( dst, src) );
   ins_pipe( ialu_reg_reg );
 %}
 
-instruct cp2b( eRegI dst, eRegP src, eFlagsReg cr ) %{
+instruct cp2b( rRegI dst, eRegP src, eFlagsReg cr ) %{
   effect( USE_DEF dst, USE src, KILL cr );
   format %{ "NEG    $dst\n\t"
             "ADC    $dst,$src" %}
@@ -8933,7 +8874,7 @@
   ins_pipe( ialu_reg_reg_long );
 %}
 
-instruct convP2B( eRegI dst, eRegP src, eFlagsReg cr ) %{
+instruct convP2B( rRegI dst, eRegP src, eFlagsReg cr ) %{
   match(Set dst (Conv2B src));
 
   expand %{
@@ -8958,7 +8899,7 @@
   ins_pipe( pipe_slow );
 %}
 
-instruct cmpLTMask0( eRegI dst, immI0 zero, eFlagsReg cr ) %{
+instruct cmpLTMask0( rRegI dst, immI0 zero, eFlagsReg cr ) %{
   match(Set dst (CmpLTMask dst zero));
   effect( DEF dst, KILL cr );
   ins_cost(100);
@@ -9430,7 +9371,7 @@
 %}
 
 // Compare vs zero into -1,0,1
-instruct cmpDPR_0(eRegI dst, regDPR src1, immDPR0 zero, eAXRegI rax, eFlagsReg cr) %{
+instruct cmpDPR_0(rRegI dst, regDPR src1, immDPR0 zero, eAXRegI rax, eFlagsReg cr) %{
   predicate(UseSSE<=1);
   match(Set dst (CmpD3 src1 zero));
   effect(KILL cr, KILL rax);
@@ -9444,7 +9385,7 @@
 %}
 
 // Compare into -1,0,1
-instruct cmpDPR_reg(eRegI dst, regDPR src1, regDPR src2, eAXRegI rax, eFlagsReg cr) %{
+instruct cmpDPR_reg(rRegI dst, regDPR src1, regDPR src2, eAXRegI rax, eFlagsReg cr) %{
   predicate(UseSSE<=1);
   match(Set dst (CmpD3 src1 src2));
   effect(KILL cr, KILL rax);
@@ -10222,7 +10163,7 @@
 %}
 
 // Compare vs zero into -1,0,1
-instruct cmpFPR_0(eRegI dst, regFPR src1, immFPR0 zero, eAXRegI rax, eFlagsReg cr) %{
+instruct cmpFPR_0(rRegI dst, regFPR src1, immFPR0 zero, eAXRegI rax, eFlagsReg cr) %{
   predicate(UseSSE == 0);
   match(Set dst (CmpF3 src1 zero));
   effect(KILL cr, KILL rax);
@@ -10236,7 +10177,7 @@
 %}
 
 // Compare into -1,0,1
-instruct cmpFPR_reg(eRegI dst, regFPR src1, regFPR src2, eAXRegI rax, eFlagsReg cr) %{
+instruct cmpFPR_reg(rRegI dst, regFPR src1, regFPR src2, eAXRegI rax, eFlagsReg cr) %{
   predicate(UseSSE == 0);
   match(Set dst (CmpF3 src1 src2));
   effect(KILL cr, KILL rax);
@@ -11156,7 +11097,7 @@
   ins_pipe( fpu_reg_mem );
 %}
 
-instruct convI2D_reg(regD dst, eRegI src) %{
+instruct convI2D_reg(regD dst, rRegI src) %{
   predicate( UseSSE>=2 && !UseXmmI2D );
   match(Set dst (ConvI2D src));
   format %{ "CVTSI2SD $dst,$src" %}
@@ -11176,7 +11117,7 @@
   ins_pipe( pipe_slow );
 %}
 
-instruct convXI2D_reg(regD dst, eRegI src)
+instruct convXI2D_reg(regD dst, rRegI src)
 %{
   predicate( UseSSE>=2 && UseXmmI2D );
   match(Set dst (ConvI2D src));
@@ -11264,7 +11205,7 @@
 %}
 
 // Convert an int to a float in xmm; no rounding step needed.
-instruct convI2F_reg(regF dst, eRegI src) %{
+instruct convI2F_reg(regF dst, rRegI src) %{
   predicate( UseSSE==1 || UseSSE>=2 && !UseXmmI2F );
   match(Set dst (ConvI2F src));
   format %{ "CVTSI2SS $dst, $src" %}
@@ -11274,7 +11215,7 @@
   ins_pipe( pipe_slow );
 %}
 
- instruct convXI2F_reg(regF dst, eRegI src)
+ instruct convXI2F_reg(regF dst, rRegI src)
 %{
   predicate( UseSSE>=2 && UseXmmI2F );
   match(Set dst (ConvI2F src));
@@ -11288,7 +11229,7 @@
   ins_pipe(pipe_slow); // XXX
 %}
 
-instruct convI2L_reg( eRegL dst, eRegI src, eFlagsReg cr) %{
+instruct convI2L_reg( eRegL dst, rRegI src, eFlagsReg cr) %{
   match(Set dst (ConvI2L src));
   effect(KILL cr);
   ins_cost(375);
@@ -11300,7 +11241,7 @@
 %}
 
 // Zero-extend convert int to long
-instruct convI2L_reg_zex(eRegL dst, eRegI src, immL_32bits mask, eFlagsReg flags ) %{
+instruct convI2L_reg_zex(eRegL dst, rRegI src, immL_32bits mask, eFlagsReg flags ) %{
   match(Set dst (AndL (ConvI2L src) mask) );
   effect( KILL flags );
   ins_cost(250);
@@ -11380,7 +11321,7 @@
   ins_pipe( pipe_slow );
 %}
 
-instruct convL2I_reg( eRegI dst, eRegL src ) %{
+instruct convL2I_reg( rRegI dst, eRegL src ) %{
   match(Set dst (ConvL2I src));
   effect( DEF dst, USE src );
   format %{ "MOV    $dst,$src.lo" %}
@@ -11389,7 +11330,7 @@
 %}
 
 
-instruct MoveF2I_stack_reg(eRegI dst, stackSlotF src) %{
+instruct MoveF2I_stack_reg(rRegI dst, stackSlotF src) %{
   match(Set dst (MoveF2I src));
   effect( DEF dst, USE src );
   ins_cost(100);
@@ -11424,7 +11365,7 @@
   ins_pipe( pipe_slow );
 %}
 
-instruct MoveF2I_reg_reg_sse(eRegI dst, regF src) %{
+instruct MoveF2I_reg_reg_sse(rRegI dst, regF src) %{
   predicate(UseSSE>=2);
   match(Set dst (MoveF2I src));
   effect( DEF dst, USE src );
@@ -11436,7 +11377,7 @@
   ins_pipe( pipe_slow );
 %}
 
-instruct MoveI2F_reg_stack(stackSlotF dst, eRegI src) %{
+instruct MoveI2F_reg_stack(stackSlotF dst, rRegI src) %{
   match(Set dst (MoveI2F src));
   effect( DEF dst, USE src );
 
@@ -11476,7 +11417,7 @@
   ins_pipe( pipe_slow );
 %}
 
-instruct MoveI2F_reg_reg_sse(regF dst, eRegI src) %{
+instruct MoveI2F_reg_reg_sse(regF dst, rRegI src) %{
   predicate(UseSSE>=2);
   match(Set dst (MoveI2F src));
   effect( DEF dst, USE src );
@@ -11610,186 +11551,6 @@
   ins_pipe( pipe_slow );
 %}
 
-// Replicate scalar to packed byte (1 byte) values in xmm
-instruct Repl8B_reg(regD dst, regD src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate8B src));
-  format %{ "MOVDQA  $dst,$src\n\t"
-            "PUNPCKLBW $dst,$dst\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate8B" %}
-  ins_encode %{
-    if ($dst$$reg != $src$$reg) {
-      __ movdqa($dst$$XMMRegister, $src$$XMMRegister);
-    }
-    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Replicate scalar to packed byte (1 byte) values in xmm
-instruct Repl8B_eRegI(regD dst, eRegI src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate8B src));
-  format %{ "MOVD    $dst,$src\n\t"
-            "PUNPCKLBW $dst,$dst\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate8B" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Replicate scalar zero to packed byte (1 byte) values in xmm
-instruct Repl8B_immI0(regD dst, immI0 zero) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate8B zero));
-  format %{ "PXOR  $dst,$dst\t! replicate8B" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed shore (2 byte) values in xmm
-instruct Repl4S_reg(regD dst, regD src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate4S src));
-  format %{ "PSHUFLW $dst,$src,0x00\t! replicate4S" %}
-  ins_encode %{
-    __ pshuflw($dst$$XMMRegister, $src$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed shore (2 byte) values in xmm
-instruct Repl4S_eRegI(regD dst, eRegI src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate4S src));
-  format %{ "MOVD    $dst,$src\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate4S" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar zero to packed short (2 byte) values in xmm
-instruct Repl4S_immI0(regD dst, immI0 zero) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate4S zero));
-  format %{ "PXOR  $dst,$dst\t! replicate4S" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed char (2 byte) values in xmm
-instruct Repl4C_reg(regD dst, regD src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate4C src));
-  format %{ "PSHUFLW $dst,$src,0x00\t! replicate4C" %}
-  ins_encode %{
-    __ pshuflw($dst$$XMMRegister, $src$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed char (2 byte) values in xmm
-instruct Repl4C_eRegI(regD dst, eRegI src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate4C src));
-  format %{ "MOVD    $dst,$src\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate4C" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar zero to packed char (2 byte) values in xmm
-instruct Repl4C_immI0(regD dst, immI0 zero) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate4C zero));
-  format %{ "PXOR  $dst,$dst\t! replicate4C" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed integer (4 byte) values in xmm
-instruct Repl2I_reg(regD dst, regD src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate2I src));
-  format %{ "PSHUFD $dst,$src,0x00\t! replicate2I" %}
-  ins_encode %{
-    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed integer (4 byte) values in xmm
-instruct Repl2I_eRegI(regD dst, eRegI src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate2I src));
-  format %{ "MOVD   $dst,$src\n\t"
-            "PSHUFD $dst,$dst,0x00\t! replicate2I" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar zero to packed integer (2 byte) values in xmm
-instruct Repl2I_immI0(regD dst, immI0 zero) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate2I zero));
-  format %{ "PXOR  $dst,$dst\t! replicate2I" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed single precision floating point values in xmm
-instruct Repl2F_reg(regD dst, regD src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate2F src));
-  format %{ "PSHUFD $dst,$src,0xe0\t! replicate2F" %}
-  ins_encode %{
-    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0xe0);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed single precision floating point values in xmm
-instruct Repl2F_regF(regD dst, regF src) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate2F src));
-  format %{ "PSHUFD $dst,$src,0xe0\t! replicate2F" %}
-  ins_encode %{
-    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0xe0);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed single precision floating point values in xmm
-instruct Repl2F_immF0(regD dst, immF0 zero) %{
-  predicate(UseSSE>=2);
-  match(Set dst (Replicate2F zero));
-  format %{ "PXOR  $dst,$dst\t! replicate2F" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
 
 // =======================================================================
 // fast clearing of an array
@@ -11898,7 +11659,7 @@
 
 //----------Control Flow Instructions------------------------------------------
 // Signed compare Instructions
-instruct compI_eReg(eFlagsReg cr, eRegI op1, eRegI op2) %{
+instruct compI_eReg(eFlagsReg cr, rRegI op1, rRegI op2) %{
   match(Set cr (CmpI op1 op2));
   effect( DEF cr, USE op1, USE op2 );
   format %{ "CMP    $op1,$op2" %}
@@ -11907,7 +11668,7 @@
   ins_pipe( ialu_cr_reg_reg );
 %}
 
-instruct compI_eReg_imm(eFlagsReg cr, eRegI op1, immI op2) %{
+instruct compI_eReg_imm(eFlagsReg cr, rRegI op1, immI op2) %{
   match(Set cr (CmpI op1 op2));
   effect( DEF cr, USE op1 );
   format %{ "CMP    $op1,$op2" %}
@@ -11918,7 +11679,7 @@
 %}
 
 // Cisc-spilled version of cmpI_eReg
-instruct compI_eReg_mem(eFlagsReg cr, eRegI op1, memory op2) %{
+instruct compI_eReg_mem(eFlagsReg cr, rRegI op1, memory op2) %{
   match(Set cr (CmpI op1 (LoadI op2)));
 
   format %{ "CMP    $op1,$op2" %}
@@ -11928,7 +11689,7 @@
   ins_pipe( ialu_cr_reg_mem );
 %}
 
-instruct testI_reg( eFlagsReg cr, eRegI src, immI0 zero ) %{
+instruct testI_reg( eFlagsReg cr, rRegI src, immI0 zero ) %{
   match(Set cr (CmpI src zero));
   effect( DEF cr, USE src );
 
@@ -11938,7 +11699,7 @@
   ins_pipe( ialu_cr_reg_imm );
 %}
 
-instruct testI_reg_imm( eFlagsReg cr, eRegI src, immI con, immI0 zero ) %{
+instruct testI_reg_imm( eFlagsReg cr, rRegI src, immI con, immI0 zero ) %{
   match(Set cr (CmpI (AndI src con) zero));
 
   format %{ "TEST   $src,$con" %}
@@ -11947,7 +11708,7 @@
   ins_pipe( ialu_cr_reg_imm );
 %}
 
-instruct testI_reg_mem( eFlagsReg cr, eRegI src, memory mem, immI0 zero ) %{
+instruct testI_reg_mem( eFlagsReg cr, rRegI src, memory mem, immI0 zero ) %{
   match(Set cr (CmpI (AndI src mem) zero));
 
   format %{ "TEST   $src,$mem" %}
@@ -11958,7 +11719,7 @@
 
 // Unsigned compare Instructions; really, same as signed except they
 // produce an eFlagsRegU instead of eFlagsReg.
-instruct compU_eReg(eFlagsRegU cr, eRegI op1, eRegI op2) %{
+instruct compU_eReg(eFlagsRegU cr, rRegI op1, rRegI op2) %{
   match(Set cr (CmpU op1 op2));
 
   format %{ "CMPu   $op1,$op2" %}
@@ -11967,7 +11728,7 @@
   ins_pipe( ialu_cr_reg_reg );
 %}
 
-instruct compU_eReg_imm(eFlagsRegU cr, eRegI op1, immI op2) %{
+instruct compU_eReg_imm(eFlagsRegU cr, rRegI op1, immI op2) %{
   match(Set cr (CmpU op1 op2));
 
   format %{ "CMPu   $op1,$op2" %}
@@ -11977,7 +11738,7 @@
 %}
 
 // // Cisc-spilled version of cmpU_eReg
-instruct compU_eReg_mem(eFlagsRegU cr, eRegI op1, memory op2) %{
+instruct compU_eReg_mem(eFlagsRegU cr, rRegI op1, memory op2) %{
   match(Set cr (CmpU op1 (LoadI op2)));
 
   format %{ "CMPu   $op1,$op2" %}
@@ -11988,7 +11749,7 @@
 %}
 
 // // Cisc-spilled version of cmpU_eReg
-//instruct compU_mem_eReg(eFlagsRegU cr, memory op1, eRegI op2) %{
+//instruct compU_mem_eReg(eFlagsRegU cr, memory op1, rRegI op2) %{
 //  match(Set cr (CmpU (LoadI op1) op2));
 //
 //  format %{ "CMPu   $op1,$op2" %}
@@ -11997,7 +11758,7 @@
 //  ins_encode( OpcP, RegMem( op1, op2) );
 //%}
 
-instruct testU_reg( eFlagsRegU cr, eRegI src, immI0 zero ) %{
+instruct testU_reg( eFlagsRegU cr, rRegI src, immI0 zero ) %{
   match(Set cr (CmpU src zero));
 
   format %{ "TESTu  $src,$src" %}
@@ -12093,7 +11854,7 @@
 //   *** Min and Max using the conditional move are slower than the
 //   *** branch version on a Pentium III.
 // // Conditional move for min
-//instruct cmovI_reg_lt( eRegI op2, eRegI op1, eFlagsReg cr ) %{
+//instruct cmovI_reg_lt( rRegI op2, rRegI op1, eFlagsReg cr ) %{
 //  effect( USE_DEF op2, USE op1, USE cr );
 //  format %{ "CMOVlt $op2,$op1\t! min" %}
 //  opcode(0x4C,0x0F);
@@ -12102,7 +11863,7 @@
 //%}
 //
 //// Min Register with Register (P6 version)
-//instruct minI_eReg_p6( eRegI op1, eRegI op2 ) %{
+//instruct minI_eReg_p6( rRegI op1, rRegI op2 ) %{
 //  predicate(VM_Version::supports_cmov() );
 //  match(Set op2 (MinI op1 op2));
 //  ins_cost(200);
@@ -12114,7 +11875,7 @@
 //%}
 
 // Min Register with Register (generic version)
-instruct minI_eReg(eRegI dst, eRegI src, eFlagsReg flags) %{
+instruct minI_eReg(rRegI dst, rRegI src, eFlagsReg flags) %{
   match(Set dst (MinI dst src));
   effect(KILL flags);
   ins_cost(300);
@@ -12129,7 +11890,7 @@
 //   *** Min and Max using the conditional move are slower than the
 //   *** branch version on a Pentium III.
 // // Conditional move for max
-//instruct cmovI_reg_gt( eRegI op2, eRegI op1, eFlagsReg cr ) %{
+//instruct cmovI_reg_gt( rRegI op2, rRegI op1, eFlagsReg cr ) %{
 //  effect( USE_DEF op2, USE op1, USE cr );
 //  format %{ "CMOVgt $op2,$op1\t! max" %}
 //  opcode(0x4F,0x0F);
@@ -12138,7 +11899,7 @@
 //%}
 //
 // // Max Register with Register (P6 version)
-//instruct maxI_eReg_p6( eRegI op1, eRegI op2 ) %{
+//instruct maxI_eReg_p6( rRegI op1, rRegI op2 ) %{
 //  predicate(VM_Version::supports_cmov() );
 //  match(Set op2 (MaxI op1 op2));
 //  ins_cost(200);
@@ -12150,7 +11911,7 @@
 //%}
 
 // Max Register with Register (generic version)
-instruct maxI_eReg(eRegI dst, eRegI src, eFlagsReg flags) %{
+instruct maxI_eReg(rRegI dst, rRegI src, eFlagsReg flags) %{
   match(Set dst (MaxI dst src));
   effect(KILL flags);
   ins_cost(300);
@@ -12211,7 +11972,7 @@
 // ============================================================================
 // Branch Instructions
 // Jump Table
-instruct jumpXtnd(eRegI switch_val) %{
+instruct jumpXtnd(rRegI switch_val) %{
   match(Jump switch_val);
   ins_cost(350);
   format %{  "JMP    [$constantaddress](,$switch_val,1)\n\t" %}
@@ -12629,7 +12390,7 @@
 // Manifest a CmpL result in the normal flags.  Only good for LT or GE
 // compares.  Can be used for LE or GT compares by reversing arguments.
 // NOT GOOD FOR EQ/NE tests.
-instruct cmpL_reg_flags_LTGE( flagsReg_long_LTGE flags, eRegL src1, eRegL src2, eRegI tmp ) %{
+instruct cmpL_reg_flags_LTGE( flagsReg_long_LTGE flags, eRegL src1, eRegL src2, rRegI tmp ) %{
   match( Set flags (CmpL src1 src2 ));
   effect( TEMP tmp );
   ins_cost(300);
@@ -12675,7 +12436,7 @@
 %}
 
 // Compare 2 longs and CMOVE ints.
-instruct cmovII_reg_LTGE(cmpOp cmp, flagsReg_long_LTGE flags, eRegI dst, eRegI src) %{
+instruct cmovII_reg_LTGE(cmpOp cmp, flagsReg_long_LTGE flags, rRegI dst, rRegI src) %{
   predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::lt || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ge ));
   match(Set dst (CMoveI (Binary cmp flags) (Binary dst src)));
   ins_cost(200);
@@ -12685,7 +12446,7 @@
   ins_pipe( pipe_cmov_reg );
 %}
 
-instruct cmovII_mem_LTGE(cmpOp cmp, flagsReg_long_LTGE flags, eRegI dst, memory src) %{
+instruct cmovII_mem_LTGE(cmpOp cmp, flagsReg_long_LTGE flags, rRegI dst, memory src) %{
   predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::lt || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ge ));
   match(Set dst (CMoveI (Binary cmp flags) (Binary dst (LoadI src))));
   ins_cost(250);
@@ -12746,7 +12507,7 @@
 
 //======
 // Manifest a CmpL result in the normal flags.  Only good for EQ/NE compares.
-instruct cmpL_zero_flags_EQNE( flagsReg_long_EQNE flags, eRegL src, immL0 zero, eRegI tmp ) %{
+instruct cmpL_zero_flags_EQNE( flagsReg_long_EQNE flags, eRegL src, immL0 zero, rRegI tmp ) %{
   match( Set flags (CmpL src zero ));
   effect(TEMP tmp);
   ins_cost(200);
@@ -12803,7 +12564,7 @@
 %}
 
 // Compare 2 longs and CMOVE ints.
-instruct cmovII_reg_EQNE(cmpOp cmp, flagsReg_long_EQNE flags, eRegI dst, eRegI src) %{
+instruct cmovII_reg_EQNE(cmpOp cmp, flagsReg_long_EQNE flags, rRegI dst, rRegI src) %{
   predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::eq || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ne ));
   match(Set dst (CMoveI (Binary cmp flags) (Binary dst src)));
   ins_cost(200);
@@ -12813,7 +12574,7 @@
   ins_pipe( pipe_cmov_reg );
 %}
 
-instruct cmovII_mem_EQNE(cmpOp cmp, flagsReg_long_EQNE flags, eRegI dst, memory src) %{
+instruct cmovII_mem_EQNE(cmpOp cmp, flagsReg_long_EQNE flags, rRegI dst, memory src) %{
   predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::eq || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::ne ));
   match(Set dst (CMoveI (Binary cmp flags) (Binary dst (LoadI src))));
   ins_cost(250);
@@ -12875,7 +12636,7 @@
 //======
 // Manifest a CmpL result in the normal flags.  Only good for LE or GT compares.
 // Same as cmpL_reg_flags_LEGT except must negate src
-instruct cmpL_zero_flags_LEGT( flagsReg_long_LEGT flags, eRegL src, immL0 zero, eRegI tmp ) %{
+instruct cmpL_zero_flags_LEGT( flagsReg_long_LEGT flags, eRegL src, immL0 zero, rRegI tmp ) %{
   match( Set flags (CmpL src zero ));
   effect( TEMP tmp );
   ins_cost(300);
@@ -12889,7 +12650,7 @@
 // Manifest a CmpL result in the normal flags.  Only good for LE or GT compares.
 // Same as cmpL_reg_flags_LTGE except operands swapped.  Swapping operands
 // requires a commuted test to get the same result.
-instruct cmpL_reg_flags_LEGT( flagsReg_long_LEGT flags, eRegL src1, eRegL src2, eRegI tmp ) %{
+instruct cmpL_reg_flags_LEGT( flagsReg_long_LEGT flags, eRegL src1, eRegL src2, rRegI tmp ) %{
   match( Set flags (CmpL src1 src2 ));
   effect( TEMP tmp );
   ins_cost(300);
@@ -12936,7 +12697,7 @@
 %}
 
 // Compare 2 longs and CMOVE ints.
-instruct cmovII_reg_LEGT(cmpOp_commute cmp, flagsReg_long_LEGT flags, eRegI dst, eRegI src) %{
+instruct cmovII_reg_LEGT(cmpOp_commute cmp, flagsReg_long_LEGT flags, rRegI dst, rRegI src) %{
   predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::le || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::gt ));
   match(Set dst (CMoveI (Binary cmp flags) (Binary dst src)));
   ins_cost(200);
@@ -12946,7 +12707,7 @@
   ins_pipe( pipe_cmov_reg );
 %}
 
-instruct cmovII_mem_LEGT(cmpOp_commute cmp, flagsReg_long_LEGT flags, eRegI dst, memory src) %{
+instruct cmovII_mem_LEGT(cmpOp_commute cmp, flagsReg_long_LEGT flags, rRegI dst, memory src) %{
   predicate(VM_Version::supports_cmov() && ( _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::le || _kids[0]->_kids[0]->_leaf->as_Bool()->_test._test == BoolTest::gt ));
   match(Set dst (CMoveI (Binary cmp flags) (Binary dst (LoadI src))));
   ins_cost(250);
@@ -13275,11 +13036,11 @@
 // ---------EXAMPLE----------------------------------------------------------
 //
 // // pertinent parts of existing instructions in architecture description
-// instruct movI(eRegI dst, eRegI src) %{
+// instruct movI(rRegI dst, rRegI src) %{
 //   match(Set dst (CopyI src));
 // %}
 //
-// instruct incI_eReg(eRegI dst, immI1 src, eFlagsReg cr) %{
+// instruct incI_eReg(rRegI dst, immI1 src, eFlagsReg cr) %{
 //   match(Set dst (AddI dst src));
 //   effect(KILL cr);
 // %}
@@ -13324,11 +13085,11 @@
 // %}
 
 // // Change load of spilled value to only a spill
-// instruct storeI(memory mem, eRegI src) %{
+// instruct storeI(memory mem, rRegI src) %{
 //   match(Set mem (StoreI mem src));
 // %}
 //
-// instruct loadI(eRegI dst, memory mem) %{
+// instruct loadI(rRegI dst, memory mem) %{
 //   match(Set dst (LoadI mem));
 // %}
 //
--- a/hotspot/src/cpu/x86/vm/x86_64.ad	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad	Wed Jul 05 18:15:14 2017 +0200
@@ -131,102 +131,6 @@
 
 // Floating Point Registers
 
-// XMM registers.  128-bit registers or 4 words each, labeled (a)-d.
-// Word a in each register holds a Float, words ab hold a Double.  We
-// currently do not use the SIMD capabilities, so registers cd are
-// unused at the moment.
-// XMM8-XMM15 must be encoded with REX.
-// Linux ABI:   No register preserved across function calls
-//              XMM0-XMM7 might hold parameters
-// Windows ABI: XMM6-XMM15 preserved across function calls
-//              XMM0-XMM3 might hold parameters
-
-reg_def XMM0   (SOC, SOC, Op_RegF,  0, xmm0->as_VMReg());
-reg_def XMM0_H (SOC, SOC, Op_RegF,  0, xmm0->as_VMReg()->next());
-
-reg_def XMM1   (SOC, SOC, Op_RegF,  1, xmm1->as_VMReg());
-reg_def XMM1_H (SOC, SOC, Op_RegF,  1, xmm1->as_VMReg()->next());
-
-reg_def XMM2   (SOC, SOC, Op_RegF,  2, xmm2->as_VMReg());
-reg_def XMM2_H (SOC, SOC, Op_RegF,  2, xmm2->as_VMReg()->next());
-
-reg_def XMM3   (SOC, SOC, Op_RegF,  3, xmm3->as_VMReg());
-reg_def XMM3_H (SOC, SOC, Op_RegF,  3, xmm3->as_VMReg()->next());
-
-reg_def XMM4   (SOC, SOC, Op_RegF,  4, xmm4->as_VMReg());
-reg_def XMM4_H (SOC, SOC, Op_RegF,  4, xmm4->as_VMReg()->next());
-
-reg_def XMM5   (SOC, SOC, Op_RegF,  5, xmm5->as_VMReg());
-reg_def XMM5_H (SOC, SOC, Op_RegF,  5, xmm5->as_VMReg()->next());
-
-#ifdef _WIN64
-
-reg_def XMM6   (SOC, SOE, Op_RegF,  6, xmm6->as_VMReg());
-reg_def XMM6_H (SOC, SOE, Op_RegF,  6, xmm6->as_VMReg()->next());
-
-reg_def XMM7   (SOC, SOE, Op_RegF,  7, xmm7->as_VMReg());
-reg_def XMM7_H (SOC, SOE, Op_RegF,  7, xmm7->as_VMReg()->next());
-
-reg_def XMM8   (SOC, SOE, Op_RegF,  8, xmm8->as_VMReg());
-reg_def XMM8_H (SOC, SOE, Op_RegF,  8, xmm8->as_VMReg()->next());
-
-reg_def XMM9   (SOC, SOE, Op_RegF,  9, xmm9->as_VMReg());
-reg_def XMM9_H (SOC, SOE, Op_RegF,  9, xmm9->as_VMReg()->next());
-
-reg_def XMM10  (SOC, SOE, Op_RegF, 10, xmm10->as_VMReg());
-reg_def XMM10_H(SOC, SOE, Op_RegF, 10, xmm10->as_VMReg()->next());
-
-reg_def XMM11  (SOC, SOE, Op_RegF, 11, xmm11->as_VMReg());
-reg_def XMM11_H(SOC, SOE, Op_RegF, 11, xmm11->as_VMReg()->next());
-
-reg_def XMM12  (SOC, SOE, Op_RegF, 12, xmm12->as_VMReg());
-reg_def XMM12_H(SOC, SOE, Op_RegF, 12, xmm12->as_VMReg()->next());
-
-reg_def XMM13  (SOC, SOE, Op_RegF, 13, xmm13->as_VMReg());
-reg_def XMM13_H(SOC, SOE, Op_RegF, 13, xmm13->as_VMReg()->next());
-
-reg_def XMM14  (SOC, SOE, Op_RegF, 14, xmm14->as_VMReg());
-reg_def XMM14_H(SOC, SOE, Op_RegF, 14, xmm14->as_VMReg()->next());
-
-reg_def XMM15  (SOC, SOE, Op_RegF, 15, xmm15->as_VMReg());
-reg_def XMM15_H(SOC, SOE, Op_RegF, 15, xmm15->as_VMReg()->next());
-
-#else
-
-reg_def XMM6   (SOC, SOC, Op_RegF,  6, xmm6->as_VMReg());
-reg_def XMM6_H (SOC, SOC, Op_RegF,  6, xmm6->as_VMReg()->next());
-
-reg_def XMM7   (SOC, SOC, Op_RegF,  7, xmm7->as_VMReg());
-reg_def XMM7_H (SOC, SOC, Op_RegF,  7, xmm7->as_VMReg()->next());
-
-reg_def XMM8   (SOC, SOC, Op_RegF,  8, xmm8->as_VMReg());
-reg_def XMM8_H (SOC, SOC, Op_RegF,  8, xmm8->as_VMReg()->next());
-
-reg_def XMM9   (SOC, SOC, Op_RegF,  9, xmm9->as_VMReg());
-reg_def XMM9_H (SOC, SOC, Op_RegF,  9, xmm9->as_VMReg()->next());
-
-reg_def XMM10  (SOC, SOC, Op_RegF, 10, xmm10->as_VMReg());
-reg_def XMM10_H(SOC, SOC, Op_RegF, 10, xmm10->as_VMReg()->next());
-
-reg_def XMM11  (SOC, SOC, Op_RegF, 11, xmm11->as_VMReg());
-reg_def XMM11_H(SOC, SOC, Op_RegF, 11, xmm11->as_VMReg()->next());
-
-reg_def XMM12  (SOC, SOC, Op_RegF, 12, xmm12->as_VMReg());
-reg_def XMM12_H(SOC, SOC, Op_RegF, 12, xmm12->as_VMReg()->next());
-
-reg_def XMM13  (SOC, SOC, Op_RegF, 13, xmm13->as_VMReg());
-reg_def XMM13_H(SOC, SOC, Op_RegF, 13, xmm13->as_VMReg()->next());
-
-reg_def XMM14  (SOC, SOC, Op_RegF, 14, xmm14->as_VMReg());
-reg_def XMM14_H(SOC, SOC, Op_RegF, 14, xmm14->as_VMReg()->next());
-
-reg_def XMM15  (SOC, SOC, Op_RegF, 15, xmm15->as_VMReg());
-reg_def XMM15_H(SOC, SOC, Op_RegF, 15, xmm15->as_VMReg()->next());
-
-#endif // _WIN64
-
-reg_def RFLAGS(SOC, SOC, 0, 16, VMRegImpl::Bad());
-
 // Specify priority of register selection within phases of register
 // allocation.  Highest priority is first.  A useful heuristic is to
 // give registers a low priority when they are required by machine
@@ -252,26 +156,6 @@
                    R15,         R15_H,
                    RSP,         RSP_H);
 
-// XXX probably use 8-15 first on Linux
-alloc_class chunk1(XMM0,  XMM0_H,
-                   XMM1,  XMM1_H,
-                   XMM2,  XMM2_H,
-                   XMM3,  XMM3_H,
-                   XMM4,  XMM4_H,
-                   XMM5,  XMM5_H,
-                   XMM6,  XMM6_H,
-                   XMM7,  XMM7_H,
-                   XMM8,  XMM8_H,
-                   XMM9,  XMM9_H,
-                   XMM10, XMM10_H,
-                   XMM11, XMM11_H,
-                   XMM12, XMM12_H,
-                   XMM13, XMM13_H,
-                   XMM14, XMM14_H,
-                   XMM15, XMM15_H);
-
-alloc_class chunk2(RFLAGS);
-
 
 //----------Architecture Description Register Classes--------------------------
 // Several register classes are automatically defined based upon information in
@@ -501,46 +385,7 @@
 // Singleton class for instruction pointer
 // reg_class ip_reg(RIP);
 
-// Singleton class for condition codes
-reg_class int_flags(RFLAGS);
-
-// Class for all float registers
-reg_class float_reg(XMM0,
-                    XMM1,
-                    XMM2,
-                    XMM3,
-                    XMM4,
-                    XMM5,
-                    XMM6,
-                    XMM7,
-                    XMM8,
-                    XMM9,
-                    XMM10,
-                    XMM11,
-                    XMM12,
-                    XMM13,
-                    XMM14,
-                    XMM15);
-
-// Class for all double registers
-reg_class double_reg(XMM0,  XMM0_H,
-                     XMM1,  XMM1_H,
-                     XMM2,  XMM2_H,
-                     XMM3,  XMM3_H,
-                     XMM4,  XMM4_H,
-                     XMM5,  XMM5_H,
-                     XMM6,  XMM6_H,
-                     XMM7,  XMM7_H,
-                     XMM8,  XMM8_H,
-                     XMM9,  XMM9_H,
-                     XMM10, XMM10_H,
-                     XMM11, XMM11_H,
-                     XMM12, XMM12_H,
-                     XMM13, XMM13_H,
-                     XMM14, XMM14_H,
-                     XMM15, XMM15_H);
-%}
-
+%}
 
 //----------SOURCE BLOCK-------------------------------------------------------
 // This is a block of C++ code which provides values, functions, and
@@ -1027,12 +872,84 @@
   return rc_float;
 }
 
+// Next two methods are shared by 32- and 64-bit VM. They are defined in x86.ad.
+static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo,
+                          int src_hi, int dst_hi, uint ireg, outputStream* st);
+
+static int vec_spill_helper(CodeBuffer *cbuf, bool do_size, bool is_load,
+                            int stack_offset, int reg, uint ireg, outputStream* st);
+
+static void vec_stack_to_stack_helper(CodeBuffer *cbuf, int src_offset,
+                                      int dst_offset, uint ireg, outputStream* st) {
+  if (cbuf) {
+    MacroAssembler _masm(cbuf);
+    switch (ireg) {
+    case Op_VecS:
+      __ movq(Address(rsp, -8), rax);
+      __ movl(rax, Address(rsp, src_offset));
+      __ movl(Address(rsp, dst_offset), rax);
+      __ movq(rax, Address(rsp, -8));
+      break;
+    case Op_VecD:
+      __ pushq(Address(rsp, src_offset));
+      __ popq (Address(rsp, dst_offset));
+      break;
+    case Op_VecX:
+      __ pushq(Address(rsp, src_offset));
+      __ popq (Address(rsp, dst_offset));
+      __ pushq(Address(rsp, src_offset+8));
+      __ popq (Address(rsp, dst_offset+8));
+      break;
+    case Op_VecY:
+      __ vmovdqu(Address(rsp, -32), xmm0);
+      __ vmovdqu(xmm0, Address(rsp, src_offset));
+      __ vmovdqu(Address(rsp, dst_offset), xmm0);
+      __ vmovdqu(xmm0, Address(rsp, -32));
+      break;
+    default:
+      ShouldNotReachHere();
+    }
+#ifndef PRODUCT
+  } else {
+    switch (ireg) {
+    case Op_VecS:
+      st->print("movq    [rsp - #8], rax\t# 32-bit mem-mem spill\n\t"
+                "movl    rax, [rsp + #%d]\n\t"
+                "movl    [rsp + #%d], rax\n\t"
+                "movq    rax, [rsp - #8]",
+                src_offset, dst_offset);
+      break;
+    case Op_VecD:
+      st->print("pushq   [rsp + #%d]\t# 64-bit mem-mem spill\n\t"
+                "popq    [rsp + #%d]",
+                src_offset, dst_offset);
+      break;
+     case Op_VecX:
+      st->print("pushq   [rsp + #%d]\t# 128-bit mem-mem spill\n\t"
+                "popq    [rsp + #%d]\n\t"
+                "pushq   [rsp + #%d]\n\t"
+                "popq    [rsp + #%d]",
+                src_offset, dst_offset, src_offset+8, dst_offset+8);
+      break;
+    case Op_VecY:
+      st->print("vmovdqu [rsp - #32], xmm0\t# 256-bit mem-mem spill\n\t"
+                "vmovdqu xmm0, [rsp + #%d]\n\t"
+                "vmovdqu [rsp + #%d], xmm0\n\t"
+                "vmovdqu xmm0, [rsp - #32]",
+                src_offset, dst_offset);
+      break;
+    default:
+      ShouldNotReachHere();
+    }
+#endif
+  }
+}
+
 uint MachSpillCopyNode::implementation(CodeBuffer* cbuf,
                                        PhaseRegAlloc* ra_,
                                        bool do_size,
-                                       outputStream* st) const
-{
-
+                                       outputStream* st) const {
+  assert(cbuf != NULL || st  != NULL, "sanity");
   // Get registers to move
   OptoReg::Name src_second = ra_->get_reg_second(in(1));
   OptoReg::Name src_first = ra_->get_reg_first(in(1));
@@ -1050,7 +967,30 @@
   if (src_first == dst_first && src_second == dst_second) {
     // Self copy, no move
     return 0;
-  } else if (src_first_rc == rc_stack) {
+  }
+  if (bottom_type()->isa_vect() != NULL) {
+    uint ireg = ideal_reg();
+    assert((src_first_rc != rc_int && dst_first_rc != rc_int), "sanity");
+    assert((ireg == Op_VecS || ireg == Op_VecD || ireg == Op_VecX || ireg == Op_VecY), "sanity");
+    if( src_first_rc == rc_stack && dst_first_rc == rc_stack ) {
+      // mem -> mem
+      int src_offset = ra_->reg2offset(src_first);
+      int dst_offset = ra_->reg2offset(dst_first);
+      vec_stack_to_stack_helper(cbuf, src_offset, dst_offset, ireg, st);
+    } else if (src_first_rc == rc_float && dst_first_rc == rc_float ) {
+      vec_mov_helper(cbuf, false, src_first, dst_first, src_second, dst_second, ireg, st);
+    } else if (src_first_rc == rc_float && dst_first_rc == rc_stack ) {
+      int stack_offset = ra_->reg2offset(dst_first);
+      vec_spill_helper(cbuf, false, false, stack_offset, src_first, ireg, st);
+    } else if (src_first_rc == rc_stack && dst_first_rc == rc_float ) {
+      int stack_offset = ra_->reg2offset(src_first);
+      vec_spill_helper(cbuf, false, true,  stack_offset, dst_first, ireg, st);
+    } else {
+      ShouldNotReachHere();
+    }
+    return 0;
+  }
+  if (src_first_rc == rc_stack) {
     // mem ->
     if (dst_first_rc == rc_stack) {
       // mem -> mem
@@ -1061,23 +1001,16 @@
         int src_offset = ra_->reg2offset(src_first);
         int dst_offset = ra_->reg2offset(dst_first);
         if (cbuf) {
-          emit_opcode(*cbuf, 0xFF);
-          encode_RegMem(*cbuf, RSI_enc, RSP_enc, 0x4, 0, src_offset, false);
-
-          emit_opcode(*cbuf, 0x8F);
-          encode_RegMem(*cbuf, RAX_enc, RSP_enc, 0x4, 0, dst_offset, false);
-
+          MacroAssembler _masm(cbuf);
+          __ pushq(Address(rsp, src_offset));
+          __ popq (Address(rsp, dst_offset));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("pushq   [rsp + #%d]\t# 64-bit mem-mem spill\n\t"
-                     "popq    [rsp + #%d]",
-                     src_offset,
-                     dst_offset);
+                    "popq    [rsp + #%d]",
+                     src_offset, dst_offset);
 #endif
         }
-        return
-          3 + ((src_offset == 0) ? 0 : (src_offset < 0x80 ? 1 : 4)) +
-          3 + ((dst_offset == 0) ? 0 : (dst_offset < 0x80 ? 1 : 4));
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
@@ -1086,46 +1019,22 @@
         int src_offset = ra_->reg2offset(src_first);
         int dst_offset = ra_->reg2offset(dst_first);
         if (cbuf) {
-          emit_opcode(*cbuf, Assembler::REX_W);
-          emit_opcode(*cbuf, 0x89);
-          emit_opcode(*cbuf, 0x44);
-          emit_opcode(*cbuf, 0x24);
-          emit_opcode(*cbuf, 0xF8);
-
-          emit_opcode(*cbuf, 0x8B);
-          encode_RegMem(*cbuf,
-                        RAX_enc,
-                        RSP_enc, 0x4, 0, src_offset,
-                        false);
-
-          emit_opcode(*cbuf, 0x89);
-          encode_RegMem(*cbuf,
-                        RAX_enc,
-                        RSP_enc, 0x4, 0, dst_offset,
-                        false);
-
-          emit_opcode(*cbuf, Assembler::REX_W);
-          emit_opcode(*cbuf, 0x8B);
-          emit_opcode(*cbuf, 0x44);
-          emit_opcode(*cbuf, 0x24);
-          emit_opcode(*cbuf, 0xF8);
-
+          MacroAssembler _masm(cbuf);
+          __ movq(Address(rsp, -8), rax);
+          __ movl(rax, Address(rsp, src_offset));
+          __ movl(Address(rsp, dst_offset), rax);
+          __ movq(rax, Address(rsp, -8));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movq    [rsp - #8], rax\t# 32-bit mem-mem spill\n\t"
-                     "movl    rax, [rsp + #%d]\n\t"
-                     "movl    [rsp + #%d], rax\n\t"
-                     "movq    rax, [rsp - #8]",
-                     src_offset,
-                     dst_offset);
+                    "movl    rax, [rsp + #%d]\n\t"
+                    "movl    [rsp + #%d], rax\n\t"
+                    "movq    rax, [rsp - #8]",
+                     src_offset, dst_offset);
 #endif
         }
-        return
-          5 + // movq
-          3 + ((src_offset == 0) ? 0 : (src_offset < 0x80 ? 1 : 4)) + // movl
-          3 + ((dst_offset == 0) ? 0 : (dst_offset < 0x80 ? 1 : 4)) + // movl
-          5; // movq
       }
+      return 0;
     } else if (dst_first_rc == rc_int) {
       // mem -> gpr
       if ((src_first & 1) == 0 && src_first + 1 == src_second &&
@@ -1133,52 +1042,32 @@
         // 64-bit
         int offset = ra_->reg2offset(src_first);
         if (cbuf) {
-          if (Matcher::_regEncode[dst_first] < 8) {
-            emit_opcode(*cbuf, Assembler::REX_W);
-          } else {
-            emit_opcode(*cbuf, Assembler::REX_WR);
-          }
-          emit_opcode(*cbuf, 0x8B);
-          encode_RegMem(*cbuf,
-                        Matcher::_regEncode[dst_first],
-                        RSP_enc, 0x4, 0, offset,
-                        false);
+          MacroAssembler _masm(cbuf);
+          __ movq(as_Register(Matcher::_regEncode[dst_first]), Address(rsp, offset));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movq    %s, [rsp + #%d]\t# spill",
                      Matcher::regName[dst_first],
                      offset);
 #endif
         }
-        return
-          ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) + 4; // REX
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
         assert(!((dst_first & 1) == 0 && dst_first + 1 == dst_second), "no transform");
         int offset = ra_->reg2offset(src_first);
         if (cbuf) {
-          if (Matcher::_regEncode[dst_first] >= 8) {
-            emit_opcode(*cbuf, Assembler::REX_R);
-          }
-          emit_opcode(*cbuf, 0x8B);
-          encode_RegMem(*cbuf,
-                        Matcher::_regEncode[dst_first],
-                        RSP_enc, 0x4, 0, offset,
-                        false);
+          MacroAssembler _masm(cbuf);
+          __ movl(as_Register(Matcher::_regEncode[dst_first]), Address(rsp, offset));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movl    %s, [rsp + #%d]\t# spill",
                      Matcher::regName[dst_first],
                      offset);
 #endif
         }
-        return
-          ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) +
-          ((Matcher::_regEncode[dst_first] < 8)
-           ? 3
-           : 4); // REX
       }
+      return 0;
     } else if (dst_first_rc == rc_float) {
       // mem-> xmm
       if ((src_first & 1) == 0 && src_first + 1 == src_second &&
@@ -1189,18 +1078,13 @@
           MacroAssembler _masm(cbuf);
           __ movdbl( as_XMMRegister(Matcher::_regEncode[dst_first]), Address(rsp, offset));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("%s  %s, [rsp + #%d]\t# spill",
                      UseXmmLoadAndClearUpper ? "movsd " : "movlpd",
                      Matcher::regName[dst_first],
                      offset);
 #endif
         }
-        return
-          ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) +
-          ((Matcher::_regEncode[dst_first] >= 8)
-           ? 6
-           : (5 + ((UseAVX>0)?1:0))); // REX
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
@@ -1210,18 +1094,14 @@
           MacroAssembler _masm(cbuf);
           __ movflt( as_XMMRegister(Matcher::_regEncode[dst_first]), Address(rsp, offset));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movss   %s, [rsp + #%d]\t# spill",
                      Matcher::regName[dst_first],
                      offset);
 #endif
         }
-        return
-          ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) +
-          ((Matcher::_regEncode[dst_first] >= 8)
-           ? 6
-           : (5 + ((UseAVX>0)?1:0))); // REX
       }
+      return 0;
     }
   } else if (src_first_rc == rc_int) {
     // gpr ->
@@ -1232,113 +1112,65 @@
         // 64-bit
         int offset = ra_->reg2offset(dst_first);
         if (cbuf) {
-          if (Matcher::_regEncode[src_first] < 8) {
-            emit_opcode(*cbuf, Assembler::REX_W);
-          } else {
-            emit_opcode(*cbuf, Assembler::REX_WR);
-          }
-          emit_opcode(*cbuf, 0x89);
-          encode_RegMem(*cbuf,
-                        Matcher::_regEncode[src_first],
-                        RSP_enc, 0x4, 0, offset,
-                        false);
+          MacroAssembler _masm(cbuf);
+          __ movq(Address(rsp, offset), as_Register(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movq    [rsp + #%d], %s\t# spill",
                      offset,
                      Matcher::regName[src_first]);
 #endif
         }
-        return ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) + 4; // REX
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
         assert(!((dst_first & 1) == 0 && dst_first + 1 == dst_second), "no transform");
         int offset = ra_->reg2offset(dst_first);
         if (cbuf) {
-          if (Matcher::_regEncode[src_first] >= 8) {
-            emit_opcode(*cbuf, Assembler::REX_R);
-          }
-          emit_opcode(*cbuf, 0x89);
-          encode_RegMem(*cbuf,
-                        Matcher::_regEncode[src_first],
-                        RSP_enc, 0x4, 0, offset,
-                        false);
+          MacroAssembler _masm(cbuf);
+          __ movl(Address(rsp, offset), as_Register(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movl    [rsp + #%d], %s\t# spill",
                      offset,
                      Matcher::regName[src_first]);
 #endif
         }
-        return
-          ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) +
-          ((Matcher::_regEncode[src_first] < 8)
-           ? 3
-           : 4); // REX
       }
+      return 0;
     } else if (dst_first_rc == rc_int) {
       // gpr -> gpr
       if ((src_first & 1) == 0 && src_first + 1 == src_second &&
           (dst_first & 1) == 0 && dst_first + 1 == dst_second) {
         // 64-bit
         if (cbuf) {
-          if (Matcher::_regEncode[dst_first] < 8) {
-            if (Matcher::_regEncode[src_first] < 8) {
-              emit_opcode(*cbuf, Assembler::REX_W);
-            } else {
-              emit_opcode(*cbuf, Assembler::REX_WB);
-            }
-          } else {
-            if (Matcher::_regEncode[src_first] < 8) {
-              emit_opcode(*cbuf, Assembler::REX_WR);
-            } else {
-              emit_opcode(*cbuf, Assembler::REX_WRB);
-            }
-          }
-          emit_opcode(*cbuf, 0x8B);
-          emit_rm(*cbuf, 0x3,
-                  Matcher::_regEncode[dst_first] & 7,
-                  Matcher::_regEncode[src_first] & 7);
+          MacroAssembler _masm(cbuf);
+          __ movq(as_Register(Matcher::_regEncode[dst_first]),
+                  as_Register(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movq    %s, %s\t# spill",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return 3; // REX
+        return 0;
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
         assert(!((dst_first & 1) == 0 && dst_first + 1 == dst_second), "no transform");
         if (cbuf) {
-          if (Matcher::_regEncode[dst_first] < 8) {
-            if (Matcher::_regEncode[src_first] >= 8) {
-              emit_opcode(*cbuf, Assembler::REX_B);
-            }
-          } else {
-            if (Matcher::_regEncode[src_first] < 8) {
-              emit_opcode(*cbuf, Assembler::REX_R);
-            } else {
-              emit_opcode(*cbuf, Assembler::REX_RB);
-            }
-          }
-          emit_opcode(*cbuf, 0x8B);
-          emit_rm(*cbuf, 0x3,
-                  Matcher::_regEncode[dst_first] & 7,
-                  Matcher::_regEncode[src_first] & 7);
+          MacroAssembler _masm(cbuf);
+          __ movl(as_Register(Matcher::_regEncode[dst_first]),
+                  as_Register(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movl    %s, %s\t# spill",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return
-          (Matcher::_regEncode[src_first] < 8 && Matcher::_regEncode[dst_first] < 8)
-          ? 2
-          : 3; // REX
+        return 0;
       }
     } else if (dst_first_rc == rc_float) {
       // gpr -> xmm
@@ -1349,13 +1181,12 @@
           MacroAssembler _masm(cbuf);
           __ movdq( as_XMMRegister(Matcher::_regEncode[dst_first]), as_Register(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movdq   %s, %s\t# spill",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return 5; // REX
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
@@ -1364,17 +1195,14 @@
           MacroAssembler _masm(cbuf);
           __ movdl( as_XMMRegister(Matcher::_regEncode[dst_first]), as_Register(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movdl   %s, %s\t# spill",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return
-          (Matcher::_regEncode[src_first] >= 8 || Matcher::_regEncode[dst_first] >= 8)
-          ? 5
-          : (4 + ((UseAVX>0)?1:0)); // REX
       }
+      return 0;
     }
   } else if (src_first_rc == rc_float) {
     // xmm ->
@@ -1388,17 +1216,12 @@
           MacroAssembler _masm(cbuf);
           __ movdbl( Address(rsp, offset), as_XMMRegister(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movsd   [rsp + #%d], %s\t# spill",
                      offset,
                      Matcher::regName[src_first]);
 #endif
         }
-        return
-          ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) +
-          ((Matcher::_regEncode[src_first] >= 8)
-           ? 6
-           : (5 + ((UseAVX>0)?1:0))); // REX
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
@@ -1408,18 +1231,14 @@
           MacroAssembler _masm(cbuf);
           __ movflt(Address(rsp, offset), as_XMMRegister(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movss   [rsp + #%d], %s\t# spill",
                      offset,
                      Matcher::regName[src_first]);
 #endif
         }
-        return
-          ((offset == 0) ? 0 : (offset < 0x80 ? 1 : 4)) +
-          ((Matcher::_regEncode[src_first] >=8)
-           ? 6
-           : (5 + ((UseAVX>0)?1:0))); // REX
       }
+      return 0;
     } else if (dst_first_rc == rc_int) {
       // xmm -> gpr
       if ((src_first & 1) == 0 && src_first + 1 == src_second &&
@@ -1429,13 +1248,12 @@
           MacroAssembler _masm(cbuf);
           __ movdq( as_Register(Matcher::_regEncode[dst_first]), as_XMMRegister(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movdq   %s, %s\t# spill",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return 5; // REX
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
@@ -1444,17 +1262,14 @@
           MacroAssembler _masm(cbuf);
           __ movdl( as_Register(Matcher::_regEncode[dst_first]), as_XMMRegister(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("movdl   %s, %s\t# spill",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return
-          (Matcher::_regEncode[src_first] >= 8 || Matcher::_regEncode[dst_first] >= 8)
-          ? 5
-          : (4 + ((UseAVX>0)?1:0)); // REX
       }
+      return 0;
     } else if (dst_first_rc == rc_float) {
       // xmm -> xmm
       if ((src_first & 1) == 0 && src_first + 1 == src_second &&
@@ -1464,17 +1279,13 @@
           MacroAssembler _masm(cbuf);
           __ movdbl( as_XMMRegister(Matcher::_regEncode[dst_first]), as_XMMRegister(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("%s  %s, %s\t# spill",
                      UseXmmRegToRegMoveAll ? "movapd" : "movsd ",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return
-          (Matcher::_regEncode[src_first] >= 8 || Matcher::_regEncode[dst_first] >= 8)
-          ? 5
-          : (4 + ((UseAVX>0)?1:0)); // REX
       } else {
         // 32-bit
         assert(!((src_first & 1) == 0 && src_first + 1 == src_second), "no transform");
@@ -1483,42 +1294,35 @@
           MacroAssembler _masm(cbuf);
           __ movflt( as_XMMRegister(Matcher::_regEncode[dst_first]), as_XMMRegister(Matcher::_regEncode[src_first]));
 #ifndef PRODUCT
-        } else if (!do_size) {
+        } else {
           st->print("%s  %s, %s\t# spill",
                      UseXmmRegToRegMoveAll ? "movaps" : "movss ",
                      Matcher::regName[dst_first],
                      Matcher::regName[src_first]);
 #endif
         }
-        return ((UseAVX>0) ? 5:
-          ((Matcher::_regEncode[src_first] >= 8 || Matcher::_regEncode[dst_first] >= 8)
-           ? (UseXmmRegToRegMoveAll ? 4 : 5)
-           : (UseXmmRegToRegMoveAll ? 3 : 4))); // REX
       }
+      return 0;
     }
   }
 
   assert(0," foo ");
   Unimplemented();
-
   return 0;
 }
 
 #ifndef PRODUCT
-void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream* st) const
-{
+void MachSpillCopyNode::format(PhaseRegAlloc *ra_, outputStream* st) const {
   implementation(NULL, ra_, false, st);
 }
 #endif
 
-void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const
-{
+void MachSpillCopyNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
   implementation(&cbuf, ra_, false, NULL);
 }
 
-uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const
-{
-  return implementation(NULL, ra_, true, NULL);
+uint MachSpillCopyNode::size(PhaseRegAlloc *ra_) const {
+  return MachNode::size(ra_);
 }
 
 //=============================================================================
@@ -1735,16 +1539,6 @@
   return true;
 }
 
-// Vector width in bytes
-const uint Matcher::vector_width_in_bytes(void) {
-  return 8;
-}
-
-// Vector ideal reg
-const uint Matcher::vector_ideal_reg(void) {
-  return Op_RegD;
-}
-
 // Is this branch offset short enough that a short branch can be used?
 //
 // NOTE: If the platform does not provide any short branch variants, then
@@ -1831,21 +1625,21 @@
 bool Matcher::can_be_java_arg(int reg)
 {
   return
-    reg ==  RDI_num || reg ==  RDI_H_num ||
-    reg ==  RSI_num || reg ==  RSI_H_num ||
-    reg ==  RDX_num || reg ==  RDX_H_num ||
-    reg ==  RCX_num || reg ==  RCX_H_num ||
-    reg ==   R8_num || reg ==   R8_H_num ||
-    reg ==   R9_num || reg ==   R9_H_num ||
-    reg ==  R12_num || reg ==  R12_H_num ||
-    reg == XMM0_num || reg == XMM0_H_num ||
-    reg == XMM1_num || reg == XMM1_H_num ||
-    reg == XMM2_num || reg == XMM2_H_num ||
-    reg == XMM3_num || reg == XMM3_H_num ||
-    reg == XMM4_num || reg == XMM4_H_num ||
-    reg == XMM5_num || reg == XMM5_H_num ||
-    reg == XMM6_num || reg == XMM6_H_num ||
-    reg == XMM7_num || reg == XMM7_H_num;
+    reg ==  RDI_num || reg == RDI_H_num ||
+    reg ==  RSI_num || reg == RSI_H_num ||
+    reg ==  RDX_num || reg == RDX_H_num ||
+    reg ==  RCX_num || reg == RCX_H_num ||
+    reg ==   R8_num || reg ==  R8_H_num ||
+    reg ==   R9_num || reg ==  R9_H_num ||
+    reg ==  R12_num || reg == R12_H_num ||
+    reg == XMM0_num || reg == XMM0b_num ||
+    reg == XMM1_num || reg == XMM1b_num ||
+    reg == XMM2_num || reg == XMM2b_num ||
+    reg == XMM3_num || reg == XMM3b_num ||
+    reg == XMM4_num || reg == XMM4b_num ||
+    reg == XMM5_num || reg == XMM5b_num ||
+    reg == XMM6_num || reg == XMM6b_num ||
+    reg == XMM7_num || reg == XMM7b_num;
 }
 
 bool Matcher::is_spillable_arg(int reg)
@@ -3220,10 +3014,11 @@
       OptoReg::Bad, // Op_RegI
       RAX_H_num,    // Op_RegP
       OptoReg::Bad, // Op_RegF
-      XMM0_H_num,   // Op_RegD
+      XMM0b_num,    // Op_RegD
       RAX_H_num     // Op_RegL
     };
-    assert(ARRAY_SIZE(hi) == _last_machine_leaf - 1, "missing type");
+    // Excluded flags and vector registers.
+    assert(ARRAY_SIZE(hi) == _last_machine_leaf - 5, "missing type");
     return OptoRegPair(hi[ideal_reg], lo[ideal_reg]);
   %}
 %}
@@ -3985,7 +3780,6 @@
   interface(REG_INTER);
 %}
 
-
 //----------Memory Operands----------------------------------------------------
 // Direct Memory Operand
 // operand direct(immP addr)
@@ -5416,61 +5210,6 @@
   ins_pipe(pipe_slow); // XXX
 %}
 
-// Load Aligned Packed Byte to XMM register
-instruct loadA8B(regD dst, memory mem) %{
-  match(Set dst (Load8B mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed8B" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Short to XMM register
-instruct loadA4S(regD dst, memory mem) %{
-  match(Set dst (Load4S mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed4S" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Char to XMM register
-instruct loadA4C(regD dst, memory mem) %{
-  match(Set dst (Load4C mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed4C" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Integer to XMM register
-instruct load2IU(regD dst, memory mem) %{
-  match(Set dst (Load2I mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed2I" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Load Aligned Packed Single to XMM
-instruct loadA2F(regD dst, memory mem) %{
-  match(Set dst (Load2F mem));
-  ins_cost(125);
-  format %{ "MOVQ  $dst,$mem\t! packed2F" %}
-  ins_encode %{
-    __ movq($dst$$XMMRegister, $mem$$Address);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
 // Load Effective Address
 instruct leaP8(rRegP dst, indOffset8 mem)
 %{
@@ -6200,39 +5939,6 @@
   ins_pipe(ialu_mem_imm);
 %}
 
-// Store Aligned Packed Byte XMM register to memory
-instruct storeA8B(memory mem, regD src) %{
-  match(Set mem (Store8B mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed8B" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Store Aligned Packed Char/Short XMM register to memory
-instruct storeA4C(memory mem, regD src) %{
-  match(Set mem (Store4C mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed4C" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Store Aligned Packed Integer XMM register to memory
-instruct storeA2I(memory mem, regD src) %{
-  match(Set mem (Store2I mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed2I" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
 // Store CMS card-mark Immediate
 instruct storeImmCM0_reg(memory mem, immI0 zero)
 %{
@@ -6258,17 +5964,6 @@
   ins_pipe(ialu_mem_imm);
 %}
 
-// Store Aligned Packed Single Float XMM register to memory
-instruct storeA2F(memory mem, regD src) %{
-  match(Set mem (Store2F mem src));
-  ins_cost(145);
-  format %{ "MOVQ  $mem,$src\t! packed2F" %}
-  ins_encode %{
-    __ movq($mem$$Address, $src$$XMMRegister);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
 // Store Float
 instruct storeF(memory mem, regF src)
 %{
@@ -10377,172 +10072,6 @@
   ins_pipe( pipe_slow );
 %}
 
-// Replicate scalar to packed byte (1 byte) values in xmm
-instruct Repl8B_reg(regD dst, regD src) %{
-  match(Set dst (Replicate8B src));
-  format %{ "MOVDQA  $dst,$src\n\t"
-            "PUNPCKLBW $dst,$dst\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate8B" %}
-  ins_encode %{
-    if ($dst$$reg != $src$$reg) {
-      __ movdqa($dst$$XMMRegister, $src$$XMMRegister);
-    }
-    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Replicate scalar to packed byte (1 byte) values in xmm
-instruct Repl8B_rRegI(regD dst, rRegI src) %{
-  match(Set dst (Replicate8B src));
-  format %{ "MOVD    $dst,$src\n\t"
-            "PUNPCKLBW $dst,$dst\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate8B" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ punpcklbw($dst$$XMMRegister, $dst$$XMMRegister);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( pipe_slow );
-%}
-
-// Replicate scalar zero to packed byte (1 byte) values in xmm
-instruct Repl8B_immI0(regD dst, immI0 zero) %{
-  match(Set dst (Replicate8B zero));
-  format %{ "PXOR  $dst,$dst\t! replicate8B" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed shore (2 byte) values in xmm
-instruct Repl4S_reg(regD dst, regD src) %{
-  match(Set dst (Replicate4S src));
-  format %{ "PSHUFLW $dst,$src,0x00\t! replicate4S" %}
-  ins_encode %{
-    __ pshuflw($dst$$XMMRegister, $src$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed shore (2 byte) values in xmm
-instruct Repl4S_rRegI(regD dst, rRegI src) %{
-  match(Set dst (Replicate4S src));
-  format %{ "MOVD    $dst,$src\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate4S" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar zero to packed short (2 byte) values in xmm
-instruct Repl4S_immI0(regD dst, immI0 zero) %{
-  match(Set dst (Replicate4S zero));
-  format %{ "PXOR  $dst,$dst\t! replicate4S" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed char (2 byte) values in xmm
-instruct Repl4C_reg(regD dst, regD src) %{
-  match(Set dst (Replicate4C src));
-  format %{ "PSHUFLW $dst,$src,0x00\t! replicate4C" %}
-  ins_encode %{
-    __ pshuflw($dst$$XMMRegister, $src$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed char (2 byte) values in xmm
-instruct Repl4C_rRegI(regD dst, rRegI src) %{
-  match(Set dst (Replicate4C src));
-  format %{ "MOVD    $dst,$src\n\t"
-            "PSHUFLW $dst,$dst,0x00\t! replicate4C" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar zero to packed char (2 byte) values in xmm
-instruct Repl4C_immI0(regD dst, immI0 zero) %{
-  match(Set dst (Replicate4C zero));
-  format %{ "PXOR  $dst,$dst\t! replicate4C" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed integer (4 byte) values in xmm
-instruct Repl2I_reg(regD dst, regD src) %{
-  match(Set dst (Replicate2I src));
-  format %{ "PSHUFD $dst,$src,0x00\t! replicate2I" %}
-  ins_encode %{
-    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed integer (4 byte) values in xmm
-instruct Repl2I_rRegI(regD dst, rRegI src) %{
-  match(Set dst (Replicate2I src));
-  format %{ "MOVD   $dst,$src\n\t"
-            "PSHUFD $dst,$dst,0x00\t! replicate2I" %}
-  ins_encode %{
-    __ movdl($dst$$XMMRegister, $src$$Register);
-    __ pshufd($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar zero to packed integer (2 byte) values in xmm
-instruct Repl2I_immI0(regD dst, immI0 zero) %{
-  match(Set dst (Replicate2I zero));
-  format %{ "PXOR  $dst,$dst\t! replicate2I" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed single precision floating point values in xmm
-instruct Repl2F_reg(regD dst, regD src) %{
-  match(Set dst (Replicate2F src));
-  format %{ "PSHUFD $dst,$src,0xe0\t! replicate2F" %}
-  ins_encode %{
-    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0xe0);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed single precision floating point values in xmm
-instruct Repl2F_regF(regD dst, regF src) %{
-  match(Set dst (Replicate2F src));
-  format %{ "PSHUFD $dst,$src,0xe0\t! replicate2F" %}
-  ins_encode %{
-    __ pshufd($dst$$XMMRegister, $src$$XMMRegister, 0xe0);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
-// Replicate scalar to packed single precision floating point values in xmm
-instruct Repl2F_immF0(regD dst, immF0 zero) %{
-  match(Set dst (Replicate2F zero));
-  format %{ "PXOR  $dst,$dst\t! replicate2F" %}
-  ins_encode %{
-    __ pxor($dst$$XMMRegister, $dst$$XMMRegister);
-  %}
-  ins_pipe( fpu_reg_reg );
-%}
-
 
 // =======================================================================
 // fast clearing of an array
--- a/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -516,7 +516,12 @@
       }
     }
 
-    if (thread->thread_state() == _thread_in_Java) {
+    // We test if stub is already set (by the stack overflow code
+    // above) so it is not overwritten by the code that follows. This
+    // check is not required on other platforms, because on other
+    // platforms we check for SIGSEGV only or SIGBUS only, where here
+    // we have to check for both SIGSEGV and SIGBUS.
+    if (thread->thread_state() == _thread_in_Java && stub == NULL) {
       // Java thread running in Java code => find exception handler if any
       // a fault inside compiled code, the interpreter, or a stub
 
--- a/hotspot/src/share/vm/adlc/adlparse.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/adlparse.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -115,6 +115,12 @@
       parse_err(SYNERR, "expected one of - instruct, operand, ins_attrib, op_attrib, source, register, pipeline, encode\n     Found %s",ident);
     }
   }
+  // Add reg_class spill_regs after parsing.
+  RegisterForm *regBlock = _AD.get_registers();
+  if (regBlock == NULL) {
+    parse_err(SEMERR, "Did not declare 'register' definitions");
+  }
+  regBlock->addSpillRegClass();
 
   // Done with parsing, check consistency.
 
@@ -768,11 +774,12 @@
 
 //------------------------------reg_parse--------------------------------------
 void ADLParser::reg_parse(void) {
-
-  // Create the RegisterForm for the architecture description.
-  RegisterForm *regBlock = new RegisterForm();    // Build new Source object
-  regBlock->_linenum = linenum();
-  _AD.addForm(regBlock);
+  RegisterForm *regBlock = _AD.get_registers(); // Information about registers encoding
+  if (regBlock == NULL) {
+    // Create the RegisterForm for the architecture description.
+    regBlock = new RegisterForm();    // Build new Source object
+    _AD.addForm(regBlock);
+  }
 
   skipws();                       // Skip leading whitespace
   if (_curchar == '%' && *(_ptr+1) == '{') {
@@ -796,15 +803,11 @@
     parse_err(SYNERR, "Missing %c{ ... %c} block after register keyword.\n",'%','%');
     return;
   }
-
-  // Add reg_class spill_regs
-  regBlock->addSpillRegClass();
 }
 
 //------------------------------encode_parse-----------------------------------
 void ADLParser::encode_parse(void) {
   EncodeForm *encBlock;         // Information about instruction/operand encoding
-  char       *desc = NULL;      // String representation of encode rule
 
   _AD.getForm(&encBlock);
   if ( encBlock == NULL) {
--- a/hotspot/src/share/vm/adlc/archDesc.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/archDesc.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 //
 // This code is free software; you can redistribute it and/or modify it
@@ -911,12 +911,24 @@
   // Find last character in idealOp, it specifies the type
   char  last_char = 0;
   const char *ptr = idealOp;
-  for( ; *ptr != '\0'; ++ptr) {
+  for (; *ptr != '\0'; ++ptr) {
     last_char = *ptr;
   }
 
+  // Match Vector types.
+  if (strncmp(idealOp, "Vec",3)==0) {
+    switch(last_char) {
+    case 'S':  return "TypeVect::VECTS";
+    case 'D':  return "TypeVect::VECTD";
+    case 'X':  return "TypeVect::VECTX";
+    case 'Y':  return "TypeVect::VECTY";
+    default:
+      internal_err("Vector type %s with unrecognized type\n",idealOp);
+    }
+  }
+
   // !!!!!
-  switch( last_char ) {
+  switch(last_char) {
   case 'I':    return "TypeInt::INT";
   case 'P':    return "TypePtr::BOTTOM";
   case 'N':    return "TypeNarrowOop::BOTTOM";
--- a/hotspot/src/share/vm/adlc/forms.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/forms.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -265,47 +265,22 @@
   if( strcmp(opType,"LoadN")==0 )  return Form::idealN;
   if( strcmp(opType,"LoadRange")==0 )  return Form::idealI;
   if( strcmp(opType,"LoadS")==0 )  return Form::idealS;
-  if( strcmp(opType,"Load16B")==0 )  return Form::idealB;
-  if( strcmp(opType,"Load8B")==0 )  return Form::idealB;
-  if( strcmp(opType,"Load4B")==0 )  return Form::idealB;
-  if( strcmp(opType,"Load8C")==0 )  return Form::idealC;
-  if( strcmp(opType,"Load4C")==0 )  return Form::idealC;
-  if( strcmp(opType,"Load2C")==0 )  return Form::idealC;
-  if( strcmp(opType,"Load8S")==0 )  return Form::idealS;
-  if( strcmp(opType,"Load4S")==0 )  return Form::idealS;
-  if( strcmp(opType,"Load2S")==0 )  return Form::idealS;
-  if( strcmp(opType,"Load2D")==0 )  return Form::idealD;
-  if( strcmp(opType,"Load4F")==0 )  return Form::idealF;
-  if( strcmp(opType,"Load2F")==0 )  return Form::idealF;
-  if( strcmp(opType,"Load4I")==0 )  return Form::idealI;
-  if( strcmp(opType,"Load2I")==0 )  return Form::idealI;
-  if( strcmp(opType,"Load2L")==0 )  return Form::idealL;
+  if( strcmp(opType,"LoadVector")==0 )  return Form::idealV;
   assert( strcmp(opType,"Load") != 0, "Must type Loads" );
   return Form::none;
 }
 
 Form::DataType Form::is_store_to_memory(const char *opType) const {
   if( strcmp(opType,"StoreB")==0)  return Form::idealB;
-  if( strcmp(opType,"StoreCM")==0)  return Form::idealB;
+  if( strcmp(opType,"StoreCM")==0) return Form::idealB;
   if( strcmp(opType,"StoreC")==0)  return Form::idealC;
   if( strcmp(opType,"StoreD")==0)  return Form::idealD;
   if( strcmp(opType,"StoreF")==0)  return Form::idealF;
   if( strcmp(opType,"StoreI")==0)  return Form::idealI;
   if( strcmp(opType,"StoreL")==0)  return Form::idealL;
   if( strcmp(opType,"StoreP")==0)  return Form::idealP;
-  if( strcmp(opType,"StoreN")==0) return Form::idealN;
-  if( strcmp(opType,"Store16B")==0)  return Form::idealB;
-  if( strcmp(opType,"Store8B")==0)  return Form::idealB;
-  if( strcmp(opType,"Store4B")==0)  return Form::idealB;
-  if( strcmp(opType,"Store8C")==0)  return Form::idealC;
-  if( strcmp(opType,"Store4C")==0)  return Form::idealC;
-  if( strcmp(opType,"Store2C")==0)  return Form::idealC;
-  if( strcmp(opType,"Store2D")==0)  return Form::idealD;
-  if( strcmp(opType,"Store4F")==0)  return Form::idealF;
-  if( strcmp(opType,"Store2F")==0)  return Form::idealF;
-  if( strcmp(opType,"Store4I")==0)  return Form::idealI;
-  if( strcmp(opType,"Store2I")==0)  return Form::idealI;
-  if( strcmp(opType,"Store2L")==0)  return Form::idealL;
+  if( strcmp(opType,"StoreN")==0)  return Form::idealN;
+  if( strcmp(opType,"StoreVector")==0 )  return Form::idealV;
   assert( strcmp(opType,"Store") != 0, "Must type Stores" );
   return Form::none;
 }
--- a/hotspot/src/share/vm/adlc/forms.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/forms.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -172,7 +172,8 @@
     idealB      =  6,  // Byte    type
     idealC      =  7,  // Char    type
     idealS      =  8,  // String  type
-    idealN      =  9   // Narrow oop types
+    idealN      =  9,  // Narrow oop types
+    idealV      = 10   // Vector  type
   };
   // Convert ideal name to a DataType, return DataType::none if not a 'ConX'
   Form::DataType  ideal_to_const_type(const char *ideal_type_name) const;
--- a/hotspot/src/share/vm/adlc/formsopt.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/formsopt.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -66,7 +66,7 @@
 // for spill-slots/regs.
 void RegisterForm::addSpillRegClass() {
   // Stack slots start at the next available even register number.
-  _reg_ctr = (_reg_ctr+1) & ~1;
+  _reg_ctr = (_reg_ctr+7) & ~7;
   const char *rc_name   = "stack_slots";
   RegClass   *reg_class = new RegClass(rc_name);
   reg_class->_stack_or_reg = true;
@@ -150,9 +150,14 @@
 int RegisterForm::RegMask_Size() {
   // Need at least this many words
   int words_for_regs = (_reg_ctr + 31)>>5;
-  // Add a few for incoming & outgoing arguments to calls.
+  // The array of Register Mask bits should be large enough to cover
+  // all the machine registers and all parameters that need to be passed
+  // on the stack (stack registers) up to some interesting limit.  Methods
+  // that need more parameters will NOT be compiled.  On Intel, the limit
+  // is something like 90+ parameters.
+  // Add a few (3 words == 96 bits) for incoming & outgoing arguments to calls.
   // Round up to the next doubleword size.
-  return (words_for_regs + 2 + 1) & ~1;
+  return (words_for_regs + 3 + 1) & ~1;
 }
 
 void RegisterForm::dump() {                  // Debug printer
--- a/hotspot/src/share/vm/adlc/formssel.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/formssel.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -432,6 +432,14 @@
   return  _matrule->is_ideal_store();
 }
 
+// Return 'true' if this instruction matches an ideal vector node
+bool InstructForm::is_vector() const {
+  if( _matrule == NULL ) return false;
+
+  return _matrule->is_vector();
+}
+
+
 // Return the input register that must match the output register
 // If this is not required, return 0
 uint InstructForm::two_address(FormDict &globals) {
@@ -751,6 +759,9 @@
 
   if (needs_base_oop_edge(globals)) return true;
 
+  if (is_vector()) return true;
+  if (is_mach_constant()) return true;
+
   return  false;
 }
 
@@ -3381,11 +3392,8 @@
     "StoreI","StoreL","StoreP","StoreN","StoreD","StoreF" ,
     "StoreB","StoreC","Store" ,"StoreFP",
     "LoadI", "LoadUI2L", "LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF"  ,
-    "LoadB" , "LoadUB", "LoadUS" ,"LoadS" ,"Load"   ,
-    "Store4I","Store2I","Store2L","Store2D","Store4F","Store2F","Store16B",
-    "Store8B","Store4B","Store8C","Store4C","Store2C",
-    "Load4I" ,"Load2I" ,"Load2L" ,"Load2D" ,"Load4F" ,"Load2F" ,"Load16B" ,
-    "Load8B" ,"Load4B" ,"Load8C" ,"Load4C" ,"Load2C" ,"Load8S", "Load4S","Load2S",
+    "LoadB" , "LoadUB", "LoadUS" ,"LoadS" ,"Load" ,
+    "StoreVector", "LoadVector",
     "LoadRange", "LoadKlass", "LoadNKlass", "LoadL_unaligned", "LoadD_unaligned",
     "LoadPLocked",
     "StorePConditional", "StoreIConditional", "StoreLConditional",
@@ -3822,6 +3830,10 @@
          strcmp(opType,"RegL")==0 ||
          strcmp(opType,"RegF")==0 ||
          strcmp(opType,"RegD")==0 ||
+         strcmp(opType,"VecS")==0 ||
+         strcmp(opType,"VecD")==0 ||
+         strcmp(opType,"VecX")==0 ||
+         strcmp(opType,"VecY")==0 ||
          strcmp(opType,"Reg" )==0) ) {
       return 1;
     }
@@ -3938,19 +3950,12 @@
         strcmp(opType,"ReverseBytesL")==0 ||
         strcmp(opType,"ReverseBytesUS")==0 ||
         strcmp(opType,"ReverseBytesS")==0 ||
-        strcmp(opType,"Replicate16B")==0 ||
-        strcmp(opType,"Replicate8B")==0 ||
-        strcmp(opType,"Replicate4B")==0 ||
-        strcmp(opType,"Replicate8C")==0 ||
-        strcmp(opType,"Replicate4C")==0 ||
-        strcmp(opType,"Replicate8S")==0 ||
-        strcmp(opType,"Replicate4S")==0 ||
-        strcmp(opType,"Replicate4I")==0 ||
-        strcmp(opType,"Replicate2I")==0 ||
-        strcmp(opType,"Replicate2L")==0 ||
-        strcmp(opType,"Replicate4F")==0 ||
-        strcmp(opType,"Replicate2F")==0 ||
-        strcmp(opType,"Replicate2D")==0 ||
+        strcmp(opType,"ReplicateB")==0 ||
+        strcmp(opType,"ReplicateS")==0 ||
+        strcmp(opType,"ReplicateI")==0 ||
+        strcmp(opType,"ReplicateL")==0 ||
+        strcmp(opType,"ReplicateF")==0 ||
+        strcmp(opType,"ReplicateD")==0 ||
         0 /* 0 to line up columns nicely */ )
       return 1;
   }
@@ -4034,6 +4039,23 @@
   return ideal_load;
 }
 
+bool MatchRule::is_vector() const {
+  if( _rChild ) {
+    const char  *opType = _rChild->_opType;
+    if( strcmp(opType,"ReplicateB")==0 ||
+        strcmp(opType,"ReplicateS")==0 ||
+        strcmp(opType,"ReplicateI")==0 ||
+        strcmp(opType,"ReplicateL")==0 ||
+        strcmp(opType,"ReplicateF")==0 ||
+        strcmp(opType,"ReplicateD")==0 ||
+        strcmp(opType,"LoadVector")==0 ||
+        strcmp(opType,"StoreVector")==0 ||
+        0 /* 0 to line up columns nicely */ )
+      return true;
+  }
+  return false;
+}
+
 
 bool MatchRule::skip_antidep_check() const {
   // Some loads operate on what is effectively immutable memory so we
--- a/hotspot/src/share/vm/adlc/formssel.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/formssel.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -160,6 +160,7 @@
   virtual bool        is_ideal_safepoint() const; // node matches 'SafePoint'
   virtual bool        is_ideal_nop() const;     // node matches 'Nop'
   virtual bool        is_ideal_control() const; // control node
+  virtual bool        is_vector() const;        // vector instruction
 
   virtual Form::CallType is_ideal_call() const; // matches ideal 'Call'
   virtual Form::DataType is_ideal_load() const; // node matches ideal 'LoadXNode'
@@ -1011,6 +1012,7 @@
   bool       is_ideal_goto() const;    // node matches ideal 'Goto'
   bool       is_ideal_loopEnd() const; // node matches ideal 'LoopEnd'
   bool       is_ideal_bool() const;    // node matches ideal 'Bool'
+  bool       is_vector() const;        // vector instruction
   Form::DataType is_ideal_load() const;// node matches ideal 'LoadXNode'
   // Should antidep checks be disabled for this rule
   // See definition of MatchRule::skip_antidep_check
--- a/hotspot/src/share/vm/adlc/main.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/adlc/main.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -250,6 +250,7 @@
   AD.addInclude(AD._HPP_file, "opto/node.hpp");
   AD.addInclude(AD._HPP_file, "opto/regalloc.hpp");
   AD.addInclude(AD._HPP_file, "opto/subnode.hpp");
+  AD.addInclude(AD._HPP_file, "opto/vectornode.hpp");
   AD.addInclude(AD._CPP_CLONE_file, "precompiled.hpp");
   AD.addInclude(AD._CPP_CLONE_file, "adfiles", get_basename(AD._HPP_file._name));
   AD.addInclude(AD._CPP_EXPAND_file, "precompiled.hpp");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/classfile/altHashing.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,304 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/altHashing.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "oops/markOop.hpp"
+#include "runtime/thread.hpp"
+
+// Get the hash code of the classes mirror if it exists, otherwise just
+// return a random number, which is one of the possible hash code used for
+// objects.  We don't want to call the synchronizer hash code to install
+// this value because it may safepoint.
+intptr_t object_hash(klassOop k) {
+  intptr_t hc = k->java_mirror()->mark()->hash();
+  return hc != markOopDesc::no_hash ? hc : os::random();
+}
+
+// Seed value used for each alternative hash calculated.
+jint AltHashing::compute_seed() {
+  jlong nanos = os::javaTimeNanos();
+  jlong now = os::javaTimeMillis();
+  jint SEED_MATERIAL[8] = {
+            (jint) object_hash(SystemDictionary::String_klass()),
+            (jint) object_hash(SystemDictionary::System_klass()),
+            (jint) os::random(),  // current thread isn't a java thread
+            (jint) (((julong)nanos) >> 32),
+            (jint) nanos,
+            (jint) (((julong)now) >> 32),
+            (jint) now,
+            (jint) (os::javaTimeNanos() >> 2)
+  };
+
+  return murmur3_32(SEED_MATERIAL, 8);
+}
+
+
+// Murmur3 hashing for Symbol
+jint AltHashing::murmur3_32(jint seed, const jbyte* data, int len) {
+  jint h1 = seed;
+  int count = len;
+  int offset = 0;
+
+  // body
+  while (count >= 4) {
+    jint k1 = (data[offset] & 0x0FF)
+        | (data[offset + 1] & 0x0FF) << 8
+        | (data[offset + 2] & 0x0FF) << 16
+        | data[offset + 3] << 24;
+
+    count -= 4;
+    offset += 4;
+
+    k1 *= 0xcc9e2d51;
+    k1 = Integer_rotateLeft(k1, 15);
+    k1 *= 0x1b873593;
+
+    h1 ^= k1;
+    h1 = Integer_rotateLeft(h1, 13);
+    h1 = h1 * 5 + 0xe6546b64;
+  }
+
+  // tail
+
+  if (count > 0) {
+    jint k1 = 0;
+
+    switch (count) {
+      case 3:
+        k1 ^= (data[offset + 2] & 0xff) << 16;
+      // fall through
+      case 2:
+        k1 ^= (data[offset + 1] & 0xff) << 8;
+      // fall through
+      case 1:
+        k1 ^= (data[offset] & 0xff);
+      // fall through
+      default:
+        k1 *= 0xcc9e2d51;
+        k1 = Integer_rotateLeft(k1, 15);
+        k1 *= 0x1b873593;
+        h1 ^= k1;
+    }
+  }
+
+  // finalization
+  h1 ^= len;
+
+  // finalization mix force all bits of a hash block to avalanche
+  h1 ^= ((unsigned int)h1) >> 16;
+  h1 *= 0x85ebca6b;
+  h1 ^= ((unsigned int)h1) >> 13;
+  h1 *= 0xc2b2ae35;
+  h1 ^= ((unsigned int)h1) >> 16;
+
+  return h1;
+}
+
+// Murmur3 hashing for Strings
+jint AltHashing::murmur3_32(jint seed, const jchar* data, int len) {
+  jint h1 = seed;
+
+  int off = 0;
+  int count = len;
+
+  // body
+  while (count >= 2) {
+    jchar d1 = data[off++] & 0xFFFF;
+    jchar d2 = data[off++];
+    jint k1 = (d1 | d2 << 16);
+
+    count -= 2;
+
+    k1 *= 0xcc9e2d51;
+    k1 = Integer_rotateLeft(k1, 15);
+    k1 *= 0x1b873593;
+
+    h1 ^= k1;
+    h1 = Integer_rotateLeft(h1, 13);
+    h1 = h1 * 5 + 0xe6546b64;
+  }
+
+  // tail
+
+  if (count > 0) {
+    int k1 = data[off];
+
+    k1 *= 0xcc9e2d51;
+    k1 = Integer_rotateLeft(k1, 15);
+    k1 *= 0x1b873593;
+    h1 ^= k1;
+  }
+
+  // finalization
+  h1 ^= len * 2; // (Character.SIZE / Byte.SIZE);
+
+  // finalization mix force all bits of a hash block to avalanche
+  h1 ^= ((unsigned int)h1) >> 16;
+  h1 *= 0x85ebca6b;
+  h1 ^= ((unsigned int)h1) >> 13;
+  h1 *= 0xc2b2ae35;
+  h1 ^= ((unsigned int)h1) >> 16;
+
+  return h1;
+}
+
+// Hash used for the seed.
+jint AltHashing::murmur3_32(jint seed, const int* data, int len) {
+  jint h1 = seed;
+
+  int off = 0;
+  int end = len;
+
+  // body
+  while (off < end) {
+    jint k1 = data[off++];
+
+    k1 *= 0xcc9e2d51;
+    k1 = Integer_rotateLeft(k1, 15);
+    k1 *= 0x1b873593;
+
+    h1 ^= k1;
+    h1 = Integer_rotateLeft(h1, 13);
+    h1 = h1 * 5 + 0xe6546b64;
+  }
+
+  // tail (always empty, as body is always 32-bit chunks)
+
+  // finalization
+
+  h1 ^= len * 4; // (Integer.SIZE / Byte.SIZE);
+
+  // finalization mix force all bits of a hash block to avalanche
+  h1 ^= ((juint)h1) >> 16;
+  h1 *= 0x85ebca6b;
+  h1 ^= ((juint)h1) >> 13;
+  h1 *= 0xc2b2ae35;
+  h1 ^= ((juint)h1) >> 16;
+
+  return h1;
+}
+
+jint AltHashing::murmur3_32(const int* data, int len) {
+  return murmur3_32(0, data, len);
+}
+
+#ifndef PRODUCT
+// Overloaded versions for internal test.
+jint AltHashing::murmur3_32(const jbyte* data, int len) {
+  return murmur3_32(0, data, len);
+}
+
+jint AltHashing::murmur3_32(const jchar* data, int len) {
+  return murmur3_32(0, data, len);
+}
+
+// Internal test for alternate hashing.  Translated from JDK version
+// test/sun/misc/Hashing.java
+static const jbyte ONE_BYTE[] = { (jbyte) 0x80};
+static const jbyte TWO_BYTE[] = { (jbyte) 0x80, (jbyte) 0x81};
+static const jchar ONE_CHAR[] = { (jchar) 0x8180};
+static const jbyte THREE_BYTE[] = { (jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82};
+static const jbyte FOUR_BYTE[] = { (jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82, (jbyte) 0x83};
+static const jchar TWO_CHAR[] = { (jchar) 0x8180, (jchar) 0x8382};
+static const jint ONE_INT[] = { 0x83828180};
+static const jbyte SIX_BYTE[] = { (jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82, (jbyte) 0x83, (jbyte) 0x84, (jbyte) 0x85};
+static const jchar THREE_CHAR[] = { (jchar) 0x8180, (jchar) 0x8382, (jchar) 0x8584};
+static const jbyte EIGHT_BYTE[] = {
+  (jbyte) 0x80, (jbyte) 0x81, (jbyte) 0x82,
+  (jbyte) 0x83, (jbyte) 0x84, (jbyte) 0x85,
+  (jbyte) 0x86, (jbyte) 0x87};
+static const jchar FOUR_CHAR[] = {
+  (jchar) 0x8180, (jchar) 0x8382,
+  (jchar) 0x8584, (jchar) 0x8786};
+
+static const jint TWO_INT[] = { 0x83828180, 0x87868584};
+
+static const juint MURMUR3_32_X86_CHECK_VALUE = 0xB0F57EE3;
+
+void AltHashing::testMurmur3_32_ByteArray() {
+  // printf("testMurmur3_32_ByteArray\n");
+
+  jbyte* vector = new jbyte[256];
+  jbyte* hashes = new jbyte[4 * 256];
+
+  for (int i = 0; i < 256; i++) {
+    vector[i] = (jbyte) i;
+  }
+
+  // Hash subranges {}, {0}, {0,1}, {0,1,2}, ..., {0,...,255}
+  for (int i = 0; i < 256; i++) {
+    jint hash = murmur3_32(256 - i, vector, i);
+    hashes[i * 4] = (jbyte) hash;
+    hashes[i * 4 + 1] = (jbyte) (((juint)hash) >> 8);
+    hashes[i * 4 + 2] = (jbyte) (((juint)hash) >> 16);
+    hashes[i * 4 + 3] = (jbyte) (((juint)hash) >> 24);
+  }
+
+  // hash to get const result.
+  juint final_hash = murmur3_32(hashes, 4*256);
+
+  assert (MURMUR3_32_X86_CHECK_VALUE == final_hash,
+    err_msg(
+        "Calculated hash result not as expected. Expected %08X got %08X\n",
+        MURMUR3_32_X86_CHECK_VALUE,
+        final_hash));
+}
+
+void AltHashing::testEquivalentHashes() {
+  jint jbytes, jchars, ints;
+
+  // printf("testEquivalentHashes\n");
+
+  jbytes = murmur3_32(TWO_BYTE, 2);
+  jchars = murmur3_32(ONE_CHAR, 1);
+  assert (jbytes == jchars,
+    err_msg("Hashes did not match. b:%08x != c:%08x\n", jbytes, jchars));
+
+  jbytes = murmur3_32(FOUR_BYTE, 4);
+  jchars = murmur3_32(TWO_CHAR, 2);
+  ints = murmur3_32(ONE_INT, 1);
+  assert ((jbytes == jchars) && (jbytes == ints),
+    err_msg("Hashes did not match. b:%08x != c:%08x != i:%08x\n", jbytes, jchars, ints));
+
+  jbytes = murmur3_32(SIX_BYTE, 6);
+  jchars = murmur3_32(THREE_CHAR, 3);
+  assert (jbytes == jchars,
+    err_msg("Hashes did not match. b:%08x != c:%08x\n", jbytes, jchars));
+
+  jbytes = murmur3_32(EIGHT_BYTE, 8);
+  jchars = murmur3_32(FOUR_CHAR, 4);
+  ints = murmur3_32(TWO_INT, 2);
+  assert ((jbytes == jchars) && (jbytes == ints),
+    err_msg("Hashes did not match. b:%08x != c:%08x != i:%08x\n", jbytes, jchars, ints));
+}
+
+// Returns true if the alternate hashcode is correct
+void AltHashing::test_alt_hash() {
+  testMurmur3_32_ByteArray();
+  testEquivalentHashes();
+}
+#endif // PRODUCT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/src/share/vm/classfile/altHashing.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_CLASSFILE_ALTHASHING_HPP
+#define SHARE_VM_CLASSFILE_ALTHASHING_HPP
+
+#include "prims/jni.h"
+#include "classfile/symbolTable.hpp"
+
+/**
+ * Hashing utilities.
+ *
+ * Implementation of Murmur3 hashing.
+ * This code was translated from src/share/classes/sun/misc/Hashing.java
+ * code in the JDK.
+ */
+
+class AltHashing : AllStatic {
+
+  // utility function copied from java/lang/Integer
+  static jint Integer_rotateLeft(jint i, int distance) {
+    return (i << distance) | (((juint)i) >> (32-distance));
+  }
+  static jint murmur3_32(const int* data, int len);
+  static jint murmur3_32(jint seed, const int* data, int len);
+
+#ifndef PRODUCT
+  // Hashing functions used for internal testing
+  static jint murmur3_32(const jbyte* data, int len);
+  static jint murmur3_32(const jchar* data, int len);
+  static void testMurmur3_32_ByteArray();
+  static void testEquivalentHashes();
+#endif // PRODUCT
+
+ public:
+  static jint compute_seed();
+  static jint murmur3_32(jint seed, const jbyte* data, int len);
+  static jint murmur3_32(jint seed, const jchar* data, int len);
+  NOT_PRODUCT(static void test_alt_hash();)
+};
+#endif // SHARE_VM_CLASSFILE_ALTHASHING_HPP
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/altHashing.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/symbolTable.hpp"
 #include "classfile/vmSymbols.hpp"
@@ -347,13 +348,26 @@
   return result;
 }
 
-unsigned int java_lang_String::hash_string(oop java_string) {
+unsigned int java_lang_String::to_hash(oop java_string) {
+  int          length = java_lang_String::length(java_string);
+  // Zero length string will hash to zero with String.toHash() function.
+  if (length == 0) return 0;
+
   typeArrayOop value  = java_lang_String::value(java_string);
   int          offset = java_lang_String::offset(java_string);
+  return java_lang_String::to_hash(value->char_at_addr(offset), length);
+}
+
+unsigned int java_lang_String::hash_string(oop java_string) {
   int          length = java_lang_String::length(java_string);
-
-  if (length == 0) return 0;
-  return hash_string(value->char_at_addr(offset), length);
+  // Zero length string doesn't hash necessarily hash to zero.
+  if (length == 0) {
+    return StringTable::hash_string(NULL, 0);
+  }
+
+  typeArrayOop value  = java_lang_String::value(java_string);
+  int          offset = java_lang_String::offset(java_string);
+  return StringTable::hash_string(value->char_at_addr(offset), length);
 }
 
 Symbol* java_lang_String::as_symbol(Handle java_string, TRAPS) {
--- a/hotspot/src/share/vm/classfile/javaClasses.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -158,20 +158,16 @@
   static jchar* as_unicode_string(oop java_string, int& length);
 
   // Compute the hash value for a java.lang.String object which would
-  // contain the characters passed in. This hash value is used for at
-  // least two purposes.
-  //
-  // (a) As the hash value used by the StringTable for bucket selection
-  //     and comparison (stored in the HashtableEntry structures).  This
-  //     is used in the String.intern() method.
+  // contain the characters passed in.
   //
-  // (b) As the hash value used by the String object itself, in
-  //     String.hashCode().  This value is normally calculate in Java code
-  //     in the String.hashCode method(), but is precomputed for String
-  //     objects in the shared archive file.
+  // As the hash value used by the String object itself, in
+  // String.hashCode().  This value is normally calculated in Java code
+  // in the String.hashCode method(), but is precomputed for String
+  // objects in the shared archive file.
+  // hash P(31) from Kernighan & Ritchie
   //
-  //     For this reason, THIS ALGORITHM MUST MATCH String.hashCode().
-  static unsigned int hash_string(jchar* s, int len) {
+  // For this reason, THIS ALGORITHM MUST MATCH String.toHash().
+  template <typename T> static unsigned int to_hash(T* s, int len) {
     unsigned int h = 0;
     while (len-- > 0) {
       h = 31*h + (unsigned int) *s;
@@ -179,6 +175,10 @@
     }
     return h;
   }
+  static unsigned int to_hash(oop java_string);
+
+  // This is the string hash code used by the StringTable, which may be
+  // the same as String.toHash or an alternate hash code.
   static unsigned int hash_string(oop java_string);
 
   static bool equals(oop java_string, jchar* chars, int len);
--- a/hotspot/src/share/vm/classfile/symbolTable.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/classfile/symbolTable.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/altHashing.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
@@ -34,19 +35,19 @@
 #include "oops/oop.inline2.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "utilities/hashtable.inline.hpp"
+#include "utilities/numberSeq.hpp"
 
 // --------------------------------------------------------------------------
 
 SymbolTable* SymbolTable::_the_table = NULL;
 // Static arena for symbols that are not deallocated
 Arena* SymbolTable::_arena = NULL;
+bool SymbolTable::_needs_rehashing = false;
+jint SymbolTable::_seed = 0;
 
 Symbol* SymbolTable::allocate_symbol(const u1* name, int len, bool c_heap, TRAPS) {
-  // Don't allow symbols to be created which cannot fit in a Symbol*.
-  if (len > Symbol::max_length()) {
-    THROW_MSG_0(vmSymbols::java_lang_InternalError(),
-                "name is too long to represent");
-  }
+  assert (len <= Symbol::max_length(), "should be checked by caller");
+
   Symbol* sym;
   // Allocate symbols in the C heap when dumping shared spaces in case there
   // are temporary symbols we can remove.
@@ -91,9 +92,14 @@
   int total = 0;
   size_t memory_total = 0;
   for (int i = 0; i < the_table()->table_size(); ++i) {
-    for (HashtableEntry<Symbol*>** p = the_table()->bucket_addr(i); *p != NULL; ) {
-      HashtableEntry<Symbol*>* entry = *p;
-      if (entry->is_shared()) {
+    HashtableEntry<Symbol*>** p = the_table()->bucket_addr(i);
+    HashtableEntry<Symbol*>* entry = the_table()->bucket(i);
+    while (entry != NULL) {
+      // Shared entries are normally at the end of the bucket and if we run into
+      // a shared entry, then there is nothing more to remove. However, if we
+      // have rehashed the table, then the shared entries are no longer at the
+      // end of the bucket.
+      if (entry->is_shared() && !use_alternate_hashcode()) {
         break;
       }
       Symbol* s = entry->literal();
@@ -102,6 +108,7 @@
       assert(s != NULL, "just checking");
       // If reference count is zero, remove.
       if (s->refcount() == 0) {
+        assert(!entry->is_shared(), "shared entries should be kept live");
         delete s;
         removed++;
         *p = entry->next();
@@ -109,6 +116,8 @@
       } else {
         p = entry->next_addr();
       }
+      // get next entry
+      entry = (HashtableEntry<Symbol*>*)HashtableEntry<Symbol*>::make_ptr(*p);
     }
   }
   symbols_removed += removed;
@@ -121,12 +130,42 @@
   }
 }
 
+unsigned int SymbolTable::new_hash(Symbol* sym) {
+  ResourceMark rm;
+  // Use alternate hashing algorithm on this symbol.
+  return AltHashing::murmur3_32(seed(), (const jbyte*)sym->as_C_string(), sym->utf8_length());
+}
+
+// Create a new table and using alternate hash code, populate the new table
+// with the existing strings.   Set flag to use the alternate hash code afterwards.
+void SymbolTable::rehash_table() {
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
+  // This should never happen with -Xshare:dump but it might in testing mode.
+  if (DumpSharedSpaces) return;
+  // Create a new symbol table
+  SymbolTable* new_table = new SymbolTable();
+
+  // Initialize the global seed for hashing.
+  _seed = AltHashing::compute_seed();
+  assert(seed() != 0, "shouldn't be zero");
+
+  the_table()->move_to(new_table);
+
+  // Delete the table and buckets (entries are reused in new table).
+  delete _the_table;
+  // Don't check if we need rehashing until the table gets unbalanced again.
+  // Then rehash with a new global seed.
+  _needs_rehashing = false;
+  _the_table = new_table;
+}
 
 // Lookup a symbol in a bucket.
 
 Symbol* SymbolTable::lookup(int index, const char* name,
                               int len, unsigned int hash) {
+  int count = 0;
   for (HashtableEntry<Symbol*>* e = bucket(index); e != NULL; e = e->next()) {
+    count++;  // count all entries in this bucket, not just ones with same hash
     if (e->hash() == hash) {
       Symbol* sym = e->literal();
       if (sym->equals(name, len)) {
@@ -136,9 +175,20 @@
       }
     }
   }
+  // If the bucket size is too deep check if this hash code is insufficient.
+  if (count >= BasicHashtable::rehash_count && !needs_rehashing()) {
+    _needs_rehashing = check_rehash_table(count);
+  }
   return NULL;
 }
 
+// Pick hashing algorithm.
+unsigned int SymbolTable::hash_symbol(const char* s, int len) {
+  return use_alternate_hashcode() ?
+           AltHashing::murmur3_32(seed(), (const jbyte*)s, len) :
+           java_lang_String::to_hash(s, len);
+}
+
 
 // We take care not to be blocking while holding the
 // SymbolTable_lock. Otherwise, the system might deadlock, since the
@@ -156,6 +206,9 @@
   // Found
   if (s != NULL) return s;
 
+  // Grab SymbolTable_lock first.
+  MutexLocker ml(SymbolTable_lock, THREAD);
+
   // Otherwise, add to symbol to table
   return the_table()->basic_add(index, (u1*)name, len, hashValue, true, CHECK_NULL);
 }
@@ -193,6 +246,9 @@
   // We can't include the code in No_Safepoint_Verifier because of the
   // ResourceMark.
 
+  // Grab SymbolTable_lock first.
+  MutexLocker ml(SymbolTable_lock, THREAD);
+
   return the_table()->basic_add(index, (u1*)buffer, len, hashValue, true, CHECK_NULL);
 }
 
@@ -261,6 +317,9 @@
                       int names_count,
                       const char** names, int* lengths, int* cp_indices,
                       unsigned int* hashValues, TRAPS) {
+  // Grab SymbolTable_lock first.
+  MutexLocker ml(SymbolTable_lock, THREAD);
+
   SymbolTable* table = the_table();
   bool added = table->basic_add(class_loader, cp, names_count, names, lengths,
                                 cp_indices, hashValues, CHECK);
@@ -281,18 +340,39 @@
   if (result != NULL) {
     return result;
   }
+  // Grab SymbolTable_lock first.
+  MutexLocker ml(SymbolTable_lock, THREAD);
+
   SymbolTable* table = the_table();
   int index = table->hash_to_index(hash);
   return table->basic_add(index, (u1*)name, (int)strlen(name), hash, false, THREAD);
 }
 
-Symbol* SymbolTable::basic_add(int index, u1 *name, int len,
-                               unsigned int hashValue, bool c_heap, TRAPS) {
+Symbol* SymbolTable::basic_add(int index_arg, u1 *name, int len,
+                               unsigned int hashValue_arg, bool c_heap, TRAPS) {
   assert(!Universe::heap()->is_in_reserved(name) || GC_locker::is_active(),
          "proposed name of symbol must be stable");
 
-  // Grab SymbolTable_lock first.
-  MutexLocker ml(SymbolTable_lock, THREAD);
+  // Don't allow symbols to be created which cannot fit in a Symbol*.
+  if (len > Symbol::max_length()) {
+    THROW_MSG_0(vmSymbols::java_lang_InternalError(),
+                "name is too long to represent");
+  }
+
+  // Cannot hit a safepoint in this function because the "this" pointer can move.
+  No_Safepoint_Verifier nsv;
+
+  // Check if the symbol table has been rehashed, if so, need to recalculate
+  // the hash value and index.
+  unsigned int hashValue;
+  int index;
+  if (use_alternate_hashcode()) {
+    hashValue = hash_symbol((const char*)name, len);
+    index = hash_to_index(hashValue);
+  } else {
+    hashValue = hashValue_arg;
+    index = index_arg;
+  }
 
   // Since look-up was done lock-free, we need to check if another
   // thread beat us in the race to insert the symbol.
@@ -328,14 +408,22 @@
     }
   }
 
-  // Hold SymbolTable_lock through the symbol creation
-  MutexLocker ml(SymbolTable_lock, THREAD);
+  // Cannot hit a safepoint in this function because the "this" pointer can move.
+  No_Safepoint_Verifier nsv;
 
   for (int i=0; i<names_count; i++) {
+    // Check if the symbol table has been rehashed, if so, need to recalculate
+    // the hash value.
+    unsigned int hashValue;
+    if (use_alternate_hashcode()) {
+      hashValue = hash_symbol(names[i], lengths[i]);
+    } else {
+      hashValue = hashValues[i];
+    }
     // Since look-up was done lock-free, we need to check if another
     // thread beat us in the race to insert the symbol.
-    int index = hash_to_index(hashValues[i]);
-    Symbol* test = lookup(index, names[i], lengths[i], hashValues[i]);
+    int index = hash_to_index(hashValue);
+    Symbol* test = lookup(index, names[i], lengths[i], hashValue);
     if (test != NULL) {
       // A race occurred and another thread introduced the symbol, this one
       // will be dropped and collected. Use test instead.
@@ -347,7 +435,7 @@
       bool c_heap = class_loader() != NULL;
       Symbol* sym = allocate_symbol((const u1*)names[i], lengths[i], c_heap, CHECK_(false));
       assert(sym->equals(names[i], lengths[i]), "symbol must be properly initialized");  // why wouldn't it be???
-      HashtableEntry<Symbol*>* entry = new_entry(hashValues[i], sym);
+      HashtableEntry<Symbol*>* entry = new_entry(hashValue, sym);
       add_entry(index, entry);
       cp->symbol_at_put(cp_indices[i], sym);
     }
@@ -370,6 +458,24 @@
   }
 }
 
+void SymbolTable::dump(outputStream* st) {
+  NumberSeq summary;
+  for (int i = 0; i < the_table()->table_size(); ++i) {
+    int count = 0;
+    for (HashtableEntry<Symbol*>* e = the_table()->bucket(i);
+       e != NULL; e = e->next()) {
+      count++;
+    }
+    summary.add((double)count);
+  }
+  st->print_cr("SymbolTable statistics:");
+  st->print_cr("Number of buckets       : %7d", summary.num());
+  st->print_cr("Average bucket size     : %7.0f", summary.avg());
+  st->print_cr("Variance of bucket size : %7.0f", summary.variance());
+  st->print_cr("Std. dev. of bucket size: %7.0f", summary.sd());
+  st->print_cr("Maximum bucket size     : %7.0f", summary.maximum());
+}
+
 
 //---------------------------------------------------------------------------
 // Non-product code
@@ -468,7 +574,6 @@
     }
   }
 }
-
 #endif // PRODUCT
 
 // --------------------------------------------------------------------------
@@ -514,38 +619,53 @@
 // --------------------------------------------------------------------------
 StringTable* StringTable::_the_table = NULL;
 
+bool StringTable::_needs_rehashing = false;
+jint StringTable::_seed = 0;
+
+// Pick hashing algorithm
+unsigned int StringTable::hash_string(const jchar* s, int len) {
+  return use_alternate_hashcode() ? AltHashing::murmur3_32(seed(), s, len) :
+                                    java_lang_String::to_hash(s, len);
+}
+
 oop StringTable::lookup(int index, jchar* name,
                         int len, unsigned int hash) {
+  int count = 0;
   for (HashtableEntry<oop>* l = bucket(index); l != NULL; l = l->next()) {
+    count++;
     if (l->hash() == hash) {
       if (java_lang_String::equals(l->literal(), name, len)) {
         return l->literal();
       }
     }
   }
+  // If the bucket size is too deep check if this hash code is insufficient.
+  if (count >= BasicHashtable::rehash_count && !needs_rehashing()) {
+    _needs_rehashing = check_rehash_table(count);
+  }
   return NULL;
 }
 
 
-oop StringTable::basic_add(int index, Handle string_or_null, jchar* name,
-                           int len, unsigned int hashValue, TRAPS) {
-  debug_only(StableMemoryChecker smc(name, len * sizeof(name[0])));
-  assert(!Universe::heap()->is_in_reserved(name) || GC_locker::is_active(),
-         "proposed name of symbol must be stable");
-
-  Handle string;
-  // try to reuse the string if possible
-  if (!string_or_null.is_null() && (!JavaObjectsInPerm || string_or_null()->is_perm())) {
-    string = string_or_null;
-  } else {
-    string = java_lang_String::create_tenured_from_unicode(name, len, CHECK_NULL);
-  }
-
-  // Allocation must be done before grapping the SymbolTable_lock lock
-  MutexLocker ml(StringTable_lock, THREAD);
+oop StringTable::basic_add(int index_arg, Handle string, jchar* name,
+                           int len, unsigned int hashValue_arg, TRAPS) {
 
   assert(java_lang_String::equals(string(), name, len),
          "string must be properly initialized");
+  // Cannot hit a safepoint in this function because the "this" pointer can move.
+  No_Safepoint_Verifier nsv;
+
+  // Check if the symbol table has been rehashed, if so, need to recalculate
+  // the hash value and index before second lookup.
+  unsigned int hashValue;
+  int index;
+  if (use_alternate_hashcode()) {
+    hashValue = hash_string(name, len);
+    index = hash_to_index(hashValue);
+  } else {
+    hashValue = hashValue_arg;
+    index = index_arg;
+  }
 
   // Since look-up was done lock-free, we need to check if another
   // thread beat us in the race to insert the symbol.
@@ -566,7 +686,7 @@
   ResourceMark rm;
   int length;
   jchar* chars = symbol->as_unicode(length);
-  unsigned int hashValue = java_lang_String::hash_string(chars, length);
+  unsigned int hashValue = hash_string(chars, length);
   int index = the_table()->hash_to_index(hashValue);
   return the_table()->lookup(index, chars, length, hashValue);
 }
@@ -574,15 +694,31 @@
 
 oop StringTable::intern(Handle string_or_null, jchar* name,
                         int len, TRAPS) {
-  unsigned int hashValue = java_lang_String::hash_string(name, len);
+  unsigned int hashValue = hash_string(name, len);
   int index = the_table()->hash_to_index(hashValue);
-  oop string = the_table()->lookup(index, name, len, hashValue);
+  oop found_string = the_table()->lookup(index, name, len, hashValue);
 
   // Found
-  if (string != NULL) return string;
+  if (found_string != NULL) return found_string;
+
+  debug_only(StableMemoryChecker smc(name, len * sizeof(name[0])));
+  assert(!Universe::heap()->is_in_reserved(name) || GC_locker::is_active(),
+         "proposed name of symbol must be stable");
+
+  Handle string;
+  // try to reuse the string if possible
+  if (!string_or_null.is_null() && (!JavaObjectsInPerm || string_or_null()->is_perm())) {
+    string = string_or_null;
+  } else {
+    string = java_lang_String::create_tenured_from_unicode(name, len, CHECK_NULL);
+  }
+
+  // Grab the StringTable_lock before getting the_table() because it could
+  // change at safepoint.
+  MutexLocker ml(StringTable_lock, THREAD);
 
   // Otherwise, add to symbol to table
-  return the_table()->basic_add(index, string_or_null, name, len,
+  return the_table()->basic_add(index, string, name, len,
                                 hashValue, CHECK_NULL);
 }
 
@@ -625,18 +761,24 @@
   // entries at a safepoint.
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
   for (int i = 0; i < the_table()->table_size(); ++i) {
-    for (HashtableEntry<oop>** p = the_table()->bucket_addr(i); *p != NULL; ) {
-      HashtableEntry<oop>* entry = *p;
-      if (entry->is_shared()) {
+    HashtableEntry<oop>** p = the_table()->bucket_addr(i);
+    HashtableEntry<oop>* entry = the_table()->bucket(i);
+    while (entry != NULL) {
+      // Shared entries are normally at the end of the bucket and if we run into
+      // a shared entry, then there is nothing more to remove. However, if we
+      // have rehashed the table, then the shared entries are no longer at the
+      // end of the bucket.
+      if (entry->is_shared() && !use_alternate_hashcode()) {
         break;
       }
       assert(entry->literal() != NULL, "just checking");
-      if (is_alive->do_object_b(entry->literal())) {
+      if (entry->is_shared() || is_alive->do_object_b(entry->literal())) {
         p = entry->next_addr();
       } else {
         *p = entry->next();
         the_table()->free_entry(entry);
       }
+      entry = (HashtableEntry<oop>*)HashtableEntry<oop>::make_ptr(*p);
     }
   }
 }
@@ -675,3 +817,53 @@
     }
   }
 }
+
+void StringTable::dump(outputStream* st) {
+  NumberSeq summary;
+  for (int i = 0; i < the_table()->table_size(); ++i) {
+    HashtableEntry<oop>* p = the_table()->bucket(i);
+    int count = 0;
+    for ( ; p != NULL; p = p->next()) {
+      count++;
+    }
+    summary.add((double)count);
+  }
+  st->print_cr("StringTable statistics:");
+  st->print_cr("Number of buckets       : %7d", summary.num());
+  st->print_cr("Average bucket size     : %7.0f", summary.avg());
+  st->print_cr("Variance of bucket size : %7.0f", summary.variance());
+  st->print_cr("Std. dev. of bucket size: %7.0f", summary.sd());
+  st->print_cr("Maximum bucket size     : %7.0f", summary.maximum());
+}
+
+
+unsigned int StringTable::new_hash(oop string) {
+  ResourceMark rm;
+  int length;
+  jchar* chars = java_lang_String::as_unicode_string(string, length);
+  // Use alternate hashing algorithm on the string
+  return AltHashing::murmur3_32(seed(), chars, length);
+}
+
+// Create a new table and using alternate hash code, populate the new table
+// with the existing strings.   Set flag to use the alternate hash code afterwards.
+void StringTable::rehash_table() {
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
+  // This should never happen with -Xshare:dump but it might in testing mode.
+  if (DumpSharedSpaces) return;
+  StringTable* new_table = new StringTable();
+
+  // Initialize new global seed for hashing.
+  _seed = AltHashing::compute_seed();
+  assert(seed() != 0, "shouldn't be zero");
+
+  // Rehash the table
+  the_table()->move_to(new_table);
+
+  // Delete the table and buckets (entries are reused in new table).
+  delete _the_table;
+  // Don't check if we need rehashing until the table gets unbalanced again.
+  // Then rehash with a new global seed.
+  _needs_rehashing = false;
+  _the_table = new_table;
+}
--- a/hotspot/src/share/vm/classfile/symbolTable.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/classfile/symbolTable.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -40,6 +40,7 @@
 //  - symbolTableEntrys are allocated in blocks to reduce the space overhead.
 
 class BoolObjectClosure;
+class outputStream;
 
 
 // Class to hold a newly created or referenced Symbol* temporarily in scope.
@@ -78,6 +79,10 @@
   // The symbol table
   static SymbolTable* _the_table;
 
+  // Set if one bucket is out of balance due to hash algorithm deficiency
+  static bool _needs_rehashing;
+  static jint _seed;
+
   // For statistics
   static int symbols_removed;
   static int symbols_counted;
@@ -119,6 +124,11 @@
   static Arena* arena() { return _arena; }  // called for statistics
 
   static void initialize_symbols(int arena_alloc_size = 0);
+
+  static bool use_alternate_hashcode()  { return _seed != 0; }
+  static jint seed()                    { return _seed; }
+
+  unsigned int new_hash(Symbol* sym);
 public:
   enum {
     symbol_alloc_batch_size = 8,
@@ -146,6 +156,8 @@
     initialize_symbols();
   }
 
+  static unsigned int hash_symbol(const char* s, int len);
+
   static Symbol* lookup(const char* name, int len, TRAPS);
   // lookup only, won't add. Also calculate hash.
   static Symbol* lookup_only(const char* name, int len, unsigned int& hash);
@@ -208,6 +220,7 @@
 
   // Debugging
   static void verify();
+  static void dump(outputStream* st);
 
   // Sharing
   static void copy_buckets(char** top, char*end) {
@@ -219,8 +232,13 @@
   static void reverse(void* boundary = NULL) {
     the_table()->Hashtable<Symbol*>::reverse(boundary);
   }
+
+  // Rehash the symbol table if it gets out of balance
+  static void rehash_table();
+  static bool needs_rehashing()         { return _needs_rehashing; }
 };
 
+
 class StringTable : public Hashtable<oop> {
   friend class VMStructs;
 
@@ -228,6 +246,10 @@
   // The string table
   static StringTable* _the_table;
 
+  // Set if one bucket is out of balance due to hash algorithm deficiency
+  static bool _needs_rehashing;
+  static jint _seed;
+
   static oop intern(Handle string_or_null, jchar* chars, int length, TRAPS);
   oop basic_add(int index, Handle string_or_null, jchar* name, int len,
                 unsigned int hashValue, TRAPS);
@@ -241,6 +263,10 @@
     : Hashtable<oop>((int)StringTableSize, sizeof (HashtableEntry<oop>), t,
                      number_of_entries) {}
 
+  static bool use_alternate_hashcode()  { return _seed != 0; }
+  static jint seed()                    { return _seed; }
+
+  unsigned int new_hash(oop s);
 public:
   // The string table
   static StringTable* the_table() { return _the_table; }
@@ -265,6 +291,14 @@
   // Invoke "f->do_oop" on the locations of all oops in the table.
   static void oops_do(OopClosure* f);
 
+  // Hashing algorithm, used as the hash value used by the
+  //     StringTable for bucket selection and comparison (stored in the
+  //     HashtableEntry structures).  This is used in the String.intern() method.
+  static unsigned int hash_string(const jchar* s, int len);
+
+  // Internal test.
+  static void test_alt_hash() PRODUCT_RETURN;
+
   // Probing
   static oop lookup(Symbol* symbol);
 
@@ -275,6 +309,7 @@
 
   // Debugging
   static void verify();
+  static void dump(outputStream* st);
 
   // Sharing
   static void copy_buckets(char** top, char*end) {
@@ -286,6 +321,9 @@
   static void reverse() {
     the_table()->Hashtable<oop>::reverse();
   }
+
+  // Rehash the symbol table if it gets out of balance
+  static void rehash_table();
+  static bool needs_rehashing() { return _needs_rehashing; }
 };
-
 #endif // SHARE_VM_CLASSFILE_SYMBOLTABLE_HPP
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -111,6 +111,10 @@
   template(getBootClassPathEntryForClass_name,        "getBootClassPathEntryForClass")            \
   template(sun_misc_PostVMInitHook,                   "sun/misc/PostVMInitHook")                  \
                                                                                                   \
+  /* Java runtime version access */                                                               \
+  template(sun_misc_Version,                          "sun/misc/Version")                         \
+  template(java_runtime_name_name,                    "java_runtime_name")                        \
+                                                                                                  \
   /* class file format tags */                                                                    \
   template(tag_source_file,                           "SourceFile")                               \
   template(tag_inner_classes,                         "InnerClasses")                             \
--- a/hotspot/src/share/vm/code/vmreg.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/code/vmreg.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,7 +27,7 @@
 #include "code/vmreg.hpp"
 
 // First VMReg value that could refer to a stack slot
-VMReg VMRegImpl::stack0 = (VMReg)(intptr_t)((ConcreteRegisterImpl::number_of_registers + 1) & ~1);
+VMReg VMRegImpl::stack0 = (VMReg)(intptr_t)((ConcreteRegisterImpl::number_of_registers + 7) & ~7);
 
 // VMRegs are 4 bytes wide on all platforms
 const int VMRegImpl::stack_slot_size = 4;
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -4750,9 +4750,6 @@
       _g1h->g1_policy()->record_thread_age_table(pss.age_table());
       _g1h->update_surviving_young_words(pss.surviving_young_words()+1);
 
-      // Clean up any par-expanded rem sets.
-      HeapRegionRemSet::par_cleanup();
-
       if (ParallelGCVerbose) {
         MutexLocker x(stats_lock());
         pss.print_termination_stats(worker_id);
--- a/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1_globals.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -53,6 +53,9 @@
   develop(bool, G1TraceMarkStackOverflow, false,                            \
           "If true, extra debugging code for CM restart for ovflw.")        \
                                                                             \
+  develop(bool, G1TraceHeapRegionRememberedSet, false,                      \
+          "Enables heap region remembered set debug logs")                  \
+                                                                            \
   diagnostic(bool, G1SummarizeConcMark, false,                              \
           "Summarize concurrent mark info")                                 \
                                                                             \
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -30,13 +30,10 @@
 #include "gc_implementation/g1/heapRegionSeq.inline.hpp"
 #include "memory/allocation.hpp"
 #include "memory/space.inline.hpp"
+#include "oops/oop.inline.hpp"
 #include "utilities/bitMap.inline.hpp"
 #include "utilities/globalDefinitions.hpp"
 
-#define HRRS_VERBOSE 0
-
-#define PRT_COUNT_OCCUPIED 1
-
 // OtherRegionsTable
 
 class PerRegionTable: public CHeapObj {
@@ -45,14 +42,10 @@
 
   HeapRegion*     _hr;
   BitMap          _bm;
-#if PRT_COUNT_OCCUPIED
   jint            _occupied;
-#endif
-  PerRegionTable* _next_free;
 
-  PerRegionTable* next_free() { return _next_free; }
-  void set_next_free(PerRegionTable* prt) { _next_free = prt; }
-
+  // next pointer for free/allocated lis
+  PerRegionTable* _next;
 
   static PerRegionTable* _free_list;
 
@@ -69,63 +62,25 @@
   // We need access in order to union things into the base table.
   BitMap* bm() { return &_bm; }
 
-#if PRT_COUNT_OCCUPIED
   void recount_occupied() {
     _occupied = (jint) bm()->count_one_bits();
   }
-#endif
 
   PerRegionTable(HeapRegion* hr) :
     _hr(hr),
-#if PRT_COUNT_OCCUPIED
     _occupied(0),
-#endif
     _bm(HeapRegion::CardsPerRegion, false /* in-resource-area */)
   {}
 
-  static void free(PerRegionTable* prt) {
-    while (true) {
-      PerRegionTable* fl = _free_list;
-      prt->set_next_free(fl);
-      PerRegionTable* res =
-        (PerRegionTable*)
-        Atomic::cmpxchg_ptr(prt, &_free_list, fl);
-      if (res == fl) return;
-    }
-    ShouldNotReachHere();
-  }
-
-  static PerRegionTable* alloc(HeapRegion* hr) {
-    PerRegionTable* fl = _free_list;
-    while (fl != NULL) {
-      PerRegionTable* nxt = fl->next_free();
-      PerRegionTable* res =
-        (PerRegionTable*)
-        Atomic::cmpxchg_ptr(nxt, &_free_list, fl);
-      if (res == fl) {
-        fl->init(hr);
-        return fl;
-      } else {
-        fl = _free_list;
-      }
-    }
-    assert(fl == NULL, "Loop condition.");
-    return new PerRegionTable(hr);
-  }
-
   void add_card_work(CardIdx_t from_card, bool par) {
     if (!_bm.at(from_card)) {
       if (par) {
         if (_bm.par_at_put(from_card, 1)) {
-#if PRT_COUNT_OCCUPIED
           Atomic::inc(&_occupied);
-#endif
         }
       } else {
         _bm.at_put(from_card, 1);
-#if PRT_COUNT_OCCUPIED
         _occupied++;
-#endif
       }
     }
   }
@@ -134,10 +89,13 @@
     // Must make this robust in case "from" is not in "_hr", because of
     // concurrency.
 
-#if HRRS_VERBOSE
-    gclog_or_tty->print_cr("    PRT::Add_reference_work(" PTR_FORMAT "->" PTR_FORMAT").",
-                           from, *from);
-#endif
+    if (G1TraceHeapRegionRememberedSet) {
+      gclog_or_tty->print_cr("    PRT::Add_reference_work(" PTR_FORMAT "->" PTR_FORMAT").",
+                             from,
+                             UseCompressedOops
+                             ? oopDesc::load_decode_heap_oop((narrowOop*)from)
+                             : oopDesc::load_decode_heap_oop((oop*)from));
+    }
 
     HeapRegion* loc_hr = hr();
     // If the test below fails, then this table was reused concurrently
@@ -162,23 +120,16 @@
 
   HeapRegion* hr() const { return _hr; }
 
-#if PRT_COUNT_OCCUPIED
   jint occupied() const {
     // Overkill, but if we ever need it...
     // guarantee(_occupied == _bm.count_one_bits(), "Check");
     return _occupied;
   }
-#else
-  jint occupied() const {
-    return _bm.count_one_bits();
-  }
-#endif
 
   void init(HeapRegion* hr) {
     _hr = hr;
-#if PRT_COUNT_OCCUPIED
+    _next = NULL;
     _occupied = 0;
-#endif
     _bm.clear();
   }
 
@@ -194,9 +145,7 @@
     HeapWord* hr_bot = hr()->bottom();
     size_t hr_first_card_index = ctbs->index_for(hr_bot);
     bm()->set_intersection_at_offset(*card_bm, hr_first_card_index);
-#if PRT_COUNT_OCCUPIED
     recount_occupied();
-#endif
   }
 
   void add_card(CardIdx_t from_card_index) {
@@ -218,16 +167,6 @@
     return sizeof(this) + _bm.size_in_words() * HeapWordSize;
   }
 
-  static size_t fl_mem_size() {
-    PerRegionTable* cur = _free_list;
-    size_t res = 0;
-    while (cur != NULL) {
-      res += sizeof(PerRegionTable);
-      cur = cur->next_free();
-    }
-    return res;
-  }
-
   // Requires "from" to be in "hr()".
   bool contains_reference(OopOrNarrowOopStar from) const {
     assert(hr()->is_in_reserved(from), "Precondition.");
@@ -235,122 +174,29 @@
                                     CardTableModRefBS::card_size);
     return _bm.at(card_ind);
   }
-};
 
-PerRegionTable* PerRegionTable::_free_list = NULL;
-
-
-#define COUNT_PAR_EXPANDS 0
-
-#if COUNT_PAR_EXPANDS
-static jint n_par_expands = 0;
-static jint n_par_contracts = 0;
-static jint par_expand_list_len = 0;
-static jint max_par_expand_list_len = 0;
-
-static void print_par_expand() {
-  Atomic::inc(&n_par_expands);
-  Atomic::inc(&par_expand_list_len);
-  if (par_expand_list_len > max_par_expand_list_len) {
-    max_par_expand_list_len = par_expand_list_len;
-  }
-  if ((n_par_expands % 10) == 0) {
-    gclog_or_tty->print_cr("\n\n%d par expands: %d contracts, "
-                  "len = %d, max_len = %d\n.",
-                  n_par_expands, n_par_contracts, par_expand_list_len,
-                  max_par_expand_list_len);
-  }
-}
-#endif
-
-class PosParPRT: public PerRegionTable {
-  PerRegionTable** _par_tables;
-
-  enum SomePrivateConstants {
-    ReserveParTableExpansion = 1
-  };
+  PerRegionTable* next() const { return _next; }
+  void set_next(PerRegionTable* nxt) { _next = nxt; }
+  PerRegionTable** next_addr() { return &_next; }
 
-  void par_contract() {
-    assert(_par_tables != NULL, "Precondition.");
-    int n = HeapRegionRemSet::num_par_rem_sets()-1;
-    for (int i = 0; i < n; i++) {
-      _par_tables[i]->union_bitmap_into(bm());
-      PerRegionTable::free(_par_tables[i]);
-      _par_tables[i] = NULL;
-    }
-#if PRT_COUNT_OCCUPIED
-    // We must recount the "occupied."
-    recount_occupied();
-#endif
-    FREE_C_HEAP_ARRAY(PerRegionTable*, _par_tables);
-    _par_tables = NULL;
-#if COUNT_PAR_EXPANDS
-    Atomic::inc(&n_par_contracts);
-    Atomic::dec(&par_expand_list_len);
-#endif
-  }
-
-  static PerRegionTable** _par_table_fl;
-
-  PosParPRT* _next;
-
-  static PosParPRT* _free_list;
-
-  PerRegionTable** par_tables() const {
-    assert(uintptr_t(NULL) == 0, "Assumption.");
-    if (uintptr_t(_par_tables) <= ReserveParTableExpansion)
-      return NULL;
-    else
-      return _par_tables;
-  }
-
-  PosParPRT* _next_par_expanded;
-  PosParPRT* next_par_expanded() { return _next_par_expanded; }
-  void set_next_par_expanded(PosParPRT* ppprt) { _next_par_expanded = ppprt; }
-  static PosParPRT* _par_expanded_list;
-
-public:
-
-  PosParPRT(HeapRegion* hr) : PerRegionTable(hr), _par_tables(NULL) {}
-
-  jint occupied() const {
-    jint res = PerRegionTable::occupied();
-    if (par_tables() != NULL) {
-      for (int i = 0; i < HeapRegionRemSet::num_par_rem_sets()-1; i++) {
-        res += par_tables()[i]->occupied();
-      }
-    }
-    return res;
-  }
-
-  void init(HeapRegion* hr) {
-    PerRegionTable::init(hr);
-    _next = NULL;
-    if (par_tables() != NULL) {
-      for (int i = 0; i < HeapRegionRemSet::num_par_rem_sets()-1; i++) {
-        par_tables()[i]->init(hr);
-      }
-    }
-  }
-
-  static void free(PosParPRT* prt) {
+  static void free(PerRegionTable* prt) {
     while (true) {
-      PosParPRT* fl = _free_list;
+      PerRegionTable* fl = _free_list;
       prt->set_next(fl);
-      PosParPRT* res =
-        (PosParPRT*)
+      PerRegionTable* res =
+        (PerRegionTable*)
         Atomic::cmpxchg_ptr(prt, &_free_list, fl);
       if (res == fl) return;
     }
     ShouldNotReachHere();
   }
 
-  static PosParPRT* alloc(HeapRegion* hr) {
-    PosParPRT* fl = _free_list;
+  static PerRegionTable* alloc(HeapRegion* hr) {
+    PerRegionTable* fl = _free_list;
     while (fl != NULL) {
-      PosParPRT* nxt = fl->next();
-      PosParPRT* res =
-        (PosParPRT*)
+      PerRegionTable* nxt = fl->next();
+      PerRegionTable* res =
+        (PerRegionTable*)
         Atomic::cmpxchg_ptr(nxt, &_free_list, fl);
       if (res == fl) {
         fl->init(hr);
@@ -360,148 +206,26 @@
       }
     }
     assert(fl == NULL, "Loop condition.");
-    return new PosParPRT(hr);
-  }
-
-  PosParPRT* next() const { return _next; }
-  void set_next(PosParPRT* nxt) { _next = nxt; }
-  PosParPRT** next_addr() { return &_next; }
-
-  bool should_expand(int tid) {
-    // Given that we now defer RSet updates for after a GC we don't
-    // really need to expand the tables any more. This code should be
-    // cleaned up in the future (see CR 6921087).
-    return false;
-  }
-
-  void par_expand() {
-    int n = HeapRegionRemSet::num_par_rem_sets()-1;
-    if (n <= 0) return;
-    if (_par_tables == NULL) {
-      PerRegionTable* res =
-        (PerRegionTable*)
-        Atomic::cmpxchg_ptr((PerRegionTable*)ReserveParTableExpansion,
-                            &_par_tables, NULL);
-      if (res != NULL) return;
-      // Otherwise, we reserved the right to do the expansion.
-
-      PerRegionTable** ptables = NEW_C_HEAP_ARRAY(PerRegionTable*, n);
-      for (int i = 0; i < n; i++) {
-        PerRegionTable* ptable = PerRegionTable::alloc(hr());
-        ptables[i] = ptable;
-      }
-      // Here we do not need an atomic.
-      _par_tables = ptables;
-#if COUNT_PAR_EXPANDS
-      print_par_expand();
-#endif
-      // We must put this table on the expanded list.
-      PosParPRT* exp_head = _par_expanded_list;
-      while (true) {
-        set_next_par_expanded(exp_head);
-        PosParPRT* res =
-          (PosParPRT*)
-          Atomic::cmpxchg_ptr(this, &_par_expanded_list, exp_head);
-        if (res == exp_head) return;
-        // Otherwise.
-        exp_head = res;
-      }
-      ShouldNotReachHere();
-    }
-  }
-
-  void add_reference(OopOrNarrowOopStar from, int tid) {
-    // Expand if necessary.
-    PerRegionTable** pt = par_tables();
-    if (pt != NULL) {
-      // We always have to assume that mods to table 0 are in parallel,
-      // because of the claiming scheme in parallel expansion.  A thread
-      // with tid != 0 that finds the table to be NULL, but doesn't succeed
-      // in claiming the right of expanding it, will end up in the else
-      // clause of the above if test.  That thread could be delayed, and a
-      // thread 0 add reference could see the table expanded, and come
-      // here.  Both threads would be adding in parallel.  But we get to
-      // not use atomics for tids > 0.
-      if (tid == 0) {
-        PerRegionTable::add_reference(from);
-      } else {
-        pt[tid-1]->seq_add_reference(from);
-      }
-    } else {
-      // Not expanded -- add to the base table.
-      PerRegionTable::add_reference(from);
-    }
-  }
-
-  void scrub(CardTableModRefBS* ctbs, BitMap* card_bm) {
-    assert(_par_tables == NULL, "Precondition");
-    PerRegionTable::scrub(ctbs, card_bm);
-  }
-
-  size_t mem_size() const {
-    size_t res =
-      PerRegionTable::mem_size() + sizeof(this) - sizeof(PerRegionTable);
-    if (_par_tables != NULL) {
-      for (int i = 0; i < HeapRegionRemSet::num_par_rem_sets()-1; i++) {
-        res += _par_tables[i]->mem_size();
-      }
-    }
-    return res;
+    return new PerRegionTable(hr);
   }
 
   static size_t fl_mem_size() {
-    PosParPRT* cur = _free_list;
+    PerRegionTable* cur = _free_list;
     size_t res = 0;
     while (cur != NULL) {
-      res += sizeof(PosParPRT);
+      res += sizeof(PerRegionTable);
       cur = cur->next();
     }
     return res;
   }
-
-  bool contains_reference(OopOrNarrowOopStar from) const {
-    if (PerRegionTable::contains_reference(from)) return true;
-    if (_par_tables != NULL) {
-      for (int i = 0; i < HeapRegionRemSet::num_par_rem_sets()-1; i++) {
-        if (_par_tables[i]->contains_reference(from)) return true;
-      }
-    }
-    return false;
-  }
-
-  static void par_contract_all();
 };
 
-void PosParPRT::par_contract_all() {
-  PosParPRT* hd = _par_expanded_list;
-  while (hd != NULL) {
-    PosParPRT* nxt = hd->next_par_expanded();
-    PosParPRT* res =
-      (PosParPRT*)
-      Atomic::cmpxchg_ptr(nxt, &_par_expanded_list, hd);
-    if (res == hd) {
-      // We claimed the right to contract this table.
-      hd->set_next_par_expanded(NULL);
-      hd->par_contract();
-      hd = _par_expanded_list;
-    } else {
-      hd = res;
-    }
-  }
-}
-
-PosParPRT* PosParPRT::_free_list = NULL;
-PosParPRT* PosParPRT::_par_expanded_list = NULL;
-
-jint OtherRegionsTable::_cache_probes = 0;
-jint OtherRegionsTable::_cache_hits = 0;
+PerRegionTable* PerRegionTable::_free_list = NULL;
 
 size_t OtherRegionsTable::_max_fine_entries = 0;
 size_t OtherRegionsTable::_mod_max_fine_entries_mask = 0;
-#if SAMPLE_FOR_EVICTION
 size_t OtherRegionsTable::_fine_eviction_stride = 0;
 size_t OtherRegionsTable::_fine_eviction_sample_size = 0;
-#endif
 
 OtherRegionsTable::OtherRegionsTable(HeapRegion* hr) :
   _g1h(G1CollectedHeap::heap()),
@@ -511,34 +235,36 @@
               false /* in-resource-area */),
   _fine_grain_regions(NULL),
   _n_fine_entries(0), _n_coarse_entries(0),
-#if SAMPLE_FOR_EVICTION
   _fine_eviction_start(0),
-#endif
   _sparse_table(hr)
 {
-  typedef PosParPRT* PosParPRTPtr;
+  typedef PerRegionTable* PerRegionTablePtr;
+
   if (_max_fine_entries == 0) {
     assert(_mod_max_fine_entries_mask == 0, "Both or none.");
     size_t max_entries_log = (size_t)log2_long((jlong)G1RSetRegionEntries);
     _max_fine_entries = (size_t)(1 << max_entries_log);
     _mod_max_fine_entries_mask = _max_fine_entries - 1;
-#if SAMPLE_FOR_EVICTION
+
     assert(_fine_eviction_sample_size == 0
            && _fine_eviction_stride == 0, "All init at same time.");
     _fine_eviction_sample_size = MAX2((size_t)4, max_entries_log);
     _fine_eviction_stride = _max_fine_entries / _fine_eviction_sample_size;
-#endif
   }
-  _fine_grain_regions = new PosParPRTPtr[_max_fine_entries];
-  if (_fine_grain_regions == NULL)
+
+  _fine_grain_regions = new PerRegionTablePtr[_max_fine_entries];
+
+  if (_fine_grain_regions == NULL) {
     vm_exit_out_of_memory(sizeof(void*)*_max_fine_entries,
                           "Failed to allocate _fine_grain_entries.");
+  }
+
   for (size_t i = 0; i < _max_fine_entries; i++) {
     _fine_grain_regions[i] = NULL;
   }
 }
 
-int** OtherRegionsTable::_from_card_cache = NULL;
+int**  OtherRegionsTable::_from_card_cache = NULL;
 size_t OtherRegionsTable::_from_card_cache_max_regions = 0;
 size_t OtherRegionsTable::_from_card_cache_mem_size = 0;
 
@@ -579,38 +305,26 @@
 void OtherRegionsTable::add_reference(OopOrNarrowOopStar from, int tid) {
   size_t cur_hrs_ind = (size_t) hr()->hrs_index();
 
-#if HRRS_VERBOSE
-  gclog_or_tty->print_cr("ORT::add_reference_work(" PTR_FORMAT "->" PTR_FORMAT ").",
-                                                  from,
-                                                  UseCompressedOops
-                                                  ? oopDesc::load_decode_heap_oop((narrowOop*)from)
-                                                  : oopDesc::load_decode_heap_oop((oop*)from));
-#endif
+  if (G1TraceHeapRegionRememberedSet) {
+    gclog_or_tty->print_cr("ORT::add_reference_work(" PTR_FORMAT "->" PTR_FORMAT ").",
+                                                    from,
+                                                    UseCompressedOops
+                                                    ? oopDesc::load_decode_heap_oop((narrowOop*)from)
+                                                    : oopDesc::load_decode_heap_oop((oop*)from));
+  }
 
   int from_card = (int)(uintptr_t(from) >> CardTableModRefBS::card_shift);
 
-#if HRRS_VERBOSE
-  gclog_or_tty->print_cr("Table for [" PTR_FORMAT "...): card %d (cache = %d)",
-                hr()->bottom(), from_card,
-                _from_card_cache[tid][cur_hrs_ind]);
-#endif
+  if (G1TraceHeapRegionRememberedSet) {
+    gclog_or_tty->print_cr("Table for [" PTR_FORMAT "...): card %d (cache = %d)",
+                  hr()->bottom(), from_card,
+                  _from_card_cache[tid][cur_hrs_ind]);
+  }
 
-#define COUNT_CACHE 0
-#if COUNT_CACHE
-  jint p = Atomic::add(1, &_cache_probes);
-  if ((p % 10000) == 0) {
-    jint hits = _cache_hits;
-    gclog_or_tty->print_cr("%d/%d = %5.2f%% RS cache hits.",
-                  _cache_hits, p, 100.0* (float)hits/(float)p);
-  }
-#endif
   if (from_card == _from_card_cache[tid][cur_hrs_ind]) {
-#if HRRS_VERBOSE
-    gclog_or_tty->print_cr("  from-card cache hit.");
-#endif
-#if COUNT_CACHE
-    Atomic::inc(&_cache_hits);
-#endif
+    if (G1TraceHeapRegionRememberedSet) {
+      gclog_or_tty->print_cr("  from-card cache hit.");
+    }
     assert(contains_reference(from), "We just added it!");
     return;
   } else {
@@ -623,16 +337,16 @@
 
   // If the region is already coarsened, return.
   if (_coarse_map.at(from_hrs_ind)) {
-#if HRRS_VERBOSE
-    gclog_or_tty->print_cr("  coarse map hit.");
-#endif
+    if (G1TraceHeapRegionRememberedSet) {
+      gclog_or_tty->print_cr("  coarse map hit.");
+    }
     assert(contains_reference(from), "We just added it!");
     return;
   }
 
   // Otherwise find a per-region table to add it to.
   size_t ind = from_hrs_ind & _mod_max_fine_entries_mask;
-  PosParPRT* prt = find_region_table(ind, from_hr);
+  PerRegionTable* prt = find_region_table(ind, from_hr);
   if (prt == NULL) {
     MutexLockerEx x(&_m, Mutex::_no_safepoint_check_flag);
     // Confirm that it's really not there...
@@ -649,35 +363,35 @@
           _sparse_table.add_card(from_hrs_ind, card_index)) {
         if (G1RecordHRRSOops) {
           HeapRegionRemSet::record(hr(), from);
-#if HRRS_VERBOSE
-          gclog_or_tty->print("   Added card " PTR_FORMAT " to region "
-                              "[" PTR_FORMAT "...) for ref " PTR_FORMAT ".\n",
-                              align_size_down(uintptr_t(from),
-                                              CardTableModRefBS::card_size),
-                              hr()->bottom(), from);
-#endif
+          if (G1TraceHeapRegionRememberedSet) {
+            gclog_or_tty->print("   Added card " PTR_FORMAT " to region "
+                                "[" PTR_FORMAT "...) for ref " PTR_FORMAT ".\n",
+                                align_size_down(uintptr_t(from),
+                                                CardTableModRefBS::card_size),
+                                hr()->bottom(), from);
+          }
         }
-#if HRRS_VERBOSE
-        gclog_or_tty->print_cr("   added card to sparse table.");
-#endif
+        if (G1TraceHeapRegionRememberedSet) {
+          gclog_or_tty->print_cr("   added card to sparse table.");
+        }
         assert(contains_reference_locked(from), "We just added it!");
         return;
       } else {
-#if HRRS_VERBOSE
-        gclog_or_tty->print_cr("   [tid %d] sparse table entry "
-                      "overflow(f: %d, t: %d)",
-                      tid, from_hrs_ind, cur_hrs_ind);
-#endif
+        if (G1TraceHeapRegionRememberedSet) {
+          gclog_or_tty->print_cr("   [tid %d] sparse table entry "
+                        "overflow(f: %d, t: %d)",
+                        tid, from_hrs_ind, cur_hrs_ind);
+        }
       }
 
       if (_n_fine_entries == _max_fine_entries) {
         prt = delete_region_table();
       } else {
-        prt = PosParPRT::alloc(from_hr);
+        prt = PerRegionTable::alloc(from_hr);
       }
       prt->init(from_hr);
 
-      PosParPRT* first_prt = _fine_grain_regions[ind];
+      PerRegionTable* first_prt = _fine_grain_regions[ind];
       prt->set_next(first_prt);  // XXX Maybe move to init?
       _fine_grain_regions[ind] = prt;
       _n_fine_entries++;
@@ -704,38 +418,25 @@
   // OtherRegionsTable for why this is OK.
   assert(prt != NULL, "Inv");
 
-  if (prt->should_expand(tid)) {
-    MutexLockerEx x(&_m, Mutex::_no_safepoint_check_flag);
-    HeapRegion* prt_hr = prt->hr();
-    if (prt_hr == from_hr) {
-      // Make sure the table still corresponds to the same region
-      prt->par_expand();
-      prt->add_reference(from, tid);
-    }
-    // else: The table has been concurrently coarsened, evicted, and
-    // the table data structure re-used for another table. So, we
-    // don't need to add the reference any more given that the table
-    // has been coarsened and the whole region will be scanned anyway.
-  } else {
-    prt->add_reference(from, tid);
-  }
+  prt->add_reference(from);
+
   if (G1RecordHRRSOops) {
     HeapRegionRemSet::record(hr(), from);
-#if HRRS_VERBOSE
-    gclog_or_tty->print("Added card " PTR_FORMAT " to region "
-                        "[" PTR_FORMAT "...) for ref " PTR_FORMAT ".\n",
-                        align_size_down(uintptr_t(from),
-                                        CardTableModRefBS::card_size),
-                        hr()->bottom(), from);
-#endif
+    if (G1TraceHeapRegionRememberedSet) {
+      gclog_or_tty->print("Added card " PTR_FORMAT " to region "
+                          "[" PTR_FORMAT "...) for ref " PTR_FORMAT ".\n",
+                          align_size_down(uintptr_t(from),
+                                          CardTableModRefBS::card_size),
+                          hr()->bottom(), from);
+    }
   }
   assert(contains_reference(from), "We just added it!");
 }
 
-PosParPRT*
+PerRegionTable*
 OtherRegionsTable::find_region_table(size_t ind, HeapRegion* hr) const {
   assert(0 <= ind && ind < _max_fine_entries, "Preconditions.");
-  PosParPRT* prt = _fine_grain_regions[ind];
+  PerRegionTable* prt = _fine_grain_regions[ind];
   while (prt != NULL && prt->hr() != hr) {
     prt = prt->next();
   }
@@ -743,32 +444,16 @@
   return prt;
 }
 
-
-#define DRT_CENSUS 0
-
-#if DRT_CENSUS
-static const int HistoSize = 6;
-static int global_histo[HistoSize] = { 0, 0, 0, 0, 0, 0 };
-static int coarsenings = 0;
-static int occ_sum = 0;
-#endif
-
 jint OtherRegionsTable::_n_coarsenings = 0;
 
-PosParPRT* OtherRegionsTable::delete_region_table() {
-#if DRT_CENSUS
-  int histo[HistoSize] = { 0, 0, 0, 0, 0, 0 };
-  const int histo_limits[] = { 1, 4, 16, 64, 256, 2048 };
-#endif
-
+PerRegionTable* OtherRegionsTable::delete_region_table() {
   assert(_m.owned_by_self(), "Precondition");
   assert(_n_fine_entries == _max_fine_entries, "Precondition");
-  PosParPRT* max = NULL;
+  PerRegionTable* max = NULL;
   jint max_occ = 0;
-  PosParPRT** max_prev;
+  PerRegionTable** max_prev;
   size_t max_ind;
 
-#if SAMPLE_FOR_EVICTION
   size_t i = _fine_eviction_start;
   for (size_t k = 0; k < _fine_eviction_sample_size; k++) {
     size_t ii = i;
@@ -778,8 +463,8 @@
       if (ii == _max_fine_entries) ii = 0;
       guarantee(ii != i, "We must find one.");
     }
-    PosParPRT** prev = &_fine_grain_regions[ii];
-    PosParPRT* cur = *prev;
+    PerRegionTable** prev = &_fine_grain_regions[ii];
+    PerRegionTable* cur = *prev;
     while (cur != NULL) {
       jint cur_occ = cur->occupied();
       if (max == NULL || cur_occ > max_occ) {
@@ -794,64 +479,27 @@
     i = i + _fine_eviction_stride;
     if (i >= _n_fine_entries) i = i - _n_fine_entries;
   }
+
   _fine_eviction_start++;
-  if (_fine_eviction_start >= _n_fine_entries)
+
+  if (_fine_eviction_start >= _n_fine_entries) {
     _fine_eviction_start -= _n_fine_entries;
-#else
-  for (int i = 0; i < _max_fine_entries; i++) {
-    PosParPRT** prev = &_fine_grain_regions[i];
-    PosParPRT* cur = *prev;
-    while (cur != NULL) {
-      jint cur_occ = cur->occupied();
-#if DRT_CENSUS
-      for (int k = 0; k < HistoSize; k++) {
-        if (cur_occ <= histo_limits[k]) {
-          histo[k]++; global_histo[k]++; break;
-        }
-      }
-#endif
-      if (max == NULL || cur_occ > max_occ) {
-        max = cur;
-        max_prev = prev;
-        max_ind = i;
-        max_occ = cur_occ;
-      }
-      prev = cur->next_addr();
-      cur = cur->next();
-    }
   }
-#endif
-  // XXX
+
   guarantee(max != NULL, "Since _n_fine_entries > 0");
-#if DRT_CENSUS
-  gclog_or_tty->print_cr("In a coarsening: histo of occs:");
-  for (int k = 0; k < HistoSize; k++) {
-    gclog_or_tty->print_cr("  <= %4d: %5d.", histo_limits[k], histo[k]);
-  }
-  coarsenings++;
-  occ_sum += max_occ;
-  if ((coarsenings % 100) == 0) {
-    gclog_or_tty->print_cr("\ncoarsenings = %d; global summary:", coarsenings);
-    for (int k = 0; k < HistoSize; k++) {
-      gclog_or_tty->print_cr("  <= %4d: %5d.", histo_limits[k], global_histo[k]);
-    }
-    gclog_or_tty->print_cr("Avg occ of deleted region = %6.2f.",
-                  (float)occ_sum/(float)coarsenings);
-  }
-#endif
 
   // Set the corresponding coarse bit.
   size_t max_hrs_index = (size_t) max->hr()->hrs_index();
   if (!_coarse_map.at(max_hrs_index)) {
     _coarse_map.at_put(max_hrs_index, true);
     _n_coarse_entries++;
-#if 0
-    gclog_or_tty->print("Coarsened entry in region [" PTR_FORMAT "...] "
-               "for region [" PTR_FORMAT "...] (%d coarse entries).\n",
-               hr()->bottom(),
-               max->hr()->bottom(),
-               _n_coarse_entries);
-#endif
+    if (G1TraceHeapRegionRememberedSet) {
+      gclog_or_tty->print("Coarsened entry in region [" PTR_FORMAT "...] "
+                 "for region [" PTR_FORMAT "...] (%d coarse entries).\n",
+                 hr()->bottom(),
+                 max->hr()->bottom(),
+                 _n_coarse_entries);
+    }
   }
 
   // Unsplice.
@@ -883,10 +531,10 @@
 
   // Now do the fine-grained maps.
   for (size_t i = 0; i < _max_fine_entries; i++) {
-    PosParPRT* cur = _fine_grain_regions[i];
-    PosParPRT** prev = &_fine_grain_regions[i];
+    PerRegionTable* cur = _fine_grain_regions[i];
+    PerRegionTable** prev = &_fine_grain_regions[i];
     while (cur != NULL) {
-      PosParPRT* nxt = cur->next();
+      PerRegionTable* nxt = cur->next();
       // If the entire region is dead, eliminate.
       if (G1RSScrubVerbose) {
         gclog_or_tty->print_cr("     For other region %u:",
@@ -899,7 +547,7 @@
         if (G1RSScrubVerbose) {
           gclog_or_tty->print_cr("          deleted via region map.");
         }
-        PosParPRT::free(cur);
+        PerRegionTable::free(cur);
       } else {
         // Do fine-grain elimination.
         if (G1RSScrubVerbose) {
@@ -914,7 +562,7 @@
           *prev = nxt;
           cur->set_next(NULL);
           _n_fine_entries--;
-          PosParPRT::free(cur);
+          PerRegionTable::free(cur);
         } else {
           prev = cur->next_addr();
         }
@@ -940,7 +588,7 @@
 size_t OtherRegionsTable::occ_fine() const {
   size_t sum = 0;
   for (size_t i = 0; i < _max_fine_entries; i++) {
-    PosParPRT* cur = _fine_grain_regions[i];
+    PerRegionTable* cur = _fine_grain_regions[i];
     while (cur != NULL) {
       sum += cur->occupied();
       cur = cur->next();
@@ -962,13 +610,13 @@
   MutexLockerEx x((Mutex*)&_m, Mutex::_no_safepoint_check_flag);
   size_t sum = 0;
   for (size_t i = 0; i < _max_fine_entries; i++) {
-    PosParPRT* cur = _fine_grain_regions[i];
+    PerRegionTable* cur = _fine_grain_regions[i];
     while (cur != NULL) {
       sum += cur->mem_size();
       cur = cur->next();
     }
   }
-  sum += (sizeof(PosParPRT*) * _max_fine_entries);
+  sum += (sizeof(PerRegionTable*) * _max_fine_entries);
   sum += (_coarse_map.size_in_words() * HeapWordSize);
   sum += (_sparse_table.mem_size());
   sum += sizeof(*this) - sizeof(_sparse_table); // Avoid double counting above.
@@ -980,7 +628,7 @@
 }
 
 size_t OtherRegionsTable::fl_mem_size() {
-  return PerRegionTable::fl_mem_size() + PosParPRT::fl_mem_size();
+  return PerRegionTable::fl_mem_size();
 }
 
 void OtherRegionsTable::clear_fcc() {
@@ -992,10 +640,10 @@
 void OtherRegionsTable::clear() {
   MutexLockerEx x(&_m, Mutex::_no_safepoint_check_flag);
   for (size_t i = 0; i < _max_fine_entries; i++) {
-    PosParPRT* cur = _fine_grain_regions[i];
+    PerRegionTable* cur = _fine_grain_regions[i];
     while (cur != NULL) {
-      PosParPRT* nxt = cur->next();
-      PosParPRT::free(cur);
+      PerRegionTable* nxt = cur->next();
+      PerRegionTable::free(cur);
       cur = nxt;
     }
     _fine_grain_regions[i] = NULL;
@@ -1035,8 +683,8 @@
 bool OtherRegionsTable::del_single_region_table(size_t ind,
                                                 HeapRegion* hr) {
   assert(0 <= ind && ind < _max_fine_entries, "Preconditions.");
-  PosParPRT** prev_addr = &_fine_grain_regions[ind];
-  PosParPRT* prt = *prev_addr;
+  PerRegionTable** prev_addr = &_fine_grain_regions[ind];
+  PerRegionTable* prt = *prev_addr;
   while (prt != NULL && prt->hr() != hr) {
     prev_addr = prt->next_addr();
     prt = prt->next();
@@ -1044,7 +692,7 @@
   if (prt != NULL) {
     assert(prt->hr() == hr, "Loop postcondition.");
     *prev_addr = prt->next();
-    PosParPRT::free(prt);
+    PerRegionTable::free(prt);
     _n_fine_entries--;
     return true;
   } else {
@@ -1065,7 +713,7 @@
   // Is this region in the coarse map?
   if (_coarse_map.at(hr_ind)) return true;
 
-  PosParPRT* prt = find_region_table(hr_ind & _mod_max_fine_entries_mask,
+  PerRegionTable* prt = find_region_table(hr_ind & _mod_max_fine_entries_mask,
                                      hr);
   if (prt != NULL) {
     return prt->contains_reference(from);
@@ -1145,7 +793,7 @@
       G1CollectedHeap::heap()->bot_shared()->address_for_index(card_index);
     gclog_or_tty->print_cr("  Card " PTR_FORMAT, card_start);
   }
-  // XXX
+
   if (iter.n_yielded() != occupied()) {
     gclog_or_tty->print_cr("Yielded disagrees with occupied:");
     gclog_or_tty->print_cr("  %6d yielded (%6d coarse, %6d fine).",
@@ -1163,10 +811,6 @@
   SparsePRT::cleanup_all();
 }
 
-void HeapRegionRemSet::par_cleanup() {
-  PosParPRT::par_contract_all();
-}
-
 void HeapRegionRemSet::clear() {
   _other_regions.clear();
   assert(occupied() == 0, "Should be clear.");
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,7 +35,7 @@
 class G1BlockOffsetSharedArray;
 class HeapRegion;
 class HeapRegionRemSetIterator;
-class PosParPRT;
+class PerRegionTable;
 class SparsePRT;
 
 // Essentially a wrapper around SparsePRTCleanupTask. See
@@ -79,15 +79,14 @@
   size_t      _n_coarse_entries;
   static jint _n_coarsenings;
 
-  PosParPRT** _fine_grain_regions;
-  size_t      _n_fine_entries;
+  PerRegionTable** _fine_grain_regions;
+  size_t           _n_fine_entries;
 
-#define SAMPLE_FOR_EVICTION 1
-#if SAMPLE_FOR_EVICTION
+  // Used to sample a subset of the fine grain PRTs to determine which
+  // PRT to evict and coarsen.
   size_t        _fine_eviction_start;
   static size_t _fine_eviction_stride;
   static size_t _fine_eviction_sample_size;
-#endif
 
   SparsePRT   _sparse_table;
 
@@ -98,21 +97,18 @@
   // Requires "prt" to be the first element of the bucket list appropriate
   // for "hr".  If this list contains an entry for "hr", return it,
   // otherwise return "NULL".
-  PosParPRT* find_region_table(size_t ind, HeapRegion* hr) const;
+  PerRegionTable* find_region_table(size_t ind, HeapRegion* hr) const;
 
-  // Find, delete, and return a candidate PosParPRT, if any exists,
+  // Find, delete, and return a candidate PerRegionTable, if any exists,
   // adding the deleted region to the coarse bitmap.  Requires the caller
   // to hold _m, and the fine-grain table to be full.
-  PosParPRT* delete_region_table();
+  PerRegionTable* delete_region_table();
 
   // If a PRT for "hr" is in the bucket list indicated by "ind" (which must
   // be the correct index for "hr"), delete it and return true; else return
   // false.
   bool del_single_region_table(size_t ind, HeapRegion* hr);
 
-  static jint _cache_probes;
-  static jint _cache_hits;
-
   // Indexed by thread X heap region, to minimize thread contention.
   static int** _from_card_cache;
   static size_t _from_card_cache_max_regions;
@@ -127,10 +123,6 @@
   // sense.
   void add_reference(OopOrNarrowOopStar from, int tid);
 
-  void add_reference(OopOrNarrowOopStar from) {
-    return add_reference(from, 0);
-  }
-
   // Removes any entries shown by the given bitmaps to contain only dead
   // objects.
   void scrub(CardTableModRefBS* ctbs, BitMap* region_bm, BitMap* card_bm);
@@ -233,14 +225,12 @@
 
   static jint n_coarsenings() { return OtherRegionsTable::n_coarsenings(); }
 
-  /* Used in the sequential case.  Returns "true" iff this addition causes
-     the size limit to be reached. */
+  // Used in the sequential case.
   void add_reference(OopOrNarrowOopStar from) {
-    _other_regions.add_reference(from);
+    _other_regions.add_reference(from, 0);
   }
 
-  /* Used in the parallel case.  Returns "true" iff this addition causes
-     the size limit to be reached. */
+  // Used in the parallel case.
   void add_reference(OopOrNarrowOopStar from, int tid) {
     _other_regions.add_reference(from, tid);
   }
@@ -253,15 +243,6 @@
   // entries for this region in other remsets.
   void clear();
 
-  // Forget any entries due to pointers from "from_hr".
-  void clear_incoming_entry(HeapRegion* from_hr) {
-    _other_regions.clear_incoming_entry(from_hr);
-  }
-
-#if 0
-  virtual void cleanup() = 0;
-#endif
-
   // Attempt to claim the region.  Returns true iff this call caused an
   // atomic transition from Unclaimed to Claimed.
   bool claim_iter();
@@ -290,12 +271,6 @@
   // Initialize the given iterator to iterate over this rem set.
   void init_iterator(HeapRegionRemSetIterator* iter) const;
 
-#if 0
-  // Apply the "do_card" method to the start address of every card in the
-  // rem set.  Returns false if some application of the closure aborted.
-  virtual bool card_iterate(CardClosure* iter) = 0;
-#endif
-
   // The actual # of bytes this hr_remset takes up.
   size_t mem_size() {
     return _other_regions.mem_size()
@@ -322,10 +297,7 @@
   void print() const;
 
   // Called during a stop-world phase to perform any deferred cleanups.
-  // The second version may be called by parallel threads after then finish
-  // collection work.
   static void cleanup();
-  static void par_cleanup();
 
   // Declare the heap size (in # of regions) to the HeapRegionRemSet(s).
   // (Uses it to initialize from_card_cache).
@@ -367,7 +339,7 @@
 
   // Local caching of HRRS fields.
   const BitMap*             _coarse_map;
-  PosParPRT**               _fine_grain_regions;
+  PerRegionTable**          _fine_grain_regions;
 
   G1BlockOffsetSharedArray* _bosa;
   G1CollectedHeap*          _g1h;
@@ -404,8 +376,9 @@
 
   // Index of bucket-list we're working on.
   int _fine_array_index;
+
   // Per Region Table we're doing within current bucket list.
-  PosParPRT* _fine_cur_prt;
+  PerRegionTable* _fine_cur_prt;
 
   /* SparsePRT::*/ SparsePRTIter _sparse_iter;
 
@@ -435,12 +408,4 @@
   }
 };
 
-#if 0
-class CardClosure: public Closure {
-public:
-  virtual void do_card(HeapWord* card_start) = 0;
-};
-
-#endif
-
 #endif // SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONREMSET_HPP
--- a/hotspot/src/share/vm/memory/dump.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/memory/dump.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -62,8 +62,8 @@
 // written later, increasing the likelihood that the shared page contain
 // the hash can be shared.
 //
-// NOTE THAT the algorithm in StringTable::hash_string() MUST MATCH the
-// algorithm in java.lang.String.hashCode().
+// NOTE THAT we have to call java_lang_String::to_hash() to match the
+// algorithm in java.lang.String.toHash().
 
 class StringHashCodeClosure: public OopClosure {
 private:
@@ -80,7 +80,7 @@
       oop obj = *p;
       if (obj->klass() == SystemDictionary::String_klass() &&
           java_lang_String::has_hash_field()) {
-        int hash = java_lang_String::hash_string(obj);
+        int hash = java_lang_String::to_hash(obj);
         obj->int_field_put(hash_offset, hash);
       }
     }
--- a/hotspot/src/share/vm/memory/universe.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/memory/universe.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -273,7 +273,7 @@
   }
 
   static klassOop typeArrayKlassObj(BasicType t) {
-    assert((uint)t < T_VOID+1, "range check");
+    assert((uint)t < T_VOID+1, err_msg("range check for type: %s", type2name(t)));
     assert(_typeArrayKlassObjs[t] != NULL, "domain check");
     return _typeArrayKlassObjs[t];
   }
--- a/hotspot/src/share/vm/opto/c2_globals.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -81,6 +81,13 @@
   product(intx, MaxLoopPad, (OptoLoopAlignment-1),                          \
           "Align a loop if padding size in bytes is less or equal to this value") \
                                                                             \
+  product(intx, MaxVectorSize, 32,                                          \
+          "Max vector size in bytes, "                                      \
+          "actual size could be less depending on elements type")           \
+                                                                            \
+  product(bool, AlignVector, false,                                         \
+          "Perform vector store/load alignment in loop")                    \
+                                                                            \
   product(intx, NumberOfLoopInstrToAlign, 4,                                \
           "Number of first instructions in a loop to align")                \
                                                                             \
@@ -292,9 +299,12 @@
   develop(bool, SuperWordRTDepCheck, false,                                 \
           "Enable runtime dependency checks.")                              \
                                                                             \
-  product(bool, TraceSuperWord, false,                                      \
+  notproduct(bool, TraceSuperWord, false,                                   \
           "Trace superword transforms")                                     \
                                                                             \
+  notproduct(bool, TraceNewVectors, false,                                  \
+          "Trace creation of Vector nodes")                                 \
+                                                                            \
   product_pd(bool, OptoBundling,                                            \
           "Generate nops to fill i-cache lines")                            \
                                                                             \
--- a/hotspot/src/share/vm/opto/callGenerator.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/callGenerator.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -172,9 +172,11 @@
 
 JVMState* DynamicCallGenerator::generate(JVMState* jvms) {
   GraphKit kit(jvms);
+  Compile* C = kit.C;
+  PhaseGVN& gvn = kit.gvn();
 
-  if (kit.C->log() != NULL) {
-    kit.C->log()->elem("dynamic_call bci='%d'", jvms->bci());
+  if (C->log() != NULL) {
+    C->log()->elem("dynamic_call bci='%d'", jvms->bci());
   }
 
   // Get the constant pool cache from the caller class.
@@ -190,18 +192,21 @@
   size_t call_site_offset = cpcache->get_f1_offset(index);
 
   // Load the CallSite object from the constant pool cache.
-  const TypeOopPtr* cpcache_ptr = TypeOopPtr::make_from_constant(cpcache);
-  Node* cpcache_adr = kit.makecon(cpcache_ptr);
-  Node* call_site_adr = kit.basic_plus_adr(cpcache_adr, cpcache_adr, call_site_offset);
-  Node* call_site = kit.make_load(kit.control(), call_site_adr, TypeInstPtr::BOTTOM, T_OBJECT, Compile::AliasIdxRaw);
+  const TypeOopPtr* cpcache_type   = TypeOopPtr::make_from_constant(cpcache);  // returns TypeAryPtr of type T_OBJECT
+  const TypeOopPtr* call_site_type = TypeOopPtr::make_from_klass(C->env()->CallSite_klass());
+  Node* cpcache_adr   = kit.makecon(cpcache_type);
+  Node* call_site_adr = kit.basic_plus_adr(cpcache_adr, call_site_offset);
+  // The oops in the constant pool cache are not compressed; load then as raw pointers.
+  Node* call_site     = kit.make_load(kit.control(), call_site_adr, call_site_type, T_ADDRESS, Compile::AliasIdxRaw);
 
   // Load the target MethodHandle from the CallSite object.
-  Node* target_mh_adr = kit.basic_plus_adr(call_site, call_site, java_lang_invoke_CallSite::target_offset_in_bytes());
-  Node* target_mh = kit.make_load(kit.control(), target_mh_adr, TypeInstPtr::BOTTOM, T_OBJECT);
+  const TypeOopPtr* target_type = TypeOopPtr::make_from_klass(C->env()->MethodHandle_klass());
+  Node* target_mh_adr = kit.basic_plus_adr(call_site, java_lang_invoke_CallSite::target_offset_in_bytes());
+  Node* target_mh     = kit.make_load(kit.control(), target_mh_adr, target_type, T_OBJECT);
 
   address resolve_stub = SharedRuntime::get_resolve_opt_virtual_call_stub();
 
-  CallStaticJavaNode *call = new (kit.C, tf()->domain()->cnt()) CallStaticJavaNode(tf(), resolve_stub, method(), kit.bci());
+  CallStaticJavaNode* call = new (C, tf()->domain()->cnt()) CallStaticJavaNode(tf(), resolve_stub, method(), kit.bci());
   // invokedynamic is treated as an optimized invokevirtual.
   call->set_optimized_virtual(true);
   // Take extra care (in the presence of argument motion) not to trash the SP:
@@ -785,9 +790,10 @@
 
 JVMState* PredictedDynamicCallGenerator::generate(JVMState* jvms) {
   GraphKit kit(jvms);
+  Compile* C = kit.C;
   PhaseGVN& gvn = kit.gvn();
 
-  CompileLog* log = kit.C->log();
+  CompileLog* log = C->log();
   if (log != NULL) {
     log->elem("predicted_dynamic_call bci='%d'", jvms->bci());
   }
@@ -803,8 +809,8 @@
     Node* receiver = kit.argument(0);
 
     // Check if the MethodHandle is the expected one
-    Node* cmp = gvn.transform(new(kit.C, 3) CmpPNode(receiver, predicted_mh));
-    bol = gvn.transform(new(kit.C, 2) BoolNode(cmp, BoolTest::eq) );
+    Node* cmp = gvn.transform(new (C, 3) CmpPNode(receiver, predicted_mh));
+    bol = gvn.transform(new (C, 2) BoolNode(cmp, BoolTest::eq) );
   } else {
     // Get the constant pool cache from the caller class.
     ciMethod* caller_method = jvms->method();
@@ -818,22 +824,25 @@
     size_t call_site_offset = cpcache->get_f1_offset(index);
 
     // Load the CallSite object from the constant pool cache.
-    const TypeOopPtr* cpcache_ptr = TypeOopPtr::make_from_constant(cpcache);
-    Node* cpcache_adr   = kit.makecon(cpcache_ptr);
-    Node* call_site_adr = kit.basic_plus_adr(cpcache_adr, cpcache_adr, call_site_offset);
-    Node* call_site     = kit.make_load(kit.control(), call_site_adr, TypeInstPtr::BOTTOM, T_OBJECT, Compile::AliasIdxRaw);
+    const TypeOopPtr* cpcache_type   = TypeOopPtr::make_from_constant(cpcache);  // returns TypeAryPtr of type T_OBJECT
+    const TypeOopPtr* call_site_type = TypeOopPtr::make_from_klass(C->env()->CallSite_klass());
+    Node* cpcache_adr   = kit.makecon(cpcache_type);
+    Node* call_site_adr = kit.basic_plus_adr(cpcache_adr, call_site_offset);
+    // The oops in the constant pool cache are not compressed; load then as raw pointers.
+    Node* call_site     = kit.make_load(kit.control(), call_site_adr, call_site_type, T_ADDRESS, Compile::AliasIdxRaw);
 
     // Load the target MethodHandle from the CallSite object.
+    const TypeOopPtr* target_type = TypeOopPtr::make_from_klass(C->env()->MethodHandle_klass());
     Node* target_adr = kit.basic_plus_adr(call_site, call_site, java_lang_invoke_CallSite::target_offset_in_bytes());
-    Node* target_mh  = kit.make_load(kit.control(), target_adr, TypeInstPtr::BOTTOM, T_OBJECT);
+    Node* target_mh  = kit.make_load(kit.control(), target_adr, target_type, T_OBJECT);
 
     // Check if the MethodHandle is still the same.
-    Node* cmp = gvn.transform(new(kit.C, 3) CmpPNode(target_mh, predicted_mh));
-    bol = gvn.transform(new(kit.C, 2) BoolNode(cmp, BoolTest::eq) );
+    Node* cmp = gvn.transform(new (C, 3) CmpPNode(target_mh, predicted_mh));
+    bol = gvn.transform(new (C, 2) BoolNode(cmp, BoolTest::eq) );
   }
   IfNode* iff = kit.create_and_xform_if(kit.control(), bol, _hit_prob, COUNT_UNKNOWN);
-  kit.set_control( gvn.transform(new(kit.C, 1) IfTrueNode (iff)));
-  Node* slow_ctl = gvn.transform(new(kit.C, 1) IfFalseNode(iff));
+  kit.set_control( gvn.transform(new (C, 1) IfTrueNode (iff)));
+  Node* slow_ctl = gvn.transform(new (C, 1) IfFalseNode(iff));
 
   SafePointNode* slow_map = NULL;
   JVMState* slow_jvms;
@@ -882,7 +891,7 @@
 
   // Finish the diamond.
   kit.C->set_has_split_ifs(true); // Has chance for split-if optimization
-  RegionNode* region = new (kit.C, 3) RegionNode(3);
+  RegionNode* region = new (C, 3) RegionNode(3);
   region->init_req(1, kit.control());
   region->init_req(2, slow_map->control());
   kit.set_control(gvn.transform(region));
--- a/hotspot/src/share/vm/opto/chaitin.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/chaitin.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -75,6 +75,7 @@
   // Flags
   if( _is_oop ) tty->print("Oop ");
   if( _is_float ) tty->print("Float ");
+  if( _is_vector ) tty->print("Vector ");
   if( _was_spilled1 ) tty->print("Spilled ");
   if( _was_spilled2 ) tty->print("Spilled2 ");
   if( _direct_conflict ) tty->print("Direct_conflict ");
@@ -479,16 +480,18 @@
 
   // Move important info out of the live_arena to longer lasting storage.
   alloc_node_regs(_names.Size());
-  for( uint i=0; i < _names.Size(); i++ ) {
-    if( _names[i] ) {           // Live range associated with Node?
-      LRG &lrg = lrgs( _names[i] );
-      if( lrg.num_regs() == 1 ) {
-        _node_regs[i].set1( lrg.reg() );
+  for (uint i=0; i < _names.Size(); i++) {
+    if (_names[i]) {           // Live range associated with Node?
+      LRG &lrg = lrgs(_names[i]);
+      if (!lrg.alive()) {
+        _node_regs[i].set_bad();
+      } else if (lrg.num_regs() == 1) {
+        _node_regs[i].set1(lrg.reg());
       } else {                  // Must be a register-pair
-        if( !lrg._fat_proj ) {  // Must be aligned adjacent register pair
+        if (!lrg._fat_proj) {   // Must be aligned adjacent register pair
           // Live ranges record the highest register in their mask.
           // We want the low register for the AD file writer's convenience.
-          _node_regs[i].set2( OptoReg::add(lrg.reg(),-1) );
+          _node_regs[i].set2( OptoReg::add(lrg.reg(),(1-lrg.num_regs())) );
         } else {                // Misaligned; extract 2 bits
           OptoReg::Name hi = lrg.reg(); // Get hi register
           lrg.Remove(hi);       // Yank from mask
@@ -568,7 +571,7 @@
         // Check for float-vs-int live range (used in register-pressure
         // calculations)
         const Type *n_type = n->bottom_type();
-        if( n_type->is_floatingpoint() )
+        if (n_type->is_floatingpoint())
           lrg._is_float = 1;
 
         // Check for twice prior spilling.  Once prior spilling might have
@@ -599,18 +602,28 @@
         // Limit result register mask to acceptable registers
         const RegMask &rm = n->out_RegMask();
         lrg.AND( rm );
-        // Check for bound register masks
-        const RegMask &lrgmask = lrg.mask();
-        if( lrgmask.is_bound1() || lrgmask.is_bound2() )
-          lrg._is_bound = 1;
-
-        // Check for maximum frequency value
-        if( lrg._maxfreq < b->_freq )
-          lrg._maxfreq = b->_freq;
 
         int ireg = n->ideal_reg();
         assert( !n->bottom_type()->isa_oop_ptr() || ireg == Op_RegP,
                 "oops must be in Op_RegP's" );
+
+        // Check for vector live range (only if vector register is used).
+        // On SPARC vector uses RegD which could be misaligned so it is not
+        // processes as vector in RA.
+        if (RegMask::is_vector(ireg))
+          lrg._is_vector = 1;
+        assert(n_type->isa_vect() == NULL || lrg._is_vector || ireg == Op_RegD,
+               "vector must be in vector registers");
+
+        // Check for bound register masks
+        const RegMask &lrgmask = lrg.mask();
+        if (lrgmask.is_bound(ireg))
+          lrg._is_bound = 1;
+
+        // Check for maximum frequency value
+        if (lrg._maxfreq < b->_freq)
+          lrg._maxfreq = b->_freq;
+
         // Check for oop-iness, or long/double
         // Check for multi-kill projection
         switch( ireg ) {
@@ -689,7 +702,7 @@
           // AND changes how we count interferences.  A mis-aligned
           // double can interfere with TWO aligned pairs, or effectively
           // FOUR registers!
-          if( rm.is_misaligned_Pair() ) {
+          if (rm.is_misaligned_pair()) {
             lrg._fat_proj = 1;
             lrg._is_bound = 1;
           }
@@ -706,6 +719,33 @@
           lrg.set_reg_pressure(1);
 #endif
           break;
+        case Op_VecS:
+          assert(Matcher::vector_size_supported(T_BYTE,4), "sanity");
+          assert(RegMask::num_registers(Op_VecS) == RegMask::SlotsPerVecS, "sanity");
+          lrg.set_num_regs(RegMask::SlotsPerVecS);
+          lrg.set_reg_pressure(1);
+          break;
+        case Op_VecD:
+          assert(Matcher::vector_size_supported(T_FLOAT,RegMask::SlotsPerVecD), "sanity");
+          assert(RegMask::num_registers(Op_VecD) == RegMask::SlotsPerVecD, "sanity");
+          assert(lrgmask.is_aligned_sets(RegMask::SlotsPerVecD), "vector should be aligned");
+          lrg.set_num_regs(RegMask::SlotsPerVecD);
+          lrg.set_reg_pressure(1);
+          break;
+        case Op_VecX:
+          assert(Matcher::vector_size_supported(T_FLOAT,RegMask::SlotsPerVecX), "sanity");
+          assert(RegMask::num_registers(Op_VecX) == RegMask::SlotsPerVecX, "sanity");
+          assert(lrgmask.is_aligned_sets(RegMask::SlotsPerVecX), "vector should be aligned");
+          lrg.set_num_regs(RegMask::SlotsPerVecX);
+          lrg.set_reg_pressure(1);
+          break;
+        case Op_VecY:
+          assert(Matcher::vector_size_supported(T_FLOAT,RegMask::SlotsPerVecY), "sanity");
+          assert(RegMask::num_registers(Op_VecY) == RegMask::SlotsPerVecY, "sanity");
+          assert(lrgmask.is_aligned_sets(RegMask::SlotsPerVecY), "vector should be aligned");
+          lrg.set_num_regs(RegMask::SlotsPerVecY);
+          lrg.set_reg_pressure(1);
+          break;
         default:
           ShouldNotReachHere();
         }
@@ -763,24 +803,38 @@
         } else {
           lrg.AND( rm );
         }
+
         // Check for bound register masks
         const RegMask &lrgmask = lrg.mask();
-        if( lrgmask.is_bound1() || lrgmask.is_bound2() )
+        int kreg = n->in(k)->ideal_reg();
+        bool is_vect = RegMask::is_vector(kreg);
+        assert(n->in(k)->bottom_type()->isa_vect() == NULL ||
+               is_vect || kreg == Op_RegD,
+               "vector must be in vector registers");
+        if (lrgmask.is_bound(kreg))
           lrg._is_bound = 1;
+
         // If this use of a double forces a mis-aligned double,
         // flag as '_fat_proj' - really flag as allowing misalignment
         // AND changes how we count interferences.  A mis-aligned
         // double can interfere with TWO aligned pairs, or effectively
         // FOUR registers!
-        if( lrg.num_regs() == 2 && !lrg._fat_proj && rm.is_misaligned_Pair() ) {
+#ifdef ASSERT
+        if (is_vect) {
+          assert(lrgmask.is_aligned_sets(lrg.num_regs()), "vector should be aligned");
+          assert(!lrg._fat_proj, "sanity");
+          assert(RegMask::num_registers(kreg) == lrg.num_regs(), "sanity");
+        }
+#endif
+        if (!is_vect && lrg.num_regs() == 2 && !lrg._fat_proj && rm.is_misaligned_pair()) {
           lrg._fat_proj = 1;
           lrg._is_bound = 1;
         }
         // if the LRG is an unaligned pair, we will have to spill
         // so clear the LRG's register mask if it is not already spilled
-        if ( !n->is_SpillCopy() &&
-               (lrg._def == NULL || lrg.is_multidef() || !lrg._def->is_SpillCopy()) &&
-               lrgmask.is_misaligned_Pair()) {
+        if (!is_vect && !n->is_SpillCopy() &&
+            (lrg._def == NULL || lrg.is_multidef() || !lrg._def->is_SpillCopy()) &&
+            lrgmask.is_misaligned_pair()) {
           lrg.Clear();
         }
 
@@ -793,12 +847,14 @@
   } // end for all blocks
 
   // Final per-liverange setup
-  for( uint i2=0; i2<_maxlrg; i2++ ) {
+  for (uint i2=0; i2<_maxlrg; i2++) {
     LRG &lrg = lrgs(i2);
-    if( lrg.num_regs() == 2 && !lrg._fat_proj )
-      lrg.ClearToPairs();
+    assert(!lrg._is_vector || !lrg._fat_proj, "sanity");
+    if (lrg.num_regs() > 1 && !lrg._fat_proj) {
+      lrg.clear_to_sets();
+    }
     lrg.compute_set_mask_size();
-    if( lrg.not_free() ) {      // Handle case where we lose from the start
+    if (lrg.not_free()) {      // Handle case where we lose from the start
       lrg.set_reg(OptoReg::Name(LRG::SPILL_REG));
       lrg._direct_conflict = 1;
     }
@@ -1104,22 +1160,17 @@
       // Choose a color which is legal for him
       RegMask tempmask = lrg.mask();
       tempmask.AND(lrgs(copy_lrg).mask());
-      OptoReg::Name reg;
-      if( lrg.num_regs() == 1 ) {
-        reg = tempmask.find_first_elem();
-      } else {
-        tempmask.ClearToPairs();
-        reg = tempmask.find_first_pair();
-      }
-      if( OptoReg::is_valid(reg) )
+      tempmask.clear_to_sets(lrg.num_regs());
+      OptoReg::Name reg = tempmask.find_first_set(lrg.num_regs());
+      if (OptoReg::is_valid(reg))
         return reg;
     }
   }
 
   // If no bias info exists, just go with the register selection ordering
-  if( lrg.num_regs() == 2 ) {
-    // Find an aligned pair
-    return OptoReg::add(lrg.mask().find_first_pair(),chunk);
+  if (lrg._is_vector || lrg.num_regs() == 2) {
+    // Find an aligned set
+    return OptoReg::add(lrg.mask().find_first_set(lrg.num_regs()),chunk);
   }
 
   // CNC - Fun hack.  Alternate 1st and 2nd selection.  Enables post-allocate
@@ -1149,6 +1200,7 @@
     // Use a heuristic to "bias" the color choice
     return bias_color(lrg, chunk);
 
+  assert(!lrg._is_vector, "should be not vector here" );
   assert( lrg.num_regs() >= 2, "dead live ranges do not color" );
 
   // Fat-proj case or misaligned double argument.
@@ -1238,14 +1290,16 @@
     }
     //assert(is_allstack == lrg->mask().is_AllStack(), "nbrs must not change AllStackedness");
     // Aligned pairs need aligned masks
-    if( lrg->num_regs() == 2 && !lrg->_fat_proj )
-      lrg->ClearToPairs();
+    assert(!lrg->_is_vector || !lrg->_fat_proj, "sanity");
+    if (lrg->num_regs() > 1 && !lrg->_fat_proj) {
+      lrg->clear_to_sets();
+    }
 
     // Check if a color is available and if so pick the color
     OptoReg::Name reg = choose_color( *lrg, chunk );
 #ifdef SPARC
     debug_only(lrg->compute_set_mask_size());
-    assert(lrg->num_regs() != 2 || lrg->is_bound() || is_even(reg-1), "allocate all doubles aligned");
+    assert(lrg->num_regs() < 2 || lrg->is_bound() || is_even(reg-1), "allocate all doubles aligned");
 #endif
 
     //---------------
@@ -1277,17 +1331,16 @@
       // If the live range is not bound, then we actually had some choices
       // to make.  In this case, the mask has more bits in it than the colors
       // chosen.  Restrict the mask to just what was picked.
-      if( lrg->num_regs() == 1 ) { // Size 1 live range
+      int n_regs = lrg->num_regs();
+      assert(!lrg->_is_vector || !lrg->_fat_proj, "sanity");
+      if (n_regs == 1 || !lrg->_fat_proj) {
+        assert(!lrg->_is_vector || n_regs <= RegMask::SlotsPerVecY, "sanity");
         lrg->Clear();           // Clear the mask
         lrg->Insert(reg);       // Set regmask to match selected reg
-        lrg->set_mask_size(1);
-      } else if( !lrg->_fat_proj ) {
-        // For pairs, also insert the low bit of the pair
-        assert( lrg->num_regs() == 2, "unbound fatproj???" );
-        lrg->Clear();           // Clear the mask
-        lrg->Insert(reg);       // Set regmask to match selected reg
-        lrg->Insert(OptoReg::add(reg,-1));
-        lrg->set_mask_size(2);
+        // For vectors and pairs, also insert the low bit of the pair
+        for (int i = 1; i < n_regs; i++)
+          lrg->Insert(OptoReg::add(reg,-i));
+        lrg->set_mask_size(n_regs);
       } else {                  // Else fatproj
         // mask must be equal to fatproj bits, by definition
       }
@@ -1483,7 +1536,7 @@
 
   // Check for AddP-related opcodes
   if( !derived->is_Phi() ) {
-    assert( derived->as_Mach()->ideal_Opcode() == Op_AddP, "" );
+    assert(derived->as_Mach()->ideal_Opcode() == Op_AddP, err_msg("but is: %s", derived->Name()));
     Node *base = derived->in(AddPNode::Base);
     derived_base_map[derived->_idx] = base;
     return base;
@@ -1860,12 +1913,20 @@
       sprintf(buf,"L%d",lidx);  // No register binding yet
     } else if( !lidx ) {        // Special, not allocated value
       strcpy(buf,"Special");
-    } else if( (lrgs(lidx).num_regs() == 1)
-                ? !lrgs(lidx).mask().is_bound1()
-                : !lrgs(lidx).mask().is_bound2() ) {
-      sprintf(buf,"L%d",lidx); // No register binding yet
-    } else {                    // Hah!  We have a bound machine register
-      print_reg( lrgs(lidx).reg(), this, buf );
+    } else {
+      if (lrgs(lidx)._is_vector) {
+        if (lrgs(lidx).mask().is_bound_set(lrgs(lidx).num_regs()))
+          print_reg( lrgs(lidx).reg(), this, buf ); // a bound machine register
+        else
+          sprintf(buf,"L%d",lidx); // No register binding yet
+      } else if( (lrgs(lidx).num_regs() == 1)
+                 ? lrgs(lidx).mask().is_bound1()
+                 : lrgs(lidx).mask().is_bound_pair() ) {
+        // Hah!  We have a bound machine register
+        print_reg( lrgs(lidx).reg(), this, buf );
+      } else {
+        sprintf(buf,"L%d",lidx); // No register binding yet
+      }
     }
   }
   return buf+strlen(buf);
--- a/hotspot/src/share/vm/opto/chaitin.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/chaitin.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -99,8 +99,15 @@
   void set_mask_size( int size ) {
     assert((size == 65535) || (size == (int)_mask.Size()), "");
     _mask_size = size;
-    debug_only(_msize_valid=1;)
-    debug_only( if( _num_regs == 2 && !_fat_proj ) _mask.VerifyPairs(); )
+#ifdef ASSERT
+    _msize_valid=1;
+    if (_is_vector) {
+      assert(!_fat_proj, "sanity");
+      _mask.verify_sets(_num_regs);
+    } else if (_num_regs == 2 && !_fat_proj) {
+      _mask.verify_pairs();
+    }
+#endif
   }
   void compute_set_mask_size() { set_mask_size(compute_mask_size()); }
   int mask_size() const { assert( _msize_valid, "mask size not valid" );
@@ -116,7 +123,8 @@
   void Set_All() { _mask.Set_All(); debug_only(_msize_valid=1); _mask_size = RegMask::CHUNK_SIZE; }
   void Insert( OptoReg::Name reg ) { _mask.Insert(reg);  debug_only(_msize_valid=0;) }
   void Remove( OptoReg::Name reg ) { _mask.Remove(reg);  debug_only(_msize_valid=0;) }
-  void ClearToPairs() { _mask.ClearToPairs(); debug_only(_msize_valid=0;) }
+  void clear_to_pairs() { _mask.clear_to_pairs(); debug_only(_msize_valid=0;) }
+  void clear_to_sets()  { _mask.clear_to_sets(_num_regs); debug_only(_msize_valid=0;) }
 
   // Number of registers this live range uses when it colors
 private:
@@ -150,6 +158,7 @@
 
   uint   _is_oop:1,             // Live-range holds an oop
          _is_float:1,           // True if in float registers
+         _is_vector:1,          // True if in vector registers
          _was_spilled1:1,       // True if prior spilling on def
          _was_spilled2:1,       // True if twice prior spilling on def
          _is_bound:1,           // live range starts life with no
--- a/hotspot/src/share/vm/opto/classes.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/classes.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -245,14 +245,12 @@
 macro(XorL)
 macro(Vector)
 macro(AddVB)
-macro(AddVC)
 macro(AddVS)
 macro(AddVI)
 macro(AddVL)
 macro(AddVF)
 macro(AddVD)
 macro(SubVB)
-macro(SubVC)
 macro(SubVS)
 macro(SubVI)
 macro(SubVL)
@@ -263,74 +261,36 @@
 macro(DivVF)
 macro(DivVD)
 macro(LShiftVB)
-macro(LShiftVC)
 macro(LShiftVS)
 macro(LShiftVI)
-macro(URShiftVB)
-macro(URShiftVC)
-macro(URShiftVS)
-macro(URShiftVI)
+macro(RShiftVB)
+macro(RShiftVS)
+macro(RShiftVI)
 macro(AndV)
 macro(OrV)
 macro(XorV)
-macro(VectorLoad)
-macro(Load16B)
-macro(Load8B)
-macro(Load4B)
-macro(Load8C)
-macro(Load4C)
-macro(Load2C)
-macro(Load8S)
-macro(Load4S)
-macro(Load2S)
-macro(Load4I)
-macro(Load2I)
-macro(Load2L)
-macro(Load4F)
-macro(Load2F)
-macro(Load2D)
-macro(VectorStore)
-macro(Store16B)
-macro(Store8B)
-macro(Store4B)
-macro(Store8C)
-macro(Store4C)
-macro(Store2C)
-macro(Store4I)
-macro(Store2I)
-macro(Store2L)
-macro(Store4F)
-macro(Store2F)
-macro(Store2D)
+macro(LoadVector)
+macro(StoreVector)
 macro(Pack)
 macro(PackB)
 macro(PackS)
-macro(PackC)
 macro(PackI)
 macro(PackL)
 macro(PackF)
 macro(PackD)
-macro(Pack2x1B)
-macro(Pack2x2B)
-macro(Replicate16B)
-macro(Replicate8B)
-macro(Replicate4B)
-macro(Replicate8S)
-macro(Replicate4S)
-macro(Replicate2S)
-macro(Replicate8C)
-macro(Replicate4C)
-macro(Replicate2C)
-macro(Replicate4I)
-macro(Replicate2I)
-macro(Replicate2L)
-macro(Replicate4F)
-macro(Replicate2F)
-macro(Replicate2D)
+macro(Pack2L)
+macro(Pack2D)
+macro(ReplicateB)
+macro(ReplicateS)
+macro(ReplicateI)
+macro(ReplicateL)
+macro(ReplicateF)
+macro(ReplicateD)
 macro(Extract)
 macro(ExtractB)
+macro(ExtractUB)
+macro(ExtractC)
 macro(ExtractS)
-macro(ExtractC)
 macro(ExtractI)
 macro(ExtractL)
 macro(ExtractF)
--- a/hotspot/src/share/vm/opto/compile.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/compile.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -2591,38 +2591,12 @@
     }
     break;
 
-  case Op_Load16B:
-  case Op_Load8B:
-  case Op_Load4B:
-  case Op_Load8S:
-  case Op_Load4S:
-  case Op_Load2S:
-  case Op_Load8C:
-  case Op_Load4C:
-  case Op_Load2C:
-  case Op_Load4I:
-  case Op_Load2I:
-  case Op_Load2L:
-  case Op_Load4F:
-  case Op_Load2F:
-  case Op_Load2D:
-  case Op_Store16B:
-  case Op_Store8B:
-  case Op_Store4B:
-  case Op_Store8C:
-  case Op_Store4C:
-  case Op_Store2C:
-  case Op_Store4I:
-  case Op_Store2I:
-  case Op_Store2L:
-  case Op_Store4F:
-  case Op_Store2F:
-  case Op_Store2D:
+  case Op_LoadVector:
+  case Op_StoreVector:
     break;
 
   case Op_PackB:
   case Op_PackS:
-  case Op_PackC:
   case Op_PackI:
   case Op_PackF:
   case Op_PackL:
--- a/hotspot/src/share/vm/opto/ifg.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/ifg.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -416,6 +416,7 @@
     if( lrgs(lidx).mask().is_UP() &&
         lrgs(lidx).mask_size() &&
         !lrgs(lidx)._is_float &&
+        !lrgs(lidx)._is_vector &&
         lrgs(lidx).mask().overlap(*Matcher::idealreg2regmask[Op_RegI]) )
       cnt += lrgs(lidx).reg_pressure();
   }
@@ -430,7 +431,7 @@
   while ((lidx = elements.next()) != 0) {
     if( lrgs(lidx).mask().is_UP() &&
         lrgs(lidx).mask_size() &&
-        lrgs(lidx)._is_float )
+        (lrgs(lidx)._is_float || lrgs(lidx)._is_vector))
       cnt += lrgs(lidx).reg_pressure();
   }
   return cnt;
@@ -439,8 +440,8 @@
 //------------------------------lower_pressure---------------------------------
 // Adjust register pressure down by 1.  Capture last hi-to-low transition,
 static void lower_pressure( LRG *lrg, uint where, Block *b, uint *pressure, uint *hrp_index ) {
-  if( lrg->mask().is_UP() && lrg->mask_size() ) {
-    if( lrg->_is_float ) {
+  if (lrg->mask().is_UP() && lrg->mask_size()) {
+    if (lrg->_is_float || lrg->_is_vector) {
       pressure[1] -= lrg->reg_pressure();
       if( pressure[1] == (uint)FLOATPRESSURE ) {
         hrp_index[1] = where;
@@ -522,8 +523,8 @@
       LRG &lrg = lrgs(lidx);
       lrg._area += cost;
       // Compute initial register pressure
-      if( lrg.mask().is_UP() && lrg.mask_size() ) {
-        if( lrg._is_float ) {   // Count float pressure
+      if (lrg.mask().is_UP() && lrg.mask_size()) {
+        if (lrg._is_float || lrg._is_vector) {   // Count float pressure
           pressure[1] += lrg.reg_pressure();
 #ifdef EXACT_PRESSURE
           if( pressure[1] > b->_freg_pressure )
@@ -681,13 +682,10 @@
         // according to its bindings.
         const RegMask &rmask = lrgs(r).mask();
         if( lrgs(r).is_bound() && !(n->rematerialize()) && rmask.is_NotEmpty() ) {
-          // Smear odd bits; leave only aligned pairs of bits.
-          RegMask r2mask = rmask;
-          r2mask.SmearToPairs();
           // Check for common case
           int r_size = lrgs(r).num_regs();
           OptoReg::Name r_reg = (r_size == 1) ? rmask.find_first_elem() : OptoReg::Physical;
-
+          // Smear odd bits
           IndexSetIterator elements(&liveout);
           uint l;
           while ((l = elements.next()) != 0) {
@@ -701,10 +699,15 @@
             // Remove the bits from LRG 'r' from LRG 'l' so 'l' no
             // longer interferes with 'r'.  If 'l' requires aligned
             // adjacent pairs, subtract out bit pairs.
-            if( lrg.num_regs() == 2 && !lrg._fat_proj ) {
+            assert(!lrg._is_vector || !lrg._fat_proj, "sanity");
+            if (lrg.num_regs() > 1 && !lrg._fat_proj) {
+              RegMask r2mask = rmask;
+              // Leave only aligned set of bits.
+              r2mask.smear_to_sets(lrg.num_regs());
+              // It includes vector case.
               lrg.SUBTRACT( r2mask );
               lrg.compute_set_mask_size();
-            } else if( r_size != 1 ) {
+            } else if( r_size != 1 ) { // fat proj
               lrg.SUBTRACT( rmask );
               lrg.compute_set_mask_size();
             } else {            // Common case: size 1 bound removal
@@ -763,8 +766,8 @@
             // Newly live things assumed live from here to top of block
             lrg._area += cost;
             // Adjust register pressure
-            if( lrg.mask().is_UP() && lrg.mask_size() ) {
-              if( lrg._is_float ) {
+            if (lrg.mask().is_UP() && lrg.mask_size()) {
+              if (lrg._is_float || lrg._is_vector) {
                 pressure[1] += lrg.reg_pressure();
 #ifdef EXACT_PRESSURE
                 if( pressure[1] > b->_freg_pressure )
--- a/hotspot/src/share/vm/opto/lcm.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/lcm.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,7 @@
     int iop = mach->ideal_Opcode();
     switch( iop ) {
     case Op_LoadB:
+    case Op_LoadUB:
     case Op_LoadUS:
     case Op_LoadD:
     case Op_LoadF:
@@ -445,6 +446,11 @@
     if( e->is_MachNullCheck() && e->in(1) == n )
       continue;
 
+    // Schedule IV increment last.
+    if (e->is_Mach() && e->as_Mach()->ideal_Opcode() == Op_CountedLoopEnd &&
+        e->in(1)->in(1) == n && n->is_iteratively_computed())
+      continue;
+
     uint n_choice  = 2;
 
     // See if this instruction is consumed by a branch. If so, then (as the
--- a/hotspot/src/share/vm/opto/library_call.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -3592,8 +3592,10 @@
     }
 
     // Bail out if length is negative.
-    // ...Not needed, since the new_array will throw the right exception.
-    //generate_negative_guard(length, bailout, &length);
+    // Without this the new_array would throw
+    // NegativeArraySizeException but IllegalArgumentException is what
+    // should be thrown
+    generate_negative_guard(length, bailout, &length);
 
     if (bailout->req() > 1) {
       PreserveJVMState pjvms(this);
@@ -3617,7 +3619,9 @@
       // Extreme case:  Arrays.copyOf((Integer[])x, 10, String[].class).
       // This will fail a store-check if x contains any non-nulls.
       bool disjoint_bases = true;
-      bool length_never_negative = true;
+      // if start > orig_length then the length of the copy may be
+      // negative.
+      bool length_never_negative = !is_copyOfRange;
       generate_arraycopy(TypeAryPtr::OOPS, T_OBJECT,
                          original, start, newcopy, intcon(0), moved,
                          disjoint_bases, length_never_negative);
--- a/hotspot/src/share/vm/opto/loopnode.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/loopnode.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -2751,7 +2751,8 @@
         // Do not count uncommon calls
         if( !n->is_CallStaticJava() || !n->as_CallStaticJava()->_name ) {
           Node *iff = n->in(0)->in(0);
-          if( !iff->is_If() ||
+          // No any calls for vectorized loops.
+          if( UseSuperWord || !iff->is_If() ||
               (n->in(0)->Opcode() == Op_IfFalse &&
                (1.0 - iff->as_If()->_prob) >= 0.01) ||
               (iff->as_If()->_prob >= 0.01) )
@@ -3216,7 +3217,8 @@
     case Op_ModF:
     case Op_ModD:
     case Op_LoadB:              // Same with Loads; they can sink
-    case Op_LoadUS:             // during loop optimizations.
+    case Op_LoadUB:             // during loop optimizations.
+    case Op_LoadUS:
     case Op_LoadD:
     case Op_LoadF:
     case Op_LoadI:
--- a/hotspot/src/share/vm/opto/machnode.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/machnode.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -439,9 +439,9 @@
   // Don't remateralize somebody with bound inputs - it stretches a
   // fixed register lifetime.
   uint idx = oper_input_base();
-  if( req() > idx ) {
+  if (req() > idx) {
     const RegMask &rm = in_RegMask(idx);
-    if( rm.is_bound1() || rm.is_bound2() )
+    if (rm.is_bound(ideal_reg()))
       return false;
   }
 
--- a/hotspot/src/share/vm/opto/machnode.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/machnode.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -319,6 +319,7 @@
 class MachTypeNode : public MachNode {
   virtual uint size_of() const { return sizeof(*this); } // Size is bigger
 public:
+  MachTypeNode( ) {}
   const Type *_bottom_type;
 
   virtual const class Type *bottom_type() const { return _bottom_type; }
@@ -370,12 +371,12 @@
 
 //------------------------------MachConstantNode-------------------------------
 // Machine node that holds a constant which is stored in the constant table.
-class MachConstantNode : public MachNode {
+class MachConstantNode : public MachTypeNode {
 protected:
   Compile::Constant _constant;  // This node's constant.
 
 public:
-  MachConstantNode() : MachNode() {
+  MachConstantNode() : MachTypeNode() {
     init_class_id(Class_MachConstant);
   }
 
--- a/hotspot/src/share/vm/opto/matcher.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/matcher.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,6 +35,7 @@
 #include "opto/rootnode.hpp"
 #include "opto/runtime.hpp"
 #include "opto/type.hpp"
+#include "opto/vectornode.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/os.hpp"
 #ifdef TARGET_ARCH_MODEL_x86_32
@@ -58,18 +59,6 @@
 
 OptoReg::Name OptoReg::c_frame_pointer;
 
-
-
-const int Matcher::base2reg[Type::lastype] = {
-  Node::NotAMachineReg,0,0, Op_RegI, Op_RegL, 0, Op_RegN,
-  Node::NotAMachineReg, Node::NotAMachineReg, /* tuple, array */
-  Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, /* the pointers */
-  0, 0/*abio*/,
-  Op_RegP /* Return address */, 0, /* the memories */
-  Op_RegF, Op_RegF, Op_RegF, Op_RegD, Op_RegD, Op_RegD,
-  0  /*bottom*/
-};
-
 const RegMask *Matcher::idealreg2regmask[_last_machine_leaf];
 RegMask Matcher::mreg2regmask[_last_Mach_Reg];
 RegMask Matcher::STACK_ONLY_mask;
@@ -107,6 +96,10 @@
   idealreg2spillmask  [Op_RegF] = NULL;
   idealreg2spillmask  [Op_RegD] = NULL;
   idealreg2spillmask  [Op_RegP] = NULL;
+  idealreg2spillmask  [Op_VecS] = NULL;
+  idealreg2spillmask  [Op_VecD] = NULL;
+  idealreg2spillmask  [Op_VecX] = NULL;
+  idealreg2spillmask  [Op_VecY] = NULL;
 
   idealreg2debugmask  [Op_RegI] = NULL;
   idealreg2debugmask  [Op_RegN] = NULL;
@@ -114,6 +107,10 @@
   idealreg2debugmask  [Op_RegF] = NULL;
   idealreg2debugmask  [Op_RegD] = NULL;
   idealreg2debugmask  [Op_RegP] = NULL;
+  idealreg2debugmask  [Op_VecS] = NULL;
+  idealreg2debugmask  [Op_VecD] = NULL;
+  idealreg2debugmask  [Op_VecX] = NULL;
+  idealreg2debugmask  [Op_VecY] = NULL;
 
   idealreg2mhdebugmask[Op_RegI] = NULL;
   idealreg2mhdebugmask[Op_RegN] = NULL;
@@ -121,6 +118,10 @@
   idealreg2mhdebugmask[Op_RegF] = NULL;
   idealreg2mhdebugmask[Op_RegD] = NULL;
   idealreg2mhdebugmask[Op_RegP] = NULL;
+  idealreg2mhdebugmask[Op_VecS] = NULL;
+  idealreg2mhdebugmask[Op_VecD] = NULL;
+  idealreg2mhdebugmask[Op_VecX] = NULL;
+  idealreg2mhdebugmask[Op_VecY] = NULL;
 
   debug_only(_mem_node = NULL;)   // Ideal memory node consumed by mach node
 }
@@ -134,7 +135,7 @@
     warped = OptoReg::add(warped, C->out_preserve_stack_slots());
     if( warped >= _in_arg_limit )
       _in_arg_limit = OptoReg::add(warped, 1); // Bump max stack slot seen
-    if (!RegMask::can_represent(warped)) {
+    if (!RegMask::can_represent_arg(warped)) {
       // the compiler cannot represent this method's calling sequence
       C->record_method_not_compilable_all_tiers("unsupported incoming calling sequence");
       return OptoReg::Bad;
@@ -302,7 +303,7 @@
   _out_arg_limit = OptoReg::add(_new_SP, C->out_preserve_stack_slots());
   assert( is_even(_out_arg_limit), "out_preserve must be even" );
 
-  if (!RegMask::can_represent(OptoReg::add(_out_arg_limit,-1))) {
+  if (!RegMask::can_represent_arg(OptoReg::add(_out_arg_limit,-1))) {
     // the compiler cannot represent this method's calling sequence
     C->record_method_not_compilable("must be able to represent all call arguments in reg mask");
   }
@@ -428,7 +429,7 @@
 void Matcher::init_first_stack_mask() {
 
   // Allocate storage for spill masks as masks for the appropriate load type.
-  RegMask *rms = (RegMask*)C->comp_arena()->Amalloc_D(sizeof(RegMask) * 3*6);
+  RegMask *rms = (RegMask*)C->comp_arena()->Amalloc_D(sizeof(RegMask) * (3*6+4));
 
   idealreg2spillmask  [Op_RegN] = &rms[0];
   idealreg2spillmask  [Op_RegI] = &rms[1];
@@ -451,6 +452,11 @@
   idealreg2mhdebugmask[Op_RegD] = &rms[16];
   idealreg2mhdebugmask[Op_RegP] = &rms[17];
 
+  idealreg2spillmask  [Op_VecS] = &rms[18];
+  idealreg2spillmask  [Op_VecD] = &rms[19];
+  idealreg2spillmask  [Op_VecX] = &rms[20];
+  idealreg2spillmask  [Op_VecY] = &rms[21];
+
   OptoReg::Name i;
 
   // At first, start with the empty mask
@@ -462,7 +468,7 @@
     C->FIRST_STACK_mask().Insert(i);
 
   // Add in all bits past the outgoing argument area
-  guarantee(RegMask::can_represent(OptoReg::add(_out_arg_limit,-1)),
+  guarantee(RegMask::can_represent_arg(OptoReg::add(_out_arg_limit,-1)),
             "must be able to represent all call arguments in reg mask");
   init = _out_arg_limit;
   for (i = init; RegMask::can_represent(i); i = OptoReg::add(i,1))
@@ -472,21 +478,48 @@
   C->FIRST_STACK_mask().set_AllStack();
 
   // Make spill masks.  Registers for their class, plus FIRST_STACK_mask.
+  RegMask aligned_stack_mask = C->FIRST_STACK_mask();
+  // Keep spill masks aligned.
+  aligned_stack_mask.clear_to_pairs();
+  assert(aligned_stack_mask.is_AllStack(), "should be infinite stack");
+
+  *idealreg2spillmask[Op_RegP] = *idealreg2regmask[Op_RegP];
 #ifdef _LP64
   *idealreg2spillmask[Op_RegN] = *idealreg2regmask[Op_RegN];
    idealreg2spillmask[Op_RegN]->OR(C->FIRST_STACK_mask());
+   idealreg2spillmask[Op_RegP]->OR(aligned_stack_mask);
+#else
+   idealreg2spillmask[Op_RegP]->OR(C->FIRST_STACK_mask());
 #endif
   *idealreg2spillmask[Op_RegI] = *idealreg2regmask[Op_RegI];
    idealreg2spillmask[Op_RegI]->OR(C->FIRST_STACK_mask());
   *idealreg2spillmask[Op_RegL] = *idealreg2regmask[Op_RegL];
-   idealreg2spillmask[Op_RegL]->OR(C->FIRST_STACK_mask());
+   idealreg2spillmask[Op_RegL]->OR(aligned_stack_mask);
   *idealreg2spillmask[Op_RegF] = *idealreg2regmask[Op_RegF];
    idealreg2spillmask[Op_RegF]->OR(C->FIRST_STACK_mask());
   *idealreg2spillmask[Op_RegD] = *idealreg2regmask[Op_RegD];
-   idealreg2spillmask[Op_RegD]->OR(C->FIRST_STACK_mask());
-  *idealreg2spillmask[Op_RegP] = *idealreg2regmask[Op_RegP];
-   idealreg2spillmask[Op_RegP]->OR(C->FIRST_STACK_mask());
+   idealreg2spillmask[Op_RegD]->OR(aligned_stack_mask);
 
+  if (Matcher::vector_size_supported(T_BYTE,4)) {
+    *idealreg2spillmask[Op_VecS] = *idealreg2regmask[Op_VecS];
+     idealreg2spillmask[Op_VecS]->OR(C->FIRST_STACK_mask());
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,2)) {
+    *idealreg2spillmask[Op_VecD] = *idealreg2regmask[Op_VecD];
+     idealreg2spillmask[Op_VecD]->OR(aligned_stack_mask);
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,4)) {
+     aligned_stack_mask.clear_to_sets(RegMask::SlotsPerVecX);
+     assert(aligned_stack_mask.is_AllStack(), "should be infinite stack");
+    *idealreg2spillmask[Op_VecX] = *idealreg2regmask[Op_VecX];
+     idealreg2spillmask[Op_VecX]->OR(aligned_stack_mask);
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,8)) {
+     aligned_stack_mask.clear_to_sets(RegMask::SlotsPerVecY);
+     assert(aligned_stack_mask.is_AllStack(), "should be infinite stack");
+    *idealreg2spillmask[Op_VecY] = *idealreg2regmask[Op_VecY];
+     idealreg2spillmask[Op_VecY]->OR(aligned_stack_mask);
+  }
    if (UseFPUForSpilling) {
      // This mask logic assumes that the spill operations are
      // symmetric and that the registers involved are the same size.
@@ -807,6 +840,25 @@
   idealreg2regmask[Op_RegF] = &spillF->out_RegMask();
   idealreg2regmask[Op_RegD] = &spillD->out_RegMask();
   idealreg2regmask[Op_RegP] = &spillP->out_RegMask();
+
+  // Vector regmasks.
+  if (Matcher::vector_size_supported(T_BYTE,4)) {
+    TypeVect::VECTS = TypeVect::make(T_BYTE, 4);
+    MachNode *spillVectS = match_tree(new (C, 3) LoadVectorNode(NULL,mem,fp,atp,TypeVect::VECTS));
+    idealreg2regmask[Op_VecS] = &spillVectS->out_RegMask();
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,2)) {
+    MachNode *spillVectD = match_tree(new (C, 3) LoadVectorNode(NULL,mem,fp,atp,TypeVect::VECTD));
+    idealreg2regmask[Op_VecD] = &spillVectD->out_RegMask();
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,4)) {
+    MachNode *spillVectX = match_tree(new (C, 3) LoadVectorNode(NULL,mem,fp,atp,TypeVect::VECTX));
+    idealreg2regmask[Op_VecX] = &spillVectX->out_RegMask();
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,8)) {
+    MachNode *spillVectY = match_tree(new (C, 3) LoadVectorNode(NULL,mem,fp,atp,TypeVect::VECTY));
+    idealreg2regmask[Op_VecY] = &spillVectY->out_RegMask();
+  }
 }
 
 #ifdef ASSERT
@@ -1063,7 +1115,7 @@
     // that is killed by the call.
     if( warped >= out_arg_limit_per_call )
       out_arg_limit_per_call = OptoReg::add(warped,1);
-    if (!RegMask::can_represent(warped)) {
+    if (!RegMask::can_represent_arg(warped)) {
       C->record_method_not_compilable_all_tiers("unsupported calling sequence");
       return OptoReg::Bad;
     }
@@ -1251,7 +1303,7 @@
     // this killed area.
     uint r_cnt = mcall->tf()->range()->cnt();
     MachProjNode *proj = new (C, 1) MachProjNode( mcall, r_cnt+10000, RegMask::Empty, MachProjNode::fat_proj );
-    if (!RegMask::can_represent(OptoReg::Name(out_arg_limit_per_call-1))) {
+    if (!RegMask::can_represent_arg(OptoReg::Name(out_arg_limit_per_call-1))) {
       C->record_method_not_compilable_all_tiers("unsupported outgoing calling sequence");
     } else {
       for (int i = begin_out_arg_area; i < out_arg_limit_per_call; i++)
--- a/hotspot/src/share/vm/opto/matcher.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/matcher.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -250,10 +250,21 @@
   static const bool convL2FSupported(void);
 
   // Vector width in bytes
-  static const uint vector_width_in_bytes(void);
+  static const int vector_width_in_bytes(BasicType bt);
+
+  // Limits on vector size (number of elements).
+  static const int max_vector_size(const BasicType bt);
+  static const int min_vector_size(const BasicType bt);
+  static const bool vector_size_supported(const BasicType bt, int size) {
+    return (Matcher::max_vector_size(bt) >= size &&
+            Matcher::min_vector_size(bt) <= size);
+  }
 
   // Vector ideal reg
-  static const uint vector_ideal_reg(void);
+  static const int vector_ideal_reg(int len);
+
+  // CPU supports misaligned vectors store/load.
+  static const bool misaligned_vectors_ok();
 
   // Used to determine a "low complexity" 64-bit constant.  (Zero is simple.)
   // The standard of comparison is one (StoreL ConL) vs. two (StoreI ConI).
--- a/hotspot/src/share/vm/opto/memnode.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/memnode.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1543,6 +1543,7 @@
     // had an original form like p1:(AddP x x (LShiftL quux 3)), where the
     // expression (LShiftL quux 3) independently optimized to the constant 8.
     if ((t->isa_int() == NULL) && (t->isa_long() == NULL)
+        && (_type->isa_vect() == NULL)
         && Opcode() != Op_LoadKlass && Opcode() != Op_LoadNKlass) {
       // t might actually be lower than _type, if _type is a unique
       // concrete subclass of abstract class t.
--- a/hotspot/src/share/vm/opto/mulnode.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/mulnode.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -41,7 +41,9 @@
 class MulNode : public Node {
   virtual uint hash() const;
 public:
-  MulNode( Node *in1, Node *in2 ): Node(0,in1,in2) {}
+  MulNode( Node *in1, Node *in2 ): Node(0,in1,in2) {
+    init_class_id(Class_Mul);
+  }
 
   // Handle algebraic identities here.  If we have an identity, return the Node
   // we are equivalent to.  We look for "add of zero" as an identity.
--- a/hotspot/src/share/vm/opto/node.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/node.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1576,6 +1576,9 @@
     } else {
       tty->print("no type");
     }
+  } else if (t->isa_vect() && this->is_MachSpillCopy()) {
+    // Dump MachSpillcopy vector type.
+    t->dump();
   }
   if (is_new) {
     debug_only(dump_orig(debug_orig()));
--- a/hotspot/src/share/vm/opto/node.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/node.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -100,6 +100,7 @@
 class MemBarStoreStoreNode;
 class MemNode;
 class MergeMemNode;
+class MulNode;
 class MultiNode;
 class MultiBranchNode;
 class NeverBranchNode;
@@ -133,8 +134,8 @@
 class TypeNode;
 class UnlockNode;
 class VectorNode;
-class VectorLoadNode;
-class VectorStoreNode;
+class LoadVectorNode;
+class StoreVectorNode;
 class VectorSet;
 typedef void (*NFunc)(Node&,void*);
 extern "C" {
@@ -609,9 +610,9 @@
 
     DEFINE_CLASS_ID(Mem,   Node, 4)
       DEFINE_CLASS_ID(Load,  Mem, 0)
-        DEFINE_CLASS_ID(VectorLoad,  Load, 0)
+        DEFINE_CLASS_ID(LoadVector,  Load, 0)
       DEFINE_CLASS_ID(Store, Mem, 1)
-        DEFINE_CLASS_ID(VectorStore, Store, 0)
+        DEFINE_CLASS_ID(StoreVector, Store, 0)
       DEFINE_CLASS_ID(LoadStore, Mem, 2)
 
     DEFINE_CLASS_ID(Region, Node, 5)
@@ -629,8 +630,9 @@
     DEFINE_CLASS_ID(AddP,     Node, 9)
     DEFINE_CLASS_ID(BoxLock,  Node, 10)
     DEFINE_CLASS_ID(Add,      Node, 11)
-    DEFINE_CLASS_ID(Vector,   Node, 12)
-    DEFINE_CLASS_ID(ClearArray, Node, 13)
+    DEFINE_CLASS_ID(Mul,      Node, 12)
+    DEFINE_CLASS_ID(Vector,   Node, 13)
+    DEFINE_CLASS_ID(ClearArray, Node, 14)
 
     _max_classes  = ClassMask_ClearArray
   };
@@ -752,6 +754,7 @@
   DEFINE_CLASS_QUERY(MemBar)
   DEFINE_CLASS_QUERY(MemBarStoreStore)
   DEFINE_CLASS_QUERY(MergeMem)
+  DEFINE_CLASS_QUERY(Mul)
   DEFINE_CLASS_QUERY(Multi)
   DEFINE_CLASS_QUERY(MultiBranch)
   DEFINE_CLASS_QUERY(Parm)
@@ -767,8 +770,8 @@
   DEFINE_CLASS_QUERY(Sub)
   DEFINE_CLASS_QUERY(Type)
   DEFINE_CLASS_QUERY(Vector)
-  DEFINE_CLASS_QUERY(VectorLoad)
-  DEFINE_CLASS_QUERY(VectorStore)
+  DEFINE_CLASS_QUERY(LoadVector)
+  DEFINE_CLASS_QUERY(StoreVector)
   DEFINE_CLASS_QUERY(Unlock)
 
   #undef DEFINE_CLASS_QUERY
--- a/hotspot/src/share/vm/opto/opcodes.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/opcodes.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,6 +38,10 @@
   "RegD",
   "RegL",
   "RegFlags",
+  "VecS",
+  "VecD",
+  "VecX",
+  "VecY",
   "_last_machine_leaf",
 #include "classes.hpp"
   "_last_class_name",
--- a/hotspot/src/share/vm/opto/opcodes.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/opcodes.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -36,6 +36,10 @@
   macro(RegF)                   // Machine float   register
   macro(RegD)                   // Machine double  register
   macro(RegL)                   // Machine long    register
+  macro(VecS)                   // Machine vectors register
+  macro(VecD)                   // Machine vectord register
+  macro(VecX)                   // Machine vectorx register
+  macro(VecY)                   // Machine vectory register
   macro(RegFlags)               // Machine flags   register
   _last_machine_leaf,           // Split between regular opcodes and machine
 #include "classes.hpp"
--- a/hotspot/src/share/vm/opto/postaloc.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/postaloc.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,13 +27,15 @@
 #include "opto/chaitin.hpp"
 #include "opto/machnode.hpp"
 
-// see if this register kind does not requires two registers
-static bool is_single_register(uint x) {
-#ifdef _LP64
-  return (x != Op_RegD && x != Op_RegL && x != Op_RegP);
-#else
-  return (x != Op_RegD && x != Op_RegL);
-#endif
+// See if this register (or pairs, or vector) already contains the value.
+static bool register_contains_value(Node* val, OptoReg::Name reg, int n_regs,
+                                    Node_List& value) {
+  for (int i = 0; i < n_regs; i++) {
+    OptoReg::Name nreg = OptoReg::add(reg,-i);
+    if (value[nreg] != val)
+      return false;
+  }
+  return true;
 }
 
 //---------------------------may_be_copy_of_callee-----------------------------
@@ -167,9 +169,11 @@
   const RegMask &use_mask = n->in_RegMask(idx);
   bool can_use = ( RegMask::can_represent(def_reg) ? (use_mask.Member(def_reg) != 0)
                                                    : (use_mask.is_AllStack() != 0));
-  // Check for a copy to or from a misaligned pair.
-  can_use = can_use && !use_mask.is_misaligned_Pair() && !def_lrg.mask().is_misaligned_Pair();
-
+  if (!RegMask::is_vector(def->ideal_reg())) {
+    // Check for a copy to or from a misaligned pair.
+    // It is workaround for a sparc with misaligned pairs.
+    can_use = can_use && !use_mask.is_misaligned_pair() && !def_lrg.mask().is_misaligned_pair();
+  }
   if (!can_use)
     return 0;
 
@@ -263,18 +267,16 @@
     val = skip_copies(n->in(k));
   }
 
-  if( val == x ) return blk_adjust; // No progress?
+  if (val == x) return blk_adjust; // No progress?
 
-  bool single = is_single_register(val->ideal_reg());
+  int n_regs = RegMask::num_registers(val->ideal_reg());
   uint val_idx = n2lidx(val);
   OptoReg::Name val_reg = lrgs(val_idx).reg();
 
   // See if it happens to already be in the correct register!
   // (either Phi's direct register, or the common case of the name
   // never-clobbered original-def register)
-  if( value[val_reg] == val &&
-      // Doubles check both halves
-      ( single || value[val_reg-1] == val ) ) {
+  if (register_contains_value(val, val_reg, n_regs, value)) {
     blk_adjust += use_prior_register(n,k,regnd[val_reg],current_block,value,regnd);
     if( n->in(k) == regnd[val_reg] ) // Success!  Quit trying
       return blk_adjust;
@@ -306,9 +308,10 @@
     }
 
     Node *vv = value[reg];
-    if( !single ) {             // Doubles check for aligned-adjacent pair
-      if( (reg&1)==0 ) continue;  // Wrong half of a pair
-      if( vv != value[reg-1] ) continue; // Not a complete pair
+    if (n_regs > 1) { // Doubles and vectors check for aligned-adjacent set
+      uint last = (n_regs-1); // Looking for the last part of a set
+      if ((reg&last) != last) continue; // Wrong part of a set
+      if (!register_contains_value(vv, reg, n_regs, value)) continue; // Different value
     }
     if( vv == val ||            // Got a direct hit?
         (t && vv && vv->bottom_type() == t && vv->is_Mach() &&
@@ -526,8 +529,9 @@
       if( pidx ) {
         value.map(preg,phi);
         regnd.map(preg,phi);
-        OptoReg::Name preg_lo = OptoReg::add(preg,-1);
-        if( !is_single_register(phi->ideal_reg()) ) {
+        int n_regs = RegMask::num_registers(phi->ideal_reg());
+        for (int l = 1; l < n_regs; l++) {
+          OptoReg::Name preg_lo = OptoReg::add(preg,-l);
           value.map(preg_lo,phi);
           regnd.map(preg_lo,phi);
         }
@@ -568,13 +572,16 @@
             value.map(ureg,valdef); // record improved reaching-def info
             regnd.map(ureg,   def);
             // Record other half of doubles
-            OptoReg::Name ureg_lo = OptoReg::add(ureg,-1);
-            if( !is_single_register(def->ideal_reg()) &&
-                ( !RegMask::can_represent(ureg_lo) ||
-                  lrgs(useidx).mask().Member(ureg_lo) ) && // Nearly always adjacent
-                !value[ureg_lo] ) {
-              value.map(ureg_lo,valdef); // record improved reaching-def info
-              regnd.map(ureg_lo,   def);
+            uint def_ideal_reg = def->ideal_reg();
+            int n_regs = RegMask::num_registers(def_ideal_reg);
+            for (int l = 1; l < n_regs; l++) {
+              OptoReg::Name ureg_lo = OptoReg::add(ureg,-l);
+              if (!value[ureg_lo] &&
+                  (!RegMask::can_represent(ureg_lo) ||
+                   lrgs(useidx).mask().Member(ureg_lo))) { // Nearly always adjacent
+                value.map(ureg_lo,valdef); // record improved reaching-def info
+                regnd.map(ureg_lo,   def);
+              }
             }
           }
         }
@@ -607,7 +614,8 @@
       }
 
       uint n_ideal_reg = n->ideal_reg();
-      if( is_single_register(n_ideal_reg) ) {
+      int n_regs = RegMask::num_registers(n_ideal_reg);
+      if (n_regs == 1) {
         // If Node 'n' does not change the value mapped by the register,
         // then 'n' is a useless copy.  Do not update the register->node
         // mapping so 'n' will go dead.
@@ -625,6 +633,25 @@
           assert( n->is_Copy(), "" );
           j -= replace_and_yank_if_dead(n, nreg, b, value, regnd);
         }
+      } else if (RegMask::is_vector(n_ideal_reg)) {
+        // If Node 'n' does not change the value mapped by the register,
+        // then 'n' is a useless copy.  Do not update the register->node
+        // mapping so 'n' will go dead.
+        if (!register_contains_value(val, nreg, n_regs, value)) {
+          // Update the mapping: record new Node defined by the register
+          regnd.map(nreg,n);
+          // Update mapping for defined *value*, which is the defined
+          // Node after skipping all copies.
+          value.map(nreg,val);
+          for (int l = 1; l < n_regs; l++) {
+            OptoReg::Name nreg_lo = OptoReg::add(nreg,-l);
+            regnd.map(nreg_lo, n );
+            value.map(nreg_lo,val);
+          }
+        } else if (n->is_Copy()) {
+          // Note: vector can't be constant and can't be copy of calee.
+          j -= replace_and_yank_if_dead(n, nreg, b, value, regnd);
+        }
       } else {
         // If the value occupies a register pair, record same info
         // in both registers.
--- a/hotspot/src/share/vm/opto/reg_split.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/reg_split.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -74,12 +74,13 @@
   const RegMask *w_i_mask = w_mask->overlap( *i_mask ) ? w_mask : i_mask;
   const RegMask *w_o_mask;
 
+  int num_regs = RegMask::num_registers(ireg);
+  bool is_vect = RegMask::is_vector(ireg);
   if( w_mask->overlap( *o_mask ) && // Overlap AND
-      ((ireg != Op_RegL && ireg != Op_RegD // Single use or aligned
-#ifdef _LP64
-        && ireg != Op_RegP
-#endif
-         ) || o_mask->is_aligned_Pairs()) ) {
+      ((num_regs == 1) // Single use or aligned
+        ||  is_vect    // or vector
+        || !is_vect && o_mask->is_aligned_pairs()) ) {
+    assert(!is_vect || o_mask->is_aligned_sets(num_regs), "vectors are aligned");
     // Don't come here for mis-aligned doubles
     w_o_mask = w_mask;
   } else {                      // wide ideal mask does not overlap with o_mask
@@ -400,15 +401,17 @@
   // CNC - Turned off 7/8/99, causes too much spilling
   // if( lrg->_is_bound ) return false;
 
+  // Use float pressure numbers for vectors.
+  bool is_float_or_vector = lrg->_is_float || lrg->_is_vector;
   // Not yet reached the high-pressure cutoff point, so low pressure
-  uint hrp_idx = lrg->_is_float ? b->_fhrp_index : b->_ihrp_index;
+  uint hrp_idx = is_float_or_vector ? b->_fhrp_index : b->_ihrp_index;
   if( insidx < hrp_idx ) return false;
   // Register pressure for the block as a whole depends on reg class
-  int block_pres = lrg->_is_float ? b->_freg_pressure : b->_reg_pressure;
+  int block_pres = is_float_or_vector ? b->_freg_pressure : b->_reg_pressure;
   // Bound live ranges will split at the binding points first;
   // Intermediate splits should assume the live range's register set
   // got "freed up" and that num_regs will become INT_PRESSURE.
-  int bound_pres = lrg->_is_float ? FLOATPRESSURE : INTPRESSURE;
+  int bound_pres = is_float_or_vector ? FLOATPRESSURE : INTPRESSURE;
   // Effective register pressure limit.
   int lrg_pres = (lrg->get_invalid_mask_size() > lrg->num_regs())
     ? (lrg->get_invalid_mask_size() >> (lrg->num_regs()-1)) : bound_pres;
@@ -794,12 +797,15 @@
                   if( i < n->req() ) break;
                   insert_point--;
                 }
+                uint orig_eidx = b->end_idx();
                 maxlrg = split_DEF( n1, b, insert_point, maxlrg, Reachblock, debug_defs, splits, slidx);
                 // If it wasn't split bail
                 if (!maxlrg) {
                   return 0;
                 }
-                insidx++;
+                // Spill of NULL check mem op goes into the following block.
+                if (b->end_idx() > orig_eidx)
+                  insidx++;
               }
               // This is a new DEF, so update UP
               UPblock[slidx] = false;
@@ -960,7 +966,7 @@
             // Grab register mask info
             const RegMask &dmask = def->out_RegMask();
             const RegMask &umask = n->in_RegMask(inpidx);
-
+            bool is_vect = RegMask::is_vector(def->ideal_reg());
             assert(inpidx < oopoff, "cannot use-split oop map info");
 
             bool dup = UPblock[slidx];
@@ -972,7 +978,7 @@
             if( !umask.is_AllStack() &&
                 (int)umask.Size() <= lrgs(useidx).num_regs() &&
                 (!def->rematerialize() ||
-                 umask.is_misaligned_Pair())) {
+                 !is_vect && umask.is_misaligned_pair())) {
               // These need a Split regardless of overlap or pressure
               // SPLIT - NO DEF - NO CISC SPILL
               maxlrg = split_USE(def,b,n,inpidx,maxlrg,dup,false, splits,slidx);
@@ -1123,10 +1129,12 @@
         // Grab UP info for DEF
         const RegMask &dmask = n->out_RegMask();
         bool defup = dmask.is_UP();
+        int ireg = n->ideal_reg();
+        bool is_vect = RegMask::is_vector(ireg);
         // Only split at Def if this is a HRP block or bound (and spilled once)
         if( !n->rematerialize() &&
-            (((dmask.is_bound1() || dmask.is_bound2() || dmask.is_misaligned_Pair()) &&
-             (deflrg._direct_conflict || deflrg._must_spill)) ||
+            (((dmask.is_bound(ireg) || !is_vect && dmask.is_misaligned_pair()) &&
+              (deflrg._direct_conflict || deflrg._must_spill)) ||
              // Check for LRG being up in a register and we are inside a high
              // pressure area.  Spill it down immediately.
              (defup && is_high_pressure(b,&deflrg,insidx))) ) {
--- a/hotspot/src/share/vm/opto/regmask.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/regmask.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -129,11 +129,34 @@
   0
 );
 
+//=============================================================================
+bool RegMask::is_vector(uint ireg) {
+  return (ireg == Op_VecS || ireg == Op_VecD || ireg == Op_VecX || ireg == Op_VecY);
+}
+
+int RegMask::num_registers(uint ireg) {
+    switch(ireg) {
+      case Op_VecY:
+        return 8;
+      case Op_VecX:
+        return 4;
+      case Op_VecD:
+      case Op_RegD:
+      case Op_RegL:
+#ifdef _LP64
+      case Op_RegP:
+#endif
+        return 2;
+    }
+    // Op_VecS and the rest ideal registers.
+    return 1;
+}
+
 //------------------------------find_first_pair--------------------------------
 // Find the lowest-numbered register pair in the mask.  Return the
 // HIGHEST register number in the pair, or BAD if no pairs.
 OptoReg::Name RegMask::find_first_pair() const {
-  VerifyPairs();
+  verify_pairs();
   for( int i = 0; i < RM_SIZE; i++ ) {
     if( _A[i] ) {               // Found some bits
       int bit = _A[i] & -_A[i]; // Extract low bit
@@ -146,30 +169,30 @@
 
 //------------------------------ClearToPairs-----------------------------------
 // Clear out partial bits; leave only bit pairs
-void RegMask::ClearToPairs() {
+void RegMask::clear_to_pairs() {
   for( int i = 0; i < RM_SIZE; i++ ) {
     int bits = _A[i];
     bits &= ((bits & 0x55555555)<<1); // 1 hi-bit set for each pair
     bits |= (bits>>1);          // Smear 1 hi-bit into a pair
     _A[i] = bits;
   }
-  VerifyPairs();
+  verify_pairs();
 }
 
 //------------------------------SmearToPairs-----------------------------------
 // Smear out partial bits; leave only bit pairs
-void RegMask::SmearToPairs() {
+void RegMask::smear_to_pairs() {
   for( int i = 0; i < RM_SIZE; i++ ) {
     int bits = _A[i];
     bits |= ((bits & 0x55555555)<<1); // Smear lo bit hi per pair
     bits |= ((bits & 0xAAAAAAAA)>>1); // Smear hi bit lo per pair
     _A[i] = bits;
   }
-  VerifyPairs();
+  verify_pairs();
 }
 
 //------------------------------is_aligned_pairs-------------------------------
-bool RegMask::is_aligned_Pairs() const {
+bool RegMask::is_aligned_pairs() const {
   // Assert that the register mask contains only bit pairs.
   for( int i = 0; i < RM_SIZE; i++ ) {
     int bits = _A[i];
@@ -204,7 +227,7 @@
 
 //------------------------------is_bound2--------------------------------------
 // Return TRUE if the mask contains an adjacent pair of bits and no other bits.
-int RegMask::is_bound2() const {
+int RegMask::is_bound_pair() const {
   if( is_AllStack() ) return false;
 
   int bit = -1;                 // Set to hold the one bit allowed
@@ -226,6 +249,132 @@
   return true;
 }
 
+static int low_bits[3] = { 0x55555555, 0x11111111, 0x01010101 };
+//------------------------------find_first_set---------------------------------
+// Find the lowest-numbered register set in the mask.  Return the
+// HIGHEST register number in the set, or BAD if no sets.
+// Works also for size 1.
+OptoReg::Name RegMask::find_first_set(int size) const {
+  verify_sets(size);
+  for (int i = 0; i < RM_SIZE; i++) {
+    if (_A[i]) {                // Found some bits
+      int bit = _A[i] & -_A[i]; // Extract low bit
+      // Convert to bit number, return hi bit in pair
+      return OptoReg::Name((i<<_LogWordBits)+find_lowest_bit(bit)+(size-1));
+    }
+  }
+  return OptoReg::Bad;
+}
+
+//------------------------------clear_to_sets----------------------------------
+// Clear out partial bits; leave only aligned adjacent bit pairs
+void RegMask::clear_to_sets(int size) {
+  if (size == 1) return;
+  assert(2 <= size && size <= 8, "update low bits table");
+  assert(is_power_of_2(size), "sanity");
+  int low_bits_mask = low_bits[size>>2];
+  for (int i = 0; i < RM_SIZE; i++) {
+    int bits = _A[i];
+    int sets = (bits & low_bits_mask);
+    for (int j = 1; j < size; j++) {
+      sets = (bits & (sets<<1)); // filter bits which produce whole sets
+    }
+    sets |= (sets>>1);           // Smear 1 hi-bit into a set
+    if (size > 2) {
+      sets |= (sets>>2);         // Smear 2 hi-bits into a set
+      if (size > 4) {
+        sets |= (sets>>4);       // Smear 4 hi-bits into a set
+      }
+    }
+    _A[i] = sets;
+  }
+  verify_sets(size);
+}
+
+//------------------------------smear_to_sets----------------------------------
+// Smear out partial bits to aligned adjacent bit sets
+void RegMask::smear_to_sets(int size) {
+  if (size == 1) return;
+  assert(2 <= size && size <= 8, "update low bits table");
+  assert(is_power_of_2(size), "sanity");
+  int low_bits_mask = low_bits[size>>2];
+  for (int i = 0; i < RM_SIZE; i++) {
+    int bits = _A[i];
+    int sets = 0;
+    for (int j = 0; j < size; j++) {
+      sets |= (bits & low_bits_mask);  // collect partial bits
+      bits  = bits>>1;
+    }
+    sets |= (sets<<1);           // Smear 1 lo-bit  into a set
+    if (size > 2) {
+      sets |= (sets<<2);         // Smear 2 lo-bits into a set
+      if (size > 4) {
+        sets |= (sets<<4);       // Smear 4 lo-bits into a set
+      }
+    }
+    _A[i] = sets;
+  }
+  verify_sets(size);
+}
+
+//------------------------------is_aligned_set--------------------------------
+bool RegMask::is_aligned_sets(int size) const {
+  if (size == 1) return true;
+  assert(2 <= size && size <= 8, "update low bits table");
+  assert(is_power_of_2(size), "sanity");
+  int low_bits_mask = low_bits[size>>2];
+  // Assert that the register mask contains only bit sets.
+  for (int i = 0; i < RM_SIZE; i++) {
+    int bits = _A[i];
+    while (bits) {              // Check bits for pairing
+      int bit = bits & -bits;   // Extract low bit
+      // Low bit is not odd means its mis-aligned.
+      if ((bit & low_bits_mask) == 0) return false;
+      // Do extra work since (bit << size) may overflow.
+      int hi_bit = bit << (size-1); // high bit
+      int set = hi_bit + ((hi_bit-1) & ~(bit-1));
+      // Check for aligned adjacent bits in this set
+      if ((bits & set) != set) return false;
+      bits -= set;  // Remove this set
+    }
+  }
+  return true;
+}
+
+//------------------------------is_bound_set-----------------------------------
+// Return TRUE if the mask contains one adjacent set of bits and no other bits.
+// Works also for size 1.
+int RegMask::is_bound_set(int size) const {
+  if( is_AllStack() ) return false;
+  assert(1 <= size && size <= 8, "update low bits table");
+  int bit = -1;                 // Set to hold the one bit allowed
+  for (int i = 0; i < RM_SIZE; i++) {
+    if (_A[i] ) {               // Found some bits
+      if (bit != -1)
+       return false;            // Already had bits, so fail
+      bit = _A[i] & -_A[i];     // Extract 1 bit from mask
+      int hi_bit = bit << (size-1); // high bit
+      if (hi_bit != 0) {        // Bit set stays in same word?
+        int set = hi_bit + ((hi_bit-1) & ~(bit-1));
+        if (set != _A[i])
+          return false;         // Require adjacent bit set and no more bits
+      } else {                  // Else its a split-set case
+        if (((-1) & ~(bit-1)) != _A[i])
+          return false;         // Found many bits, so fail
+        i++;                    // Skip iteration forward and check high part
+        assert(size <= 8, "update next code");
+        // The lower 24 bits should be 0 since it is split case and size <= 8.
+        int set = bit>>24;
+        set = set & -set; // Remove sign extension.
+        set = (((set << size) - 1) >> 8);
+        if (_A[i] != set) return false; // Require 1 lo bit in next word
+      }
+    }
+  }
+  // True for both the empty mask and for a bit set
+  return true;
+}
+
 //------------------------------is_UP------------------------------------------
 // UP means register only, Register plus stack, or stack only is DOWN
 bool RegMask::is_UP() const {
--- a/hotspot/src/share/vm/opto/regmask.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/regmask.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -113,7 +113,11 @@
   // the controlling alignment constraint.  Note that this alignment
   // requirement is internal to the allocator, and independent of any
   // particular platform.
-  enum { SlotsPerLong = 2 };
+  enum { SlotsPerLong = 2,
+         SlotsPerVecS = 1,
+         SlotsPerVecD = 2,
+         SlotsPerVecX = 4,
+         SlotsPerVecY = 8 };
 
   // A constructor only used by the ADLC output.  All mask fields are filled
   // in directly.  Calls to this look something like RM(1,2,3,4);
@@ -193,20 +197,53 @@
   OptoReg::Name find_first_pair() const;
 
   // Clear out partial bits; leave only aligned adjacent bit pairs.
-  void ClearToPairs();
+  void clear_to_pairs();
   // Smear out partial bits; leave only aligned adjacent bit pairs.
-  void SmearToPairs();
+  void smear_to_pairs();
   // Verify that the mask contains only aligned adjacent bit pairs
-  void VerifyPairs() const { assert( is_aligned_Pairs(), "mask is not aligned, adjacent pairs" ); }
+  void verify_pairs() const { assert( is_aligned_pairs(), "mask is not aligned, adjacent pairs" ); }
   // Test that the mask contains only aligned adjacent bit pairs
-  bool is_aligned_Pairs() const;
+  bool is_aligned_pairs() const;
 
   // mask is a pair of misaligned registers
-  bool is_misaligned_Pair() const { return Size()==2 && !is_aligned_Pairs();}
+  bool is_misaligned_pair() const { return Size()==2 && !is_aligned_pairs(); }
   // Test for single register
   int is_bound1() const;
   // Test for a single adjacent pair
-  int is_bound2() const;
+  int is_bound_pair() const;
+  // Test for a single adjacent set of ideal register's size.
+  int is_bound(uint ireg) const {
+    if (is_vector(ireg)) {
+      if (is_bound_set(num_registers(ireg)))
+        return true;
+    } else if (is_bound1() || is_bound_pair()) {
+      return true;
+    }
+    return false;
+  }
+
+  // Find the lowest-numbered register set in the mask.  Return the
+  // HIGHEST register number in the set, or BAD if no sets.
+  // Assert that the mask contains only bit sets.
+  OptoReg::Name find_first_set(int size) const;
+
+  // Clear out partial bits; leave only aligned adjacent bit sets of size.
+  void clear_to_sets(int size);
+  // Smear out partial bits to aligned adjacent bit sets.
+  void smear_to_sets(int size);
+  // Verify that the mask contains only aligned adjacent bit sets
+  void verify_sets(int size) const { assert(is_aligned_sets(size), "mask is not aligned, adjacent sets"); }
+  // Test that the mask contains only aligned adjacent bit sets
+  bool is_aligned_sets(int size) const;
+
+  // mask is a set of misaligned registers
+  bool is_misaligned_set(int size) const { return (int)Size()==size && !is_aligned_sets(size);}
+
+  // Test for a single adjacent set
+  int is_bound_set(int size) const;
+
+  static bool is_vector(uint ireg);
+  static int num_registers(uint ireg);
 
   // Fast overlap test.  Non-zero if any registers in common.
   int overlap( const RegMask &rm ) const {
@@ -280,9 +317,15 @@
 
   static bool can_represent(OptoReg::Name reg) {
     // NOTE: -1 in computation reflects the usage of the last
-    //       bit of the regmask as an infinite stack flag.
+    //       bit of the regmask as an infinite stack flag and
+    //       -7 is to keep mask aligned for largest value (VecY).
     return (int)reg < (int)(CHUNK_SIZE-1);
   }
+  static bool can_represent_arg(OptoReg::Name reg) {
+    // NOTE: -SlotsPerVecY in computation reflects the need
+    //       to keep mask aligned for largest value (VecY).
+    return (int)reg < (int)(CHUNK_SIZE-SlotsPerVecY);
+  }
 };
 
 // Do not use this constant directly in client code!
--- a/hotspot/src/share/vm/opto/stringopts.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/stringopts.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -112,6 +112,7 @@
     _arguments->ins_req(0, value);
     _mode.insert_before(0, mode);
   }
+
   void push_string(Node* value) {
     push(value, StringMode);
   }
@@ -125,9 +126,56 @@
     push(value, CharMode);
   }
 
+  static bool is_SB_toString(Node* call) {
+    if (call->is_CallStaticJava()) {
+      CallStaticJavaNode* csj = call->as_CallStaticJava();
+      ciMethod* m = csj->method();
+      if (m != NULL &&
+          (m->intrinsic_id() == vmIntrinsics::_StringBuilder_toString ||
+           m->intrinsic_id() == vmIntrinsics::_StringBuffer_toString)) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  static Node* skip_string_null_check(Node* value) {
+    // Look for a diamond shaped Null check of toString() result
+    // (could be code from String.valueOf()):
+    // (Proj == NULL) ? "null":"CastPP(Proj)#NotNULL
+    if (value->is_Phi()) {
+      int true_path = value->as_Phi()->is_diamond_phi();
+      if (true_path != 0) {
+        // phi->region->if_proj->ifnode->bool
+        BoolNode* b = value->in(0)->in(1)->in(0)->in(1)->as_Bool();
+        Node* cmp = b->in(1);
+        Node* v1 = cmp->in(1);
+        Node* v2 = cmp->in(2);
+        // Null check of the return of toString which can simply be skipped.
+        if (b->_test._test == BoolTest::ne &&
+            v2->bottom_type() == TypePtr::NULL_PTR &&
+            value->in(true_path)->Opcode() == Op_CastPP &&
+            value->in(true_path)->in(1) == v1 &&
+            v1->is_Proj() && is_SB_toString(v1->in(0))) {
+          return v1;
+        }
+      }
+    }
+    return value;
+  }
+
   Node* argument(int i) {
     return _arguments->in(i);
   }
+  Node* argument_uncast(int i) {
+    Node* arg = argument(i);
+    int amode = mode(i);
+    if (amode == StringConcat::StringMode ||
+        amode == StringConcat::StringNullCheckMode) {
+      arg = skip_string_null_check(arg);
+    }
+    return arg;
+  }
   void set_argument(int i, Node* value) {
     _arguments->set_req(i, value);
   }
@@ -206,9 +254,11 @@
 
 
 void StringConcat::eliminate_unneeded_control() {
-  eliminate_initialize(begin()->initialization());
   for (uint i = 0; i < _control.size(); i++) {
     Node* n = _control.at(i);
+    if (n->is_Allocate()) {
+      eliminate_initialize(n->as_Allocate()->initialization());
+    }
     if (n->is_Call()) {
       if (n != _end) {
         eliminate_call(n->as_Call());
@@ -239,14 +289,15 @@
   assert(result->_control.contains(other->_end), "what?");
   assert(result->_control.contains(_begin), "what?");
   for (int x = 0; x < num_arguments(); x++) {
-    if (argument(x) == arg) {
+    Node* argx = argument_uncast(x);
+    if (argx == arg) {
       // replace the toString result with the all the arguments that
       // made up the other StringConcat
       for (int y = 0; y < other->num_arguments(); y++) {
         result->append(other->argument(y), other->mode(y));
       }
     } else {
-      result->append(argument(x), mode(x));
+      result->append(argx, mode(x));
     }
   }
   result->set_allocation(other->_begin);
@@ -327,14 +378,9 @@
 
   while (worklist.size() > 0) {
     Node* ctrl = worklist.pop();
-    if (ctrl->is_CallStaticJava()) {
+    if (StringConcat::is_SB_toString(ctrl)) {
       CallStaticJavaNode* csj = ctrl->as_CallStaticJava();
-      ciMethod* m = csj->method();
-      if (m != NULL &&
-          (m->intrinsic_id() == vmIntrinsics::_StringBuffer_toString ||
-           m->intrinsic_id() == vmIntrinsics::_StringBuilder_toString)) {
-        string_calls.push(csj);
-      }
+      string_calls.push(csj);
     }
     if (ctrl->in(0) != NULL && !_visited.test_set(ctrl->in(0)->_idx)) {
       worklist.push(ctrl->in(0));
@@ -550,44 +596,40 @@
   for (int c = 0; c < concats.length(); c++) {
     StringConcat* sc = concats.at(c);
     for (int i = 0; i < sc->num_arguments(); i++) {
-      Node* arg = sc->argument(i);
-      if (arg->is_Proj() && arg->in(0)->is_CallStaticJava()) {
+      Node* arg = sc->argument_uncast(i);
+      if (arg->is_Proj() && StringConcat::is_SB_toString(arg->in(0))) {
         CallStaticJavaNode* csj = arg->in(0)->as_CallStaticJava();
-        if (csj->method() != NULL &&
-            (csj->method()->intrinsic_id() == vmIntrinsics::_StringBuilder_toString ||
-             csj->method()->intrinsic_id() == vmIntrinsics::_StringBuffer_toString)) {
-          for (int o = 0; o < concats.length(); o++) {
-            if (c == o) continue;
-            StringConcat* other = concats.at(o);
-            if (other->end() == csj) {
+        for (int o = 0; o < concats.length(); o++) {
+          if (c == o) continue;
+          StringConcat* other = concats.at(o);
+          if (other->end() == csj) {
 #ifndef PRODUCT
-              if (PrintOptimizeStringConcat) {
-                tty->print_cr("considering stacked concats");
-              }
+            if (PrintOptimizeStringConcat) {
+              tty->print_cr("considering stacked concats");
+            }
 #endif
 
-              StringConcat* merged = sc->merge(other, arg);
-              if (merged->validate_control_flow()) {
+            StringConcat* merged = sc->merge(other, arg);
+            if (merged->validate_control_flow()) {
 #ifndef PRODUCT
-                if (PrintOptimizeStringConcat) {
-                  tty->print_cr("stacking would succeed");
-                }
+              if (PrintOptimizeStringConcat) {
+                tty->print_cr("stacking would succeed");
+              }
 #endif
-                if (c < o) {
-                  concats.remove_at(o);
-                  concats.at_put(c, merged);
-                } else {
-                  concats.remove_at(c);
-                  concats.at_put(o, merged);
-                }
-                goto restart;
+              if (c < o) {
+                concats.remove_at(o);
+                concats.at_put(c, merged);
               } else {
+                concats.remove_at(c);
+                concats.at_put(o, merged);
+              }
+              goto restart;
+            } else {
 #ifndef PRODUCT
-                if (PrintOptimizeStringConcat) {
-                  tty->print_cr("stacking would fail");
-                }
+              if (PrintOptimizeStringConcat) {
+                tty->print_cr("stacking would fail");
+              }
 #endif
-              }
             }
           }
         }
--- a/hotspot/src/share/vm/opto/superword.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/superword.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -67,6 +67,10 @@
 
 //------------------------------transform_loop---------------------------
 void SuperWord::transform_loop(IdealLoopTree* lpt) {
+  assert(UseSuperWord, "should be");
+  // Do vectors exist on this architecture?
+  if (Matcher::vector_width_in_bytes(T_BYTE) < 2) return;
+
   assert(lpt->_head->is_CountedLoop(), "must be");
   CountedLoopNode *cl = lpt->_head->as_CountedLoop();
 
@@ -89,15 +93,12 @@
   Node *pre_opaq1 = pre_end->limit();
   if (pre_opaq1->Opcode() != Op_Opaque1) return;
 
-  // Do vectors exist on this architecture?
-  if (vector_width_in_bytes() == 0) return;
-
   init(); // initialize data structures
 
   set_lpt(lpt);
   set_lp(cl);
 
- // For now, define one block which is the entire loop body
+  // For now, define one block which is the entire loop body
   set_bb(cl);
 
   assert(_packset.length() == 0, "packset must be empty");
@@ -177,7 +178,7 @@
   Node_List memops;
   for (int i = 0; i < _block.length(); i++) {
     Node* n = _block.at(i);
-    if (n->is_Mem() && in_bb(n) &&
+    if (n->is_Mem() && !n->is_LoadStore() && in_bb(n) &&
         is_java_primitive(n->as_Mem()->memory_type())) {
       int align = memory_alignment(n->as_Mem(), 0);
       if (align != bottom_align) {
@@ -185,54 +186,141 @@
       }
     }
   }
-  if (memops.size() == 0) return;
 
-  // Find a memory reference to align to.  The pre-loop trip count
-  // is modified to align this reference to a vector-aligned address
-  find_align_to_ref(memops);
-  if (align_to_ref() == NULL) return;
+  Node_List align_to_refs;
+  int best_iv_adjustment = 0;
+  MemNode* best_align_to_mem_ref = NULL;
 
-  SWPointer align_to_ref_p(align_to_ref(), this);
-  int offset = align_to_ref_p.offset_in_bytes();
-  int scale  = align_to_ref_p.scale_in_bytes();
-  int vw              = vector_width_in_bytes();
-  int stride_sign     = (scale * iv_stride()) > 0 ? 1 : -1;
-  int iv_adjustment   = (stride_sign * vw - (offset % vw)) % vw;
-
-#ifndef PRODUCT
-  if (TraceSuperWord)
-    tty->print_cr("\noffset = %d iv_adjustment = %d  elt_align = %d scale = %d iv_stride = %d",
-                  offset, iv_adjustment, align_to_ref_p.memory_size(), align_to_ref_p.scale_in_bytes(), iv_stride());
-#endif
+  while (memops.size() != 0) {
+    // Find a memory reference to align to.
+    MemNode* mem_ref = find_align_to_ref(memops);
+    if (mem_ref == NULL) break;
+    align_to_refs.push(mem_ref);
+    int iv_adjustment = get_iv_adjustment(mem_ref);
 
-  // Set alignment relative to "align_to_ref"
-  for (int i = memops.size() - 1; i >= 0; i--) {
-    MemNode* s = memops.at(i)->as_Mem();
-    SWPointer p2(s, this);
-    if (p2.comparable(align_to_ref_p)) {
-      int align = memory_alignment(s, iv_adjustment);
-      set_alignment(s, align);
-    } else {
-      memops.remove(i);
+    if (best_align_to_mem_ref == NULL) {
+      // Set memory reference which is the best from all memory operations
+      // to be used for alignment. The pre-loop trip count is modified to align
+      // this reference to a vector-aligned address.
+      best_align_to_mem_ref = mem_ref;
+      best_iv_adjustment = iv_adjustment;
     }
-  }
 
-  // Create initial pack pairs of memory operations
-  for (uint i = 0; i < memops.size(); i++) {
-    Node* s1 = memops.at(i);
-    for (uint j = 0; j < memops.size(); j++) {
-      Node* s2 = memops.at(j);
-      if (s1 != s2 && are_adjacent_refs(s1, s2)) {
-        int align = alignment(s1);
-        if (stmts_can_pack(s1, s2, align)) {
-          Node_List* pair = new Node_List();
-          pair->push(s1);
-          pair->push(s2);
-          _packset.append(pair);
+    SWPointer align_to_ref_p(mem_ref, this);
+    // Set alignment relative to "align_to_ref" for all related memory operations.
+    for (int i = memops.size() - 1; i >= 0; i--) {
+      MemNode* s = memops.at(i)->as_Mem();
+      if (isomorphic(s, mem_ref)) {
+        SWPointer p2(s, this);
+        if (p2.comparable(align_to_ref_p)) {
+          int align = memory_alignment(s, iv_adjustment);
+          set_alignment(s, align);
         }
       }
     }
-  }
+
+    // Create initial pack pairs of memory operations for which
+    // alignment is set and vectors will be aligned.
+    bool create_pack = true;
+    if (memory_alignment(mem_ref, best_iv_adjustment) == 0) {
+      if (!Matcher::misaligned_vectors_ok()) {
+        int vw = vector_width(mem_ref);
+        int vw_best = vector_width(best_align_to_mem_ref);
+        if (vw > vw_best) {
+          // Do not vectorize a memory access with more elements per vector
+          // if unaligned memory access is not allowed because number of
+          // iterations in pre-loop will be not enough to align it.
+          create_pack = false;
+        }
+      }
+    } else {
+      if (same_velt_type(mem_ref, best_align_to_mem_ref)) {
+        // Can't allow vectorization of unaligned memory accesses with the
+        // same type since it could be overlapped accesses to the same array.
+        create_pack = false;
+      } else {
+        // Allow independent (different type) unaligned memory operations
+        // if HW supports them.
+        if (!Matcher::misaligned_vectors_ok()) {
+          create_pack = false;
+        } else {
+          // Check if packs of the same memory type but
+          // with a different alignment were created before.
+          for (uint i = 0; i < align_to_refs.size(); i++) {
+            MemNode* mr = align_to_refs.at(i)->as_Mem();
+            if (same_velt_type(mr, mem_ref) &&
+                memory_alignment(mr, iv_adjustment) != 0)
+              create_pack = false;
+          }
+        }
+      }
+    }
+    if (create_pack) {
+      for (uint i = 0; i < memops.size(); i++) {
+        Node* s1 = memops.at(i);
+        int align = alignment(s1);
+        if (align == top_align) continue;
+        for (uint j = 0; j < memops.size(); j++) {
+          Node* s2 = memops.at(j);
+          if (alignment(s2) == top_align) continue;
+          if (s1 != s2 && are_adjacent_refs(s1, s2)) {
+            if (stmts_can_pack(s1, s2, align)) {
+              Node_List* pair = new Node_List();
+              pair->push(s1);
+              pair->push(s2);
+              _packset.append(pair);
+            }
+          }
+        }
+      }
+    } else { // Don't create unaligned pack
+      // First, remove remaining memory ops of the same type from the list.
+      for (int i = memops.size() - 1; i >= 0; i--) {
+        MemNode* s = memops.at(i)->as_Mem();
+        if (same_velt_type(s, mem_ref)) {
+          memops.remove(i);
+        }
+      }
+
+      // Second, remove already constructed packs of the same type.
+      for (int i = _packset.length() - 1; i >= 0; i--) {
+        Node_List* p = _packset.at(i);
+        MemNode* s = p->at(0)->as_Mem();
+        if (same_velt_type(s, mem_ref)) {
+          remove_pack_at(i);
+        }
+      }
+
+      // If needed find the best memory reference for loop alignment again.
+      if (same_velt_type(mem_ref, best_align_to_mem_ref)) {
+        // Put memory ops from remaining packs back on memops list for
+        // the best alignment search.
+        uint orig_msize = memops.size();
+        for (int i = 0; i < _packset.length(); i++) {
+          Node_List* p = _packset.at(i);
+          MemNode* s = p->at(0)->as_Mem();
+          assert(!same_velt_type(s, mem_ref), "sanity");
+          memops.push(s);
+        }
+        MemNode* best_align_to_mem_ref = find_align_to_ref(memops);
+        if (best_align_to_mem_ref == NULL) break;
+        best_iv_adjustment = get_iv_adjustment(best_align_to_mem_ref);
+        // Restore list.
+        while (memops.size() > orig_msize)
+          (void)memops.pop();
+      }
+    } // unaligned memory accesses
+
+    // Remove used mem nodes.
+    for (int i = memops.size() - 1; i >= 0; i--) {
+      MemNode* m = memops.at(i)->as_Mem();
+      if (alignment(m) != top_align) {
+        memops.remove(i);
+      }
+    }
+
+  } // while (memops.size() != 0
+  set_align_to_ref(best_align_to_mem_ref);
 
 #ifndef PRODUCT
   if (TraceSuperWord) {
@@ -246,7 +334,7 @@
 // Find a memory reference to align the loop induction variable to.
 // Looks first at stores then at loads, looking for a memory reference
 // with the largest number of references similar to it.
-void SuperWord::find_align_to_ref(Node_List &memops) {
+MemNode* SuperWord::find_align_to_ref(Node_List &memops) {
   GrowableArray<int> cmp_ct(arena(), memops.size(), memops.size(), 0);
 
   // Count number of comparable memory ops
@@ -270,20 +358,28 @@
     }
   }
 
-  // Find Store (or Load) with the greatest number of "comparable" references
+  // Find Store (or Load) with the greatest number of "comparable" references,
+  // biggest vector size, smallest data size and smallest iv offset.
   int max_ct        = 0;
+  int max_vw        = 0;
   int max_idx       = -1;
   int min_size      = max_jint;
   int min_iv_offset = max_jint;
   for (uint j = 0; j < memops.size(); j++) {
     MemNode* s = memops.at(j)->as_Mem();
     if (s->is_Store()) {
+      int vw = vector_width_in_bytes(s);
+      assert(vw > 1, "sanity");
       SWPointer p(s, this);
-      if (cmp_ct.at(j) > max_ct ||
-          cmp_ct.at(j) == max_ct && (data_size(s) < min_size ||
-                                     data_size(s) == min_size &&
-                                        p.offset_in_bytes() < min_iv_offset)) {
+      if (cmp_ct.at(j) >  max_ct ||
+          cmp_ct.at(j) == max_ct &&
+            (vw >  max_vw ||
+             vw == max_vw &&
+              (data_size(s) <  min_size ||
+               data_size(s) == min_size &&
+                 (p.offset_in_bytes() < min_iv_offset)))) {
         max_ct = cmp_ct.at(j);
+        max_vw = vw;
         max_idx = j;
         min_size = data_size(s);
         min_iv_offset = p.offset_in_bytes();
@@ -295,12 +391,18 @@
     for (uint j = 0; j < memops.size(); j++) {
       MemNode* s = memops.at(j)->as_Mem();
       if (s->is_Load()) {
+        int vw = vector_width_in_bytes(s);
+        assert(vw > 1, "sanity");
         SWPointer p(s, this);
-        if (cmp_ct.at(j) > max_ct ||
-            cmp_ct.at(j) == max_ct && (data_size(s) < min_size ||
-                                       data_size(s) == min_size &&
-                                          p.offset_in_bytes() < min_iv_offset)) {
+        if (cmp_ct.at(j) >  max_ct ||
+            cmp_ct.at(j) == max_ct &&
+              (vw >  max_vw ||
+               vw == max_vw &&
+                (data_size(s) <  min_size ||
+                 data_size(s) == min_size &&
+                   (p.offset_in_bytes() < min_iv_offset)))) {
           max_ct = cmp_ct.at(j);
+          max_vw = vw;
           max_idx = j;
           min_size = data_size(s);
           min_iv_offset = p.offset_in_bytes();
@@ -309,10 +411,7 @@
     }
   }
 
-  if (max_ct > 0)
-    set_align_to_ref(memops.at(max_idx)->as_Mem());
-
-#ifndef PRODUCT
+#ifdef ASSERT
   if (TraceSuperWord && Verbose) {
     tty->print_cr("\nVector memops after find_align_to_refs");
     for (uint i = 0; i < memops.size(); i++) {
@@ -321,6 +420,17 @@
     }
   }
 #endif
+
+  if (max_ct > 0) {
+#ifdef ASSERT
+    if (TraceSuperWord) {
+      tty->print("\nVector align to node: ");
+      memops.at(max_idx)->as_Mem()->dump();
+    }
+#endif
+    return memops.at(max_idx)->as_Mem();
+  }
+  return NULL;
 }
 
 //------------------------------ref_is_alignable---------------------------
@@ -341,7 +451,8 @@
 
   // If initial offset from start of object is computable,
   // compute alignment within the vector.
-  int vw = vector_width_in_bytes();
+  int vw = vector_width_in_bytes(p.mem());
+  assert(vw > 1, "sanity");
   if (vw % span == 0) {
     Node* init_nd = pre_end->init_trip();
     if (init_nd->is_Con() && p.invar() == NULL) {
@@ -361,6 +472,25 @@
   return false;
 }
 
+//---------------------------get_iv_adjustment---------------------------
+// Calculate loop's iv adjustment for this memory ops.
+int SuperWord::get_iv_adjustment(MemNode* mem_ref) {
+  SWPointer align_to_ref_p(mem_ref, this);
+  int offset = align_to_ref_p.offset_in_bytes();
+  int scale  = align_to_ref_p.scale_in_bytes();
+  int vw       = vector_width_in_bytes(mem_ref);
+  assert(vw > 1, "sanity");
+  int stride_sign   = (scale * iv_stride()) > 0 ? 1 : -1;
+  int iv_adjustment = (stride_sign * vw - (offset % vw)) % vw;
+
+#ifndef PRODUCT
+  if (TraceSuperWord)
+    tty->print_cr("\noffset = %d iv_adjust = %d elt_size = %d scale = %d iv_stride = %d vect_size %d",
+                  offset, iv_adjustment, align_to_ref_p.memory_size(), scale, iv_stride(), vw);
+#endif
+  return iv_adjustment;
+}
+
 //---------------------------dependence_graph---------------------------
 // Construct dependency graph.
 // Add dependence edges to load/store nodes for memory dependence
@@ -488,9 +618,13 @@
 bool SuperWord::stmts_can_pack(Node* s1, Node* s2, int align) {
 
   // Do not use superword for non-primitives
-  if((s1->is_Mem() && !is_java_primitive(s1->as_Mem()->memory_type())) ||
-     (s2->is_Mem() && !is_java_primitive(s2->as_Mem()->memory_type())))
+  BasicType bt1 = velt_basic_type(s1);
+  BasicType bt2 = velt_basic_type(s2);
+  if(!is_java_primitive(bt1) || !is_java_primitive(bt2))
     return false;
+  if (Matcher::max_vector_size(bt1) < 2) {
+    return false; // No vectors for this type
+  }
 
   if (isomorphic(s1, s2)) {
     if (independent(s1, s2)) {
@@ -552,7 +686,7 @@
   if (s1->Opcode() != s2->Opcode()) return false;
   if (s1->req() != s2->req()) return false;
   if (s1->in(0) != s2->in(0)) return false;
-  if (velt_type(s1) != velt_type(s2)) return false;
+  if (!same_velt_type(s1, s2)) return false;
   return true;
 }
 
@@ -595,14 +729,16 @@
 //------------------------------set_alignment---------------------------
 void SuperWord::set_alignment(Node* s1, Node* s2, int align) {
   set_alignment(s1, align);
-  set_alignment(s2, align + data_size(s1));
+  if (align == top_align || align == bottom_align) {
+    set_alignment(s2, align);
+  } else {
+    set_alignment(s2, align + data_size(s1));
+  }
 }
 
 //------------------------------data_size---------------------------
 int SuperWord::data_size(Node* s) {
-  const Type* t = velt_type(s);
-  BasicType  bt = t->array_element_basic_type();
-  int bsize = type2aelembytes(bt);
+  int bsize = type2aelembytes(velt_basic_type(s));
   assert(bsize != 0, "valid size");
   return bsize;
 }
@@ -631,9 +767,9 @@
 //------------------------------follow_use_defs---------------------------
 // Extend the packset by visiting operand definitions of nodes in pack p
 bool SuperWord::follow_use_defs(Node_List* p) {
+  assert(p->size() == 2, "just checking");
   Node* s1 = p->at(0);
   Node* s2 = p->at(1);
-  assert(p->size() == 2, "just checking");
   assert(s1->req() == s2->req(), "just checking");
   assert(alignment(s1) + data_size(s1) == alignment(s2), "just checking");
 
@@ -718,7 +854,12 @@
     for (i1++; i1 < ct; i1++) if (u1->in(i1) == d1) break;
     for (i2++; i2 < ct; i2++) if (u2->in(i2) == d2) break;
     if (i1 != i2) {
-      return false;
+      if ((i1 == (3-i2)) && (u2->is_Add() || u2->is_Mul())) {
+        // Further analysis relies on operands position matching.
+        u2->swap_edges(i1, i2);
+      } else {
+        return false;
+      }
     }
   } while (i1 < ct);
   return true;
@@ -727,7 +868,7 @@
 //------------------------------est_savings---------------------------
 // Estimate the savings from executing s1 and s2 as a pack
 int SuperWord::est_savings(Node* s1, Node* s2) {
-  int save = 2 - 1; // 2 operations per instruction in packed form
+  int save_in = 2 - 1; // 2 operations per instruction in packed form
 
   // inputs
   for (uint i = 1; i < s1->req(); i++) {
@@ -735,17 +876,18 @@
     Node* x2 = s2->in(i);
     if (x1 != x2) {
       if (are_adjacent_refs(x1, x2)) {
-        save += adjacent_profit(x1, x2);
+        save_in += adjacent_profit(x1, x2);
       } else if (!in_packset(x1, x2)) {
-        save -= pack_cost(2);
+        save_in -= pack_cost(2);
       } else {
-        save += unpack_cost(2);
+        save_in += unpack_cost(2);
       }
     }
   }
 
   // uses of result
   uint ct = 0;
+  int save_use = 0;
   for (DUIterator_Fast imax, i = s1->fast_outs(imax); i < imax; i++) {
     Node* s1_use = s1->fast_out(i);
     for (int j = 0; j < _packset.length(); j++) {
@@ -756,7 +898,7 @@
           if (p->at(p->size()-1) == s2_use) {
             ct++;
             if (are_adjacent_refs(s1_use, s2_use)) {
-              save += adjacent_profit(s1_use, s2_use);
+              save_use += adjacent_profit(s1_use, s2_use);
             }
           }
         }
@@ -764,10 +906,10 @@
     }
   }
 
-  if (ct < s1->outcnt()) save += unpack_cost(1);
-  if (ct < s2->outcnt()) save += unpack_cost(1);
+  if (ct < s1->outcnt()) save_use += unpack_cost(1);
+  if (ct < s2->outcnt()) save_use += unpack_cost(1);
 
-  return save;
+  return MAX2(save_in, save_use);
 }
 
 //------------------------------costs---------------------------
@@ -778,8 +920,9 @@
 //------------------------------combine_packs---------------------------
 // Combine packs A and B with A.last == B.first into A.first..,A.last,B.second,..B.last
 void SuperWord::combine_packs() {
-  bool changed;
-  do {
+  bool changed = true;
+  // Combine packs regardless max vector size.
+  while (changed) {
     changed = false;
     for (int i = 0; i < _packset.length(); i++) {
       Node_List* p1 = _packset.at(i);
@@ -787,6 +930,7 @@
       for (int j = 0; j < _packset.length(); j++) {
         Node_List* p2 = _packset.at(j);
         if (p2 == NULL) continue;
+        if (i == j) continue;
         if (p1->at(p1->size()-1) == p2->at(0)) {
           for (uint k = 1; k < p2->size(); k++) {
             p1->push(p2->at(k));
@@ -796,8 +940,39 @@
         }
       }
     }
-  } while (changed);
+  }
 
+  // Split packs which have size greater then max vector size.
+  for (int i = 0; i < _packset.length(); i++) {
+    Node_List* p1 = _packset.at(i);
+    if (p1 != NULL) {
+      BasicType bt = velt_basic_type(p1->at(0));
+      uint max_vlen = Matcher::max_vector_size(bt); // Max elements in vector
+      assert(is_power_of_2(max_vlen), "sanity");
+      uint psize = p1->size();
+      if (!is_power_of_2(psize)) {
+        // Skip pack which can't be vector.
+        // case1: for(...) { a[i] = i; }    elements values are different (i+x)
+        // case2: for(...) { a[i] = b[i+1]; }  can't align both, load and store
+        _packset.at_put(i, NULL);
+        continue;
+      }
+      if (psize > max_vlen) {
+        Node_List* pack = new Node_List();
+        for (uint j = 0; j < psize; j++) {
+          pack->push(p1->at(j));
+          if (pack->size() >= max_vlen) {
+            assert(is_power_of_2(pack->size()), "sanity");
+            _packset.append(pack);
+            pack = new Node_List();
+          }
+        }
+        _packset.at_put(i, NULL);
+      }
+    }
+  }
+
+  // Compress list.
   for (int i = _packset.length() - 1; i >= 0; i--) {
     Node_List* p1 = _packset.at(i);
     if (p1 == NULL) {
@@ -880,8 +1055,7 @@
 // Can code be generated for pack p?
 bool SuperWord::implemented(Node_List* p) {
   Node* p0 = p->at(0);
-  int vopc = VectorNode::opcode(p0->Opcode(), p->size(), velt_type(p0));
-  return vopc > 0 && Matcher::has_match_rule(vopc);
+  return VectorNode::implemented(p0->Opcode(), p->size(), velt_basic_type(p0));
 }
 
 //------------------------------profitable---------------------------
@@ -939,36 +1113,36 @@
 }
 
 //-------------------------------remove_and_insert-------------------
-//remove "current" from its current position in the memory graph and insert
-//it after the appropriate insertion point (lip or uip)
+// Remove "current" from its current position in the memory graph and insert
+// it after the appropriate insertion point (lip or uip).
 void SuperWord::remove_and_insert(MemNode *current, MemNode *prev, MemNode *lip,
                                   Node *uip, Unique_Node_List &sched_before) {
   Node* my_mem = current->in(MemNode::Memory);
-  _igvn.rehash_node_delayed(current);
-  _igvn.hash_delete(my_mem);
+  bool sched_up = sched_before.member(current);
 
-  //remove current_store from its current position in the memmory graph
+  // remove current_store from its current position in the memmory graph
   for (DUIterator i = current->outs(); current->has_out(i); i++) {
     Node* use = current->out(i);
     if (use->is_Mem()) {
       assert(use->in(MemNode::Memory) == current, "must be");
-      _igvn.rehash_node_delayed(use);
       if (use == prev) { // connect prev to my_mem
-        use->set_req(MemNode::Memory, my_mem);
+          _igvn.replace_input_of(use, MemNode::Memory, my_mem);
+          --i; //deleted this edge; rescan position
       } else if (sched_before.member(use)) {
-        _igvn.hash_delete(uip);
-        use->set_req(MemNode::Memory, uip);
+        if (!sched_up) { // Will be moved together with current
+          _igvn.replace_input_of(use, MemNode::Memory, uip);
+          --i; //deleted this edge; rescan position
+        }
       } else {
-        _igvn.hash_delete(lip);
-        use->set_req(MemNode::Memory, lip);
+        if (sched_up) { // Will be moved together with current
+          _igvn.replace_input_of(use, MemNode::Memory, lip);
+          --i; //deleted this edge; rescan position
+        }
       }
-      --i; //deleted this edge; rescan position
     }
   }
 
-  bool sched_up = sched_before.member(current);
   Node *insert_pt =  sched_up ?  uip : lip;
-  _igvn.hash_delete(insert_pt);
 
   // all uses of insert_pt's memory state should use current's instead
   for (DUIterator i = insert_pt->outs(); insert_pt->has_out(i); i++) {
@@ -988,7 +1162,7 @@
   }
 
   //connect current to insert_pt
-  current->set_req(MemNode::Memory, insert_pt);
+  _igvn.replace_input_of(current, MemNode::Memory, insert_pt);
 }
 
 //------------------------------co_locate_pack----------------------------------
@@ -1025,7 +1199,7 @@
         if (use->is_Mem() && use != previous)
           memops.push(use);
       }
-      if(current == first) break;
+      if (current == first) break;
       previous = current;
       current  = current->in(MemNode::Memory)->as_Mem();
     }
@@ -1038,27 +1212,37 @@
           Node *s2 = memops.at(j);
           if (!independent(s1, s2)) {
             if (in_pack(s2, pk) || schedule_before_pack.member(s2)) {
-              schedule_before_pack.push(s1); //s1 must be scheduled before
+              schedule_before_pack.push(s1); // s1 must be scheduled before
               Node_List* mem_pk = my_pack(s1);
               if (mem_pk != NULL) {
                 for (uint ii = 0; ii < mem_pk->size(); ii++) {
-                  Node* s = mem_pk->at(ii); // follow partner
+                  Node* s = mem_pk->at(ii);  // follow partner
                   if (memops.member(s) && !schedule_before_pack.member(s))
                     schedule_before_pack.push(s);
                 }
               }
+              break;
             }
           }
         }
       }
     }
 
+    Node*    upper_insert_pt = first->in(MemNode::Memory);
+    // Following code moves loads connected to upper_insert_pt below aliased stores.
+    // Collect such loads here and reconnect them back to upper_insert_pt later.
+    memops.clear();
+    for (DUIterator i = upper_insert_pt->outs(); upper_insert_pt->has_out(i); i++) {
+      Node* use = upper_insert_pt->out(i);
+      if (!use->is_Store())
+        memops.push(use);
+    }
+
     MemNode* lower_insert_pt = last;
-    Node*    upper_insert_pt = first->in(MemNode::Memory);
     previous                 = last; //previous store in pk
     current                  = last->in(MemNode::Memory)->as_Mem();
 
-    //start scheduling from "last" to "first"
+    // start scheduling from "last" to "first"
     while (true) {
       assert(in_bb(current), "stay in block");
       assert(in_pack(previous, pk), "previous stays in pack");
@@ -1066,16 +1250,13 @@
 
       if (in_pack(current, pk)) {
         // Forward users of my memory state (except "previous) to my input memory state
-        _igvn.hash_delete(current);
         for (DUIterator i = current->outs(); current->has_out(i); i++) {
           Node* use = current->out(i);
           if (use->is_Mem() && use != previous) {
             assert(use->in(MemNode::Memory) == current, "must be");
             if (schedule_before_pack.member(use)) {
-              _igvn.hash_delete(upper_insert_pt);
               _igvn.replace_input_of(use, MemNode::Memory, upper_insert_pt);
             } else {
-              _igvn.hash_delete(lower_insert_pt);
               _igvn.replace_input_of(use, MemNode::Memory, lower_insert_pt);
             }
             --i; // deleted this edge; rescan position
@@ -1089,6 +1270,14 @@
       if (current == first) break;
       current = my_mem->as_Mem();
     } // end while
+
+    // Reconnect loads back to upper_insert_pt.
+    for (uint i = 0; i < memops.size(); i++) {
+      Node *ld = memops.at(i);
+      if (ld->in(MemNode::Memory) != upper_insert_pt) {
+        _igvn.replace_input_of(ld, MemNode::Memory, upper_insert_pt);
+      }
+    }
   } else if (pk->at(0)->is_Load()) { //load
     // all loads in the pack should have the same memory state. By default,
     // we use the memory state of the last load. However, if any load could
@@ -1149,35 +1338,30 @@
       Node* vn = NULL;
       Node* low_adr = p->at(0);
       Node* first   = executed_first(p);
+      int   opc = n->Opcode();
       if (n->is_Load()) {
-        int   opc = n->Opcode();
         Node* ctl = n->in(MemNode::Control);
         Node* mem = first->in(MemNode::Memory);
         Node* adr = low_adr->in(MemNode::Address);
         const TypePtr* atyp = n->adr_type();
-        vn = VectorLoadNode::make(_phase->C, opc, ctl, mem, adr, atyp, vlen);
-
+        vn = LoadVectorNode::make(_phase->C, opc, ctl, mem, adr, atyp, vlen, velt_basic_type(n));
       } else if (n->is_Store()) {
         // Promote value to be stored to vector
         Node* val = vector_opd(p, MemNode::ValueIn);
-
-        int   opc = n->Opcode();
         Node* ctl = n->in(MemNode::Control);
         Node* mem = first->in(MemNode::Memory);
         Node* adr = low_adr->in(MemNode::Address);
         const TypePtr* atyp = n->adr_type();
-        vn = VectorStoreNode::make(_phase->C, opc, ctl, mem, adr, atyp, val, vlen);
-
+        vn = StoreVectorNode::make(_phase->C, opc, ctl, mem, adr, atyp, val, vlen);
       } else if (n->req() == 3) {
         // Promote operands to vector
         Node* in1 = vector_opd(p, 1);
         Node* in2 = vector_opd(p, 2);
-        vn = VectorNode::make(_phase->C, n->Opcode(), in1, in2, vlen, velt_type(n));
-
+        vn = VectorNode::make(_phase->C, opc, in1, in2, vlen, velt_basic_type(n));
       } else {
         ShouldNotReachHere();
       }
-
+      assert(vn != NULL, "sanity");
       _phase->_igvn.register_new_node_with_optimizer(vn);
       _phase->set_ctrl(vn, _phase->get_ctrl(p->at(0)));
       for (uint j = 0; j < p->size(); j++) {
@@ -1185,6 +1369,12 @@
         _igvn.replace_node(pm, vn);
       }
       _igvn._worklist.push(vn);
+#ifdef ASSERT
+      if (TraceNewVectors) {
+        tty->print("new Vector node: ");
+        vn->dump();
+      }
+#endif
     }
   }
 }
@@ -1207,10 +1397,10 @@
   }
 
   if (same_opd) {
-    if (opd->is_Vector() || opd->is_VectorLoad()) {
+    if (opd->is_Vector() || opd->is_LoadVector()) {
       return opd; // input is matching vector
     }
-    assert(!opd->is_VectorStore(), "such vector is not expected here");
+    assert(!opd->is_StoreVector(), "such vector is not expected here");
     // Convert scalar input to vector with the same number of elements as
     // p0's vector. Use p0's type because size of operand's container in
     // vector should match p0's size regardless operand's size.
@@ -1219,12 +1409,18 @@
 
     _phase->_igvn.register_new_node_with_optimizer(vn);
     _phase->set_ctrl(vn, _phase->get_ctrl(opd));
+#ifdef ASSERT
+    if (TraceNewVectors) {
+      tty->print("new Vector node: ");
+      vn->dump();
+    }
+#endif
     return vn;
   }
 
   // Insert pack operation
-  const Type* p0_t = velt_type(p0);
-  PackNode* pk = PackNode::make(_phase->C, opd, p0_t);
+  BasicType bt = velt_basic_type(p0);
+  PackNode* pk = PackNode::make(_phase->C, opd, vlen, bt);
   DEBUG_ONLY( const BasicType opd_bt = opd->bottom_type()->basic_type(); )
 
   for (uint i = 1; i < vlen; i++) {
@@ -1232,10 +1428,16 @@
     Node* in = pi->in(opd_idx);
     assert(my_pack(in) == NULL, "Should already have been unpacked");
     assert(opd_bt == in->bottom_type()->basic_type(), "all same type");
-    pk->add_opd(in);
+    pk->add_opd(i, in);
   }
   _phase->_igvn.register_new_node_with_optimizer(pk);
   _phase->set_ctrl(pk, _phase->get_ctrl(opd));
+#ifdef ASSERT
+    if (TraceNewVectors) {
+      tty->print("new Vector node: ");
+      pk->dump();
+    }
+#endif
   return pk;
 }
 
@@ -1273,16 +1475,15 @@
     // Insert extract operation
     _igvn.hash_delete(def);
     int def_pos = alignment(def) / data_size(def);
-    const Type* def_t = velt_type(def);
 
-    Node* ex = ExtractNode::make(_phase->C, def, def_pos, def_t);
+    Node* ex = ExtractNode::make(_phase->C, def, def_pos, velt_basic_type(def));
     _phase->_igvn.register_new_node_with_optimizer(ex);
     _phase->set_ctrl(ex, _phase->get_ctrl(def));
     _igvn.replace_input_of(use, idx, ex);
     _igvn._worklist.push(def);
 
     bb_insert_after(ex, bb_idx(def));
-    set_velt_type(ex, def_t);
+    set_velt_type(ex, velt_type(def));
   }
 }
 
@@ -1509,10 +1710,7 @@
   // Initial type
   for (int i = 0; i < _block.length(); i++) {
     Node* n = _block.at(i);
-    const Type* t  = n->is_Mem() ? Type::get_const_basic_type(n->as_Mem()->memory_type())
-                                 : _igvn.type(n);
-    const Type* vt = container_type(t);
-    set_velt_type(n, vt);
+    set_velt_type(n, container_type(n));
   }
 
   // Propagate narrowed type backwards through operations
@@ -1543,7 +1741,7 @@
             bool same_type = true;
             for (DUIterator_Fast kmax, k = in->fast_outs(kmax); k < kmax; k++) {
               Node *use = in->fast_out(k);
-              if (!in_bb(use) || velt_type(use) != vt) {
+              if (!in_bb(use) || !same_velt_type(use, n)) {
                 same_type = false;
                 break;
               }
@@ -1575,20 +1773,24 @@
   if (!p.valid()) {
     return bottom_align;
   }
+  int vw = vector_width_in_bytes(s);
+  if (vw < 2) {
+    return bottom_align; // No vectors for this type
+  }
   int offset  = p.offset_in_bytes();
   offset     += iv_adjust_in_bytes;
-  int off_rem = offset % vector_width_in_bytes();
-  int off_mod = off_rem >= 0 ? off_rem : off_rem + vector_width_in_bytes();
+  int off_rem = offset % vw;
+  int off_mod = off_rem >= 0 ? off_rem : off_rem + vw;
   return off_mod;
 }
 
 //---------------------------container_type---------------------------
 // Smallest type containing range of values
-const Type* SuperWord::container_type(const Type* t) {
-  const Type* tp = t->make_ptr();
-  if (tp && tp->isa_aryptr()) {
-    t = tp->is_aryptr()->elem();
+const Type* SuperWord::container_type(Node* n) {
+  if (n->is_Mem()) {
+    return Type::get_const_basic_type(n->as_Mem()->memory_type());
   }
+  const Type* t = _igvn.type(n);
   if (t->basic_type() == T_INT) {
     if (t->higher_equal(TypeInt::BOOL))  return TypeInt::BOOL;
     if (t->higher_equal(TypeInt::BYTE))  return TypeInt::BYTE;
@@ -1599,11 +1801,22 @@
   return t;
 }
 
+bool SuperWord::same_velt_type(Node* n1, Node* n2) {
+  const Type* vt1 = velt_type(n1);
+  const Type* vt2 = velt_type(n1);
+  if (vt1->basic_type() == T_INT && vt2->basic_type() == T_INT) {
+    // Compare vectors element sizes for integer types.
+    return data_size(n1) == data_size(n2);
+  }
+  return vt1 == vt2;
+}
+
 //-------------------------vector_opd_range-----------------------
 // (Start, end] half-open range defining which operands are vector
 void SuperWord::vector_opd_range(Node* n, uint* start, uint* end) {
   switch (n->Opcode()) {
-  case Op_LoadB:   case Op_LoadUS:
+  case Op_LoadB:   case Op_LoadUB:
+  case Op_LoadS:   case Op_LoadUS:
   case Op_LoadI:   case Op_LoadL:
   case Op_LoadF:   case Op_LoadD:
   case Op_LoadP:
@@ -1721,6 +1934,7 @@
   assert(orig_limit != NULL && _igvn.type(orig_limit) != Type::TOP, "");
 
   SWPointer align_to_ref_p(align_to_ref, this);
+  assert(align_to_ref_p.valid(), "sanity");
 
   // Given:
   //     lim0 == original pre loop limit
@@ -1773,10 +1987,12 @@
   //     N = (V - (e - lim0)) % V
   //     lim = lim0 - (V - (e - lim0)) % V
 
+  int vw = vector_width_in_bytes(align_to_ref);
   int stride   = iv_stride();
   int scale    = align_to_ref_p.scale_in_bytes();
   int elt_size = align_to_ref_p.memory_size();
-  int v_align  = vector_width_in_bytes() / elt_size;
+  int v_align  = vw / elt_size;
+  assert(v_align > 1, "sanity");
   int k        = align_to_ref_p.offset_in_bytes() / elt_size;
 
   Node *kn   = _igvn.intcon(k);
@@ -1796,6 +2012,25 @@
     _phase->_igvn.register_new_node_with_optimizer(e);
     _phase->set_ctrl(e, pre_ctrl);
   }
+  if (vw > ObjectAlignmentInBytes) {
+    // incorporate base e +/- base && Mask >>> log2(elt)
+    Node* mask = _igvn.MakeConX(~(-1 << exact_log2(vw)));
+    Node* xbase = new(_phase->C, 2) CastP2XNode(NULL, align_to_ref_p.base());
+    _phase->_igvn.register_new_node_with_optimizer(xbase);
+    Node* masked_xbase  = new (_phase->C, 3) AndXNode(xbase, mask);
+    _phase->_igvn.register_new_node_with_optimizer(masked_xbase);
+#ifdef _LP64
+    masked_xbase  = new (_phase->C, 2) ConvL2INode(masked_xbase);
+    _phase->_igvn.register_new_node_with_optimizer(masked_xbase);
+#endif
+    Node* log2_elt = _igvn.intcon(exact_log2(elt_size));
+    Node* bref     = new (_phase->C, 3) URShiftINode(masked_xbase, log2_elt);
+    _phase->_igvn.register_new_node_with_optimizer(bref);
+    _phase->set_ctrl(bref, pre_ctrl);
+    e = new (_phase->C, 3) AddINode(e, bref);
+    _phase->_igvn.register_new_node_with_optimizer(e);
+    _phase->set_ctrl(e, pre_ctrl);
+  }
 
   // compute e +/- lim0
   if (scale < 0) {
--- a/hotspot/src/share/vm/opto/superword.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/superword.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -264,8 +264,14 @@
                                      _iv = lp->as_CountedLoop()->phi()->as_Phi(); }
   int      iv_stride()             { return lp()->as_CountedLoop()->stride_con(); }
 
-  int vector_width_in_bytes()      { return Matcher::vector_width_in_bytes(); }
-
+  int vector_width(Node* n) {
+    BasicType bt = velt_basic_type(n);
+    return MIN2(ABS(iv_stride()), Matcher::max_vector_size(bt));
+  }
+  int vector_width_in_bytes(Node* n) {
+    BasicType bt = velt_basic_type(n);
+    return vector_width(n)*type2aelembytes(bt);
+  }
   MemNode* align_to_ref()            { return _align_to_ref; }
   void  set_align_to_ref(MemNode* m) { _align_to_ref = m; }
 
@@ -298,7 +304,9 @@
 
   // vector element type
   const Type* velt_type(Node* n)             { return _node_info.adr_at(bb_idx(n))->_velt_type; }
+  BasicType velt_basic_type(Node* n)         { return velt_type(n)->array_element_basic_type(); }
   void set_velt_type(Node* n, const Type* t) { int i = bb_idx(n); grow_node_info(i); _node_info.adr_at(i)->_velt_type = t; }
+  bool same_velt_type(Node* n1, Node* n2);
 
   // my_pack
   Node_List* my_pack(Node* n)                { return !in_bb(n) ? NULL : _node_info.adr_at(bb_idx(n))->_my_pack; }
@@ -311,7 +319,9 @@
   // Find the adjacent memory references and create pack pairs for them.
   void find_adjacent_refs();
   // Find a memory reference to align the loop induction variable to.
-  void find_align_to_ref(Node_List &memops);
+  MemNode* find_align_to_ref(Node_List &memops);
+  // Calculate loop's iv adjustment for this memory ops.
+  int get_iv_adjustment(MemNode* mem);
   // Can the preloop align the reference to position zero in the vector?
   bool ref_is_alignable(SWPointer& p);
   // Construct dependency graph.
@@ -394,7 +404,7 @@
   // (Start, end] half-open range defining which operands are vector
   void vector_opd_range(Node* n, uint* start, uint* end);
   // Smallest type containing range of values
-  static const Type* container_type(const Type* t);
+  const Type* container_type(Node* n);
   // Adjust pre-loop limit so that in main loop, a load/store reference
   // to align_to_ref will be a position zero in the vector.
   void align_initial_loop_index(MemNode* align_to_ref);
@@ -462,6 +472,7 @@
 
   Node* base()            { return _base; }
   Node* adr()             { return _adr; }
+  MemNode* mem()          { return _mem; }
   int   scale_in_bytes()  { return _scale; }
   Node* invar()           { return _invar; }
   bool  negate_invar()    { return _negate_invar; }
--- a/hotspot/src/share/vm/opto/type.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/type.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -60,6 +60,10 @@
 
   T_ILLEGAL,    // Tuple
   T_ARRAY,      // Array
+  T_ILLEGAL,    // VectorS
+  T_ILLEGAL,    // VectorD
+  T_ILLEGAL,    // VectorX
+  T_ILLEGAL,    // VectorY
 
   T_ADDRESS,    // AnyPtr   // shows up in factory methods for NULL_PTR
   T_ADDRESS,    // RawPtr
@@ -414,6 +418,24 @@
   // get_zero_type() should not happen for T_CONFLICT
   _zero_type[T_CONFLICT]= NULL;
 
+  // Vector predefined types, it needs initialized _const_basic_type[].
+  if (Matcher::vector_size_supported(T_BYTE,4)) {
+    TypeVect::VECTS = TypeVect::make(T_BYTE,4);
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,2)) {
+    TypeVect::VECTD = TypeVect::make(T_FLOAT,2);
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,4)) {
+    TypeVect::VECTX = TypeVect::make(T_FLOAT,4);
+  }
+  if (Matcher::vector_size_supported(T_FLOAT,8)) {
+    TypeVect::VECTY = TypeVect::make(T_FLOAT,8);
+  }
+  mreg2type[Op_VecS] = TypeVect::VECTS;
+  mreg2type[Op_VecD] = TypeVect::VECTD;
+  mreg2type[Op_VecX] = TypeVect::VECTX;
+  mreg2type[Op_VecY] = TypeVect::VECTY;
+
   // Restore working type arena.
   current->set_type_arena(save);
   current->set_type_dict(NULL);
@@ -668,6 +690,10 @@
 
   Bad,          // Tuple - handled in v-call
   Bad,          // Array - handled in v-call
+  Bad,          // VectorS - handled in v-call
+  Bad,          // VectorD - handled in v-call
+  Bad,          // VectorX - handled in v-call
+  Bad,          // VectorY - handled in v-call
 
   Bad,          // AnyPtr - handled in v-call
   Bad,          // RawPtr - handled in v-call
@@ -728,8 +754,8 @@
 //------------------------------data-------------------------------------------
 const char * const Type::msg[Type::lastype] = {
   "bad","control","top","int:","long:","half", "narrowoop:",
-  "tuple:", "aryptr",
-  "anyptr:", "rawptr:", "java:", "inst:", "ary:", "klass:",
+  "tuple:", "array:", "vectors:", "vectord:", "vectorx:", "vectory:",
+  "anyptr:", "rawptr:", "java:", "inst:", "aryptr:", "klass:",
   "func", "abIO", "return_address", "memory",
   "float_top", "ftcon:", "float",
   "double_top", "dblcon:", "double",
@@ -790,7 +816,7 @@
 //------------------------------isa_oop_ptr------------------------------------
 // Return true if type is an oop pointer type.  False for raw pointers.
 static char isa_oop_ptr_tbl[Type::lastype] = {
-  0,0,0,0,0,0,0/*narrowoop*/,0/*tuple*/, 0/*ary*/,
+  0,0,0,0,0,0,0/*narrowoop*/,0/*tuple*/, 0/*array*/, 0, 0, 0, 0/*vector*/,
   0/*anyptr*/,0/*rawptr*/,1/*OopPtr*/,1/*InstPtr*/,1/*AryPtr*/,1/*KlassPtr*/,
   0/*func*/,0,0/*return_address*/,0,
   /*floats*/0,0,0, /*doubles*/0,0,0,
@@ -1926,6 +1952,121 @@
   return false;
 }
 
+//==============================TypeVect=======================================
+// Convenience common pre-built types.
+const TypeVect *TypeVect::VECTS = NULL; //  32-bit vectors
+const TypeVect *TypeVect::VECTD = NULL; //  64-bit vectors
+const TypeVect *TypeVect::VECTX = NULL; // 128-bit vectors
+const TypeVect *TypeVect::VECTY = NULL; // 256-bit vectors
+
+//------------------------------make-------------------------------------------
+const TypeVect* TypeVect::make(const Type *elem, uint length) {
+  BasicType elem_bt = elem->array_element_basic_type();
+  assert(is_java_primitive(elem_bt), "only primitive types in vector");
+  assert(length > 1 && is_power_of_2(length), "vector length is power of 2");
+  assert(Matcher::vector_size_supported(elem_bt, length), "length in range");
+  int size = length * type2aelembytes(elem_bt);
+  switch (Matcher::vector_ideal_reg(size)) {
+  case Op_VecS:
+    return (TypeVect*)(new TypeVectS(elem, length))->hashcons();
+  case Op_VecD:
+  case Op_RegD:
+    return (TypeVect*)(new TypeVectD(elem, length))->hashcons();
+  case Op_VecX:
+    return (TypeVect*)(new TypeVectX(elem, length))->hashcons();
+  case Op_VecY:
+    return (TypeVect*)(new TypeVectY(elem, length))->hashcons();
+  }
+ ShouldNotReachHere();
+  return NULL;
+}
+
+//------------------------------meet-------------------------------------------
+// Compute the MEET of two types.  It returns a new Type object.
+const Type *TypeVect::xmeet( const Type *t ) const {
+  // Perform a fast test for common case; meeting the same types together.
+  if( this == t ) return this;  // Meeting same type-rep?
+
+  // Current "this->_base" is Vector
+  switch (t->base()) {          // switch on original type
+
+  case Bottom:                  // Ye Olde Default
+    return t;
+
+  default:                      // All else is a mistake
+    typerr(t);
+
+  case VectorS:
+  case VectorD:
+  case VectorX:
+  case VectorY: {                // Meeting 2 vectors?
+    const TypeVect* v = t->is_vect();
+    assert(  base() == v->base(), "");
+    assert(length() == v->length(), "");
+    assert(element_basic_type() == v->element_basic_type(), "");
+    return TypeVect::make(_elem->xmeet(v->_elem), _length);
+  }
+  case Top:
+    break;
+  }
+  return this;
+}
+
+//------------------------------xdual------------------------------------------
+// Dual: compute field-by-field dual
+const Type *TypeVect::xdual() const {
+  return new TypeVect(base(), _elem->dual(), _length);
+}
+
+//------------------------------eq---------------------------------------------
+// Structural equality check for Type representations
+bool TypeVect::eq(const Type *t) const {
+  const TypeVect *v = t->is_vect();
+  return (_elem == v->_elem) && (_length == v->_length);
+}
+
+//------------------------------hash-------------------------------------------
+// Type-specific hashing function.
+int TypeVect::hash(void) const {
+  return (intptr_t)_elem + (intptr_t)_length;
+}
+
+//------------------------------singleton--------------------------------------
+// TRUE if Type is a singleton type, FALSE otherwise.   Singletons are simple
+// constants (Ldi nodes).  Vector is singleton if all elements are the same
+// constant value (when vector is created with Replicate code).
+bool TypeVect::singleton(void) const {
+// There is no Con node for vectors yet.
+//  return _elem->singleton();
+  return false;
+}
+
+bool TypeVect::empty(void) const {
+  return _elem->empty();
+}
+
+//------------------------------dump2------------------------------------------
+#ifndef PRODUCT
+void TypeVect::dump2(Dict &d, uint depth, outputStream *st) const {
+  switch (base()) {
+  case VectorS:
+    st->print("vectors["); break;
+  case VectorD:
+    st->print("vectord["); break;
+  case VectorX:
+    st->print("vectorx["); break;
+  case VectorY:
+    st->print("vectory["); break;
+  default:
+    ShouldNotReachHere();
+  }
+  st->print("%d]:{", _length);
+  _elem->dump2(d, depth, st);
+  st->print("}");
+}
+#endif
+
+
 //=============================================================================
 // Convenience common pre-built types.
 const TypePtr *TypePtr::NULL_PTR;
@@ -2472,18 +2613,26 @@
 //------------------------------make_from_constant-----------------------------
 // Make a java pointer from an oop constant
 const TypeOopPtr* TypeOopPtr::make_from_constant(ciObject* o, bool require_constant) {
-  if (o->is_method_data() || o->is_method() || o->is_cpcache()) {
+  if (o->is_method_data() || o->is_method()) {
     // Treat much like a typeArray of bytes, like below, but fake the type...
-    const Type* etype = (Type*)get_const_basic_type(T_BYTE);
+    const BasicType bt = T_BYTE;
+    const Type* etype = get_const_basic_type(bt);
     const TypeAry* arr0 = TypeAry::make(etype, TypeInt::POS);
-    ciKlass *klass = ciTypeArrayKlass::make((BasicType) T_BYTE);
-    assert(o->can_be_constant(), "method data oops should be tenured");
-    const TypeAryPtr* arr = TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
-    return arr;
+    ciKlass* klass = ciArrayKlass::make(ciType::make(bt));
+    assert(o->can_be_constant(), "should be tenured");
+    return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
+  } else if (o->is_cpcache()) {
+    // Treat much like a objArray, like below, but fake the type...
+    const BasicType bt = T_OBJECT;
+    const Type* etype = get_const_basic_type(bt);
+    const TypeAry* arr0 = TypeAry::make(etype, TypeInt::POS);
+    ciKlass* klass = ciArrayKlass::make(ciType::make(bt));
+    assert(o->can_be_constant(), "should be tenured");
+    return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
   } else {
     assert(o->is_java_object(), "must be java language object");
     assert(!o->is_null_object(), "null object not yet handled here.");
-    ciKlass *klass = o->klass();
+    ciKlass* klass = o->klass();
     if (klass->is_instance_klass()) {
       // Element is an instance
       if (require_constant) {
@@ -2494,8 +2643,7 @@
       return TypeInstPtr::make(o);
     } else if (klass->is_obj_array_klass()) {
       // Element is an object array. Recursively call ourself.
-      const Type *etype =
-        TypeOopPtr::make_from_klass_raw(klass->as_obj_array_klass()->element_klass());
+      const Type *etype = make_from_klass_raw(klass->as_obj_array_klass()->element_klass());
       const TypeAry* arr0 = TypeAry::make(etype, TypeInt::make(o->as_array()->length()));
       // We used to pass NotNull in here, asserting that the sub-arrays
       // are all not-null.  This is not true in generally, as code can
@@ -2505,12 +2653,10 @@
       } else if (!o->should_be_constant()) {
         return TypeAryPtr::make(TypePtr::NotNull, arr0, klass, true, 0);
       }
-      const TypeAryPtr* arr = TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
-      return arr;
+      return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
     } else if (klass->is_type_array_klass()) {
       // Element is an typeArray
-      const Type* etype =
-        (Type*)get_const_basic_type(klass->as_type_array_klass()->element_type());
+      const Type* etype = get_const_basic_type(klass->as_type_array_klass()->element_type());
       const TypeAry* arr0 = TypeAry::make(etype, TypeInt::make(o->as_array()->length()));
       // We used to pass NotNull in here, asserting that the array pointer
       // is not-null. That was not true in general.
@@ -2519,12 +2665,11 @@
       } else if (!o->should_be_constant()) {
         return TypeAryPtr::make(TypePtr::NotNull, arr0, klass, true, 0);
       }
-      const TypeAryPtr* arr = TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
-      return arr;
+      return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
     }
   }
 
-  ShouldNotReachHere();
+  fatal("unhandled object type");
   return NULL;
 }
 
@@ -4140,7 +4285,7 @@
 // Print a 'flattened' signature
 static const char * const flat_type_msg[Type::lastype] = {
   "bad","control","top","int","long","_", "narrowoop",
-  "tuple:", "array:",
+  "tuple:", "array:", "vectors:", "vectord:", "vectorx:", "vectory:",
   "ptr", "rawptr", "ptr", "ptr", "ptr", "ptr",
   "func", "abIO", "return_address", "mem",
   "float_top", "ftcon:", "flt",
--- a/hotspot/src/share/vm/opto/type.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/type.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -51,6 +51,11 @@
 class   TypeNarrowOop;
 class   TypeAry;
 class   TypeTuple;
+class   TypeVect;
+class     TypeVectS;
+class     TypeVectD;
+class     TypeVectX;
+class     TypeVectY;
 class   TypePtr;
 class     TypeRawPtr;
 class     TypeOopPtr;
@@ -78,6 +83,10 @@
 
     Tuple,                      // Method signature or object layout
     Array,                      // Array types
+    VectorS,                    //  32bit Vector types
+    VectorD,                    //  64bit Vector types
+    VectorX,                    // 128bit Vector types
+    VectorY,                    // 256bit Vector types
 
     AnyPtr,                     // Any old raw, klass, inst, or array pointer
     RawPtr,                     // Raw (non-oop) pointers
@@ -222,6 +231,8 @@
   const TypeF      *isa_float_constant() const;  // Returns NULL if not a FloatCon
   const TypeTuple  *is_tuple() const;            // Collection of fields, NOT a pointer
   const TypeAry    *is_ary() const;              // Array, NOT array pointer
+  const TypeVect   *is_vect() const;             // Vector
+  const TypeVect   *isa_vect() const;            // Returns NULL if not a Vector
   const TypePtr    *is_ptr() const;              // Asserts it is a ptr type
   const TypePtr    *isa_ptr() const;             // Returns NULL if not ptr type
   const TypeRawPtr *isa_rawptr() const;          // NOT Java oop
@@ -574,6 +585,69 @@
 #endif
 };
 
+//------------------------------TypeVect---------------------------------------
+// Class of Vector Types
+class TypeVect : public Type {
+  const Type*   _elem;  // Vector's element type
+  const uint  _length;  // Elements in vector (power of 2)
+
+protected:
+  TypeVect(TYPES t, const Type* elem, uint length) : Type(t),
+    _elem(elem), _length(length) {}
+
+public:
+  const Type* element_type() const { return _elem; }
+  BasicType element_basic_type() const { return _elem->array_element_basic_type(); }
+  uint length() const { return _length; }
+  uint length_in_bytes() const {
+   return _length * type2aelembytes(element_basic_type());
+  }
+
+  virtual bool eq(const Type *t) const;
+  virtual int  hash() const;             // Type specific hashing
+  virtual bool singleton(void) const;    // TRUE if type is a singleton
+  virtual bool empty(void) const;        // TRUE if type is vacuous
+
+  static const TypeVect *make(const BasicType elem_bt, uint length) {
+    // Use bottom primitive type.
+    return make(get_const_basic_type(elem_bt), length);
+  }
+  // Used directly by Replicate nodes to construct singleton vector.
+  static const TypeVect *make(const Type* elem, uint length);
+
+  virtual const Type *xmeet( const Type *t) const;
+  virtual const Type *xdual() const;     // Compute dual right now.
+
+  static const TypeVect *VECTS;
+  static const TypeVect *VECTD;
+  static const TypeVect *VECTX;
+  static const TypeVect *VECTY;
+
+#ifndef PRODUCT
+  virtual void dump2(Dict &d, uint, outputStream *st) const; // Specialized per-Type dumping
+#endif
+};
+
+class TypeVectS : public TypeVect {
+  friend class TypeVect;
+  TypeVectS(const Type* elem, uint length) : TypeVect(VectorS, elem, length) {}
+};
+
+class TypeVectD : public TypeVect {
+  friend class TypeVect;
+  TypeVectD(const Type* elem, uint length) : TypeVect(VectorD, elem, length) {}
+};
+
+class TypeVectX : public TypeVect {
+  friend class TypeVect;
+  TypeVectX(const Type* elem, uint length) : TypeVect(VectorX, elem, length) {}
+};
+
+class TypeVectY : public TypeVect {
+  friend class TypeVect;
+  TypeVectY(const Type* elem, uint length) : TypeVect(VectorY, elem, length) {}
+};
+
 //------------------------------TypePtr----------------------------------------
 // Class of machine Pointer Types: raw data, instances or arrays.
 // If the _base enum is AnyPtr, then this refers to all of the above.
@@ -1113,6 +1187,15 @@
   return (TypeAry*)this;
 }
 
+inline const TypeVect *Type::is_vect() const {
+  assert( _base >= VectorS && _base <= VectorY, "Not a Vector" );
+  return (TypeVect*)this;
+}
+
+inline const TypeVect *Type::isa_vect() const {
+  return (_base >= VectorS && _base <= VectorY) ? (TypeVect*)this : NULL;
+}
+
 inline const TypePtr *Type::is_ptr() const {
   // AnyPtr is the first Ptr and KlassPtr the last, with no non-ptrs between.
   assert(_base >= AnyPtr && _base <= KlassPtr, "Not a pointer");
--- a/hotspot/src/share/vm/opto/vectornode.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/vectornode.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,147 +28,16 @@
 
 //------------------------------VectorNode--------------------------------------
 
-// Return vector type for an element type and vector length.
-const Type* VectorNode::vect_type(BasicType elt_bt, uint len) {
-  assert(len <= VectorNode::max_vlen(elt_bt), "len in range");
-  switch(elt_bt) {
-  case T_BOOLEAN:
-  case T_BYTE:
-    switch(len) {
-    case 2:  return TypeInt::CHAR;
-    case 4:  return TypeInt::INT;
-    case 8:  return TypeLong::LONG;
-    }
-    break;
-  case T_CHAR:
-  case T_SHORT:
-    switch(len) {
-    case 2:  return TypeInt::INT;
-    case 4:  return TypeLong::LONG;
-    }
-    break;
-  case T_INT:
-    switch(len) {
-    case 2:  return TypeLong::LONG;
-    }
-    break;
-  case T_LONG:
-    break;
-  case T_FLOAT:
-    switch(len) {
-    case 2:  return Type::DOUBLE;
-    }
-    break;
-  case T_DOUBLE:
-    break;
-  }
-  ShouldNotReachHere();
-  return NULL;
-}
-
-// Scalar promotion
-VectorNode* VectorNode::scalar2vector(Compile* C, Node* s, uint vlen, const Type* opd_t) {
-  BasicType bt = opd_t->array_element_basic_type();
-  assert(vlen <= VectorNode::max_vlen(bt), "vlen in range");
-  switch (bt) {
-  case T_BOOLEAN:
-  case T_BYTE:
-    if (vlen == 16) return new (C, 2) Replicate16BNode(s);
-    if (vlen ==  8) return new (C, 2) Replicate8BNode(s);
-    if (vlen ==  4) return new (C, 2) Replicate4BNode(s);
-    break;
-  case T_CHAR:
-    if (vlen == 8) return new (C, 2) Replicate8CNode(s);
-    if (vlen == 4) return new (C, 2) Replicate4CNode(s);
-    if (vlen == 2) return new (C, 2) Replicate2CNode(s);
-    break;
-  case T_SHORT:
-    if (vlen == 8) return new (C, 2) Replicate8SNode(s);
-    if (vlen == 4) return new (C, 2) Replicate4SNode(s);
-    if (vlen == 2) return new (C, 2) Replicate2SNode(s);
-    break;
-  case T_INT:
-    if (vlen == 4) return new (C, 2) Replicate4INode(s);
-    if (vlen == 2) return new (C, 2) Replicate2INode(s);
-    break;
-  case T_LONG:
-    if (vlen == 2) return new (C, 2) Replicate2LNode(s);
-    break;
-  case T_FLOAT:
-    if (vlen == 4) return new (C, 2) Replicate4FNode(s);
-    if (vlen == 2) return new (C, 2) Replicate2FNode(s);
-    break;
-  case T_DOUBLE:
-    if (vlen == 2) return new (C, 2) Replicate2DNode(s);
-    break;
-  }
-  ShouldNotReachHere();
-  return NULL;
-}
-
-// Return initial Pack node. Additional operands added with add_opd() calls.
-PackNode* PackNode::make(Compile* C, Node* s, const Type* opd_t) {
-  BasicType bt = opd_t->array_element_basic_type();
-  switch (bt) {
-  case T_BOOLEAN:
-  case T_BYTE:
-    return new (C, 2) PackBNode(s);
-  case T_CHAR:
-    return new (C, 2) PackCNode(s);
-  case T_SHORT:
-    return new (C, 2) PackSNode(s);
-  case T_INT:
-    return new (C, 2) PackINode(s);
-  case T_LONG:
-    return new (C, 2) PackLNode(s);
-  case T_FLOAT:
-    return new (C, 2) PackFNode(s);
-  case T_DOUBLE:
-    return new (C, 2) PackDNode(s);
-  }
-  ShouldNotReachHere();
-  return NULL;
-}
-
-// Create a binary tree form for Packs. [lo, hi) (half-open) range
-Node* PackNode::binaryTreePack(Compile* C, int lo, int hi) {
-  int ct = hi - lo;
-  assert(is_power_of_2(ct), "power of 2");
-  int mid = lo + ct/2;
-  Node* n1 = ct == 2 ? in(lo)   : binaryTreePack(C, lo,  mid);
-  Node* n2 = ct == 2 ? in(lo+1) : binaryTreePack(C, mid, hi );
-  int rslt_bsize = ct * type2aelembytes(elt_basic_type());
-  if (bottom_type()->is_floatingpoint()) {
-    switch (rslt_bsize) {
-    case  8: return new (C, 3) PackFNode(n1, n2);
-    case 16: return new (C, 3) PackDNode(n1, n2);
-    }
-  } else {
-    assert(bottom_type()->isa_int() || bottom_type()->isa_long(), "int or long");
-    switch (rslt_bsize) {
-    case  2: return new (C, 3) Pack2x1BNode(n1, n2);
-    case  4: return new (C, 3) Pack2x2BNode(n1, n2);
-    case  8: return new (C, 3) PackINode(n1, n2);
-    case 16: return new (C, 3) PackLNode(n1, n2);
-    }
-  }
-  ShouldNotReachHere();
-  return NULL;
-}
-
 // Return the vector operator for the specified scalar operation
-// and vector length.  One use is to check if the code generator
+// and vector length.  Also used to check if the code generator
 // supports the vector operation.
-int VectorNode::opcode(int sopc, uint vlen, const Type* opd_t) {
-  BasicType bt = opd_t->array_element_basic_type();
-  if (!(is_power_of_2(vlen) && vlen <= max_vlen(bt)))
-    return 0; // unimplemented
+int VectorNode::opcode(int sopc, uint vlen, BasicType bt) {
   switch (sopc) {
   case Op_AddI:
     switch (bt) {
     case T_BOOLEAN:
     case T_BYTE:      return Op_AddVB;
-    case T_CHAR:      return Op_AddVC;
+    case T_CHAR:
     case T_SHORT:     return Op_AddVS;
     case T_INT:       return Op_AddVI;
     }
@@ -186,7 +55,7 @@
     switch (bt) {
     case T_BOOLEAN:
     case T_BYTE:   return Op_SubVB;
-    case T_CHAR:   return Op_SubVC;
+    case T_CHAR:
     case T_SHORT:  return Op_SubVS;
     case T_INT:    return Op_SubVI;
     }
@@ -216,18 +85,18 @@
     switch (bt) {
     case T_BOOLEAN:
     case T_BYTE:   return Op_LShiftVB;
-    case T_CHAR:   return Op_LShiftVC;
+    case T_CHAR:
     case T_SHORT:  return Op_LShiftVS;
     case T_INT:    return Op_LShiftVI;
     }
     ShouldNotReachHere();
-  case Op_URShiftI:
+  case Op_RShiftI:
     switch (bt) {
     case T_BOOLEAN:
-    case T_BYTE:   return Op_URShiftVB;
-    case T_CHAR:   return Op_URShiftVC;
-    case T_SHORT:  return Op_URShiftVS;
-    case T_INT:    return Op_URShiftVI;
+    case T_BYTE:   return Op_RShiftVB;
+    case T_CHAR:
+    case T_SHORT:  return Op_RShiftVS;
+    case T_INT:    return Op_RShiftVI;
     }
     ShouldNotReachHere();
   case Op_AndI:
@@ -241,13 +110,14 @@
     return Op_XorV;
 
   case Op_LoadB:
+  case Op_LoadUB:
   case Op_LoadUS:
   case Op_LoadS:
   case Op_LoadI:
   case Op_LoadL:
   case Op_LoadF:
   case Op_LoadD:
-    return VectorLoadNode::opcode(sopc, vlen);
+    return Op_LoadVector;
 
   case Op_StoreB:
   case Op_StoreC:
@@ -255,211 +125,170 @@
   case Op_StoreL:
   case Op_StoreF:
   case Op_StoreD:
-    return VectorStoreNode::opcode(sopc, vlen);
-  }
-  return 0; // Unimplemented
-}
-
-// Helper for above.
-int VectorLoadNode::opcode(int sopc, uint vlen) {
-  switch (sopc) {
-  case Op_LoadB:
-    switch (vlen) {
-    case  2:       return 0; // Unimplemented
-    case  4:       return Op_Load4B;
-    case  8:       return Op_Load8B;
-    case 16:       return Op_Load16B;
-    }
-    break;
-  case Op_LoadUS:
-    switch (vlen) {
-    case  2:       return Op_Load2C;
-    case  4:       return Op_Load4C;
-    case  8:       return Op_Load8C;
-    }
-    break;
-  case Op_LoadS:
-    switch (vlen) {
-    case  2:       return Op_Load2S;
-    case  4:       return Op_Load4S;
-    case  8:       return Op_Load8S;
-    }
-    break;
-  case Op_LoadI:
-    switch (vlen) {
-    case  2:       return Op_Load2I;
-    case  4:       return Op_Load4I;
-    }
-    break;
-  case Op_LoadL:
-    if (vlen == 2) return Op_Load2L;
-    break;
-  case Op_LoadF:
-    switch (vlen) {
-    case  2:       return Op_Load2F;
-    case  4:       return Op_Load4F;
-    }
-    break;
-  case Op_LoadD:
-    if (vlen == 2) return Op_Load2D;
-    break;
+    return Op_StoreVector;
   }
   return 0; // Unimplemented
 }
 
-// Helper for above
-int VectorStoreNode::opcode(int sopc, uint vlen) {
-  switch (sopc) {
-  case Op_StoreB:
-    switch (vlen) {
-    case  2:       return 0; // Unimplemented
-    case  4:       return Op_Store4B;
-    case  8:       return Op_Store8B;
-    case 16:       return Op_Store16B;
-    }
-    break;
-  case Op_StoreC:
-    switch (vlen) {
-    case  2:       return Op_Store2C;
-    case  4:       return Op_Store4C;
-    case  8:       return Op_Store8C;
-    }
-    break;
-  case Op_StoreI:
-    switch (vlen) {
-    case  2:       return Op_Store2I;
-    case  4:       return Op_Store4I;
-    }
-    break;
-  case Op_StoreL:
-    if (vlen == 2) return Op_Store2L;
-    break;
-  case Op_StoreF:
-    switch (vlen) {
-    case  2:       return Op_Store2F;
-    case  4:       return Op_Store4F;
-    }
-    break;
-  case Op_StoreD:
-    if (vlen == 2) return Op_Store2D;
-    break;
+bool VectorNode::implemented(int opc, uint vlen, BasicType bt) {
+  if (is_java_primitive(bt) &&
+      (vlen > 1) && is_power_of_2(vlen) &&
+      Matcher::vector_size_supported(bt, vlen)) {
+    int vopc = VectorNode::opcode(opc, vlen, bt);
+    return vopc > 0 && Matcher::has_match_rule(vopc);
   }
-  return 0; // Unimplemented
+  return false;
 }
 
 // Return the vector version of a scalar operation node.
-VectorNode* VectorNode::make(Compile* C, int sopc, Node* n1, Node* n2, uint vlen, const Type* opd_t) {
-  int vopc = opcode(sopc, vlen, opd_t);
+VectorNode* VectorNode::make(Compile* C, int opc, Node* n1, Node* n2, uint vlen, BasicType bt) {
+  const TypeVect* vt = TypeVect::make(bt, vlen);
+  int vopc = VectorNode::opcode(opc, vlen, bt);
 
   switch (vopc) {
-  case Op_AddVB: return new (C, 3) AddVBNode(n1, n2, vlen);
-  case Op_AddVC: return new (C, 3) AddVCNode(n1, n2, vlen);
-  case Op_AddVS: return new (C, 3) AddVSNode(n1, n2, vlen);
-  case Op_AddVI: return new (C, 3) AddVINode(n1, n2, vlen);
-  case Op_AddVL: return new (C, 3) AddVLNode(n1, n2, vlen);
-  case Op_AddVF: return new (C, 3) AddVFNode(n1, n2, vlen);
-  case Op_AddVD: return new (C, 3) AddVDNode(n1, n2, vlen);
+  case Op_AddVB: return new (C, 3) AddVBNode(n1, n2, vt);
+  case Op_AddVS: return new (C, 3) AddVSNode(n1, n2, vt);
+  case Op_AddVI: return new (C, 3) AddVINode(n1, n2, vt);
+  case Op_AddVL: return new (C, 3) AddVLNode(n1, n2, vt);
+  case Op_AddVF: return new (C, 3) AddVFNode(n1, n2, vt);
+  case Op_AddVD: return new (C, 3) AddVDNode(n1, n2, vt);
+
+  case Op_SubVB: return new (C, 3) SubVBNode(n1, n2, vt);
+  case Op_SubVS: return new (C, 3) SubVSNode(n1, n2, vt);
+  case Op_SubVI: return new (C, 3) SubVINode(n1, n2, vt);
+  case Op_SubVL: return new (C, 3) SubVLNode(n1, n2, vt);
+  case Op_SubVF: return new (C, 3) SubVFNode(n1, n2, vt);
+  case Op_SubVD: return new (C, 3) SubVDNode(n1, n2, vt);
 
-  case Op_SubVB: return new (C, 3) SubVBNode(n1, n2, vlen);
-  case Op_SubVC: return new (C, 3) SubVCNode(n1, n2, vlen);
-  case Op_SubVS: return new (C, 3) SubVSNode(n1, n2, vlen);
-  case Op_SubVI: return new (C, 3) SubVINode(n1, n2, vlen);
-  case Op_SubVL: return new (C, 3) SubVLNode(n1, n2, vlen);
-  case Op_SubVF: return new (C, 3) SubVFNode(n1, n2, vlen);
-  case Op_SubVD: return new (C, 3) SubVDNode(n1, n2, vlen);
+  case Op_MulVF: return new (C, 3) MulVFNode(n1, n2, vt);
+  case Op_MulVD: return new (C, 3) MulVDNode(n1, n2, vt);
+
+  case Op_DivVF: return new (C, 3) DivVFNode(n1, n2, vt);
+  case Op_DivVD: return new (C, 3) DivVDNode(n1, n2, vt);
+
+  case Op_LShiftVB: return new (C, 3) LShiftVBNode(n1, n2, vt);
+  case Op_LShiftVS: return new (C, 3) LShiftVSNode(n1, n2, vt);
+  case Op_LShiftVI: return new (C, 3) LShiftVINode(n1, n2, vt);
+
+  case Op_RShiftVB: return new (C, 3) RShiftVBNode(n1, n2, vt);
+  case Op_RShiftVS: return new (C, 3) RShiftVSNode(n1, n2, vt);
+  case Op_RShiftVI: return new (C, 3) RShiftVINode(n1, n2, vt);
 
-  case Op_MulVF: return new (C, 3) MulVFNode(n1, n2, vlen);
-  case Op_MulVD: return new (C, 3) MulVDNode(n1, n2, vlen);
+  case Op_AndV: return new (C, 3) AndVNode(n1, n2, vt);
+  case Op_OrV:  return new (C, 3) OrVNode (n1, n2, vt);
+  case Op_XorV: return new (C, 3) XorVNode(n1, n2, vt);
+  }
+  ShouldNotReachHere();
+  return NULL;
 
-  case Op_DivVF: return new (C, 3) DivVFNode(n1, n2, vlen);
-  case Op_DivVD: return new (C, 3) DivVDNode(n1, n2, vlen);
+}
 
-  case Op_LShiftVB: return new (C, 3) LShiftVBNode(n1, n2, vlen);
-  case Op_LShiftVC: return new (C, 3) LShiftVCNode(n1, n2, vlen);
-  case Op_LShiftVS: return new (C, 3) LShiftVSNode(n1, n2, vlen);
-  case Op_LShiftVI: return new (C, 3) LShiftVINode(n1, n2, vlen);
-
-  case Op_URShiftVB: return new (C, 3) URShiftVBNode(n1, n2, vlen);
-  case Op_URShiftVC: return new (C, 3) URShiftVCNode(n1, n2, vlen);
-  case Op_URShiftVS: return new (C, 3) URShiftVSNode(n1, n2, vlen);
-  case Op_URShiftVI: return new (C, 3) URShiftVINode(n1, n2, vlen);
-
-  case Op_AndV: return new (C, 3) AndVNode(n1, n2, vlen, opd_t->array_element_basic_type());
-  case Op_OrV:  return new (C, 3) OrVNode (n1, n2, vlen, opd_t->array_element_basic_type());
-  case Op_XorV: return new (C, 3) XorVNode(n1, n2, vlen, opd_t->array_element_basic_type());
+// Scalar promotion
+VectorNode* VectorNode::scalar2vector(Compile* C, Node* s, uint vlen, const Type* opd_t) {
+  BasicType bt = opd_t->array_element_basic_type();
+  const TypeVect* vt = opd_t->singleton() ? TypeVect::make(opd_t, vlen)
+                                          : TypeVect::make(bt, vlen);
+  switch (bt) {
+  case T_BOOLEAN:
+  case T_BYTE:
+    return new (C, 2) ReplicateBNode(s, vt);
+  case T_CHAR:
+  case T_SHORT:
+    return new (C, 2) ReplicateSNode(s, vt);
+  case T_INT:
+    return new (C, 2) ReplicateINode(s, vt);
+  case T_LONG:
+    return new (C, 2) ReplicateLNode(s, vt);
+  case T_FLOAT:
+    return new (C, 2) ReplicateFNode(s, vt);
+  case T_DOUBLE:
+    return new (C, 2) ReplicateDNode(s, vt);
   }
   ShouldNotReachHere();
   return NULL;
 }
 
-// Return the vector version of a scalar load node.
-VectorLoadNode* VectorLoadNode::make(Compile* C, int opc, Node* ctl, Node* mem,
-                                     Node* adr, const TypePtr* atyp, uint vlen) {
-  int vopc = opcode(opc, vlen);
-
-  switch(vopc) {
-  case Op_Load16B: return new (C, 3) Load16BNode(ctl, mem, adr, atyp);
-  case Op_Load8B:  return new (C, 3) Load8BNode(ctl, mem, adr, atyp);
-  case Op_Load4B:  return new (C, 3) Load4BNode(ctl, mem, adr, atyp);
-
-  case Op_Load8C:  return new (C, 3) Load8CNode(ctl, mem, adr, atyp);
-  case Op_Load4C:  return new (C, 3) Load4CNode(ctl, mem, adr, atyp);
-  case Op_Load2C:  return new (C, 3) Load2CNode(ctl, mem, adr, atyp);
-
-  case Op_Load8S:  return new (C, 3) Load8SNode(ctl, mem, adr, atyp);
-  case Op_Load4S:  return new (C, 3) Load4SNode(ctl, mem, adr, atyp);
-  case Op_Load2S:  return new (C, 3) Load2SNode(ctl, mem, adr, atyp);
-
-  case Op_Load4I:  return new (C, 3) Load4INode(ctl, mem, adr, atyp);
-  case Op_Load2I:  return new (C, 3) Load2INode(ctl, mem, adr, atyp);
-
-  case Op_Load2L:  return new (C, 3) Load2LNode(ctl, mem, adr, atyp);
-
-  case Op_Load4F:  return new (C, 3) Load4FNode(ctl, mem, adr, atyp);
-  case Op_Load2F:  return new (C, 3) Load2FNode(ctl, mem, adr, atyp);
-
-  case Op_Load2D:  return new (C, 3) Load2DNode(ctl, mem, adr, atyp);
+// Return initial Pack node. Additional operands added with add_opd() calls.
+PackNode* PackNode::make(Compile* C, Node* s, uint vlen, BasicType bt) {
+  const TypeVect* vt = TypeVect::make(bt, vlen);
+  switch (bt) {
+  case T_BOOLEAN:
+  case T_BYTE:
+    return new (C, vlen+1) PackBNode(s, vt);
+  case T_CHAR:
+  case T_SHORT:
+    return new (C, vlen+1) PackSNode(s, vt);
+  case T_INT:
+    return new (C, vlen+1) PackINode(s, vt);
+  case T_LONG:
+    return new (C, vlen+1) PackLNode(s, vt);
+  case T_FLOAT:
+    return new (C, vlen+1) PackFNode(s, vt);
+  case T_DOUBLE:
+    return new (C, vlen+1) PackDNode(s, vt);
   }
   ShouldNotReachHere();
   return NULL;
 }
 
-// Return the vector version of a scalar store node.
-VectorStoreNode* VectorStoreNode::make(Compile* C, int opc, Node* ctl, Node* mem,
-                                       Node* adr, const TypePtr* atyp, Node* val,
-                                       uint vlen) {
-  int vopc = opcode(opc, vlen);
+// Create a binary tree form for Packs. [lo, hi) (half-open) range
+Node* PackNode::binaryTreePack(Compile* C, int lo, int hi) {
+  int ct = hi - lo;
+  assert(is_power_of_2(ct), "power of 2");
+  if (ct == 2) {
+    PackNode* pk = PackNode::make(C, in(lo), 2, vect_type()->element_basic_type());
+    pk->add_opd(1, in(lo+1));
+    return pk;
 
-  switch(vopc) {
-  case Op_Store16B: return new (C, 4) Store16BNode(ctl, mem, adr, atyp, val);
-  case Op_Store8B: return new (C, 4) Store8BNode(ctl, mem, adr, atyp, val);
-  case Op_Store4B: return new (C, 4) Store4BNode(ctl, mem, adr, atyp, val);
+  } else {
+    int mid = lo + ct/2;
+    Node* n1 = binaryTreePack(C, lo,  mid);
+    Node* n2 = binaryTreePack(C, mid, hi );
 
-  case Op_Store8C: return new (C, 4) Store8CNode(ctl, mem, adr, atyp, val);
-  case Op_Store4C: return new (C, 4) Store4CNode(ctl, mem, adr, atyp, val);
-  case Op_Store2C: return new (C, 4) Store2CNode(ctl, mem, adr, atyp, val);
-
-  case Op_Store4I: return new (C, 4) Store4INode(ctl, mem, adr, atyp, val);
-  case Op_Store2I: return new (C, 4) Store2INode(ctl, mem, adr, atyp, val);
-
-  case Op_Store2L: return new (C, 4) Store2LNode(ctl, mem, adr, atyp, val);
-
-  case Op_Store4F: return new (C, 4) Store4FNode(ctl, mem, adr, atyp, val);
-  case Op_Store2F: return new (C, 4) Store2FNode(ctl, mem, adr, atyp, val);
-
-  case Op_Store2D: return new (C, 4) Store2DNode(ctl, mem, adr, atyp, val);
+    BasicType bt = vect_type()->element_basic_type();
+    switch (bt) {
+    case T_BOOLEAN:
+    case T_BYTE:
+      return new (C, 3) PackSNode(n1, n2, TypeVect::make(T_SHORT, 2));
+    case T_CHAR:
+    case T_SHORT:
+      return new (C, 3) PackINode(n1, n2, TypeVect::make(T_INT, 2));
+    case T_INT:
+      return new (C, 3) PackLNode(n1, n2, TypeVect::make(T_LONG, 2));
+    case T_LONG:
+      return new (C, 3) Pack2LNode(n1, n2, TypeVect::make(T_LONG, 2));
+    case T_FLOAT:
+      return new (C, 3) PackDNode(n1, n2, TypeVect::make(T_DOUBLE, 2));
+    case T_DOUBLE:
+      return new (C, 3) Pack2DNode(n1, n2, TypeVect::make(T_DOUBLE, 2));
+    }
+    ShouldNotReachHere();
   }
-  ShouldNotReachHere();
   return NULL;
 }
 
+// Return the vector version of a scalar load node.
+LoadVectorNode* LoadVectorNode::make(Compile* C, int opc, Node* ctl, Node* mem,
+                                     Node* adr, const TypePtr* atyp, uint vlen, BasicType bt) {
+  const TypeVect* vt = TypeVect::make(bt, vlen);
+  return new (C, 3) LoadVectorNode(ctl, mem, adr, atyp, vt);
+  return NULL;
+}
+
+// Return the vector version of a scalar store node.
+StoreVectorNode* StoreVectorNode::make(Compile* C, int opc, Node* ctl, Node* mem,
+                                       Node* adr, const TypePtr* atyp, Node* val,
+                                       uint vlen) {
+  return new (C, 4) StoreVectorNode(ctl, mem, adr, atyp, val);
+}
+
 // Extract a scalar element of vector.
-Node* ExtractNode::make(Compile* C, Node* v, uint position, const Type* opd_t) {
-  BasicType bt = opd_t->array_element_basic_type();
-  assert(position < VectorNode::max_vlen(bt), "pos in range");
+Node* ExtractNode::make(Compile* C, Node* v, uint position, BasicType bt) {
+  assert((int)position < Matcher::max_vector_size(bt), "pos in range");
   ConINode* pos = ConINode::make(C, (int)position);
   switch (bt) {
   case T_BOOLEAN:
+    return new (C, 3) ExtractUBNode(v, pos);
   case T_BYTE:
     return new (C, 3) ExtractBNode(v, pos);
   case T_CHAR:
@@ -478,3 +307,4 @@
   ShouldNotReachHere();
   return NULL;
 }
+
--- a/hotspot/src/share/vm/opto/vectornode.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/opto/vectornode.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,48 +31,32 @@
 
 //------------------------------VectorNode--------------------------------------
 // Vector Operation
-class VectorNode : public Node {
-  virtual uint size_of() const { return sizeof(*this); }
- protected:
-  uint _length; // vector length
-  virtual BasicType elt_basic_type() const = 0; // Vector element basic type
+class VectorNode : public TypeNode {
+ public:
 
-  static const Type* vect_type(BasicType elt_bt, uint len);
-  static const Type* vect_type(const Type* elt_type, uint len) {
-    return vect_type(elt_type->array_element_basic_type(), len);
+  VectorNode(Node* n1, const TypeVect* vt) : TypeNode(vt, 2) {
+    init_class_id(Class_Vector);
+    init_req(1, n1);
+  }
+  VectorNode(Node* n1, Node* n2, const TypeVect* vt) : TypeNode(vt, 3) {
+    init_class_id(Class_Vector);
+    init_req(1, n1);
+    init_req(2, n2);
   }
 
- public:
-  friend class VectorLoadNode;  // For vect_type
-  friend class VectorStoreNode; // ditto.
+  const TypeVect* vect_type() const { return type()->is_vect(); }
+  uint length() const { return vect_type()->length(); } // Vector length
 
-  VectorNode(Node* n1, uint vlen) : Node(NULL, n1), _length(vlen) {
-    init_class_id(Class_Vector);
-  }
-  VectorNode(Node* n1, Node* n2, uint vlen) : Node(NULL, n1, n2), _length(vlen) {
-    init_class_id(Class_Vector);
-  }
   virtual int Opcode() const;
 
-  uint length() const { return _length; } // Vector length
-
-  static uint max_vlen(BasicType bt) { // max vector length
-    return (uint)(Matcher::vector_width_in_bytes() / type2aelembytes(bt));
-  }
-
-  // Element and vector type
-  const Type* elt_type()  const { return Type::get_const_basic_type(elt_basic_type()); }
-  const Type* vect_type() const { return vect_type(elt_basic_type(), length()); }
-
-  virtual const Type *bottom_type() const { return vect_type(); }
-  virtual uint        ideal_reg()   const { return Matcher::vector_ideal_reg(); }
-
-  // Vector opcode from scalar opcode
-  static int opcode(int sopc, uint vlen, const Type* opd_t);
+  virtual uint ideal_reg() const { return Matcher::vector_ideal_reg(vect_type()->length_in_bytes()); }
 
   static VectorNode* scalar2vector(Compile* C, Node* s, uint vlen, const Type* opd_t);
 
-  static VectorNode* make(Compile* C, int sopc, Node* n1, Node* n2, uint vlen, const Type* elt_t);
+  static VectorNode* make(Compile* C, int opc, Node* n1, Node* n2, uint vlen, BasicType bt);
+
+  static int  opcode(int opc, uint vlen, BasicType bt);
+  static bool implemented(int opc, uint vlen, BasicType bt);
 
 };
 
@@ -81,981 +65,393 @@
 //------------------------------AddVBNode---------------------------------------
 // Vector add byte
 class AddVBNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
  public:
-  AddVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------AddVCNode---------------------------------------
-// Vector add char
-class AddVCNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  AddVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  AddVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------AddVSNode---------------------------------------
-// Vector add short
+// Vector add char/short
 class AddVSNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
  public:
-  AddVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  AddVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------AddVINode---------------------------------------
 // Vector add int
 class AddVINode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
  public:
-  AddVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  AddVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------AddVLNode---------------------------------------
 // Vector add long
 class AddVLNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_LONG; }
  public:
-  AddVLNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  AddVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------AddVFNode---------------------------------------
 // Vector add float
 class AddVFNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
  public:
-  AddVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  AddVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------AddVDNode---------------------------------------
 // Vector add double
 class AddVDNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
  public:
-  AddVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  AddVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------SubVBNode---------------------------------------
 // Vector subtract byte
 class SubVBNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
  public:
-  SubVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------SubVCNode---------------------------------------
-// Vector subtract char
-class SubVCNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  SubVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  SubVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------SubVSNode---------------------------------------
 // Vector subtract short
 class SubVSNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
  public:
-  SubVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  SubVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------SubVINode---------------------------------------
 // Vector subtract int
 class SubVINode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
  public:
-  SubVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  SubVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------SubVLNode---------------------------------------
 // Vector subtract long
 class SubVLNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_LONG; }
  public:
-  SubVLNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  SubVLNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------SubVFNode---------------------------------------
 // Vector subtract float
 class SubVFNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
  public:
-  SubVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  SubVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------SubVDNode---------------------------------------
 // Vector subtract double
 class SubVDNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
  public:
-  SubVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  SubVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------MulVFNode---------------------------------------
 // Vector multiply float
 class MulVFNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
  public:
-  MulVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  MulVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------MulVDNode---------------------------------------
 // Vector multiply double
 class MulVDNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
  public:
-  MulVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  MulVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------DivVFNode---------------------------------------
 // Vector divide float
 class DivVFNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
  public:
-  DivVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  DivVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------DivVDNode---------------------------------------
 // Vector Divide double
 class DivVDNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
  public:
-  DivVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------LShiftVBNode---------------------------------------
 // Vector lshift byte
 class LShiftVBNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
  public:
-  LShiftVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------LShiftVCNode---------------------------------------
-// Vector lshift chars
-class LShiftVCNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  LShiftVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  LShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------LShiftVSNode---------------------------------------
 // Vector lshift shorts
 class LShiftVSNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
  public:
-  LShiftVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  LShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------LShiftVINode---------------------------------------
 // Vector lshift ints
 class LShiftVINode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
  public:
-  LShiftVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  LShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------URShiftVBNode---------------------------------------
 // Vector urshift bytes
-class URShiftVBNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
+class RShiftVBNode : public VectorNode {
  public:
-  URShiftVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------URShiftVCNode---------------------------------------
-// Vector urshift char
-class URShiftVCNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
- public:
-  URShiftVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  RShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------URShiftVSNode---------------------------------------
 // Vector urshift shorts
-class URShiftVSNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
+class RShiftVSNode : public VectorNode {
  public:
-  URShiftVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  RShiftVSNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------URShiftVINode---------------------------------------
 // Vector urshift ints
-class URShiftVINode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
+class RShiftVINode : public VectorNode {
  public:
-  URShiftVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
+  RShiftVINode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------AndVNode---------------------------------------
 // Vector and
 class AndVNode : public VectorNode {
- protected:
-  BasicType _bt;
-  virtual BasicType elt_basic_type() const { return _bt; }
  public:
-  AndVNode(Node* in1, Node* in2, uint vlen, BasicType bt) : VectorNode(in1,in2,vlen), _bt(bt) {}
+  AndVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------OrVNode---------------------------------------
 // Vector or
 class OrVNode : public VectorNode {
- protected:
-  BasicType _bt;
-  virtual BasicType elt_basic_type() const { return _bt; }
  public:
-  OrVNode(Node* in1, Node* in2, uint vlen, BasicType bt) : VectorNode(in1,in2,vlen), _bt(bt) {}
+  OrVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------XorVNode---------------------------------------
 // Vector xor
 class XorVNode : public VectorNode {
- protected:
-  BasicType _bt;
-  virtual BasicType elt_basic_type() const { return _bt; }
  public:
-  XorVNode(Node* in1, Node* in2, uint vlen, BasicType bt) : VectorNode(in1,in2,vlen), _bt(bt) {}
+  XorVNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
   virtual int Opcode() const;
 };
 
-//================================= M E M O R Y ==================================
-
+//================================= M E M O R Y ===============================
 
-//------------------------------VectorLoadNode--------------------------------------
-// Vector Load from memory
-class VectorLoadNode : public LoadNode {
-  virtual uint size_of() const { return sizeof(*this); }
-
- protected:
-  virtual BasicType elt_basic_type()  const = 0; // Vector element basic type
-  // For use in constructor
-  static const Type* vect_type(const Type* elt_type, uint len) {
-    return VectorNode::vect_type(elt_type, len);
+//------------------------------LoadVectorNode---------------------------------
+// Load Vector from memory
+class LoadVectorNode : public LoadNode {
+ public:
+  LoadVectorNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeVect* vt)
+    : LoadNode(c, mem, adr, at, vt) {
+    init_class_id(Class_LoadVector);
   }
 
- public:
-  VectorLoadNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *rt)
-    : LoadNode(c,mem,adr,at,rt) {
-    init_class_id(Class_VectorLoad);
-  }
+  const TypeVect* vect_type() const { return type()->is_vect(); }
+  uint length() const { return vect_type()->length(); } // Vector length
+
   virtual int Opcode() const;
 
-  virtual uint  length() const = 0; // Vector length
-
-  // Element and vector type
-  const Type* elt_type()  const { return Type::get_const_basic_type(elt_basic_type()); }
-  const Type* vect_type() const { return VectorNode::vect_type(elt_basic_type(), length()); }
-
-  virtual uint ideal_reg() const  { return Matcher::vector_ideal_reg(); }
+  virtual uint ideal_reg() const  { return Matcher::vector_ideal_reg(memory_size()); }
   virtual BasicType memory_type() const { return T_VOID; }
-  virtual int memory_size() const { return length()*type2aelembytes(elt_basic_type()); }
-
-  // Vector opcode from scalar opcode
-  static int opcode(int sopc, uint vlen);
-
-  static VectorLoadNode* make(Compile* C, int opc, Node* ctl, Node* mem,
-                              Node* adr, const TypePtr* atyp, uint vlen);
-};
-
-//------------------------------Load16BNode--------------------------------------
-// Vector load of 16 bytes (8bits signed) from memory
-class Load16BNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
- public:
-  Load16BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::BYTE)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,16)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store16B; }
-  virtual uint length() const { return 16; }
-};
-
-//------------------------------Load8BNode--------------------------------------
-// Vector load of 8 bytes (8bits signed) from memory
-class Load8BNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
- public:
-  Load8BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::BYTE)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,8)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store8B; }
-  virtual uint length() const { return 8; }
-};
+  virtual int memory_size() const { return vect_type()->length_in_bytes(); }
 
-//------------------------------Load4BNode--------------------------------------
-// Vector load of 4 bytes (8bits signed) from memory
-class Load4BNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
- public:
-  Load4BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::BYTE)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store4B; }
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Load8CNode--------------------------------------
-// Vector load of 8 chars (16bits unsigned) from memory
-class Load8CNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Load8CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,8)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store8C; }
-  virtual uint length() const { return 8; }
-};
+  virtual int store_Opcode() const { return Op_StoreVector; }
 
-//------------------------------Load4CNode--------------------------------------
-// Vector load of 4 chars (16bits unsigned) from memory
-class Load4CNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Load4CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store4C; }
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Load2CNode--------------------------------------
-// Vector load of 2 chars (16bits unsigned) from memory
-class Load2CNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Load2CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,2)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store2C; }
-  virtual uint length() const { return 2; }
-};
-
-//------------------------------Load8SNode--------------------------------------
-// Vector load of 8 shorts (16bits signed) from memory
-class Load8SNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
- public:
-  Load8SNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::SHORT)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,8)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store8C; }
-  virtual uint length() const { return 8; }
+  static LoadVectorNode* make(Compile* C, int opc, Node* ctl, Node* mem,
+                              Node* adr, const TypePtr* atyp, uint vlen, BasicType bt);
 };
 
-//------------------------------Load4SNode--------------------------------------
-// Vector load of 4 shorts (16bits signed) from memory
-class Load4SNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
- public:
-  Load4SNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::SHORT)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store4C; }
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Load2SNode--------------------------------------
-// Vector load of 2 shorts (16bits signed) from memory
-class Load2SNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
- public:
-  Load2SNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::SHORT)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,2)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store2C; }
-  virtual uint length() const { return 2; }
-};
-
-//------------------------------Load4INode--------------------------------------
-// Vector load of 4 integers (32bits signed) from memory
-class Load4INode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
- public:
-  Load4INode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::INT)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store4I; }
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Load2INode--------------------------------------
-// Vector load of 2 integers (32bits signed) from memory
-class Load2INode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
- public:
-  Load2INode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::INT)
-    : VectorLoadNode(c,mem,adr,at,vect_type(ti,2)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store2I; }
-  virtual uint length() const { return 2; }
-};
-
-//------------------------------Load2LNode--------------------------------------
-// Vector load of 2 longs (64bits signed) from memory
-class Load2LNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_LONG; }
+//------------------------------StoreVectorNode--------------------------------
+// Store Vector to memory
+class StoreVectorNode : public StoreNode {
  public:
-  Load2LNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeLong *tl = TypeLong::LONG)
-    : VectorLoadNode(c,mem,adr,at,vect_type(tl,2)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store2L; }
-  virtual uint length() const { return 2; }
-};
-
-//------------------------------Load4FNode--------------------------------------
-// Vector load of 4 floats (32bits) from memory
-class Load4FNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
- public:
-  Load4FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *t = Type::FLOAT)
-    : VectorLoadNode(c,mem,adr,at,vect_type(t,4)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store4F; }
-  virtual uint length() const { return 4; }
-};
+  StoreVectorNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
+    : StoreNode(c, mem, adr, at, val) {
+    assert(val->is_Vector() || val->is_LoadVector(), "sanity");
+    init_class_id(Class_StoreVector);
+  }
 
-//------------------------------Load2FNode--------------------------------------
-// Vector load of 2 floats (32bits) from memory
-class Load2FNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
- public:
-  Load2FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *t = Type::FLOAT)
-    : VectorLoadNode(c,mem,adr,at,vect_type(t,2)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store2F; }
-  virtual uint length() const { return 2; }
-};
+  const TypeVect* vect_type() const { return in(MemNode::ValueIn)->bottom_type()->is_vect(); }
+  uint length() const { return vect_type()->length(); } // Vector length
 
-//------------------------------Load2DNode--------------------------------------
-// Vector load of 2 doubles (64bits) from memory
-class Load2DNode : public VectorLoadNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
- public:
-  Load2DNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *t = Type::DOUBLE)
-    : VectorLoadNode(c,mem,adr,at,vect_type(t,2)) {}
-  virtual int Opcode() const;
-  virtual int store_Opcode() const { return Op_Store2D; }
-  virtual uint length() const { return 2; }
-};
-
-
-//------------------------------VectorStoreNode--------------------------------------
-// Vector Store to memory
-class VectorStoreNode : public StoreNode {
-  virtual uint size_of() const { return sizeof(*this); }
-
- protected:
-  virtual BasicType elt_basic_type()  const = 0; // Vector element basic type
-
- public:
-  VectorStoreNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : StoreNode(c,mem,adr,at,val) {
-    init_class_id(Class_VectorStore);
-  }
   virtual int Opcode() const;
 
-  virtual uint  length() const = 0; // Vector length
-
-  // Element and vector type
-  const Type* elt_type()  const { return Type::get_const_basic_type(elt_basic_type()); }
-  const Type* vect_type() const { return VectorNode::vect_type(elt_basic_type(), length()); }
+  virtual uint ideal_reg() const  { return Matcher::vector_ideal_reg(memory_size()); }
+  virtual BasicType memory_type() const { return T_VOID; }
+  virtual int memory_size() const { return vect_type()->length_in_bytes(); }
 
-  virtual uint ideal_reg() const  { return Matcher::vector_ideal_reg(); }
-  virtual BasicType memory_type() const { return T_VOID; }
-  virtual int memory_size() const { return length()*type2aelembytes(elt_basic_type()); }
-
-  // Vector opcode from scalar opcode
-  static int opcode(int sopc, uint vlen);
-
-  static VectorStoreNode* make(Compile* C, int opc, Node* ctl, Node* mem,
+  static StoreVectorNode* make(Compile* C, int opc, Node* ctl, Node* mem,
                                Node* adr, const TypePtr* atyp, Node* val,
                                uint vlen);
 };
 
-//------------------------------Store16BNode--------------------------------------
-// Vector store of 16 bytes (8bits signed) to memory
-class Store16BNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
- public:
-  Store16BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 16; }
-};
+
+//=========================Promote_Scalar_to_Vector============================
 
-//------------------------------Store8BNode--------------------------------------
-// Vector store of 8 bytes (8bits signed) to memory
-class Store8BNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
+//------------------------------ReplicateBNode---------------------------------
+// Replicate byte scalar to be vector
+class ReplicateBNode : public VectorNode {
  public:
-  Store8BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 8; }
-};
-
-//------------------------------Store4BNode--------------------------------------
-// Vector store of 4 bytes (8bits signed) to memory
-class Store4BNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
- public:
-  Store4BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
+  ReplicateBNode(Node* in1, const TypeVect* vt) : VectorNode(in1, vt) {}
   virtual int Opcode() const;
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Store8CNode--------------------------------------
-// Vector store of 8 chars (16bits signed/unsigned) to memory
-class Store8CNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Store8CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 8; }
-};
-
-//------------------------------Store4CNode--------------------------------------
-// Vector store of 4 chars (16bits signed/unsigned) to memory
-class Store4CNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Store4CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Store2CNode--------------------------------------
-// Vector store of 2 chars (16bits signed/unsigned) to memory
-class Store2CNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Store2CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 2; }
 };
 
-//------------------------------Store4INode--------------------------------------
-// Vector store of 4 integers (32bits signed) to memory
-class Store4INode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
- public:
-  Store4INode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Store2INode--------------------------------------
-// Vector store of 2 integers (32bits signed) to memory
-class Store2INode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
- public:
-  Store2INode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 2; }
-};
-
-//------------------------------Store2LNode--------------------------------------
-// Vector store of 2 longs (64bits signed) to memory
-class Store2LNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_LONG; }
+//------------------------------ReplicateSNode---------------------------------
+// Replicate short scalar to be vector
+class ReplicateSNode : public VectorNode {
  public:
-  Store2LNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 2; }
-};
-
-//------------------------------Store4FNode--------------------------------------
-// Vector store of 4 floats (32bits) to memory
-class Store4FNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
- public:
-  Store4FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 4; }
-};
-
-//------------------------------Store2FNode--------------------------------------
-// Vector store of 2 floats (32bits) to memory
-class Store2FNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
- public:
-  Store2FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 2; }
-};
-
-//------------------------------Store2DNode--------------------------------------
-// Vector store of 2 doubles (64bits) to memory
-class Store2DNode : public VectorStoreNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
- public:
-  Store2DNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
-    : VectorStoreNode(c,mem,adr,at,val) {}
-  virtual int Opcode() const;
-  virtual uint length() const { return 2; }
-};
-
-//=========================Promote_Scalar_to_Vector====================================
-
-//------------------------------Replicate16BNode---------------------------------------
-// Replicate byte scalar to be vector of 16 bytes
-class Replicate16BNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
- public:
-  Replicate16BNode(Node* in1) : VectorNode(in1, 16) {}
+  ReplicateSNode(Node* in1, const TypeVect* vt) : VectorNode(in1, vt) {}
   virtual int Opcode() const;
 };
 
-//------------------------------Replicate8BNode---------------------------------------
-// Replicate byte scalar to be vector of 8 bytes
-class Replicate8BNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
+//------------------------------ReplicateINode---------------------------------
+// Replicate int scalar to be vector
+class ReplicateINode : public VectorNode {
  public:
-  Replicate8BNode(Node* in1) : VectorNode(in1, 8) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate4BNode---------------------------------------
-// Replicate byte scalar to be vector of 4 bytes
-class Replicate4BNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
- public:
-  Replicate4BNode(Node* in1) : VectorNode(in1, 4) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate8CNode---------------------------------------
-// Replicate char scalar to be vector of 8 chars
-class Replicate8CNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Replicate8CNode(Node* in1) : VectorNode(in1, 8) {}
+  ReplicateINode(Node* in1, const TypeVect* vt) : VectorNode(in1, vt) {}
   virtual int Opcode() const;
 };
 
-//------------------------------Replicate4CNode---------------------------------------
-// Replicate char scalar to be vector of 4 chars
-class Replicate4CNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Replicate4CNode(Node* in1) : VectorNode(in1, 4) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate2CNode---------------------------------------
-// Replicate char scalar to be vector of 2 chars
-class Replicate2CNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
+//------------------------------ReplicateLNode---------------------------------
+// Replicate long scalar to be vector
+class ReplicateLNode : public VectorNode {
  public:
-  Replicate2CNode(Node* in1) : VectorNode(in1, 2) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate8SNode---------------------------------------
-// Replicate short scalar to be vector of 8 shorts
-class Replicate8SNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
- public:
-  Replicate8SNode(Node* in1) : VectorNode(in1, 8) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate4SNode---------------------------------------
-// Replicate short scalar to be vector of 4 shorts
-class Replicate4SNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
- public:
-  Replicate4SNode(Node* in1) : VectorNode(in1, 4) {}
+  ReplicateLNode(Node* in1, const TypeVect* vt) : VectorNode(in1, vt) {}
   virtual int Opcode() const;
 };
 
-//------------------------------Replicate2SNode---------------------------------------
-// Replicate short scalar to be vector of 2 shorts
-class Replicate2SNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
+//------------------------------ReplicateFNode---------------------------------
+// Replicate float scalar to be vector
+class ReplicateFNode : public VectorNode {
  public:
-  Replicate2SNode(Node* in1) : VectorNode(in1, 2) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate4INode---------------------------------------
-// Replicate int scalar to be vector of 4 ints
-class Replicate4INode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
- public:
-  Replicate4INode(Node* in1) : VectorNode(in1, 4) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate2INode---------------------------------------
-// Replicate int scalar to be vector of 2 ints
-class Replicate2INode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
- public:
-  Replicate2INode(Node* in1) : VectorNode(in1, 2) {}
+  ReplicateFNode(Node* in1, const TypeVect* vt) : VectorNode(in1, vt) {}
   virtual int Opcode() const;
 };
 
-//------------------------------Replicate2LNode---------------------------------------
-// Replicate long scalar to be vector of 2 longs
-class Replicate2LNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_LONG; }
+//------------------------------ReplicateDNode---------------------------------
+// Replicate double scalar to be vector
+class ReplicateDNode : public VectorNode {
  public:
-  Replicate2LNode(Node* in1) : VectorNode(in1, 2) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate4FNode---------------------------------------
-// Replicate float scalar to be vector of 4 floats
-class Replicate4FNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
- public:
-  Replicate4FNode(Node* in1) : VectorNode(in1, 4) {}
+  ReplicateDNode(Node* in1, const TypeVect* vt) : VectorNode(in1, vt) {}
   virtual int Opcode() const;
 };
 
-//------------------------------Replicate2FNode---------------------------------------
-// Replicate float scalar to be vector of 2 floats
-class Replicate2FNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
- public:
-  Replicate2FNode(Node* in1) : VectorNode(in1, 2) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------Replicate2DNode---------------------------------------
-// Replicate double scalar to be vector of 2 doubles
-class Replicate2DNode : public VectorNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
- public:
-  Replicate2DNode(Node* in1) : VectorNode(in1, 2) {}
-  virtual int Opcode() const;
-};
-
-//========================Pack_Scalars_into_a_Vector==============================
+//========================Pack_Scalars_into_a_Vector===========================
 
 //------------------------------PackNode---------------------------------------
 // Pack parent class (not for code generation).
 class PackNode : public VectorNode {
  public:
-  PackNode(Node* in1)  : VectorNode(in1, 1) {}
-  PackNode(Node* in1, Node* n2)  : VectorNode(in1, n2, 2) {}
+  PackNode(Node* in1, const TypeVect* vt) : VectorNode(in1, vt) {}
+  PackNode(Node* in1, Node* n2, const TypeVect* vt) : VectorNode(in1, n2, vt) {}
   virtual int Opcode() const;
 
-  void add_opd(Node* n) {
-    add_req(n);
-    _length++;
-    assert(_length == req() - 1, "vector length matches edge count");
+  void add_opd(uint i, Node* n) {
+    init_req(i+1, n);
   }
 
   // Create a binary tree form for Packs. [lo, hi) (half-open) range
   Node* binaryTreePack(Compile* C, int lo, int hi);
 
-  static PackNode* make(Compile* C, Node* s, const Type* elt_t);
+  static PackNode* make(Compile* C, Node* s, uint vlen, BasicType bt);
 };
 
 //------------------------------PackBNode---------------------------------------
 // Pack byte scalars into vector
 class PackBNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
  public:
-  PackBNode(Node* in1)  : PackNode(in1) {}
-  virtual int Opcode() const;
-};
-
-//------------------------------PackCNode---------------------------------------
-// Pack char scalars into vector
-class PackCNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  PackCNode(Node* in1)  : PackNode(in1) {}
+  PackBNode(Node* in1, const TypeVect* vt)  : PackNode(in1, vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------PackSNode---------------------------------------
 // Pack short scalars into a vector
 class PackSNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_SHORT; }
  public:
-  PackSNode(Node* in1)  : PackNode(in1) {}
+  PackSNode(Node* in1, const TypeVect* vt)  : PackNode(in1, vt) {}
+  PackSNode(Node* in1, Node* in2, const TypeVect* vt) : PackNode(in1, in2, vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------PackINode---------------------------------------
 // Pack integer scalars into a vector
 class PackINode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_INT; }
  public:
-  PackINode(Node* in1)  : PackNode(in1) {}
-  PackINode(Node* in1, Node* in2) : PackNode(in1, in2) {}
+  PackINode(Node* in1, const TypeVect* vt)  : PackNode(in1, vt) {}
+  PackINode(Node* in1, Node* in2, const TypeVect* vt) : PackNode(in1, in2, vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------PackLNode---------------------------------------
 // Pack long scalars into a vector
 class PackLNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_LONG; }
  public:
-  PackLNode(Node* in1)  : PackNode(in1) {}
-  PackLNode(Node* in1, Node* in2) : PackNode(in1, in2) {}
+  PackLNode(Node* in1, const TypeVect* vt)  : PackNode(in1, vt) {}
+  PackLNode(Node* in1, Node* in2, const TypeVect* vt) : PackNode(in1, in2, vt) {}
+  virtual int Opcode() const;
+};
+
+//------------------------------Pack2LNode--------------------------------------
+// Pack 2 long scalars into a vector
+class Pack2LNode : public PackNode {
+ public:
+  Pack2LNode(Node* in1, Node* in2, const TypeVect* vt) : PackNode(in1, in2, vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------PackFNode---------------------------------------
 // Pack float scalars into vector
 class PackFNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_FLOAT; }
  public:
-  PackFNode(Node* in1)  : PackNode(in1) {}
-  PackFNode(Node* in1, Node* in2) : PackNode(in1, in2) {}
+  PackFNode(Node* in1, const TypeVect* vt)  : PackNode(in1, vt) {}
+  PackFNode(Node* in1, Node* in2, const TypeVect* vt) : PackNode(in1, in2, vt) {}
   virtual int Opcode() const;
 };
 
 //------------------------------PackDNode---------------------------------------
 // Pack double scalars into a vector
 class PackDNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_DOUBLE; }
  public:
-  PackDNode(Node* in1)  : PackNode(in1) {}
-  PackDNode(Node* in1, Node* in2) : PackNode(in1, in2) {}
+  PackDNode(Node* in1, const TypeVect* vt) : PackNode(in1, vt) {}
+  PackDNode(Node* in1, Node* in2, const TypeVect* vt) : PackNode(in1, in2, vt) {}
   virtual int Opcode() const;
 };
 
-// The Pack2xN nodes assist code generation.  They are created from
-// Pack4C, etc. nodes in final_graph_reshape in the form of a
-// balanced, binary tree.
-
-//------------------------------Pack2x1BNode-----------------------------------------
-// Pack 2 1-byte integers into vector of 2 bytes
-class Pack2x1BNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_BYTE; }
+//------------------------------Pack2DNode--------------------------------------
+// Pack 2 double scalars into a vector
+class Pack2DNode : public PackNode {
  public:
-  Pack2x1BNode(Node *in1, Node* in2) : PackNode(in1, in2) {}
+  Pack2DNode(Node* in1, Node* in2, const TypeVect* vt) : PackNode(in1, in2, vt) {}
   virtual int Opcode() const;
-  virtual uint ideal_reg() const { return Op_RegI; }
 };
 
-//------------------------------Pack2x2BNode---------------------------------------
-// Pack 2 2-byte integers into vector of 4 bytes
-class Pack2x2BNode : public PackNode {
- protected:
-  virtual BasicType elt_basic_type() const { return T_CHAR; }
- public:
-  Pack2x2BNode(Node *in1, Node* in2) : PackNode(in1, in2) {}
-  virtual int Opcode() const;
-  virtual uint ideal_reg() const { return Op_RegI; }
-};
 
 //========================Extract_Scalar_from_Vector===============================
 
@@ -1069,7 +465,7 @@
   virtual int Opcode() const;
   uint  pos() const { return in(2)->get_int(); }
 
-  static Node* make(Compile* C, Node* v, uint position, const Type* opd_t);
+  static Node* make(Compile* C, Node* v, uint position, BasicType bt);
 };
 
 //------------------------------ExtractBNode---------------------------------------
@@ -1082,6 +478,16 @@
   virtual uint ideal_reg() const { return Op_RegI; }
 };
 
+//------------------------------ExtractUBNode--------------------------------------
+// Extract a boolean from a vector at position "pos"
+class ExtractUBNode : public ExtractNode {
+ public:
+  ExtractUBNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
+  virtual int Opcode() const;
+  virtual const Type *bottom_type() const { return TypeInt::INT; }
+  virtual uint ideal_reg() const { return Op_RegI; }
+};
+
 //------------------------------ExtractCNode---------------------------------------
 // Extract a char from a vector at position "pos"
 class ExtractCNode : public ExtractNode {
--- a/hotspot/src/share/vm/prims/jni.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/prims/jni.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/altHashing.hpp"
 #include "classfile/classLoader.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/symbolTable.hpp"
@@ -5053,6 +5054,7 @@
     run_unit_test(arrayOopDesc::test_max_array_length());
     run_unit_test(CollectedHeap::test_is_in());
     run_unit_test(QuickSort::test_quick_sort());
+    run_unit_test(AltHashing::test_alt_hash());
     tty->print_cr("All internal VM tests passed");
   }
 }
--- a/hotspot/src/share/vm/prims/jvmtiTagMap.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -585,7 +585,7 @@
     _o = klassOop_if_java_lang_Class(o);
 
     // object size
-    _obj_size = _o->size() * wordSize;
+    _obj_size = (jlong)_o->size() * wordSize;
 
     // record the context
     _tag_map = tag_map;
--- a/hotspot/src/share/vm/runtime/fieldDescriptor.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/fieldDescriptor.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -39,6 +39,10 @@
 }
 
 Symbol* fieldDescriptor::generic_signature() const {
+  if (!has_generic_signature()) {
+    return NULL;
+  }
+
   int idx = 0;
   instanceKlass* ik = instanceKlass::cast(field_holder());
   for (AllFieldStream fs(ik); !fs.done(); fs.next()) {
--- a/hotspot/src/share/vm/runtime/fieldDescriptor.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/fieldDescriptor.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -100,6 +100,7 @@
   bool is_field_access_watched() const    { return access_flags().is_field_access_watched(); }
   bool is_field_modification_watched() const
                                           { return access_flags().is_field_modification_watched(); }
+  bool has_generic_signature() const      { return access_flags().field_has_generic_signature(); }
 
   void set_is_field_access_watched(const bool value) {
     _access_flags.set_is_field_access_watched(value);
--- a/hotspot/src/share/vm/runtime/globals.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -2659,6 +2659,9 @@
   product(bool, UseHeavyMonitors, false,                                    \
           "use heavyweight instead of lightweight Java monitors")           \
                                                                             \
+  product(bool, PrintStringTableStatistics, false,                          \
+          "print statistics about the StringTable and SymbolTable")         \
+                                                                            \
   notproduct(bool, PrintSymbolTableSizeHistogram, false,                    \
           "print histogram of the symbol table")                            \
                                                                             \
--- a/hotspot/src/share/vm/runtime/init.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/init.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
 #include "code/icBuffer.hpp"
 #include "gc_interface/collectedHeap.hpp"
 #include "interpreter/bytecodes.hpp"
@@ -157,6 +158,10 @@
       // Print the collected safepoint statistics.
       SafepointSynchronize::print_stat_on_exit();
     }
+    if (PrintStringTableStatistics) {
+      SymbolTable::dump(tty);
+      StringTable::dump(tty);
+    }
     ostream_exit();
   }
 }
--- a/hotspot/src/share/vm/runtime/java.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/java.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -660,6 +660,7 @@
 }
 
 JDK_Version JDK_Version::_current;
+const char* JDK_Version::_runtime_name;
 
 void JDK_Version::initialize() {
   jdk_version_info info;
--- a/hotspot/src/share/vm/runtime/java.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/java.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -74,6 +74,7 @@
  private:
 
   static JDK_Version _current;
+  static const char* _runtime_name;
 
   // In this class, we promote the minor version of release to be the
   // major version for releases >= 5 in anticipation of the JDK doing the
@@ -181,6 +182,13 @@
 
   void to_string(char* buffer, size_t buflen) const;
 
+  static const char* runtime_name() {
+    return _runtime_name;
+  }
+  static void set_runtime_name(const char* name) {
+    _runtime_name = name;
+  }
+
   // Convenience methods for queries on the current major/minor version
   static bool is_jdk12x_version() {
     return current().compare_major(2) == 0;
--- a/hotspot/src/share/vm/runtime/reflection.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/reflection.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -829,7 +829,7 @@
   java_lang_reflect_Field::set_modifiers(rh(), fd->access_flags().as_int() & JVM_RECOGNIZED_FIELD_MODIFIERS);
   java_lang_reflect_Field::set_override(rh(), false);
   if (java_lang_reflect_Field::has_signature_field() &&
-      fd->generic_signature() != NULL) {
+      fd->has_generic_signature()) {
     Symbol*  gs = fd->generic_signature();
     Handle sig = java_lang_String::create_from_symbol(gs, CHECK_NULL);
     java_lang_reflect_Field::set_signature(rh(), sig());
--- a/hotspot/src/share/vm/runtime/safepoint.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/safepoint.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "code/codeCache.hpp"
 #include "code/icBuffer.hpp"
@@ -526,8 +527,20 @@
     CompilationPolicy::policy()->do_safepoint_work();
   }
 
-  TraceTime t4("sweeping nmethods", TraceSafepointCleanupTime);
-  NMethodSweeper::scan_stacks();
+  {
+    TraceTime t4("sweeping nmethods", TraceSafepointCleanupTime);
+    NMethodSweeper::scan_stacks();
+  }
+
+  if (SymbolTable::needs_rehashing()) {
+    TraceTime t5("rehashing symbol table", TraceSafepointCleanupTime);
+    SymbolTable::rehash_table();
+  }
+
+  if (StringTable::needs_rehashing()) {
+    TraceTime t6("rehashing string table", TraceSafepointCleanupTime);
+    StringTable::rehash_table();
+  }
 
   // rotate log files?
   if (UseGCLogFileRotation) {
--- a/hotspot/src/share/vm/runtime/thread.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/thread.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -996,6 +996,29 @@
                                          vmSymbols::void_method_signature(), CHECK);
 }
 
+char java_runtime_name[128] = "";
+
+// extract the JRE name from sun.misc.Version.java_runtime_name
+static const char* get_java_runtime_name(TRAPS) {
+  klassOop k = SystemDictionary::find(vmSymbols::sun_misc_Version(),
+                                      Handle(), Handle(), CHECK_AND_CLEAR_NULL);
+  fieldDescriptor fd;
+  bool found = k != NULL &&
+               instanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_name_name(),
+                                                        vmSymbols::string_signature(), &fd);
+  if (found) {
+    oop name_oop = k->java_mirror()->obj_field(fd.offset());
+    if (name_oop == NULL)
+      return NULL;
+    const char* name = java_lang_String::as_utf8_string(name_oop,
+                                                        java_runtime_name,
+                                                        sizeof(java_runtime_name));
+    return name;
+  } else {
+    return NULL;
+  }
+}
+
 // General purpose hook into Java code, run once when the VM is initialized.
 // The Java library method itself may be changed independently from the VM.
 static void call_postVMInitHook(TRAPS) {
@@ -3352,6 +3375,9 @@
       // The VM creates & returns objects of this class. Make sure it's initialized.
       initialize_class(vmSymbols::java_lang_Class(), CHECK_0);
       call_initializeSystemClass(CHECK_0);
+
+      // get the Java runtime name after java.lang.System is initialized
+      JDK_Version::set_runtime_name(get_java_runtime_name(THREAD));
     } else {
       warning("java.lang.System not initialized");
     }
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1944,14 +1944,12 @@
   declare_c2_type(ReverseBytesLNode, Node)                                \
   declare_c2_type(VectorNode, Node)                                       \
   declare_c2_type(AddVBNode, VectorNode)                                  \
-  declare_c2_type(AddVCNode, VectorNode)                                  \
   declare_c2_type(AddVSNode, VectorNode)                                  \
   declare_c2_type(AddVINode, VectorNode)                                  \
   declare_c2_type(AddVLNode, VectorNode)                                  \
   declare_c2_type(AddVFNode, VectorNode)                                  \
   declare_c2_type(AddVDNode, VectorNode)                                  \
   declare_c2_type(SubVBNode, VectorNode)                                  \
-  declare_c2_type(SubVCNode, VectorNode)                                  \
   declare_c2_type(SubVSNode, VectorNode)                                  \
   declare_c2_type(SubVINode, VectorNode)                                  \
   declare_c2_type(SubVLNode, VectorNode)                                  \
@@ -1962,73 +1960,33 @@
   declare_c2_type(DivVFNode, VectorNode)                                  \
   declare_c2_type(DivVDNode, VectorNode)                                  \
   declare_c2_type(LShiftVBNode, VectorNode)                               \
-  declare_c2_type(LShiftVCNode, VectorNode)                               \
   declare_c2_type(LShiftVSNode, VectorNode)                               \
   declare_c2_type(LShiftVINode, VectorNode)                               \
-  declare_c2_type(URShiftVBNode, VectorNode)                              \
-  declare_c2_type(URShiftVCNode, VectorNode)                              \
-  declare_c2_type(URShiftVSNode, VectorNode)                              \
-  declare_c2_type(URShiftVINode, VectorNode)                              \
+  declare_c2_type(RShiftVBNode, VectorNode)                               \
+  declare_c2_type(RShiftVSNode, VectorNode)                               \
+  declare_c2_type(RShiftVINode, VectorNode)                               \
   declare_c2_type(AndVNode, VectorNode)                                   \
   declare_c2_type(OrVNode, VectorNode)                                    \
   declare_c2_type(XorVNode, VectorNode)                                   \
-  declare_c2_type(VectorLoadNode, LoadNode)                               \
-  declare_c2_type(Load16BNode, VectorLoadNode)                            \
-  declare_c2_type(Load8BNode, VectorLoadNode)                             \
-  declare_c2_type(Load4BNode, VectorLoadNode)                             \
-  declare_c2_type(Load8CNode, VectorLoadNode)                             \
-  declare_c2_type(Load4CNode, VectorLoadNode)                             \
-  declare_c2_type(Load2CNode, VectorLoadNode)                             \
-  declare_c2_type(Load8SNode, VectorLoadNode)                             \
-  declare_c2_type(Load4SNode, VectorLoadNode)                             \
-  declare_c2_type(Load2SNode, VectorLoadNode)                             \
-  declare_c2_type(Load4INode, VectorLoadNode)                             \
-  declare_c2_type(Load2INode, VectorLoadNode)                             \
-  declare_c2_type(Load2LNode, VectorLoadNode)                             \
-  declare_c2_type(Load4FNode, VectorLoadNode)                             \
-  declare_c2_type(Load2FNode, VectorLoadNode)                             \
-  declare_c2_type(Load2DNode, VectorLoadNode)                             \
-  declare_c2_type(VectorStoreNode, StoreNode)                             \
-  declare_c2_type(Store16BNode, VectorStoreNode)                          \
-  declare_c2_type(Store8BNode, VectorStoreNode)                           \
-  declare_c2_type(Store4BNode, VectorStoreNode)                           \
-  declare_c2_type(Store8CNode, VectorStoreNode)                           \
-  declare_c2_type(Store4CNode, VectorStoreNode)                           \
-  declare_c2_type(Store2CNode, VectorStoreNode)                           \
-  declare_c2_type(Store4INode, VectorStoreNode)                           \
-  declare_c2_type(Store2INode, VectorStoreNode)                           \
-  declare_c2_type(Store2LNode, VectorStoreNode)                           \
-  declare_c2_type(Store4FNode, VectorStoreNode)                           \
-  declare_c2_type(Store2FNode, VectorStoreNode)                           \
-  declare_c2_type(Store2DNode, VectorStoreNode)                           \
-  declare_c2_type(Replicate16BNode, VectorNode)                           \
-  declare_c2_type(Replicate8BNode, VectorNode)                            \
-  declare_c2_type(Replicate4BNode, VectorNode)                            \
-  declare_c2_type(Replicate8CNode, VectorNode)                            \
-  declare_c2_type(Replicate4CNode, VectorNode)                            \
-  declare_c2_type(Replicate2CNode, VectorNode)                            \
-  declare_c2_type(Replicate8SNode, VectorNode)                            \
-  declare_c2_type(Replicate4SNode, VectorNode)                            \
-  declare_c2_type(Replicate2SNode, VectorNode)                            \
-  declare_c2_type(Replicate4INode, VectorNode)                            \
-  declare_c2_type(Replicate2INode, VectorNode)                            \
-  declare_c2_type(Replicate2LNode, VectorNode)                            \
-  declare_c2_type(Replicate4FNode, VectorNode)                            \
-  declare_c2_type(Replicate2FNode, VectorNode)                            \
-  declare_c2_type(Replicate2DNode, VectorNode)                            \
+  declare_c2_type(LoadVectorNode, LoadNode)                               \
+  declare_c2_type(StoreVectorNode, StoreNode)                             \
+  declare_c2_type(ReplicateBNode, VectorNode)                             \
+  declare_c2_type(ReplicateSNode, VectorNode)                             \
+  declare_c2_type(ReplicateINode, VectorNode)                             \
+  declare_c2_type(ReplicateLNode, VectorNode)                             \
+  declare_c2_type(ReplicateFNode, VectorNode)                             \
+  declare_c2_type(ReplicateDNode, VectorNode)                             \
   declare_c2_type(PackNode, VectorNode)                                   \
   declare_c2_type(PackBNode, PackNode)                                    \
-  declare_c2_type(PackCNode, PackNode)                                    \
   declare_c2_type(PackSNode, PackNode)                                    \
   declare_c2_type(PackINode, PackNode)                                    \
   declare_c2_type(PackLNode, PackNode)                                    \
   declare_c2_type(PackFNode, PackNode)                                    \
   declare_c2_type(PackDNode, PackNode)                                    \
-  declare_c2_type(Pack2x1BNode, PackNode)                                 \
-  declare_c2_type(Pack2x2BNode, PackNode)                                 \
+  declare_c2_type(Pack2LNode, PackNode)                                   \
+  declare_c2_type(Pack2DNode, PackNode)                                   \
   declare_c2_type(ExtractNode, Node)                                      \
   declare_c2_type(ExtractBNode, ExtractNode)                              \
-  declare_c2_type(ExtractCNode, ExtractNode)                              \
   declare_c2_type(ExtractSNode, ExtractNode)                              \
   declare_c2_type(ExtractINode, ExtractNode)                              \
   declare_c2_type(ExtractLNode, ExtractNode)                              \
--- a/hotspot/src/share/vm/utilities/hashtable.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/utilities/hashtable.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "memory/allocation.inline.hpp"
+#include "memory/filemap.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/safepoint.hpp"
@@ -86,6 +87,76 @@
 }
 
 
+// Check to see if the hashtable is unbalanced.  The caller set a flag to
+// rehash at the next safepoint.  If this bucket is 60 times greater than the
+// expected average bucket length, it's an unbalanced hashtable.
+// This is somewhat an arbitrary heuristic but if one bucket gets to
+// rehash_count which is currently 100, there's probably something wrong.
+
+bool BasicHashtable::check_rehash_table(int count) {
+  assert(table_size() != 0, "underflow");
+  if (count > (((double)number_of_entries()/(double)table_size())*rehash_multiple)) {
+    // Set a flag for the next safepoint, which should be at some guaranteed
+    // safepoint interval.
+    return true;
+  }
+  return false;
+}
+
+// Create a new table and using alternate hash code, populate the new table
+// with the existing elements.   This can be used to change the hash code
+// and could in the future change the size of the table.
+
+template <class T> void Hashtable<T>::move_to(Hashtable<T>* new_table) {
+  int saved_entry_count = number_of_entries();
+
+  // Iterate through the table and create a new entry for the new table
+  for (int i = 0; i < new_table->table_size(); ++i) {
+    for (HashtableEntry<T>* p = bucket(i); p != NULL; ) {
+      HashtableEntry<T>* next = p->next();
+      T string = p->literal();
+      // Use alternate hashing algorithm on the symbol in the first table
+      unsigned int hashValue = new_hash(string);
+      // Get a new index relative to the new table (can also change size)
+      int index = new_table->hash_to_index(hashValue);
+      p->set_hash(hashValue);
+      // Keep the shared bit in the Hashtable entry to indicate that this entry
+      // can't be deleted.   The shared bit is the LSB in the _next field so
+      // walking the hashtable past these entries requires
+      // BasicHashtableEntry::make_ptr() call.
+      bool keep_shared = p->is_shared();
+      unlink_entry(p);
+      new_table->add_entry(index, p);
+      if (keep_shared) {
+        p->set_shared();
+      }
+      p = next;
+    }
+  }
+  // give the new table the free list as well
+  new_table->copy_freelist(this);
+  assert(new_table->number_of_entries() == saved_entry_count, "lost entry on dictionary copy?");
+
+  // Destroy memory used by the buckets in the hashtable.  The memory
+  // for the elements has been used in a new table and is not
+  // destroyed.  The memory reuse will benefit resizing the SystemDictionary
+  // to avoid a memory allocation spike at safepoint.
+  free_buckets();
+}
+
+void BasicHashtable::free_buckets() {
+  if (NULL != _buckets) {
+    // Don't delete the buckets in the shared space.  They aren't
+    // allocated by os::malloc
+    if (!UseSharedSpaces ||
+        !FileMapInfo::current_info()->is_in_shared_space(_buckets)) {
+       FREE_C_HEAP_ARRAY(HashtableBucket, _buckets);
+    }
+    _buckets = NULL;
+  }
+}
+
+
 // Reverse the order of elements in the hash buckets.
 
 void BasicHashtable::reverse() {
--- a/hotspot/src/share/vm/utilities/hashtable.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/utilities/hashtable.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -159,8 +159,6 @@
   // Reverse the order of elements in each of the buckets.
   void reverse();
 
-  static unsigned int hash_symbol(const char* s, int len);
-
 private:
   // Instance variables
   int               _table_size;
@@ -179,6 +177,11 @@
   void verify_lookup_length(double load);
 #endif
 
+  enum {
+    rehash_count = 100,
+    rehash_multiple = 60
+  };
+
   void initialize(int table_size, int entry_size, int number_of_entries);
 
   // Accessor
@@ -193,6 +196,29 @@
   // Table entry management
   BasicHashtableEntry* new_entry(unsigned int hashValue);
 
+  // Check that the table is unbalanced
+  bool check_rehash_table(int count);
+
+  // Used when moving the entry to another table
+  // Clean up links, but do not add to free_list
+  void unlink_entry(BasicHashtableEntry* entry) {
+    entry->set_next(NULL);
+    --_number_of_entries;
+  }
+
+  // Move over freelist and free block for allocation
+  void copy_freelist(BasicHashtable* src) {
+    _free_list = src->_free_list;
+    src->_free_list = NULL;
+    _first_free_entry = src->_first_free_entry;
+    src->_first_free_entry = NULL;
+    _end_block = src->_end_block;
+    src->_end_block = NULL;
+  }
+
+  // Free the buckets in this hashtable
+  void free_buckets();
+
 public:
   int table_size() { return _table_size; }
   void set_entry(int index, BasicHashtableEntry* entry);
@@ -249,6 +275,10 @@
   HashtableEntry<T>** bucket_addr(int i) {
     return (HashtableEntry<T>**)BasicHashtable::bucket_addr(i);
   }
+
+  // Function to move these elements into the new table.
+  void move_to(Hashtable<T>* new_table);
+  virtual unsigned int new_hash(T) { ShouldNotReachHere(); return 0; } // should be overridden
 };
 
 
--- a/hotspot/src/share/vm/utilities/hashtable.inline.hpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/utilities/hashtable.inline.hpp	Wed Jul 05 18:15:14 2017 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,27 +30,6 @@
 
 // Inline function definitions for hashtable.hpp.
 
-
-// --------------------------------------------------------------------------
-// Hash function
-
-// We originally used hashpjw, but hash P(31) gives just as good results
-// and is slighly faster. We would like a hash function that looks at every
-// character, since package names have large common prefixes, and also because
-// hash_or_fail does error checking while iterating.
-
-// hash P(31) from Kernighan & Ritchie
-
-inline unsigned int BasicHashtable::hash_symbol(const char* s, int len) {
-  unsigned int h = 0;
-  while (len-- > 0) {
-    h = 31*h + (unsigned) *s;
-    s++;
-  }
-  return h;
-}
-
-
 // --------------------------------------------------------------------------
 
 // Initialize a table.
--- a/hotspot/src/share/vm/utilities/vmError.cpp	Thu Jun 28 09:33:05 2012 -0700
+++ b/hotspot/src/share/vm/utilities/vmError.cpp	Wed Jul 05 18:15:14 2017 +0200
@@ -450,7 +450,9 @@
      // VM version
      st->print_cr("#");
      JDK_Version::current().to_string(buf, sizeof(buf));
-     st->print_cr("# JRE version: %s", buf);
+     const char* runtime_name = JDK_Version::runtime_name() != NULL ?
+                                  JDK_Version::runtime_name() : "";
+     st->print_cr("# JRE version: %s (%s)", runtime_name, buf);
      st->print_cr("# Java VM: %s (%s %s %s %s)",
                    Abstract_VM_Version::vm_name(),
                    Abstract_VM_Version::vm_release(),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestBooleanVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,952 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestBooleanVect
+ */
+
+public class TestBooleanVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Boolean vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    boolean[] a1 = new boolean[ARRLEN];
+    boolean[] a2 = new boolean[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, true);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, true, true);
+      test_ci_neg(a1);
+      test_vi_neg(a2, true);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, true, true);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, true);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, true, true);
+      test_ci_off(a1);
+      test_vi_off(a2, true);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, true, true);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, true, OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, true, true, OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, true);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, true, true);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, true, true);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, true, true);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = false;
+      a2[i] = false;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], false);
+      }
+      test_vi(a2, true);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], true);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], true);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], false);
+        errn += verify("test_2ci: a2", i, a2[i], false);
+      }
+      test_2vi(a1, a2, true, true);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], true);
+        errn += verify("test_2vi: a2", i, a2[i], true);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], false);
+      }
+      test_vi_neg(a2, true);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], true);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], true);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], false);
+        errn += verify("test_2ci_neg: a2", i, a2[i], false);
+      }
+      test_2vi_neg(a1, a2, true, true);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], true);
+        errn += verify("test_2vi_neg: a2", i, a2[i], true);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], false);
+      }
+      test_vi_oppos(a2, true);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], true);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], true);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], false);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], false);
+      }
+      test_2vi_oppos(a1, a2, true, true);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], true);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], true);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], false);
+      }
+      test_vi_off(a2, true);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], true);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], true);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], false);
+        errn += verify("test_2ci_off: a2", i, a2[i], false);
+      }
+      test_2vi_off(a1, a2, true, true);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], true);
+        errn += verify("test_2vi_off: a2", i, a2[i], true);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], false);
+        errn += verify("test_2vi_off: a2", i, a2[i], false);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], false);
+      }
+      test_vi_inv(a2, true, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], true);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], true);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], false);
+        errn += verify("test_2ci_inv: a2", i, a2[i], false);
+      }
+      test_2vi_inv(a1, a2, true, true, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], true);
+        errn += verify("test_2vi_inv: a2", i, a2[i], true);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], false);
+        errn += verify("test_2vi_inv: a2", i, a2[i], false);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = true;
+        a2[i] = false;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        boolean val = (i%SCALE != 0);
+        errn += verify("test_ci_scl: a1", i, a1[i], val);
+      }
+      test_vi_scl(a2, true);
+      for (int i=0; i<ARRLEN; i++) {
+        boolean val = (i%SCALE == 0);
+        errn += verify("test_vi_scl: a2", i, a2[i], val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_scl: a1", i, a1[i], true);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], true);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], false);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], false);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], false);
+        }
+      }
+      test_2vi_scl(a1, a2, false, true);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], true);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], false);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], false);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], true);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_vi(a2, true);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], false);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], true);
+      }
+      test_vi(a2, false);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], false);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], true);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], false);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], false);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], false);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], false);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_2vi_aln(a1, a2, true, true);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], true);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], false);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], false);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], true);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_vi(a2, true);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], false);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], true);
+      }
+      test_vi(a2, false);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], false);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], true);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], false);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], false);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], false);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], false);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+        a2[i] = false;
+      }
+      test_2vi_unaln(a1, a2, true, true);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], true);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], false);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], false);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], true);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (i > 0);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = false;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        boolean v = (i%ALIGN_OFF > 0);
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = false;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], false);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        boolean v = (i%ALIGN_OFF > 0);
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], false);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], false);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+      }
+      test_2vi_aln(a1, a1, true, true);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], true);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], true);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (i > 0);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = false;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        boolean v = (i%UNALIGN_OFF > 0);
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = false;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], false);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        boolean v = (i%UNALIGN_OFF > 0);
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], false);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], false);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = false;
+      }
+      test_2vi_unaln(a1, a1, true, true);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], true);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], true);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, true, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, true, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, true, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, true, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, true, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, true, true, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, true, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, true, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, true, true);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(boolean[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = false;
+    }
+  }
+  static void test_vi(boolean[] a, boolean b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = false;
+      b[i] = false;
+    }
+  }
+  static void test_2vi(boolean[] a, boolean[] b, boolean c, boolean d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(boolean[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = false;
+    }
+  }
+  static void test_vi_neg(boolean[] a, boolean b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(boolean[] a, boolean[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(boolean[] a, boolean[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = false;
+      b[i] = false;
+    }
+  }
+  static void test_2vi_neg(boolean[] a, boolean[] b, boolean c, boolean d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(boolean[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = false;
+    }
+  }
+  static void test_vi_oppos(boolean[] a, boolean b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(boolean[] a, boolean[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(boolean[] a, boolean[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = false;
+      b[i] = false;
+    }
+  }
+  static void test_2vi_oppos(boolean[] a, boolean[] b, boolean c, boolean d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(boolean[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = false;
+    }
+  }
+  static void test_vi_off(boolean[] a, boolean b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = false;
+      b[i+OFFSET] = false;
+    }
+  }
+  static void test_2vi_off(boolean[] a, boolean[] b, boolean c, boolean d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(boolean[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = false;
+    }
+  }
+  static void test_vi_inv(boolean[] a, boolean b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(boolean[] a, boolean[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(boolean[] a, boolean[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = false;
+      b[i+k] = false;
+    }
+  }
+  static void test_2vi_inv(boolean[] a, boolean[] b, boolean c, boolean d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(boolean[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = false;
+    }
+  }
+  static void test_vi_scl(boolean[] a, boolean b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(boolean[] a, boolean[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(boolean[] a, boolean[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = false;
+      b[i*SCALE] = false;
+    }
+  }
+  static void test_2vi_scl(boolean[] a, boolean[] b, boolean c, boolean d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = false;
+      b[i] = false;
+    }
+  }
+  static void test_2vi_aln(boolean[] a, boolean[] b, boolean c, boolean d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(boolean[] a, boolean[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = false;
+      b[i] = false;
+    }
+  }
+  static void test_2vi_unaln(boolean[] a, boolean[] b, boolean c, boolean d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, boolean elem, boolean val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestByteDoubleVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestByteDoubleVect
+ */
+
+public class TestByteDoubleVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Byte + Double vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    byte[] a1 = new byte[ARRLEN];
+    byte[] a2 = new byte[ARRLEN];
+    double[] b1 = new double[ARRLEN];
+    double[] b2 = new double[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (byte)123, 103.);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (byte)123, 103.);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (byte)123, 103.);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (byte)123, 103.);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (byte)123, 103.);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.;
+      b2[i] = -1.;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.);
+      }
+      test_vi(a2, b2, (byte)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.);
+      }
+      test_vi_neg(a2, b2, (byte)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.);
+      }
+      test_vi_oppos(a2, b2, (byte)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_vi_aln(a1, b1, (byte)123, 103.);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (byte)123, 103.);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (double)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (double)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (byte)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (byte)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (byte)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (byte)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (byte)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(byte[] a, double[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi(byte[] a, double[] b, byte c, double d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(byte[] a, byte[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(byte[] a, double[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_neg(byte[] a, double[] b, byte c, double d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(byte[] a, byte[] b, double[] c, double[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(byte[] a, double[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_oppos(byte[] a, double[] b, byte c, double d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(byte[] a, byte[] b, double[] c, double[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(byte[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_aln(byte[] a, double[] b, byte c, double d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(byte[] a, byte[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(byte[] a, byte[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(byte[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_unaln(byte[] a, double[] b, byte c, double d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(byte[] a, byte[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(byte[] a, byte[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, byte elem, byte val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, double elem, double val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestByteFloatVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestByteFloatVect
+ */
+
+public class TestByteFloatVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Byte + Float vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    byte[] a1 = new byte[ARRLEN];
+    byte[] a2 = new byte[ARRLEN];
+    float[] b1 = new float[ARRLEN];
+    float[] b2 = new float[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (byte)123, 103.f);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (byte)123, 103.f);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (byte)123, 103.f);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (byte)123, 103.f);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (byte)123, 103.f);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.f;
+      b2[i] = -1.f;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.f);
+      }
+      test_vi(a2, b2, (byte)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.f);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.f);
+      }
+      test_vi_neg(a2, b2, (byte)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.f);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.f);
+      }
+      test_vi_oppos(a2, b2, (byte)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.f);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_vi_aln(a1, b1, (byte)123, 103.f);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (byte)123, 103.f);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (float)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.f;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (float)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.f;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (byte)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (byte)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (byte)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (byte)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (byte)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(byte[] a, float[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi(byte[] a, float[] b, byte c, float d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(byte[] a, byte[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(byte[] a, float[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_neg(byte[] a, float[] b, byte c, float d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(byte[] a, byte[] b, float[] c, float[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(byte[] a, float[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_oppos(byte[] a, float[] b, byte c, float d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(byte[] a, byte[] b, float[] c, float[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(byte[] a, float[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_aln(byte[] a, float[] b, byte c, float d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(byte[] a, byte[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(byte[] a, byte[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(byte[] a, float[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_unaln(byte[] a, float[] b, byte c, float d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(byte[] a, byte[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(byte[] a, byte[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, byte elem, byte val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, float elem, float val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestByteIntVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestByteIntVect
+ */
+
+public class TestByteIntVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Byte + Integer vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    byte[] a1 = new byte[ARRLEN];
+    byte[] a2 = new byte[ARRLEN];
+    int[] b1 = new int[ARRLEN];
+    int[] b2 = new int[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (byte)123, (int)103);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (byte)123, (int)103);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (byte)123, (int)103);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (byte)123, (int)103);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (byte)123, (int)103);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1;
+      b2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci: b1", i, b1[i], (int)-103);
+      }
+      test_vi(a2, b2, (byte)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi: b2", i, b2[i], (int)103);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], (int)-103);
+      }
+      test_vi_neg(a2, b2, (byte)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], (int)103);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], (int)-103);
+      }
+      test_vi_oppos(a2, b2, (byte)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], (int)103);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (int)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (int)123);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (int)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (int)-1);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_aln(a1, b1, (byte)123, (int)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (int)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (int)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (int)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (byte)123, (int)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (int)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (int)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (int)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (int)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (int)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (int)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (byte)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (byte)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (byte)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (byte)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (byte)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(byte[] a, int[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi(byte[] a, int[] b, byte c, int d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(byte[] a, byte[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(byte[] a, int[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_neg(byte[] a, int[] b, byte c, int d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(byte[] a, byte[] b, int[] c, int[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(byte[] a, int[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_oppos(byte[] a, int[] b, byte c, int d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(byte[] a, byte[] b, int[] c, int[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(byte[] a, int[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_aln(byte[] a, int[] b, byte c, int d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(byte[] a, byte[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(byte[] a, byte[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(byte[] a, int[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_unaln(byte[] a, int[] b, byte c, int d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(byte[] a, byte[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(byte[] a, byte[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, byte elem, byte val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, int elem, int val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestByteLongVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestByteLongVect
+ */
+
+public class TestByteLongVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Byte + Long vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    byte[] a1 = new byte[ARRLEN];
+    byte[] a2 = new byte[ARRLEN];
+    long[] b1 = new long[ARRLEN];
+    long[] b2 = new long[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (byte)123, (long)103);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (byte)123, (long)103);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (byte)123, (long)103);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (byte)123, (long)103);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (byte)123, (long)103);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1;
+      b2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci: b1", i, b1[i], (long)-103);
+      }
+      test_vi(a2, b2, (byte)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi: b2", i, b2[i], (long)103);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], (long)-103);
+      }
+      test_vi_neg(a2, b2, (byte)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], (long)103);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], (long)-103);
+      }
+      test_vi_oppos(a2, b2, (byte)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], (long)103);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (long)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (long)123);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (long)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (long)-1);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_aln(a1, b1, (byte)123, (long)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (long)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (long)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (byte)123, (long)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (long)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (long)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (long)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (long)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (long)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (long)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (byte)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (byte)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (byte)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (byte)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (byte)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(byte[] a, long[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi(byte[] a, long[] b, byte c, long d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(byte[] a, byte[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(byte[] a, long[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_neg(byte[] a, long[] b, byte c, long d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(byte[] a, byte[] b, long[] c, long[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(byte[] a, long[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_oppos(byte[] a, long[] b, byte c, long d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(byte[] a, byte[] b, long[] c, long[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(byte[] a, long[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_aln(byte[] a, long[] b, byte c, long d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(byte[] a, byte[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(byte[] a, byte[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(byte[] a, long[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_unaln(byte[] a, long[] b, byte c, long d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(byte[] a, byte[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(byte[] a, byte[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, byte elem, byte val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, long elem, long val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestByteShortVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestByteShortVect
+ */
+
+public class TestByteShortVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Byte + Short vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    byte[] a1 = new byte[ARRLEN];
+    byte[] a2 = new byte[ARRLEN];
+    short[] b1 = new short[ARRLEN];
+    short[] b2 = new short[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (byte)123, (short)103);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (byte)123, (short)103);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (byte)123, (short)103);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (byte)123, (short)103);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (byte)123, (short)103);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1;
+      b2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci: b1", i, b1[i], (short)-103);
+      }
+      test_vi(a2, b2, (byte)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi: b2", i, b2[i], (short)103);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], (short)-103);
+      }
+      test_vi_neg(a2, b2, (byte)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], (short)103);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (byte)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], (short)-103);
+      }
+      test_vi_oppos(a2, b2, (byte)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (byte)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], (short)103);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (short)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (short)123);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (short)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (short)-1);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_aln(a1, b1, (byte)123, (short)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (short)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (short)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (short)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (byte)123, (short)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (short)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (short)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (short)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+        b1[i] = (short)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (short)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (short)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (byte)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (byte)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (byte)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (byte)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (byte)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(byte[] a, short[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi(byte[] a, short[] b, byte c, short d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(byte[] a, byte[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(byte[] a, short[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_neg(byte[] a, short[] b, byte c, short d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(byte[] a, byte[] b, short[] c, short[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(byte[] a, short[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_oppos(byte[] a, short[] b, byte c, short d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(byte[] a, byte[] b, short[] c, short[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(byte[] a, short[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_aln(byte[] a, short[] b, byte c, short d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(byte[] a, byte[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(byte[] a, byte[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(byte[] a, short[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_unaln(byte[] a, short[] b, byte c, short d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(byte[] a, byte[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(byte[] a, byte[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, byte elem, byte val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, short elem, short val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestByteVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,953 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestByteVect
+ */
+
+public class TestByteVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Byte vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    byte[] a1 = new byte[ARRLEN];
+    byte[] a2 = new byte[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, (byte)123);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, (byte)123, (byte)103);
+      test_ci_neg(a1);
+      test_vi_neg(a2, (byte)123);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, (byte)123, (byte)103);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, (byte)123);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, (byte)123, (byte)103);
+      test_ci_off(a1);
+      test_vi_off(a2, (byte)123);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, (byte)123, (byte)103);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, (byte)123, OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, (byte)123, (byte)103, OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, (byte)123);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, (byte)123, (byte)103);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, (byte)123, (byte)103);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, (byte)123, (byte)103);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (byte)-123);
+      }
+      test_vi(a2, (byte)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (byte)123);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (byte)123);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], (byte)-123);
+        errn += verify("test_2ci: a2", i, a2[i], (byte)-103);
+      }
+      test_2vi(a1, a2, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], (byte)123);
+        errn += verify("test_2vi: a2", i, a2[i], (byte)103);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (byte)-123);
+      }
+      test_vi_neg(a2, (byte)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (byte)123);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (byte)123);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], (byte)-123);
+        errn += verify("test_2ci_neg: a2", i, a2[i], (byte)-103);
+      }
+      test_2vi_neg(a1, a2, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], (byte)123);
+        errn += verify("test_2vi_neg: a2", i, a2[i], (byte)103);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (byte)-123);
+      }
+      test_vi_oppos(a2, (byte)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (byte)123);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (byte)123);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], (byte)-123);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], (byte)-103);
+      }
+      test_2vi_oppos(a1, a2, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], (byte)123);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], (byte)103);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], (byte)-123);
+      }
+      test_vi_off(a2, (byte)123);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], (byte)123);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], (byte)123);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], (byte)-123);
+        errn += verify("test_2ci_off: a2", i, a2[i], (byte)-103);
+      }
+      test_2vi_off(a1, a2, (byte)123, (byte)103);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (byte)123);
+        errn += verify("test_2vi_off: a2", i, a2[i], (byte)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (byte)-1);
+        errn += verify("test_2vi_off: a2", i, a2[i], (byte)-1);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], (byte)-123);
+      }
+      test_vi_inv(a2, (byte)123, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], (byte)123);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], (byte)123);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], (byte)-123);
+        errn += verify("test_2ci_inv: a2", i, a2[i], (byte)-103);
+      }
+      test_2vi_inv(a1, a2, (byte)123, (byte)103, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (byte)123);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (byte)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (byte)-1);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (byte)-1);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : -123;
+        errn += verify("test_ci_scl: a1", i, a1[i], (byte)val);
+      }
+      test_vi_scl(a2, (byte)123);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_vi_scl: a2", i, a2[i], (byte)val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_cp_scl: a1", i, a1[i], (byte)val);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], (byte)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], (byte)-123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], (byte)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], (byte)-103);
+        }
+      }
+      test_2vi_scl(a1, a2, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], (byte)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], (byte)123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], (byte)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], (byte)103);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (byte)123);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (byte)123);
+      }
+      test_vi(a2, (byte)-123);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (byte)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (byte)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (byte)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_aln(a1, a2, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (byte)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (byte)123);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (byte)123);
+      }
+      test_vi(a2, (byte)-123);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (byte)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (byte)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (byte)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_unaln(a1, a2, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (byte)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (byte)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (byte)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (byte)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_aln(a1, a1, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (byte)103);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (byte)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (byte)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (byte)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (byte)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (byte)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_unaln(a1, a1, (byte)123, (byte)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (byte)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (byte)103);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, (byte)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, (byte)123, (byte)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, (byte)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, (byte)123, (byte)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, (byte)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, (byte)123, (byte)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, (byte)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, (byte)123, (byte)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, (byte)123, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, (byte)123, (byte)103, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, (byte)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, (byte)123, (byte)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, (byte)123, (byte)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, (byte)123, (byte)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(byte[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi(byte[] a, byte b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi(byte[] a, byte[] b, byte c, byte d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(byte[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi_neg(byte[] a, byte b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(byte[] a, byte[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(byte[] a, byte[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_neg(byte[] a, byte[] b, byte c, byte d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(byte[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+    }
+  }
+  static void test_vi_oppos(byte[] a, byte b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(byte[] a, byte[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(byte[] a, byte[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_oppos(byte[] a, byte[] b, byte c, byte d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(byte[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+    }
+  }
+  static void test_vi_off(byte[] a, byte b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+      b[i+OFFSET] = -103;
+    }
+  }
+  static void test_2vi_off(byte[] a, byte[] b, byte c, byte d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(byte[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+    }
+  }
+  static void test_vi_inv(byte[] a, byte b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(byte[] a, byte[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(byte[] a, byte[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+      b[i+k] = -103;
+    }
+  }
+  static void test_2vi_inv(byte[] a, byte[] b, byte c, byte d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(byte[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+    }
+  }
+  static void test_vi_scl(byte[] a, byte b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(byte[] a, byte[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(byte[] a, byte[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+      b[i*SCALE] = -103;
+    }
+  }
+  static void test_2vi_scl(byte[] a, byte[] b, byte c, byte d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_aln(byte[] a, byte[] b, byte c, byte d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(byte[] a, byte[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_unaln(byte[] a, byte[] b, byte c, byte d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, byte elem, byte val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestCharShortVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestCharShortVect
+ */
+
+public class TestCharShortVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Char + Short vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    char[] a1 = new char[ARRLEN];
+    char[] a2 = new char[ARRLEN];
+    short[] b1 = new short[ARRLEN];
+    short[] b2 = new short[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (char)123, (short)103);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (char)123, (short)103);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (char)123, (short)103);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (char)123, (short)103);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (char)123, (short)103);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = (char)-1;
+      a2[i] = (char)-1;
+      b1[i] = (short)-1;
+      b2[i] = (short)-1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (char)-123);
+        errn += verify("test_ci: b1", i, b1[i], (short)-103);
+      }
+      test_vi(a2, b2, (char)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (char)123);
+        errn += verify("test_vi: b2", i, b2[i], (short)103);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (char)123);
+        errn += verify("test_cp: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+        b1[i] = (short)-1;
+        b2[i] = (short)-1;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (char)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], (short)-103);
+      }
+      test_vi_neg(a2, b2, (char)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (char)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], (short)103);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (char)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+        b1[i] = (short)-1;
+        b2[i] = (short)-1;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (char)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], (short)-103);
+      }
+      test_vi_oppos(a2, b2, (char)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (char)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], (short)103);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (char)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)123;
+        b1[i] = (short)-1;
+        b2[i] = (short)123;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (char)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (char)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = (char)-123;
+        b2[i] = (short)-123;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (char)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (short)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (char)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (short)123);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        b1[i] = (short)-1;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (char)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (short)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (short)-1);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        b1[i] = (short)-1;
+      }
+      test_vi_aln(a1, b1, (char)123, (short)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (char)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)123;
+        b1[i] = (short)-1;
+        b2[i] = (short)123;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (char)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (char)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = (char)-123;
+        b2[i] = (short)-123;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (char)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (short)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (char)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        b1[i] = (short)-1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (char)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (short)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (short)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        b1[i] = (short)-1;
+      }
+      test_vi_unaln(a1, b1, (char)123, (short)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (char)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (short)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (char)i;
+        b1[i] = (short)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        b1[i] = (short)-1;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (char)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (short)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = (char)-1;
+        b1[i+ALIGN_OFF] = (short)-1;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (char)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (char)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (short)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (char)i;
+        b1[i] = (short)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        b1[i] = (short)-1;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (char)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (short)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = (char)-1;
+        b1[i+UNALIGN_OFF] = (short)-1;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (char)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (char)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (short)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (char)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (char)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (char)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (char)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (char)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(char[] a, short[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = (char)-123;
+      b[i] = (short)-103;
+    }
+  }
+  static void test_vi(char[] a, short[] b, char c, short d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(char[] a, char[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(char[] a, short[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = (char)-123;
+      b[i] = (short)-103;
+    }
+  }
+  static void test_vi_neg(char[] a, short[] b, char c, short d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(char[] a, char[] b, short[] c, short[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(char[] a, short[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = (char)-123;
+      b[i] = (short)-103;
+    }
+  }
+  static void test_vi_oppos(char[] a, short[] b, char c, short d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(char[] a, char[] b, short[] c, short[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(char[] a, short[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = (char)-123;
+      b[i] = (short)-103;
+    }
+  }
+  static void test_vi_aln(char[] a, short[] b, char c, short d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(char[] a, char[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(char[] a, char[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(char[] a, short[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = (char)-123;
+      b[i] = (short)-103;
+    }
+  }
+  static void test_vi_unaln(char[] a, short[] b, char c, short d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(char[] a, char[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(char[] a, char[] b, short[] c, short[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, char elem, char val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, short elem, short val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestCharVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,953 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestCharVect
+ */
+
+public class TestCharVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Char vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    char[] a1 = new char[ARRLEN];
+    char[] a2 = new char[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, (char)123);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, (char)123, (char)103);
+      test_ci_neg(a1);
+      test_vi_neg(a2, (char)123);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, (char)123, (char)103);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, (char)123);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, (char)123, (char)103);
+      test_ci_off(a1);
+      test_vi_off(a2, (char)123);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, (char)123, (char)103);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, (char)123, OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, (char)123, (char)103, OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, (char)123);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, (char)123, (char)103);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, (char)123, (char)103);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, (char)123, (char)103);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = (char)-1;
+      a2[i] = (char)-1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (char)-123);
+      }
+      test_vi(a2, (char)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (char)123);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (char)123);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], (char)-123);
+        errn += verify("test_2ci: a2", i, a2[i], (char)-103);
+      }
+      test_2vi(a1, a2, (char)123, (char)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], (char)123);
+        errn += verify("test_2vi: a2", i, a2[i], (char)103);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (char)-123);
+      }
+      test_vi_neg(a2, (char)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (char)123);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (char)123);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], (char)-123);
+        errn += verify("test_2ci_neg: a2", i, a2[i], (char)-103);
+      }
+      test_2vi_neg(a1, a2, (char)123, (char)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], (char)123);
+        errn += verify("test_2vi_neg: a2", i, a2[i], (char)103);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (char)-123);
+      }
+      test_vi_oppos(a2, (char)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (char)123);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (char)123);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], (char)-123);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], (char)-103);
+      }
+      test_2vi_oppos(a1, a2, (char)123, (char)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], (char)123);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], (char)103);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], (char)-123);
+      }
+      test_vi_off(a2, (char)123);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], (char)123);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], (char)123);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], (char)-123);
+        errn += verify("test_2ci_off: a2", i, a2[i], (char)-103);
+      }
+      test_2vi_off(a1, a2, (char)123, (char)103);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (char)123);
+        errn += verify("test_2vi_off: a2", i, a2[i], (char)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (char)-1);
+        errn += verify("test_2vi_off: a2", i, a2[i], (char)-1);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], (char)-123);
+      }
+      test_vi_inv(a2, (char)123, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], (char)123);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], (char)123);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], (char)-123);
+        errn += verify("test_2ci_inv: a2", i, a2[i], (char)-103);
+      }
+      test_2vi_inv(a1, a2, (char)123, (char)103, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (char)123);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (char)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (char)-1);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (char)-1);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : -123;
+        errn += verify("test_ci_scl: a1", i, a1[i], (char)val);
+      }
+      test_vi_scl(a2, (char)123);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_vi_scl: a2", i, a2[i], (char)val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_cp_scl: a1", i, a1[i], (char)val);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], (char)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], (char)-123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], (char)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], (char)-103);
+        }
+      }
+      test_2vi_scl(a1, a2, (char)123, (char)103);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], (char)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], (char)123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], (char)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], (char)103);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_vi(a2, (char)123);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (char)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (char)123);
+      }
+      test_vi(a2, (char)-123);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (char)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (char)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (char)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (char)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (char)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_2vi_aln(a1, a2, (char)123, (char)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (char)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (char)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (char)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_vi(a2, (char)123);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (char)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (char)123);
+      }
+      test_vi(a2, (char)-123);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (char)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (char)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (char)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (char)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (char)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+        a2[i] = (char)-1;
+      }
+      test_2vi_unaln(a1, a2, (char)123, (char)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (char)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (char)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (char)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (char)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (char)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (char)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = (char)-1;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (char)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (char)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (char)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (char)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+      }
+      test_2vi_aln(a1, a1, (char)123, (char)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (char)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (char)103);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (char)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (char)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = (char)-1;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (char)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (char)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (char)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (char)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = (char)-1;
+      }
+      test_2vi_unaln(a1, a1, (char)123, (char)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (char)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (char)103);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, (char)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, (char)123, (char)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, (char)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, (char)123, (char)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, (char)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, (char)123, (char)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, (char)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, (char)123, (char)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, (char)123, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, (char)123, (char)103, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, (char)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, (char)123, (char)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, (char)123, (char)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, (char)123, (char)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(char[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = (char)-123;
+    }
+  }
+  static void test_vi(char[] a, char b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(char[] a, char[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(char[] a, char[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = (char)-123;
+      b[i] = (char)-103;
+    }
+  }
+  static void test_2vi(char[] a, char[] b, char c, char d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(char[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = (char)-123;
+    }
+  }
+  static void test_vi_neg(char[] a, char b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(char[] a, char[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(char[] a, char[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = (char)-123;
+      b[i] = (char)-103;
+    }
+  }
+  static void test_2vi_neg(char[] a, char[] b, char c, char d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(char[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = (char)-123;
+    }
+  }
+  static void test_vi_oppos(char[] a, char b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(char[] a, char[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(char[] a, char[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = (char)-123;
+      b[i] = (char)-103;
+    }
+  }
+  static void test_2vi_oppos(char[] a, char[] b, char c, char d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(char[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = (char)-123;
+    }
+  }
+  static void test_vi_off(char[] a, char b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(char[] a, char[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(char[] a, char[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = (char)-123;
+      b[i+OFFSET] = (char)-103;
+    }
+  }
+  static void test_2vi_off(char[] a, char[] b, char c, char d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(char[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = (char)-123;
+    }
+  }
+  static void test_vi_inv(char[] a, char b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(char[] a, char[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(char[] a, char[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = (char)-123;
+      b[i+k] = (char)-103;
+    }
+  }
+  static void test_2vi_inv(char[] a, char[] b, char c, char d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(char[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = (char)-123;
+    }
+  }
+  static void test_vi_scl(char[] a, char b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(char[] a, char[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(char[] a, char[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = (char)-123;
+      b[i*SCALE] = (char)-103;
+    }
+  }
+  static void test_2vi_scl(char[] a, char[] b, char c, char d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(char[] a, char[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(char[] a, char[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(char[] a, char[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = (char)-123;
+      b[i] = (char)-103;
+    }
+  }
+  static void test_2vi_aln(char[] a, char[] b, char c, char d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(char[] a, char[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(char[] a, char[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(char[] a, char[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = (char)-123;
+      b[i] = (char)-103;
+    }
+  }
+  static void test_2vi_unaln(char[] a, char[] b, char c, char d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, char elem, char val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestDoubleVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,953 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestDoubleVect
+ */
+
+public class TestDoubleVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Double vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    double[] a1 = new double[ARRLEN];
+    double[] a2 = new double[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, 123.);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, 123., 103.);
+      test_ci_neg(a1);
+      test_vi_neg(a2, 123.);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, 123., 103.);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, 123.);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, 123., 103.);
+      test_ci_off(a1);
+      test_vi_off(a2, 123.);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, 123., 103.);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, 123., OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, 123., 103., OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, 123.);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, 123., 103.);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, 123., 103.);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, 123., 103.);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], -123.);
+      }
+      test_vi(a2, 123.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], 123.);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], 123.);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], -123.);
+        errn += verify("test_2ci: a2", i, a2[i], -103.);
+      }
+      test_2vi(a1, a2, 123., 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], 123.);
+        errn += verify("test_2vi: a2", i, a2[i], 103.);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], -123.);
+      }
+      test_vi_neg(a2, 123.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], 123.);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], 123.);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], -123.);
+        errn += verify("test_2ci_neg: a2", i, a2[i], -103.);
+      }
+      test_2vi_neg(a1, a2, 123., 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], 123.);
+        errn += verify("test_2vi_neg: a2", i, a2[i], 103.);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], -123.);
+      }
+      test_vi_oppos(a2, 123.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], 123.);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], 123.);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], -123.);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], -103.);
+      }
+      test_2vi_oppos(a1, a2, 123., 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], 123.);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], 103.);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], -123.);
+      }
+      test_vi_off(a2, 123.);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], 123.);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], 123.);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], -123.);
+        errn += verify("test_2ci_off: a2", i, a2[i], -103.);
+      }
+      test_2vi_off(a1, a2, 123., 103.);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], 123.);
+        errn += verify("test_2vi_off: a2", i, a2[i], 103.);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], -1.);
+        errn += verify("test_2vi_off: a2", i, a2[i], -1.);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], -123.);
+      }
+      test_vi_inv(a2, 123., OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], 123.);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], 123.);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], -123.);
+        errn += verify("test_2ci_inv: a2", i, a2[i], -103.);
+      }
+      test_2vi_inv(a1, a2, 123., 103., OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], 123.);
+        errn += verify("test_2vi_inv: a2", i, a2[i], 103.);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], -1.);
+        errn += verify("test_2vi_inv: a2", i, a2[i], -1.);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : -123;
+        errn += verify("test_ci_scl: a1", i, a1[i], (double)val);
+      }
+      test_vi_scl(a2, 123.);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_vi_scl: a2", i, a2[i], (double)val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_cp_scl: a1", i, a1[i], (double)val);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], -1.);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], -123.);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], -1.);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], -103.);
+        }
+      }
+      test_2vi_scl(a1, a2, 123., 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], -1.);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], 123.);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], -1.);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], 103.);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, 123.);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], 123.);
+      }
+      test_vi(a2, -123.);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], -123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], -123.);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], -103.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], -1.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_aln(a1, a2, 123., 103.);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], 123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], -1.);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, 123.);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], 123.);
+      }
+      test_vi(a2, -123.);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], -123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], -123.);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], -103.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], -1.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_unaln(a1, a2, 123., 103.);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], 123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], -1.);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], 103.);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (double)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (double)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (double)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], -103.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], -123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_aln(a1, a1, 123., 103.);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], 123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], 103.);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (double)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (double)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (double)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], -103.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], -123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_unaln(a1, a1, 123., 103.);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], 123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], 103.);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, 123.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, 123., 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, 123.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, 123., 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, 123.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, 123., 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, 123.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, 123., 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, 123., OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, 123., 103., OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, 123.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, 123., 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, 123., 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, 123., 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(double[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123.;
+    }
+  }
+  static void test_vi(double[] a, double b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(double[] a, double[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(double[] a, double[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123.;
+      b[i] = -103.;
+    }
+  }
+  static void test_2vi(double[] a, double[] b, double c, double d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(double[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123.;
+    }
+  }
+  static void test_vi_neg(double[] a, double b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(double[] a, double[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(double[] a, double[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123.;
+      b[i] = -103.;
+    }
+  }
+  static void test_2vi_neg(double[] a, double[] b, double c, double d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(double[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123.;
+    }
+  }
+  static void test_vi_oppos(double[] a, double b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(double[] a, double[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(double[] a, double[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123.;
+      b[i] = -103.;
+    }
+  }
+  static void test_2vi_oppos(double[] a, double[] b, double c, double d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(double[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123.;
+    }
+  }
+  static void test_vi_off(double[] a, double b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(double[] a, double[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(double[] a, double[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123.;
+      b[i+OFFSET] = -103.;
+    }
+  }
+  static void test_2vi_off(double[] a, double[] b, double c, double d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(double[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123.;
+    }
+  }
+  static void test_vi_inv(double[] a, double b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(double[] a, double[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(double[] a, double[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123.;
+      b[i+k] = -103.;
+    }
+  }
+  static void test_2vi_inv(double[] a, double[] b, double c, double d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(double[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123.;
+    }
+  }
+  static void test_vi_scl(double[] a, double b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(double[] a, double[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(double[] a, double[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123.;
+      b[i*SCALE] = -103.;
+    }
+  }
+  static void test_2vi_scl(double[] a, double[] b, double c, double d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(double[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(double[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(double[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123.;
+      b[i] = -103.;
+    }
+  }
+  static void test_2vi_aln(double[] a, double[] b, double c, double d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(double[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(double[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(double[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123.;
+      b[i] = -103.;
+    }
+  }
+  static void test_2vi_unaln(double[] a, double[] b, double c, double d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, double elem, double val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestFloatDoubleVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestFloatDoubleVect
+ */
+
+public class TestFloatDoubleVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Float + Double vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    float[] a1 = new float[ARRLEN];
+    float[] a2 = new float[ARRLEN];
+    double[] b1 = new double[ARRLEN];
+    double[] b2 = new double[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, 123.f, 103.);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, 123.f, 103.);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, 123.f, 103.);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, 123.f, 103.);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, 123.f, 103.);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.;
+      b2[i] = -1.;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], -123.f);
+        errn += verify("test_ci: b1", i, b1[i], -103.);
+      }
+      test_vi(a2, b2, 123.f, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], 123.f);
+        errn += verify("test_vi: b2", i, b2[i], 103.);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], 123.f);
+        errn += verify("test_cp: b1", i, b1[i], 103.);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], -123.f);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.);
+      }
+      test_vi_neg(a2, b2, 123.f, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], 123.f);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], 123.f);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], -123.f);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.);
+      }
+      test_vi_oppos(a2, b2, 123.f, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], 123.f);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], 123.f);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], -1.f);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], 123.f);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], -123.f);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], 123.f);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], -123.f);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_vi_aln(a1, b1, 123.f, 103.);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], 123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], -1.f);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], -1.f);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], 123.f);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], -123.f);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], 123.f);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], -123.f);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, 123.f, 103.);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], 123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], -1.f);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (float)i;
+        b1[i] = (double)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (float)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], -1.f);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (float)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (float)i;
+        b1[i] = (double)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (float)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], -1.f);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (float)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, 123.f, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, 123.f, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, 123.f, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, 123.f, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, 123.f, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(float[] a, double[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123.f;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi(float[] a, double[] b, float c, double d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(float[] a, float[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(float[] a, double[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123.f;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_neg(float[] a, double[] b, float c, double d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(float[] a, float[] b, double[] c, double[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(float[] a, double[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123.f;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_oppos(float[] a, double[] b, float c, double d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(float[] a, float[] b, double[] c, double[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(float[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123.f;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_aln(float[] a, double[] b, float c, double d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(float[] a, float[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(float[] a, float[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(float[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123.f;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_unaln(float[] a, double[] b, float c, double d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(float[] a, float[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(float[] a, float[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, float elem, float val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, double elem, double val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestFloatVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,953 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestFloatVect
+ */
+
+public class TestFloatVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Float vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    float[] a1 = new float[ARRLEN];
+    float[] a2 = new float[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, 123.f);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, 123.f, 103.f);
+      test_ci_neg(a1);
+      test_vi_neg(a2, 123.f);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, 123.f, 103.f);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, 123.f);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, 123.f, 103.f);
+      test_ci_off(a1);
+      test_vi_off(a2, 123.f);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, 123.f, 103.f);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, 123.f, OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, 123.f, 103.f, OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, 123.f);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, 123.f, 103.f);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, 123.f, 103.f);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, 123.f, 103.f);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], -123.f);
+      }
+      test_vi(a2, 123.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], 123.f);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], 123.f);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], -123.f);
+        errn += verify("test_2ci: a2", i, a2[i], -103.f);
+      }
+      test_2vi(a1, a2, 123.f, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], 123.f);
+        errn += verify("test_2vi: a2", i, a2[i], 103.f);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], -123.f);
+      }
+      test_vi_neg(a2, 123.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], 123.f);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], 123.f);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], -123.f);
+        errn += verify("test_2ci_neg: a2", i, a2[i], -103.f);
+      }
+      test_2vi_neg(a1, a2, 123.f, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], 123.f);
+        errn += verify("test_2vi_neg: a2", i, a2[i], 103.f);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], -123.f);
+      }
+      test_vi_oppos(a2, 123.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], 123.f);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], 123.f);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], -123.f);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], -103.f);
+      }
+      test_2vi_oppos(a1, a2, 123.f, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], 123.f);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], 103.f);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], -123.f);
+      }
+      test_vi_off(a2, 123.f);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], 123.f);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], 123.f);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], -123.f);
+        errn += verify("test_2ci_off: a2", i, a2[i], -103.f);
+      }
+      test_2vi_off(a1, a2, 123.f, 103.f);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], 123.f);
+        errn += verify("test_2vi_off: a2", i, a2[i], 103.f);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], -1.f);
+        errn += verify("test_2vi_off: a2", i, a2[i], -1.f);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], -123.f);
+      }
+      test_vi_inv(a2, 123.f, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], 123.f);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], 123.f);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], -123.f);
+        errn += verify("test_2ci_inv: a2", i, a2[i], -103.f);
+      }
+      test_2vi_inv(a1, a2, 123.f, 103.f, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], 123.f);
+        errn += verify("test_2vi_inv: a2", i, a2[i], 103.f);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], -1.f);
+        errn += verify("test_2vi_inv: a2", i, a2[i], -1.f);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : -123;
+        errn += verify("test_ci_scl: a1", i, a1[i], (float)val);
+      }
+      test_vi_scl(a2, 123.f);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_vi_scl: a2", i, a2[i], (float)val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_cp_scl: a1", i, a1[i], (float)val);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], -1.f);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], -123.f);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], -1.f);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], -103.f);
+        }
+      }
+      test_2vi_scl(a1, a2, 123.f, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], -1.f);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], 123.f);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], -1.f);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], 103.f);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, 123.f);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], 123.f);
+      }
+      test_vi(a2, -123.f);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], -123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], -123.f);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], -103.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], -1.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_aln(a1, a2, 123.f, 103.f);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], 123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], -1.f);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, 123.f);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], 123.f);
+      }
+      test_vi(a2, -123.f);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], -123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], -123.f);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], -103.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], -1.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_unaln(a1, a2, 123.f, 103.f);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], 123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], -1.f);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], 103.f);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (float)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (float)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (float)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], -103.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], -123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_aln(a1, a1, 123.f, 103.f);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], 123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], 103.f);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (float)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (float)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (float)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], -103.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], -123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_unaln(a1, a1, 123.f, 103.f);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], 123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], 103.f);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, 123.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, 123.f, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, 123.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, 123.f, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, 123.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, 123.f, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, 123.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, 123.f, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, 123.f, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, 123.f, 103.f, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, 123.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, 123.f, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, 123.f, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, 123.f, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(float[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123.f;
+    }
+  }
+  static void test_vi(float[] a, float b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(float[] a, float[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(float[] a, float[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123.f;
+      b[i] = -103.f;
+    }
+  }
+  static void test_2vi(float[] a, float[] b, float c, float d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(float[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123.f;
+    }
+  }
+  static void test_vi_neg(float[] a, float b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(float[] a, float[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(float[] a, float[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123.f;
+      b[i] = -103.f;
+    }
+  }
+  static void test_2vi_neg(float[] a, float[] b, float c, float d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(float[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123.f;
+    }
+  }
+  static void test_vi_oppos(float[] a, float b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(float[] a, float[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(float[] a, float[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123.f;
+      b[i] = -103.f;
+    }
+  }
+  static void test_2vi_oppos(float[] a, float[] b, float c, float d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(float[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123.f;
+    }
+  }
+  static void test_vi_off(float[] a, float b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(float[] a, float[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(float[] a, float[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123.f;
+      b[i+OFFSET] = -103.f;
+    }
+  }
+  static void test_2vi_off(float[] a, float[] b, float c, float d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(float[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123.f;
+    }
+  }
+  static void test_vi_inv(float[] a, float b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(float[] a, float[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(float[] a, float[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123.f;
+      b[i+k] = -103.f;
+    }
+  }
+  static void test_2vi_inv(float[] a, float[] b, float c, float d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(float[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123.f;
+    }
+  }
+  static void test_vi_scl(float[] a, float b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(float[] a, float[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(float[] a, float[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123.f;
+      b[i*SCALE] = -103.f;
+    }
+  }
+  static void test_2vi_scl(float[] a, float[] b, float c, float d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(float[] a, float[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(float[] a, float[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(float[] a, float[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123.f;
+      b[i] = -103.f;
+    }
+  }
+  static void test_2vi_aln(float[] a, float[] b, float c, float d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(float[] a, float[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(float[] a, float[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(float[] a, float[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123.f;
+      b[i] = -103.f;
+    }
+  }
+  static void test_2vi_unaln(float[] a, float[] b, float c, float d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, float elem, float val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestIntDoubleVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestIntDoubleVect
+ */
+
+public class TestIntDoubleVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Integer + Double vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    int[] a1 = new int[ARRLEN];
+    int[] a2 = new int[ARRLEN];
+    double[] b1 = new double[ARRLEN];
+    double[] b2 = new double[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (int)123, 103.);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (int)123, 103.);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (int)123, 103.);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (int)123, 103.);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (int)123, 103.);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.;
+      b2[i] = -1.;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.);
+      }
+      test_vi(a2, b2, (int)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (int)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (int)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.);
+      }
+      test_vi_neg(a2, b2, (int)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (int)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.);
+      }
+      test_vi_oppos(a2, b2, (int)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (int)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_vi_aln(a1, b1, (int)123, 103.);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (int)123, 103.);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (int)i;
+        b1[i] = (double)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (int)i;
+        b1[i] = (double)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (int)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (int)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (int)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (int)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (int)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(int[] a, double[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi(int[] a, double[] b, int c, double d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(int[] a, int[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(int[] a, double[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_neg(int[] a, double[] b, int c, double d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(int[] a, int[] b, double[] c, double[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(int[] a, double[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_oppos(int[] a, double[] b, int c, double d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(int[] a, int[] b, double[] c, double[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(int[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_aln(int[] a, double[] b, int c, double d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(int[] a, int[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(int[] a, int[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(int[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_unaln(int[] a, double[] b, int c, double d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(int[] a, int[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(int[] a, int[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, int elem, int val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, double elem, double val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestIntFloatVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestIntFloatVect
+ */
+
+public class TestIntFloatVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Integer + Float vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    int[] a1 = new int[ARRLEN];
+    int[] a2 = new int[ARRLEN];
+    float[] b1 = new float[ARRLEN];
+    float[] b2 = new float[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (int)123, 103.f);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (int)123, 103.f);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (int)123, 103.f);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (int)123, 103.f);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (int)123, 103.f);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.f;
+      b2[i] = -1.f;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.f);
+      }
+      test_vi(a2, b2, (int)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (int)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.f);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (int)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.f);
+      }
+      test_vi_neg(a2, b2, (int)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (int)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.f);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.f);
+      }
+      test_vi_oppos(a2, b2, (int)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (int)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.f);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_vi_aln(a1, b1, (int)123, 103.f);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (int)123, 103.f);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (int)i;
+        b1[i] = (float)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.f;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (int)i;
+        b1[i] = (float)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.f;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (int)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (int)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (int)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (int)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (int)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(int[] a, float[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi(int[] a, float[] b, int c, float d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(int[] a, int[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(int[] a, float[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_neg(int[] a, float[] b, int c, float d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(int[] a, int[] b, float[] c, float[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(int[] a, float[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_oppos(int[] a, float[] b, int c, float d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(int[] a, int[] b, float[] c, float[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(int[] a, float[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_aln(int[] a, float[] b, int c, float d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(int[] a, int[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(int[] a, int[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(int[] a, float[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_unaln(int[] a, float[] b, int c, float d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(int[] a, int[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(int[] a, int[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, int elem, int val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, float elem, float val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestIntLongVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestIntLongVect
+ */
+
+public class TestIntLongVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Integer + Long vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    int[] a1 = new int[ARRLEN];
+    int[] a2 = new int[ARRLEN];
+    long[] b1 = new long[ARRLEN];
+    long[] b2 = new long[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (int)123, (long)103);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (int)123, (long)103);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (int)123, (long)103);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (int)123, (long)103);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (int)123, (long)103);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1;
+      b2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci: b1", i, b1[i], (long)-103);
+      }
+      test_vi(a2, b2, (int)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (int)123);
+        errn += verify("test_vi: b2", i, b2[i], (long)103);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (int)123);
+        errn += verify("test_cp: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], (long)-103);
+      }
+      test_vi_neg(a2, b2, (int)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (int)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], (long)103);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (int)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], (long)-103);
+      }
+      test_vi_oppos(a2, b2, (int)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (int)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], (long)103);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (long)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (long)123);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (long)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (long)-1);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_aln(a1, b1, (int)123, (long)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (long)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (long)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (int)123, (long)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (int)i;
+        b1[i] = (long)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (long)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (long)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (int)i;
+        b1[i] = (long)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (long)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (long)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (int)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (int)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (int)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (int)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (int)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(int[] a, long[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi(int[] a, long[] b, int c, long d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(int[] a, int[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(int[] a, long[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_neg(int[] a, long[] b, int c, long d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(int[] a, int[] b, long[] c, long[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(int[] a, long[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_oppos(int[] a, long[] b, int c, long d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(int[] a, int[] b, long[] c, long[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(int[] a, long[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_aln(int[] a, long[] b, int c, long d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(int[] a, int[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(int[] a, int[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(int[] a, long[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_unaln(int[] a, long[] b, int c, long d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(int[] a, int[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(int[] a, int[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, int elem, int val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, long elem, long val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestIntVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,953 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestIntVect
+ */
+
+public class TestIntVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Integer vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    int[] a1 = new int[ARRLEN];
+    int[] a2 = new int[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, (int)123);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, (int)123, (int)103);
+      test_ci_neg(a1);
+      test_vi_neg(a2, (int)123);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, (int)123, (int)103);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, (int)123);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, (int)123, (int)103);
+      test_ci_off(a1);
+      test_vi_off(a2, (int)123);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, (int)123, (int)103);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, (int)123, OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, (int)123, (int)103, OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, (int)123);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, (int)123, (int)103);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, (int)123, (int)103);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, (int)123, (int)103);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (int)-123);
+      }
+      test_vi(a2, (int)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (int)123);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (int)123);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], (int)-123);
+        errn += verify("test_2ci: a2", i, a2[i], (int)-103);
+      }
+      test_2vi(a1, a2, (int)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], (int)123);
+        errn += verify("test_2vi: a2", i, a2[i], (int)103);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (int)-123);
+      }
+      test_vi_neg(a2, (int)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (int)123);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (int)123);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], (int)-123);
+        errn += verify("test_2ci_neg: a2", i, a2[i], (int)-103);
+      }
+      test_2vi_neg(a1, a2, (int)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], (int)123);
+        errn += verify("test_2vi_neg: a2", i, a2[i], (int)103);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (int)-123);
+      }
+      test_vi_oppos(a2, (int)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (int)123);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (int)123);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], (int)-123);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], (int)-103);
+      }
+      test_2vi_oppos(a1, a2, (int)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], (int)123);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], (int)103);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], (int)-123);
+      }
+      test_vi_off(a2, (int)123);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], (int)123);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], (int)123);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], (int)-123);
+        errn += verify("test_2ci_off: a2", i, a2[i], (int)-103);
+      }
+      test_2vi_off(a1, a2, (int)123, (int)103);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (int)123);
+        errn += verify("test_2vi_off: a2", i, a2[i], (int)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (int)-1);
+        errn += verify("test_2vi_off: a2", i, a2[i], (int)-1);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], (int)-123);
+      }
+      test_vi_inv(a2, (int)123, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], (int)123);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], (int)123);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], (int)-123);
+        errn += verify("test_2ci_inv: a2", i, a2[i], (int)-103);
+      }
+      test_2vi_inv(a1, a2, (int)123, (int)103, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (int)123);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (int)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (int)-1);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (int)-1);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : -123;
+        errn += verify("test_ci_scl: a1", i, a1[i], (int)val);
+      }
+      test_vi_scl(a2, (int)123);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_vi_scl: a2", i, a2[i], (int)val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_cp_scl: a1", i, a1[i], (int)val);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], (int)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], (int)-123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], (int)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], (int)-103);
+        }
+      }
+      test_2vi_scl(a1, a2, (int)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], (int)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], (int)123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], (int)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], (int)103);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (int)123);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (int)123);
+      }
+      test_vi(a2, (int)-123);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (int)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (int)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_aln(a1, a2, (int)123, (int)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (int)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (int)123);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (int)123);
+      }
+      test_vi(a2, (int)-123);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (int)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (int)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_unaln(a1, a2, (int)123, (int)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (int)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (int)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (int)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (int)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (int)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (int)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_aln(a1, a1, (int)123, (int)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (int)103);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (int)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (int)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (int)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (int)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (int)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_unaln(a1, a1, (int)123, (int)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (int)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (int)103);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, (int)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, (int)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, (int)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, (int)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, (int)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, (int)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, (int)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, (int)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, (int)123, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, (int)123, (int)103, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, (int)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, (int)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, (int)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, (int)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(int[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi(int[] a, int b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(int[] a, int[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(int[] a, int[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi(int[] a, int[] b, int c, int d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(int[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi_neg(int[] a, int b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(int[] a, int[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(int[] a, int[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_neg(int[] a, int[] b, int c, int d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(int[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+    }
+  }
+  static void test_vi_oppos(int[] a, int b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(int[] a, int[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(int[] a, int[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_oppos(int[] a, int[] b, int c, int d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(int[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+    }
+  }
+  static void test_vi_off(int[] a, int b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(int[] a, int[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(int[] a, int[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+      b[i+OFFSET] = -103;
+    }
+  }
+  static void test_2vi_off(int[] a, int[] b, int c, int d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(int[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+    }
+  }
+  static void test_vi_inv(int[] a, int b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(int[] a, int[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(int[] a, int[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+      b[i+k] = -103;
+    }
+  }
+  static void test_2vi_inv(int[] a, int[] b, int c, int d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(int[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+    }
+  }
+  static void test_vi_scl(int[] a, int b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(int[] a, int[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(int[] a, int[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+      b[i*SCALE] = -103;
+    }
+  }
+  static void test_2vi_scl(int[] a, int[] b, int c, int d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(int[] a, int[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(int[] a, int[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(int[] a, int[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_aln(int[] a, int[] b, int c, int d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(int[] a, int[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(int[] a, int[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(int[] a, int[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_unaln(int[] a, int[] b, int c, int d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, int elem, int val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestLongDoubleVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestLongDoubleVect
+ */
+
+public class TestLongDoubleVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Long + Double vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    long[] a1 = new long[ARRLEN];
+    long[] a2 = new long[ARRLEN];
+    double[] b1 = new double[ARRLEN];
+    double[] b2 = new double[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (long)123, 103.);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (long)123, 103.);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (long)123, 103.);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (long)123, 103.);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (long)123, 103.);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.;
+      b2[i] = -1.;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (long)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.);
+      }
+      test_vi(a2, b2, (long)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (long)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (long)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (long)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.);
+      }
+      test_vi_neg(a2, b2, (long)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (long)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (long)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.);
+      }
+      test_vi_oppos(a2, b2, (long)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (long)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (long)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_vi_aln(a1, b1, (long)123, 103.);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (long)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (long)123, 103.);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (long)i;
+        b1[i] = (double)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (long)i;
+        b1[i] = (double)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (long)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (long)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (long)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (long)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (long)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(long[] a, double[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi(long[] a, double[] b, long c, double d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(long[] a, long[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(long[] a, double[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_neg(long[] a, double[] b, long c, double d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(long[] a, long[] b, double[] c, double[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(long[] a, double[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_oppos(long[] a, double[] b, long c, double d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(long[] a, long[] b, double[] c, double[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(long[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_aln(long[] a, double[] b, long c, double d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(long[] a, long[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(long[] a, long[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(long[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_unaln(long[] a, double[] b, long c, double d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(long[] a, long[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(long[] a, long[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, long elem, long val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, double elem, double val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestLongFloatVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestLongFloatVect
+ */
+
+public class TestLongFloatVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Long + Float vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    long[] a1 = new long[ARRLEN];
+    long[] a2 = new long[ARRLEN];
+    float[] b1 = new float[ARRLEN];
+    float[] b2 = new float[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (long)123, 103.f);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (long)123, 103.f);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (long)123, 103.f);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (long)123, 103.f);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (long)123, 103.f);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.f;
+      b2[i] = -1.f;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (long)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.f);
+      }
+      test_vi(a2, b2, (long)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (long)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.f);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (long)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (long)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.f);
+      }
+      test_vi_neg(a2, b2, (long)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (long)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.f);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (long)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.f);
+      }
+      test_vi_oppos(a2, b2, (long)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (long)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.f);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (long)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_vi_aln(a1, b1, (long)123, 103.f);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (long)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (long)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (long)123, 103.f);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (long)i;
+        b1[i] = (float)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.f;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (long)i;
+        b1[i] = (float)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.f;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (long)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (long)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (long)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (long)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (long)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (long)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (long)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(long[] a, float[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi(long[] a, float[] b, long c, float d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(long[] a, long[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(long[] a, float[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_neg(long[] a, float[] b, long c, float d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(long[] a, long[] b, float[] c, float[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(long[] a, float[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_oppos(long[] a, float[] b, long c, float d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(long[] a, long[] b, float[] c, float[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(long[] a, float[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_aln(long[] a, float[] b, long c, float d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(long[] a, long[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(long[] a, long[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(long[] a, float[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_unaln(long[] a, float[] b, long c, float d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(long[] a, long[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(long[] a, long[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, long elem, long val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, float elem, float val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestLongVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,953 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestLongVect
+ */
+
+public class TestLongVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Long vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    long[] a1 = new long[ARRLEN];
+    long[] a2 = new long[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, (long)123);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, (long)123, (long)103);
+      test_ci_neg(a1);
+      test_vi_neg(a2, (long)123);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, (long)123, (long)103);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, (long)123);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, (long)123, (long)103);
+      test_ci_off(a1);
+      test_vi_off(a2, (long)123);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, (long)123, (long)103);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, (long)123, OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, (long)123, (long)103, OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, (long)123);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, (long)123, (long)103);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, (long)123, (long)103);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, (long)123, (long)103);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (long)-123);
+      }
+      test_vi(a2, (long)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (long)123);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (long)123);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], (long)-123);
+        errn += verify("test_2ci: a2", i, a2[i], (long)-103);
+      }
+      test_2vi(a1, a2, (long)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], (long)123);
+        errn += verify("test_2vi: a2", i, a2[i], (long)103);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (long)-123);
+      }
+      test_vi_neg(a2, (long)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (long)123);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (long)123);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], (long)-123);
+        errn += verify("test_2ci_neg: a2", i, a2[i], (long)-103);
+      }
+      test_2vi_neg(a1, a2, (long)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], (long)123);
+        errn += verify("test_2vi_neg: a2", i, a2[i], (long)103);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (long)-123);
+      }
+      test_vi_oppos(a2, (long)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (long)123);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (long)123);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], (long)-123);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], (long)-103);
+      }
+      test_2vi_oppos(a1, a2, (long)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], (long)123);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], (long)103);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], (long)-123);
+      }
+      test_vi_off(a2, (long)123);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], (long)123);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], (long)123);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], (long)-123);
+        errn += verify("test_2ci_off: a2", i, a2[i], (long)-103);
+      }
+      test_2vi_off(a1, a2, (long)123, (long)103);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (long)123);
+        errn += verify("test_2vi_off: a2", i, a2[i], (long)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (long)-1);
+        errn += verify("test_2vi_off: a2", i, a2[i], (long)-1);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], (long)-123);
+      }
+      test_vi_inv(a2, (long)123, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], (long)123);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], (long)123);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], (long)-123);
+        errn += verify("test_2ci_inv: a2", i, a2[i], (long)-103);
+      }
+      test_2vi_inv(a1, a2, (long)123, (long)103, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (long)123);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (long)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (long)-1);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (long)-1);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : -123;
+        errn += verify("test_ci_scl: a1", i, a1[i], (long)val);
+      }
+      test_vi_scl(a2, (long)123);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_vi_scl: a2", i, a2[i], (long)val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_cp_scl: a1", i, a1[i], (long)val);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], (long)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], (long)-123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], (long)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], (long)-103);
+        }
+      }
+      test_2vi_scl(a1, a2, (long)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], (long)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], (long)123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], (long)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], (long)103);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (long)123);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (long)123);
+      }
+      test_vi(a2, (long)-123);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (long)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (long)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (long)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_aln(a1, a2, (long)123, (long)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (long)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (long)123);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (long)123);
+      }
+      test_vi(a2, (long)-123);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (long)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (long)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (long)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_unaln(a1, a2, (long)123, (long)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (long)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (long)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (long)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (long)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (long)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (long)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_aln(a1, a1, (long)123, (long)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (long)103);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (long)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (long)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (long)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (long)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (long)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_unaln(a1, a1, (long)123, (long)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (long)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (long)103);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, (long)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, (long)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, (long)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, (long)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, (long)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, (long)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, (long)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, (long)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, (long)123, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, (long)123, (long)103, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, (long)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, (long)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, (long)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, (long)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(long[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi(long[] a, long b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(long[] a, long[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(long[] a, long[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi(long[] a, long[] b, long c, long d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(long[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi_neg(long[] a, long b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(long[] a, long[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(long[] a, long[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_neg(long[] a, long[] b, long c, long d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(long[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+    }
+  }
+  static void test_vi_oppos(long[] a, long b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(long[] a, long[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(long[] a, long[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_oppos(long[] a, long[] b, long c, long d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(long[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+    }
+  }
+  static void test_vi_off(long[] a, long b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(long[] a, long[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(long[] a, long[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+      b[i+OFFSET] = -103;
+    }
+  }
+  static void test_2vi_off(long[] a, long[] b, long c, long d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(long[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+    }
+  }
+  static void test_vi_inv(long[] a, long b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(long[] a, long[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(long[] a, long[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+      b[i+k] = -103;
+    }
+  }
+  static void test_2vi_inv(long[] a, long[] b, long c, long d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(long[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+    }
+  }
+  static void test_vi_scl(long[] a, long b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(long[] a, long[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(long[] a, long[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+      b[i*SCALE] = -103;
+    }
+  }
+  static void test_2vi_scl(long[] a, long[] b, long c, long d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(long[] a, long[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(long[] a, long[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(long[] a, long[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_aln(long[] a, long[] b, long c, long d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(long[] a, long[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(long[] a, long[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(long[] a, long[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_unaln(long[] a, long[] b, long c, long d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, long elem, long val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestShortDoubleVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestShortDoubleVect
+ */
+
+public class TestShortDoubleVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Short + Double vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    short[] a1 = new short[ARRLEN];
+    short[] a2 = new short[ARRLEN];
+    double[] b1 = new double[ARRLEN];
+    double[] b2 = new double[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (short)123, 103.);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (short)123, 103.);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (short)123, 103.);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (short)123, 103.);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (short)123, 103.);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.;
+      b2[i] = -1.;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.);
+      }
+      test_vi(a2, b2, (short)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (short)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (short)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.);
+      }
+      test_vi_neg(a2, b2, (short)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.;
+        b2[i] = -1.;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.);
+      }
+      test_vi_oppos(a2, b2, (short)123, 103.);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_vi_aln(a1, b1, (short)123, 103.);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.;
+        b2[i] = 123.;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (short)123, 103.);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (double)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (double)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (double)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (double)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (short)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (short)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (short)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (short)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (short)123, 103.);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(short[] a, double[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi(short[] a, double[] b, short c, double d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(short[] a, short[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(short[] a, double[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_neg(short[] a, double[] b, short c, double d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(short[] a, short[] b, double[] c, double[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(short[] a, double[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_oppos(short[] a, double[] b, short c, double d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(short[] a, short[] b, double[] c, double[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(short[] a, double[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_aln(short[] a, double[] b, short c, double d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(short[] a, short[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(short[] a, short[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(short[] a, double[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.;
+    }
+  }
+  static void test_vi_unaln(short[] a, double[] b, short c, double d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(short[] a, short[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(short[] a, short[] b, double[] c, double[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, short elem, short val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, double elem, double val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestShortFloatVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestShortFloatVect
+ */
+
+public class TestShortFloatVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Short + Float vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    short[] a1 = new short[ARRLEN];
+    short[] a2 = new short[ARRLEN];
+    float[] b1 = new float[ARRLEN];
+    float[] b2 = new float[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (short)123, 103.f);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (short)123, 103.f);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (short)123, 103.f);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (short)123, 103.f);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (short)123, 103.f);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1.f;
+      b2[i] = -1.f;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci: b1", i, b1[i], -103.f);
+      }
+      test_vi(a2, b2, (short)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (short)123);
+        errn += verify("test_vi: b2", i, b2[i], 103.f);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (short)123);
+        errn += verify("test_cp: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], -103.f);
+      }
+      test_vi_neg(a2, b2, (short)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], 103.f);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1.f;
+        b2[i] = -1.f;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], -103.f);
+      }
+      test_vi_oppos(a2, b2, (short)123, 103.f);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], 103.f);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], 123.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], -1.f);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_vi_aln(a1, b1, (short)123, 103.f);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1.f;
+        b2[i] = 123.f;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123.f;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], -123.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], 123.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -103.f);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (short)123, 103.f);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], 103.f);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (float)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1.f;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (float)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1.f;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (float)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1.f;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], -1.f);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (float)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (short)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (short)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (short)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (short)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (short)123, 103.f);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(short[] a, float[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi(short[] a, float[] b, short c, float d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(short[] a, short[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(short[] a, float[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_neg(short[] a, float[] b, short c, float d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(short[] a, short[] b, float[] c, float[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(short[] a, float[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_oppos(short[] a, float[] b, short c, float d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(short[] a, short[] b, float[] c, float[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(short[] a, float[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_aln(short[] a, float[] b, short c, float d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(short[] a, short[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(short[] a, short[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(short[] a, float[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103.f;
+    }
+  }
+  static void test_vi_unaln(short[] a, float[] b, short c, float d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(short[] a, short[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(short[] a, short[] b, float[] c, float[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, short elem, short val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, float elem, float val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestShortIntVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestShortIntVect
+ */
+
+public class TestShortIntVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Short + Integer vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    short[] a1 = new short[ARRLEN];
+    short[] a2 = new short[ARRLEN];
+    int[] b1 = new int[ARRLEN];
+    int[] b2 = new int[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (short)123, (int)103);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (short)123, (int)103);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (short)123, (int)103);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (short)123, (int)103);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (short)123, (int)103);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1;
+      b2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci: b1", i, b1[i], (int)-103);
+      }
+      test_vi(a2, b2, (short)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (short)123);
+        errn += verify("test_vi: b2", i, b2[i], (int)103);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (short)123);
+        errn += verify("test_cp: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], (int)-103);
+      }
+      test_vi_neg(a2, b2, (short)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], (int)103);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], (int)-103);
+      }
+      test_vi_oppos(a2, b2, (short)123, (int)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], (int)103);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (int)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (int)123);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (int)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (int)-1);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_aln(a1, b1, (short)123, (int)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (int)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (int)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (int)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (int)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (short)123, (int)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (int)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (int)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (int)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (int)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (int)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (int)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (int)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (int)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (int)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (short)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (short)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (short)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (short)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (short)123, (int)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(short[] a, int[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi(short[] a, int[] b, short c, int d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(short[] a, short[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(short[] a, int[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_neg(short[] a, int[] b, short c, int d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(short[] a, short[] b, int[] c, int[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(short[] a, int[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_oppos(short[] a, int[] b, short c, int d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(short[] a, short[] b, int[] c, int[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(short[] a, int[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_aln(short[] a, int[] b, short c, int d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(short[] a, short[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(short[] a, short[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(short[] a, int[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_unaln(short[] a, int[] b, short c, int d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(short[] a, short[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(short[] a, short[] b, int[] c, int[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, short elem, short val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, int elem, int val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestShortLongVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestShortLongVect
+ */
+
+public class TestShortLongVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Short + Long vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    short[] a1 = new short[ARRLEN];
+    short[] a2 = new short[ARRLEN];
+    long[] b1 = new long[ARRLEN];
+    long[] b2 = new long[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+      test_vi(a2, b2, (short)123, (long)103);
+      test_cp(a1, a2, b1, b2);
+      test_ci_neg(a1, b1);
+      test_vi_neg(a1, b1, (short)123, (long)103);
+      test_cp_neg(a1, a2, b1, b2);
+      test_ci_oppos(a1, b1);
+      test_vi_oppos(a1, b1, (short)123, (long)103);
+      test_cp_oppos(a1, a2, b1, b2);
+      test_ci_aln(a1, b1);
+      test_vi_aln(a1, b1, (short)123, (long)103);
+      test_cp_alndst(a1, a2, b1, b2);
+      test_cp_alnsrc(a1, a2, b1, b2);
+      test_ci_unaln(a1, b1);
+      test_vi_unaln(a1, b1, (short)123, (long)103);
+      test_cp_unalndst(a1, a2, b1, b2);
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+      b1[i] = -1;
+      b2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci: b1", i, b1[i], (long)-103);
+      }
+      test_vi(a2, b2, (short)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (short)123);
+        errn += verify("test_vi: b2", i, b2[i], (long)103);
+      }
+      test_cp(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (short)123);
+        errn += verify("test_cp: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_neg(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_neg: b1", i, b1[i], (long)-103);
+      }
+      test_vi_neg(a2, b2, (short)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_neg: b2", i, b2[i], (long)103);
+      }
+      test_cp_neg(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_neg: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+        b1[i] = -1;
+        b2[i] = -1;
+      }
+      test_ci_oppos(a1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (short)-123);
+        errn += verify("test_ci_oppos: b1", i, b1[i], (long)-103);
+      }
+      test_vi_oppos(a2, b2, (short)123, (long)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (short)123);
+        errn += verify("test_vi_oppos: b2", i, b2[i], (long)103);
+      }
+      test_cp_oppos(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_oppos: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_alndst(a1, a2, b1, b2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alndst: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_alnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (long)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_alnsrc: b1", i, b1[i], (long)123);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_aln(a1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (long)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_aln: b1", i, b1[i], (long)-1);
+      }
+
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_aln(a1, b1, (short)123, (long)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_aln: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = 123;
+        b1[i] = -1;
+        b2[i] = 123;
+      }
+      test_cp_unalndst(a1, a2, b1, b2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalndst: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a2[i] = -123;
+        b2[i] = -123;
+      }
+      test_cp_unalnsrc(a1, a2, b1, b2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)-123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (long)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)123);
+        errn += verify("test_cp_unalnsrc: b1", i, b1[i], (long)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_ci_unaln(a1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (long)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_ci_unaln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_vi_unaln(a1, b1, (short)123, (long)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_vi_unaln: b1", i, b1[i], (long)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (long)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_alndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alndst_overlap: b1", i, b1[i], (long)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+        b1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1, b1, b1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (long)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_alnsrc_overlap: b1", i, b1[i], (long)v);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (short)i;
+        b1[i] = (long)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+        b1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1, b1, b1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalndst_overlap: b1", i, b1[i], (long)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+        b1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1, b1, b1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)-1);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (long)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)v);
+        errn += verify("test_cp_unalnsrc_overlap: b1", i, b1[i], (long)v);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, b2, (short)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a1, b1, (short)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a1, b1, (short)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_aln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_aln(a1, b1, (short)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_unaln(a1, b1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_unaln(a1, b1, (short)123, (long)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2, b1, b2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    return errn;
+  }
+
+  static void test_ci(short[] a, long[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi(short[] a, long[] b, short c, long d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp(short[] a, short[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_neg(short[] a, long[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_neg(short[] a, long[] b, short c, long d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_cp_neg(short[] a, short[] b, long[] c, long[] d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+      c[i] = d[i];
+    }
+  }
+  static void test_ci_oppos(short[] a, long[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_oppos(short[] a, long[] b, short c, long d) {
+    int limit = a.length-1;
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_cp_oppos(short[] a, short[] b, long[] c, long[] d) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+      c[limit-i] = d[i];
+    }
+  }
+  static void test_ci_aln(short[] a, long[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_aln(short[] a, long[] b, short c, long d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_alndst(short[] a, short[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+      c[i+ALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_alnsrc(short[] a, short[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+      c[i] = d[i+ALIGN_OFF];
+    }
+  }
+  static void test_ci_unaln(short[] a, long[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_vi_unaln(short[] a, long[] b, short c, long d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(short[] a, short[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+      c[i+UNALIGN_OFF] = d[i];
+    }
+  }
+  static void test_cp_unalnsrc(short[] a, short[] b, long[] c, long[] d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+      c[i] = d[i+UNALIGN_OFF];
+    }
+  }
+
+  static int verify(String text, int i, short elem, short val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+  static int verify(String text, int i, long elem, long val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7119644/TestShortVect.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,953 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7119644
+ * @summary Increase superword's vector size up to 256 bits
+ *
+ * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestShortVect
+ */
+
+public class TestShortVect {
+  private static final int ARRLEN = 997;
+  private static final int ITERS  = 11000;
+  private static final int OFFSET = 3;
+  private static final int SCALE = 2;
+  private static final int ALIGN_OFF = 8;
+  private static final int UNALIGN_OFF = 5;
+
+  public static void main(String args[]) {
+    System.out.println("Testing Short vectors");
+    int errn = test();
+    if (errn > 0) {
+      System.err.println("FAILED: " + errn + " errors");
+      System.exit(97);
+    }
+    System.out.println("PASSED");
+  }
+
+  static int test() {
+    short[] a1 = new short[ARRLEN];
+    short[] a2 = new short[ARRLEN];
+    System.out.println("Warmup");
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+      test_vi(a2, (short)123);
+      test_cp(a1, a2);
+      test_2ci(a1, a2);
+      test_2vi(a1, a2, (short)123, (short)103);
+      test_ci_neg(a1);
+      test_vi_neg(a2, (short)123);
+      test_cp_neg(a1, a2);
+      test_2ci_neg(a1, a2);
+      test_2vi_neg(a1, a2, (short)123, (short)103);
+      test_ci_oppos(a1);
+      test_vi_oppos(a2, (short)123);
+      test_cp_oppos(a1, a2);
+      test_2ci_oppos(a1, a2);
+      test_2vi_oppos(a1, a2, (short)123, (short)103);
+      test_ci_off(a1);
+      test_vi_off(a2, (short)123);
+      test_cp_off(a1, a2);
+      test_2ci_off(a1, a2);
+      test_2vi_off(a1, a2, (short)123, (short)103);
+      test_ci_inv(a1, OFFSET);
+      test_vi_inv(a2, (short)123, OFFSET);
+      test_cp_inv(a1, a2, OFFSET);
+      test_2ci_inv(a1, a2, OFFSET);
+      test_2vi_inv(a1, a2, (short)123, (short)103, OFFSET);
+      test_ci_scl(a1);
+      test_vi_scl(a2, (short)123);
+      test_cp_scl(a1, a2);
+      test_2ci_scl(a1, a2);
+      test_2vi_scl(a1, a2, (short)123, (short)103);
+      test_cp_alndst(a1, a2);
+      test_cp_alnsrc(a1, a2);
+      test_2ci_aln(a1, a2);
+      test_2vi_aln(a1, a2, (short)123, (short)103);
+      test_cp_unalndst(a1, a2);
+      test_cp_unalnsrc(a1, a2);
+      test_2ci_unaln(a1, a2);
+      test_2vi_unaln(a1, a2, (short)123, (short)103);
+    }
+    // Initialize
+    for (int i=0; i<ARRLEN; i++) {
+      a1[i] = -1;
+      a2[i] = -1;
+    }
+    // Test and verify results
+    System.out.println("Verification");
+    int errn = 0;
+    {
+      test_ci(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci: a1", i, a1[i], (short)-123);
+      }
+      test_vi(a2, (short)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi: a2", i, a2[i], (short)123);
+      }
+      test_cp(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp: a1", i, a1[i], (short)123);
+      }
+      test_2ci(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci: a1", i, a1[i], (short)-123);
+        errn += verify("test_2ci: a2", i, a2[i], (short)-103);
+      }
+      test_2vi(a1, a2, (short)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi: a1", i, a1[i], (short)123);
+        errn += verify("test_2vi: a2", i, a2[i], (short)103);
+      }
+      // Reset for negative stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_neg(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_neg: a1", i, a1[i], (short)-123);
+      }
+      test_vi_neg(a2, (short)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_neg: a2", i, a2[i], (short)123);
+      }
+      test_cp_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_neg: a1", i, a1[i], (short)123);
+      }
+      test_2ci_neg(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_neg: a1", i, a1[i], (short)-123);
+        errn += verify("test_2ci_neg: a2", i, a2[i], (short)-103);
+      }
+      test_2vi_neg(a1, a2, (short)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_neg: a1", i, a1[i], (short)123);
+        errn += verify("test_2vi_neg: a2", i, a2[i], (short)103);
+      }
+      // Reset for opposite stride
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_oppos(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_ci_oppos: a1", i, a1[i], (short)-123);
+      }
+      test_vi_oppos(a2, (short)123);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_vi_oppos: a2", i, a2[i], (short)123);
+      }
+      test_cp_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_cp_oppos: a1", i, a1[i], (short)123);
+      }
+      test_2ci_oppos(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2ci_oppos: a1", i, a1[i], (short)-123);
+        errn += verify("test_2ci_oppos: a2", i, a2[i], (short)-103);
+      }
+      test_2vi_oppos(a1, a2, (short)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        errn += verify("test_2vi_oppos: a1", i, a1[i], (short)123);
+        errn += verify("test_2vi_oppos: a2", i, a2[i], (short)103);
+      }
+      // Reset for indexing with offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_off(a1);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_off: a1", i, a1[i], (short)-123);
+      }
+      test_vi_off(a2, (short)123);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_off: a2", i, a2[i], (short)123);
+      }
+      test_cp_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_off: a1", i, a1[i], (short)123);
+      }
+      test_2ci_off(a1, a2);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_off: a1", i, a1[i], (short)-123);
+        errn += verify("test_2ci_off: a2", i, a2[i], (short)-103);
+      }
+      test_2vi_off(a1, a2, (short)123, (short)103);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (short)123);
+        errn += verify("test_2vi_off: a2", i, a2[i], (short)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_off: a1", i, a1[i], (short)-1);
+        errn += verify("test_2vi_off: a2", i, a2[i], (short)-1);
+      }
+      // Reset for indexing with invariant offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_inv(a1, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_ci_inv: a1", i, a1[i], (short)-123);
+      }
+      test_vi_inv(a2, (short)123, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_vi_inv: a2", i, a2[i], (short)123);
+      }
+      test_cp_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_cp_inv: a1", i, a1[i], (short)123);
+      }
+      test_2ci_inv(a1, a2, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2ci_inv: a1", i, a1[i], (short)-123);
+        errn += verify("test_2ci_inv: a2", i, a2[i], (short)-103);
+      }
+      test_2vi_inv(a1, a2, (short)123, (short)103, OFFSET);
+      for (int i=OFFSET; i<ARRLEN; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (short)123);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (short)103);
+      }
+      for (int i=0; i<OFFSET; i++) {
+        errn += verify("test_2vi_inv: a1", i, a1[i], (short)-1);
+        errn += verify("test_2vi_inv: a2", i, a2[i], (short)-1);
+      }
+      // Reset for indexing with scale
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_ci_scl(a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : -123;
+        errn += verify("test_ci_scl: a1", i, a1[i], (short)val);
+      }
+      test_vi_scl(a2, (short)123);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_vi_scl: a2", i, a2[i], (short)val);
+      }
+      test_cp_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        int val = (i%SCALE != 0) ? -1 : 123;
+        errn += verify("test_cp_scl: a1", i, a1[i], (short)val);
+      }
+      test_2ci_scl(a1, a2);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a1", i, a1[i], (short)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], (short)-123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2ci_scl: a2", i, a2[i], (short)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], (short)-103);
+        }
+      }
+      test_2vi_scl(a1, a2, (short)123, (short)103);
+      for (int i=0; i<ARRLEN; i++) {
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a1", i, a1[i], (short)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], (short)123);
+        }
+        if (i%SCALE != 0) {
+          errn += verify("test_2vi_scl: a2", i, a2[i], (short)-1);
+        } else if (i*SCALE < ARRLEN) {
+          errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], (short)103);
+        }
+      }
+      // Reset for 2 arrays with relative aligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (short)123);
+      test_cp_alndst(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alndst: a1", i, a1[i], (short)123);
+      }
+      test_vi(a2, (short)-123);
+      test_cp_alnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)-123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_alnsrc: a1", i, a1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_aln(a1, a2);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (short)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln: a2", i, a2[i], (short)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_aln(a1, a2, (short)123, (short)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln: a2", i, a2[i], (short)103);
+      }
+
+      // Reset for 2 arrays with relative unaligned offset
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_vi(a2, (short)123);
+      test_cp_unalndst(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalndst: a1", i, a1[i], (short)123);
+      }
+      test_vi(a2, (short)-123);
+      test_cp_unalnsrc(a1, a2);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)-123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_cp_unalnsrc: a1", i, a1[i], (short)123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2ci_unaln(a1, a2);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (short)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln: a2", i, a2[i], (short)-1);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+        a2[i] = -1;
+      }
+      test_2vi_unaln(a1, a2, (short)123, (short)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a1", i, a1[i], (short)-1);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln: a2", i, a2[i], (short)103);
+      }
+
+      // Reset for aligned overlap initialization
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i] = (short)i;
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_alndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (short)v);
+      }
+      for (int i=0; i<ALIGN_OFF; i++) {
+        a1[i+ALIGN_OFF] = -1;
+      }
+      test_cp_alnsrc(a1, a1);
+      for (int i=0; i<ALIGN_OFF; i++) {
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)-1);
+      }
+      for (int i=ALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%ALIGN_OFF;
+        errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (short)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_aln(a1, a1);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (short)-103);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_aln(a1, a1, (short)123, (short)103);
+      for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (short)103);
+      }
+
+      // Reset for unaligned overlap initialization
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i] = (short)i;
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_cp_unalndst(a1, a1);
+      for (int i=0; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (short)v);
+      }
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        a1[i+UNALIGN_OFF] = -1;
+      }
+      test_cp_unalnsrc(a1, a1);
+      for (int i=0; i<UNALIGN_OFF; i++) {
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)-1);
+      }
+      for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
+        int v = i%UNALIGN_OFF;
+        errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (short)v);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2ci_unaln(a1, a1);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (short)-103);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (short)-123);
+      }
+      for (int i=0; i<ARRLEN; i++) {
+        a1[i] = -1;
+      }
+      test_2vi_unaln(a1, a1, (short)123, (short)103);
+      for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (short)123);
+      }
+      for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
+        errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (short)103);
+      }
+
+    }
+
+    if (errn > 0)
+      return errn;
+
+    System.out.println("Time");
+    long start, end;
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi(a2, (short)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi(a1, a2, (short)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_neg(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_neg(a2, (short)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_neg(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_neg: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_neg(a1, a2, (short)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_neg: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_oppos(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_oppos(a2, (short)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_oppos(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_oppos: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_oppos(a1, a2, (short)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_oppos: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_off(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_off(a2, (short)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_off(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_off: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_off(a1, a2, (short)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_off: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_inv(a1, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_inv(a2, (short)123, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_inv(a1, a2, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_inv: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_inv(a1, a2, (short)123, (short)103, OFFSET);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_inv: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_ci_scl(a1);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_vi_scl(a2, (short)123);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_vi_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_scl(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_scl: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_scl(a1, a2, (short)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_scl: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_alnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_alnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_aln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_aln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_aln(a1, a2, (short)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_aln: " + (end - start));
+
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalndst(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalndst: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_cp_unalnsrc(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_cp_unalnsrc: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2ci_unaln(a1, a2);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2ci_unaln: " + (end - start));
+    start = System.currentTimeMillis();
+    for (int i=0; i<ITERS; i++) {
+      test_2vi_unaln(a1, a2, (short)123, (short)103);
+    }
+    end = System.currentTimeMillis();
+    System.out.println("test_2vi_unaln: " + (end - start));
+
+    return errn;
+  }
+
+  static void test_ci(short[] a) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi(short[] a, short b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp(short[] a, short[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci(short[] a, short[] b) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi(short[] a, short[] b, short c, short d) {
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_neg(short[] a) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+    }
+  }
+  static void test_vi_neg(short[] a, short b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b;
+    }
+  }
+  static void test_cp_neg(short[] a, short[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = b[i];
+    }
+  }
+  static void test_2ci_neg(short[] a, short[] b) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_neg(short[] a, short[] b, short c, short d) {
+    for (int i = a.length-1; i >= 0; i-=1) {
+      a[i] = c;
+      b[i] = d;
+    }
+  }
+  static void test_ci_oppos(short[] a) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+    }
+  }
+  static void test_vi_oppos(short[] a, short b) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[limit-i] = b;
+    }
+  }
+  static void test_cp_oppos(short[] a, short[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[i] = b[limit-i];
+    }
+  }
+  static void test_2ci_oppos(short[] a, short[] b) {
+    int limit = a.length-1;
+    for (int i = 0; i < a.length; i+=1) {
+      a[limit-i] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_oppos(short[] a, short[] b, short c, short d) {
+    int limit = a.length-1;
+    for (int i = limit; i >= 0; i-=1) {
+      a[i] = c;
+      b[limit-i] = d;
+    }
+  }
+  static void test_ci_off(short[] a) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+    }
+  }
+  static void test_vi_off(short[] a, short b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b;
+    }
+  }
+  static void test_cp_off(short[] a, short[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = b[i+OFFSET];
+    }
+  }
+  static void test_2ci_off(short[] a, short[] b) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = -123;
+      b[i+OFFSET] = -103;
+    }
+  }
+  static void test_2vi_off(short[] a, short[] b, short c, short d) {
+    for (int i = 0; i < a.length-OFFSET; i+=1) {
+      a[i+OFFSET] = c;
+      b[i+OFFSET] = d;
+    }
+  }
+  static void test_ci_inv(short[] a, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+    }
+  }
+  static void test_vi_inv(short[] a, short b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b;
+    }
+  }
+  static void test_cp_inv(short[] a, short[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = b[i+k];
+    }
+  }
+  static void test_2ci_inv(short[] a, short[] b, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = -123;
+      b[i+k] = -103;
+    }
+  }
+  static void test_2vi_inv(short[] a, short[] b, short c, short d, int k) {
+    for (int i = 0; i < a.length-k; i+=1) {
+      a[i+k] = c;
+      b[i+k] = d;
+    }
+  }
+  static void test_ci_scl(short[] a) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+    }
+  }
+  static void test_vi_scl(short[] a, short b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b;
+    }
+  }
+  static void test_cp_scl(short[] a, short[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = b[i*SCALE];
+    }
+  }
+  static void test_2ci_scl(short[] a, short[] b) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = -123;
+      b[i*SCALE] = -103;
+    }
+  }
+  static void test_2vi_scl(short[] a, short[] b, short c, short d) {
+    for (int i = 0; i*SCALE < a.length; i+=1) {
+      a[i*SCALE] = c;
+      b[i*SCALE] = d;
+    }
+  }
+  static void test_cp_alndst(short[] a, short[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_alnsrc(short[] a, short[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = b[i+ALIGN_OFF];
+    }
+  }
+  static void test_2ci_aln(short[] a, short[] b) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i+ALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_aln(short[] a, short[] b, short c, short d) {
+    for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+ALIGN_OFF] = d;
+    }
+  }
+  static void test_cp_unalndst(short[] a, short[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = b[i];
+    }
+  }
+  static void test_cp_unalnsrc(short[] a, short[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = b[i+UNALIGN_OFF];
+    }
+  }
+  static void test_2ci_unaln(short[] a, short[] b) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i+UNALIGN_OFF] = -123;
+      b[i] = -103;
+    }
+  }
+  static void test_2vi_unaln(short[] a, short[] b, short c, short d) {
+    for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
+      a[i] = c;
+      b[i+UNALIGN_OFF] = d;
+    }
+  }
+
+  static int verify(String text, int i, short elem, short val) {
+    if (elem != val) {
+      System.err.println(text + "[" + i + "] = " + elem + " != " + val);
+      return 1;
+    }
+    return 0;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7174363/Test7174363.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+/**
+ * @test
+ * @bug 7174363
+ * @summary crash with Arrays.copyOfRange(original, from, to) when from > original.length
+ *
+ * @run main/othervm -XX:-BackgroundCompilation Test7174363
+ */
+
+import java.util.*;
+
+public class Test7174363 {
+
+  static Object[] m(Object[] original, int from, int to) {
+    return Arrays.copyOfRange(original, from, to, Object[].class);
+  }
+
+  static public void main(String[] args) {
+    Object[] orig = new Object[10];
+    for (int i = 0; i < 20000; i++) {
+      try {
+        m(orig, 15, 20);
+      } catch(ArrayIndexOutOfBoundsException excp) {}
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7179138/Test7179138_1.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012 Skip Balk.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7179138
+ * @summary Incorrect result with String concatenation optimization
+ * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation Test7179138_1
+ *
+ * @author Skip Balk
+ */
+
+public class Test7179138_1 {
+    public static void main(String[] args) throws Exception {
+        System.out.println("Java Version: " + System.getProperty("java.vm.version"));
+        long[] durations = new long[60];
+        for (int i = 0; i < 100000; i++) {
+            // this empty for-loop is required to reproduce this bug
+            for (long duration : durations) {
+                // do nothing
+            }
+            {
+                String s = "test";
+                int len = s.length();
+
+                s = new StringBuilder(String.valueOf(s)).append(s).toString();
+                len = len + len;
+
+                s = new StringBuilder(String.valueOf(s)).append(s).toString();
+                len = len + len;
+
+                s = new StringBuilder(String.valueOf(s)).append(s).toString();
+                len = len + len;
+
+                if (s.length() != len) {
+                    System.out.println("Failed at iteration: " + i);
+                    System.out.println("Length mismatch: " + s.length() + " <> " + len);
+                    System.out.println("Expected: \"" + "test" + "test" + "test" + "test" + "test" + "test" + "test" + "test" + "\"");
+                    System.out.println("Actual:   \"" + s + "\"");
+                    System.exit(97);
+                }
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/compiler/7179138/Test7179138_2.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012 Skip Balk.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7179138
+ * @summary Incorrect result with String concatenation optimization
+ * @run main/othervm -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation Test7179138_2
+ *
+ * @author Skip Balk
+ */
+
+public class Test7179138_2 {
+    public static void main(String[] args) throws Exception {
+        System.out.println("Java Version: " + System.getProperty("java.vm.version"));
+        long[] durations = new long[60];
+        for (int i = 0; i < 100000; i++) {
+            // this empty for-loop is required to reproduce this bug
+            for (long duration : durations) {
+                // do nothing
+            }
+            {
+                String s = "test";
+                int len = s.length();
+
+                s = s + s;
+                len = len + len;
+
+                s = s + s;
+                len = len + len;
+
+                s = s + s;
+                len = len + len;
+
+                if (s.length() != len) {
+                    System.out.println("Failed at iteration: " + i);
+                    System.out.println("Length mismatch: " + s.length() + " <> " + len);
+                    System.out.println("Expected: \"" + "test" + "test" + "test" + "test" + "test" + "test" + "test" + "test" + "\"");
+                    System.out.println("Actual:   \"" + s + "\"");
+                    System.exit(0);
+                }
+            }
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/7158800/BadUtf8.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,1254 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7158800
+ * @summary Test that 1200 symbols that hash to the same value triggers
+ * the symbol table alternate hashing mechanism.  There isn't actually a
+ * way to verify this.
+ */
+//
+// Generate large number of strings that hash to the same value
+// to slow down symbol table lookup.
+
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+
+public class BadUtf8 {
+static String[] strings = {
+    "EOcLKvbddZyPxYpb",
+    "DncLKvbdPxmAGrqj",
+    "DoCjjvbdpxoIHQdY",
+    "EPCkKvbdqYoHfqEY",
+    "DnbkKvbdezvYdiUX",
+    "DnbjjvbdeEoRbXCj",
+    "EObkKvbdbsCkUEKB",
+    "EOcLKvbdnUtyjiqf",
+    "DncLKvbdRWnDcMHc",
+    "DoCkKvbdrSUkOLAm",
+    "DncLKvbdfNFwGmJk",
+    "EPDLKvbdvAdYroFI",
+    "DoDLKvbdiGibyViu",
+    "DncLKvbdYqNEhmFR",
+    "DoCkKvbdEARhlzXX",
+    "DncLKvbdSZjHsCvA",
+    "DncKjvbdqTsgRqkU",
+    "DnbjjvbdqAiFAXHd",
+    "EPDKjvbdGcjvJaij",
+    "DnbkKvbdwtldpxkn",
+    "DoDKjvbdYkrETnMN",
+    "EPCjjvbdbBWEfQQX",
+    "EPCjjvbduMXwAtBX",
+    "DncLKvbdbsCkTcia",
+    "DoCjjvbdczYpYZRC",
+    "EOcKjvbdFeiqmhsq",
+    "DoCkKvbdKCicQibx",
+    "EOcKjvbdZLrEUOLm",
+    "DoCjjvbdaNKbStmH",
+    "DoDKjvbdJbjDQjDY",
+    "EPCkKvbdemFwGmKL",
+    "EPDKjvbdZQleImEq",
+    "DncKjvbdZjShPfbG",
+    "DnbjjvbdqYnhHREY",
+    "DoCkKvbdaRfDIUGL",
+    "DoDKjvbdLrWlyuQz",
+    "DnbjjvbdZisHofaf",
+    "EObjjvbdhtydvrUb",
+    "DnbjjvbdRotHKGEX",
+    "EObjjvbdNeEThhkE",
+    "EPCjjvbdZtJJZESn",
+    "DoDKjvbdnPyxvLYb",
+    "EPDKjvbdeEoRbWbj",
+    "EOcLKvbdFxttaEXb",
+    "EObjjvbddwystRez",
+    "EPCjjvbdJpzEnenF",
+    "DnbkKvbdTppntuIN",
+    "EPCkKvbdTukpKUBR",
+    "DnbkKvbdhlFEOUcZ",
+    "EObkKvbdlhdUQuRa",
+    "DnbjjvbdkClKqHUg",
+    "EOcKjvbdqTtGqqkU",
+    "DncKjvbdtkwvaUBX",
+    "DoDKjvbdsQWOjCuf",
+    "DncLKvbdEKIJuwjA",
+    "DncKjvbdGLErcIMu",
+    "EOcLKvbdNPwpumfs",
+    "EObkKvbdnVUzLJrG",
+    "DoCkKvbdcTDKsdKB",
+    "DncKjvbdKRZdoFme",
+    "EOcLKvbdemFvgNKL",
+    "EPCkKvbdznopdblY",
+    "EPDLKvbdOYPVzdOU",
+    "DnbjjvbdsZlPsAhO",
+    "DoDLKvbdKCjDRKDY",
+    "DoCkKvbdhuZeXSVC",
+    "EPDKjvbdOStVgEtp",
+    "DncLKvbdvwMAvBWV",
+    "EPDKjvbdBcoaWJlf",
+    "EOcKjvbdZxdKODMS",
+    "DoCjjvbdbsCkTcjB",
+    "EOcLKvbdwWlAuaWV",
+    "DnbjjvbdFejRnJUR",
+    "DnbjjvbdmIdTqVSB",
+    "DnbkKvbdqBIeAWhE",
+    "DncKjvbdrMzJyMIJ",
+    "DoCkKvbdZGvdAOsJ",
+    "DncLKvbdjggLfFnL",
+    "DoCjjvbdYqNFJMdq",
+    "DoCkKvbdqZPHfqDx",
+    "DncLKvbdOEdThiLE",
+    "DoCkKvbdZirgpGaf",
+    "EPDLKvbdziuQPdSt",
+    "EObkKvbdKQyeOenF",
+    "DoDLKvbduaDySndh",
+    "DoCjjvbdVUNUGLvK",
+    "DncKjvbdAMhYrvzY",
+    "DnbkKvbdnQZxvKxb",
+    "EPCjjvbdBhjakJFj",
+    "DncLKvbdmfeYNNfy",
+    "DoDLKvbdjlbLydfo",
+    "DoDLKvbdpyPIGpcx",
+    "EOcLKvbdnVUzLJqf",
+    "DoCjjvbdmJETqVSB",
+    "DoDLKvbdJTZAsMxM",
+    "DoCkKvbdnQZxvLZC",
+    "DoDKjvbdACqwizJQ",
+    "DncKjvbdvBEZSoFI",
+    "DncKjvbdGckVjCJj",
+    "DncLKvbdiMFENtcZ",
+    "Dnbjjvbdjuvmcaww",
+    "DnbkKvbdZyEKNblS",
+    "DoCjjvbduMYXBUBX",
+    "DnbjjvbdFWYopNJe",
+    "DoDKjvbdelfXGljL",
+    "DnbjjvbdakLenmcA",
+    "EPDKjvbdfILWRmpg",
+    "EObjjvbdSLYeuHLT",
+    "DoCjjvbdMfbolotk",
+    "EPDLKvbdrRuKnKaN",
+    "EOcKjvbdyzdnRhIh",
+    "DoDLKvbdGAoRZJzm",
+    "DoCjjvbdhlFDnUcZ",
+    "EPDLKvbdmpZyVkYb",
+    "DncKjvbdTpqPUuIN",
+    "DncLKvbdHDjvJaij",
+    "EPDLKvbdYlRcsmkm",
+    "EPDLKvbdvlvAMdFN",
+    "DncKjvbdIsZArmYM",
+    "EOcLKvbdegjuqnQg",
+    "EOcLKvbdZQmFJNFR",
+    "DoCjjvbdZxdJmcMS",
+    "EPCkKvbdlZTSTYgU",
+    "DoDKjvbdqceJPnWB",
+    "DncLKvbdVgwuxGxz",
+    "DncKjvbdDnbkLXDE",
+    "EPDLKvbdatbHYKsh",
+    "DncKjvbdEzsqFLbi",
+    "EPDLKvbdnVVZkKRf",
+    "EOcKjvbdKeegbBQu",
+    "EPCkKvbdKfGHaaRV",
+    "EPDKjvbdmIctRVRa",
+    "EPCjjvbdRMxBxnUz",
+    "DnbjjvbdJYTbILpp",
+    "EPCkKvbdTAEiHbPE",
+    "EOcLKvbdfelZnGgA",
+    "DoCjjvbdOStWGeUp",
+    "EOcLKvbdemGXHNJk",
+    "DoDKjvbdYTMAmUOx",
+    "EPCkKvbdpyOhGpcx",
+    "EPCkKvbdAMgxsWzY",
+    "DnbjjvbdYkrETnMN",
+    "EPDLKvbdUQqPUtgm",
+    "DncKjvbdehKurNqH",
+    "DoCjjvbdZMSETnLm",
+    "DoDKjvbdIHGyyXwg",
+    "EObjjvbdXGYzUAPT",
+    "DoCjjvbdhbPCeWqR",
+    "DoCkKvbdKNADzGuB",
+    "DnbjjvbdFeirOJTq",
+    "DncLKvbdaRecHtFk",
+    "DnbkKvbdzoPpeClY",
+    "EObkKvbdZRMeJMeR",
+    "DnbjjvbdYfvdAPSi",
+    "DncLKvbdJcKCqJcY",
+    "EOcLKvbdqvokbhyR",
+    "DoDLKvbdrRuLNjaN",
+    "DoCjjvbdTlWPBWOi",
+    "DoCkKvbdjvWnEBxX",
+    "DoDLKvbdTkunaVoJ",
+    "DoCkKvbdQZNAHTSK",
+    "EObjjvbdqwPkbhyR",
+    "EOcLKvbdNHDPlpUk",
+    "DncLKvbdIHHZxxYH",
+    "DncLKvbdtkxXAtAw",
+    "DncLKvbdSCEFMJZL",
+    "DnbjjvbdZQmEhldq",
+    "DoCjjvbdNGbolotk",
+    "DnbjjvbdnCKWwnmu",
+    "DncLKvbdzHZMANEw",
+    "DoDKjvbdmttykJrG",
+    "DnbkKvbdlrZUzSci",
+    "EPDKjvbdSKyGVHKs",
+    "DoCjjvbdKVuGEFGi",
+    "EPCjjvbdCIkBkIej",
+    "DncLKvbdzHZMAMeX",
+    "DnbkKvbdaSFbgsek",
+    "DncLKvbdHDjujBij",
+    "DoDKjvbdGZVUaDwb",
+    "DnbjjvbdZnnJFEzK",
+    "DoCkKvbdtcDUwWOo",
+    "DoCkKvbdlBMoNALA",
+    "EOcKjvbdNsUWHFUp",
+    "DoDLKvbdVUNUFlVj",
+    "DnbkKvbdhkdcnUcZ",
+    "DncLKvbdLiBkqYAS",
+    "EOcKjvbdzoPpdcLx",
+    "EPDKjvbdijGIJmXr",
+    "EOcKjvbdZisHofaf",
+    "DoDLKvbdeOdrkUUS",
+    "DoDLKvbdnPyxvKxb",
+    "EPDKjvbdIxUBhMRQ",
+    "DncLKvbdlhctRUqa",
+    "DoDLKvbdmgFXlnGy",
+    "DncKjvbdCJKbKiGK",
+    "EOcLKvbddndrjtUS",
+    "DnbjjvbdkDLjqGuH",
+    "DncKjvbdmIcsptqa",
+    "DoCkKvbdvvlAvBWV",
+    "EObjjvbdjblLQftg",
+    "DnbjjvbdCEQBWKMf",
+    "DnbjjvbdBdPaVilf",
+    "DoCkKvbdZxcjODLr",
+    "DoCkKvbdEObjjwCd",
+    "EPDKjvbdyTNhlqbH",
+    "EPCkKvbdUMVoAvPJ",
+    "DncKjvbdUxhUZjoO",
+    "DncKjvbdqqtjmkAm",
+    "DncKjvbdKfGICBRV",
+    "EPCjjvbdVrOXaeLc",
+    "EPDLKvbdwXLaWBWV",
+    "EPCkKvbdjblKqHUg",
+    "DnbjjvbduDCuWuoP",
+    "EPDKjvbdNGbpMouL",
+    "EObjjvbdBcoaVjNG",
+    "DncLKvbdrWpMDIxq",
+    "DncLKvbdhaoCdwRR",
+    "DnbkKvbdFxtuBDwb",
+    "DncKjvbdIjEAKPgE",
+    "EOcLKvbduCbuXVoP",
+    "DoDKjvbdZtIiZDsO",
+    "DnbjjvbdEztRElCi",
+    "DncLKvbdxmsHwsJD",
+    "DnbjjvbdRbEElIxk",
+    "DoDKjvbdWHwvXgYz",
+    "EOcKjvbdQlwbYnUz",
+    "EOcLKvbdVTltFkuj",
+    "DncKjvbdliETptqa",
+    "DnbkKvbddoErjtTr",
+    "DoCkKvbdgPazvdXh",
+    "DncKjvbdySmhlqag",
+    "DoCjjvbdbPgHDkzd",
+    "DoCkKvbdFWZPomKF",
+    "EObjjvbdssSSxydc",
+    "EObjjvbdzQnliJwA",
+    "EObkKvbdKCjCpibx",
+    "EPCjjvbdpyOhHREY",
+    "DncLKvbddjJqutzn",
+    "EObkKvbdBdQAujMf",
+    "EPCkKvbdLAjflbXq",
+    "DncLKvbdLBLGlaxR",
+    "DoDLKvbdrpWPJbuf",
+    "DoCjjvbdEKHiuxKA",
+    "DoCjjvbdXsMAlsnx",
+    "EObkKvbdptTgSSLU",
+    "DoDKjvbdnHFXmNfy",
+    "DncKjvbdCJKbKhej",
+    "EPCjjvbdhlEdOUby",
+    "EOcKjvbdKWUfEFGi",
+    "DoDKjvbdZQmFJMdq",
+    "EPCjjvbdiGjDZWKV",
+    "EObkKvbdVAbQrprZ",
+    "DoDKjvbdfekzNgHA",
+    "DoDLKvbdnHEwlmgZ",
+    "DncKjvbdwzHeexEr",
+    "DoCjjvbdmpZxujyC",
+    "EPDKjvbdwMvAMcdm",
+    "DoCjjvbdfHkVrNqH",
+    "EPCkKvbdYzbfRiuy",
+    "EPCkKvbdZtIiZDrn",
+    "DnbjjvbdjvWnDbYX",
+    "DoCjjvbdOStVgEtp",
+    "EPDLKvbdZMSETmlN",
+    "EPDKjvbdBhjajhej",
+    "EPCjjvbddoFTLUUS",
+    "DnbkKvbdsQVoJcWG",
+    "EPCjjvbdrEFJQNvB",
+    "DoCjjvbdMpYRWOGs",
+    "EOcLKvbdZirgpHBf",
+    "EPDLKvbdyOTIXsJD",
+    "DoCkKvbdKRZdnfNe",
+    "DnbjjvbdbBWFFoow",
+    "EPCjjvbdgFlZnHHA",
+    "DnbkKvbdGGJrOIsq",
+    "DoDLKvbduDCtwWPP",
+    "EObjjvbdNddUIhjd",
+    "DnbjjvbdxsNiMqag",
+    "EObjjvbddeOrCWbj",
+    "EObjjvbdPxmAGsRj",
+    "EOcLKvbddeOrCXDK",
+    "DoDLKvbddeOrBwCj",
+    "DoCjjvbdVqnYCElD",
+    "DnbkKvbdUyIUZjoO",
+    "EObjjvbdeFOrCXDK",
+    "EObkKvbdVrNxCFLc",
+    "EObjjvbdTfzmkwWF",
+    "EOcKjvbdIHGzZYYH",
+    "EPDKjvbdtbbuXWPP",
+    "DoCjjvbdZisIQHBf",
+    "EObjjvbdbsCkUDjB",
+    "EPCkKvbdVwJXudFH",
+    "EPDKjvbdrouoKDVf",
+    "EPCkKvbdFyVVBEYC",
+    "DncLKvbdZnnIeEzK",
+    "EPDLKvbdxVNFQxkn",
+    "DoDKjvbdpxnggRDx",
+    "DoDLKvbdqZOgfpcx",
+    "DncKjvbdCIjakJGK",
+    "EPCkKvbdCJLBjhej",
+    "DoDLKvbdnPzYvKxb",
+    "EOcKjvbdqTsgSRkU",
+    "EOcLKvbdLBLGlaxR",
+    "DoDLKvbdcbTMrAUN",
+    "DncLKvbdzitoodSt",
+    "DoDKjvbdJvUfDdfi",
+    "EOcLKvbdHDjvKCJj",
+    "EPCkKvbdeOeTKssr",
+    "DnbkKvbdlYrqsYft",
+    "DncLKvbdiiehKMxS",
+    "DncKjvbdURQoVUhN",
+    "DnbkKvbduMYXBUAw",
+    "DoDLKvbdSPtHJfEX",
+    "EObkKvbdqBJFAWgd",
+    "EOcKjvbdFpATWgFy",
+    "DoDLKvbdBsBDTfXS",
+    "DncKjvbdjhHLfFmk",
+    "DoCjjvbdCJKakIfK",
+    "DnbkKvbddoFSjtTr",
+    "EObkKvbdANIYsWzY",
+    "EObjjvbdCTAbtFvr",
+    "EObjjvbdrRtkOLAm",
+    "DnbkKvbdkxsSTYgU",
+    "DoCjjvbdnBiwXnmu",
+    "EObjjvbdwtmEqYlO",
+    "EPDKjvbdrylQTAhO",
+    "DoDLKvbdtbbtvvOo",
+    "EPCjjvbdZLrETmlN",
+    "EPDLKvbdWXJYWDdg",
+    "DoCkKvbdKQzFOfOF",
+    "EPCjjvbdwzIFfXeS",
+    "DncKjvbdRjyFuHLT",
+    "EPDLKvbdULunaWPJ",
+    "DncKjvbdUxhTykOn",
+    "DnbkKvbdJcKCqKDY",
+    "EPDLKvbdcbSmSATm",
+    "DnbkKvbdegjurNqH",
+    "EPDKjvbdZjTIQGbG",
+    "EPCjjvbdiLddNuCy",
+    "DoCjjvbdZQldiNEq",
+    "EOcLKvbdakMGPODA",
+    "EObjjvbdnHEwlmgZ",
+    "EOcLKvbdBsAcUGXS",
+    "EPCkKvbdiVZdwSUb",
+    "EOcLKvbddCTNSAUN",
+    "DnbkKvbdEXxMUUUM",
+    "DncKjvbdYpldiMeR",
+    "DoDKjvbdNddTiIjd",
+    "DoDLKvbdZLqdUNlN",
+    "EPCkKvbdiBncFWpq",
+    "DncLKvbdiCPDEvqR",
+    "EOcKjvbdUyHszKoO",
+    "DncKjvbdhtydvqtb",
+    "EPCjjvbdpxoHgQcx",
+    "EObkKvbdkWWnDaxX",
+    "DnbjjvbdBhkBkJFj",
+    "DoCkKvbdRacdkhyL",
+    "EOcLKvbdZjTHpHCG",
+    "EPCkKvbdMowqWOGs",
+    "DncLKvbdegjurNpg",
+    "EObjjvbdfMfWfmKL",
+    "EPDLKvbdZirgpGaf",
+    "DoDLKvbdiZuFlQnG",
+    "DncLKvbdFxuVAcxC",
+    "EObkKvbdZisHofaf",
+    "EOcKjvbdJSyBSmYM",
+    "EPDLKvbdVYgtZkPO",
+    "EOcKjvbdRbEFMJYk",
+    "DncLKvbdrEFIonWB",
+    "DncKjvbdKDJbqJcY",
+    "EOcLKvbdhfjCxuiu",
+    "EObjjvbdLLAhWAKZ",
+    "DoCkKvbdRXNcblID",
+    "DoDLKvbdcbSmSATm",
+    "EOcLKvbdwWlAvAuu",
+    "EObkKvbdiBnbdvpq",
+    "DoCkKvbdNQXpumgT",
+    "DncLKvbdkVwOECYX",
+    "DnbkKvbdfoazwDxI",
+    "DoDLKvbdbBWFFpPw",
+    "DoDLKvbdvBDxsPEh",
+    "EPDKjvbdJqZdoFme",
+    "DoDLKvbdIryArmXl",
+    "EPCjjvbdANIZSwZx",
+    "EPCkKvbdVhYVxGxz",
+    "DncKjvbdLAjgNCYR",
+    "DncKjvbdxxIjCQZk",
+    "DncKjvbdbiNKKewY",
+    "EPCjjvbdlrZVZsEJ",
+    "EPDKjvbdIryAsMwl",
+    "DoCkKvbdtAHRIAAr",
+    "EPDKjvbdJmAEZfuB",
+    "EPCkKvbdZjSgogBf",
+    "DoDLKvbdOXnuzcnU",
+    "DnbkKvbdehKvRnQg",
+    "EObjjvbdZyDimbkr",
+    "DoDKjvbdmajWwoOV",
+    "EOcKjvbdkMalZeHP",
+    "EOcKjvbdIjEAJpHE",
+    "EPCkKvbdDihKVxKA",
+    "DncKjvbdNddUIiKd",
+    "EObjjvbdqdFIpOWB",
+    "DoCkKvbdxnShXsJD",
+    "DoDLKvbdjmBkzEfo",
+    "EOcLKvbdatagYLTh",
+    "DoCjjvbdVhYVxHYz",
+    "DnbjjvbdJbjDRKDY",
+    "EPCjjvbdLBLHNCYR",
+    "DnbjjvbdnGeYNOGy",
+    "EOcLKvbdUsmTekvK",
+    "EPCjjvbdtkxXBTaX",
+    "EPCjjvbdzoPqFCkx",
+    "DncKjvbdCIjbKhej",
+    "DncKjvbdZLqdTmkm",
+    "DoDKjvbdsPunicVf",
+    "EOcKjvbdmgFXmNgZ",
+    "EObkKvbdiMFENuCy",
+    "DoDKjvbdhanbeXRR",
+    "EObkKvbdACqwiyhp",
+    "DncKjvbdZisIQHBf",
+    "EPCjjvbdgQBzwDwh",
+    "DnbjjvbdyYJJaoyk",
+    "DoDKjvbdxUldqZMO",
+    "EObkKvbdkClLQgVH",
+    "EPCjjvbdZQldiMeR",
+    "EPDLKvbdZyEKOClS",
+    "EPDLKvbdcIlikFvx",
+    "DoDKjvbdrzMQTBHn",
+    "DnbjjvbdVYgtZkPO",
+    "DoDLKvbdHEKuiajK",
+    "EPCkKvbdczZQXxqC",
+    "DoDKjvbdrDdiQNua",
+    "DncLKvbdcImKLGWx",
+    "DoCjjvbdVYgtZkPO",
+    "EPDLKvbdZnnIeFZj",
+    "EPDKjvbdMIakqYAS",
+    "DoCkKvbdSLYfUgLT",
+    "EPDLKvbdiCObdvpq",
+    "DnbjjvbdRpUHKFcw",
+    "DoDLKvbdIHHZyYXg",
+    "EPCjjvbdypoMhiwA",
+    "DnbkKvbdCEPaVjMf",
+    "DnbkKvbderAvzlDP",
+    "DnbkKvbdZQleImFR",
+    "EOcKjvbdKRZdneme",
+    "DoDLKvbdiBnbeXQq",
+    "DncLKvbdEPDKjvcE",
+    "EOcLKvbdauCGwkTh",
+    "DncLKvbdEvZQPmJe",
+    "EPCkKvbdURQnuVIN",
+    "DncLKvbdegjvSOQg",
+    "EPCjjvbdKaKgMawq",
+    "DnbkKvbdRzKISbvA",
+    "DncLKvbdiLdcnUcZ",
+    "EPDLKvbdkDMKpfuH",
+    "DoDLKvbdRbDdkhyL",
+    "DnbjjvbdDwxMUUTl",
+    "DnbkKvbdrpWPKCuf",
+    "DnbkKvbdNVSqjmAX",
+    "DoDKjvbdRbDeMIxk",
+    "EOcLKvbdcyxpXyRC",
+    "DncLKvbdRMwbYnUz",
+    "EObjjvbdqlzJxlHi",
+    "DoCkKvbdJYUCIMQp",
+    "DncLKvbdLZQjSzuG",
+    "EOcKjvbdxVNEqYkn",
+    "DnbkKvbdZoOIeFZj",
+    "DoCjjvbdBraCtFwS",
+    "EOcLKvbdliDsqVSB",
+    "EPCkKvbdeATqNXif",
+    "DncLKvbdkMbLydgP",
+    "EObjjvbdZxdJmbkr",
+    "DoCjjvbdraellHLZ",
+    "EObkKvbduDCuWvPP",
+    "DoCkKvbdpstGrSLU",
+    "DoCjjvbdLGFgbBQu",
+    "DnbkKvbdhtzFWquC",
+    "EObjjvbdoAKztHdO",
+    "EPDLKvbdatafxKtI",
+    "EPDKjvbdkWXNcaww",
+    "DoCkKvbdwkXEHzzG",
+    "EObkKvbdmgEwmNgZ",
+    "DncKjvbdBiLCLJFj",
+    "DoCjjvbdeOdsKssr",
+    "EOcLKvbdfILWSORH",
+    "EObkKvbdCDpAujMf",
+    "EPDKjvbdKDKDQibx",
+    "DoDKjvbdVUMtGLuj",
+    "EObkKvbdrXQMCiYq",
+    "DncKjvbdePEsLTtS",
+    "DncLKvbdDxYLtUTl",
+    "EPCkKvbdGYuVBEYC",
+    "DncLKvbdNeEUIiKd",
+    "EPCkKvbdpxoIHRDx",
+    "EObjjvbdFkEsDHlu",
+    "EObjjvbdssSSxzFD",
+    "DoCkKvbdUtNTfMVj",
+    "DnbjjvbdJcKDRKDY",
+    "DncKjvbdqiAKEmOe",
+    "DoDKjvbdtlXwAtBX",
+    "DnbkKvbdxmsIYTIc",
+    "EObkKvbdLrXMzUpz",
+    "DoCjjvbdkxsSSxft",
+    "DncKjvbdQlwaxnUz",
+    "EObkKvbdjhGlFfNk",
+    "EPCkKvbdxsNhmRag",
+    "DoDLKvbdMfcPmQUk",
+    "DoDKjvbdQvnEDLhD",
+    "EObjjvbdVgxVxHYz",
+    "DoDLKvbdlrYtyrdJ",
+    "DoCjjvbdezvYeIsw",
+    "DncLKvbdNddTiIjd",
+    "EPDLKvbdGGJrNiUR",
+    "EPDLKvbdRzJhTDWA",
+    "EPCjjvbdvvkaWBVu",
+    "EOcKjvbdRXNdCkgc",
+    "EOcKjvbdQZNAHTSK",
+    "EPCkKvbdsCGNLfkZ",
+    "EOcLKvbdDwwktTsl",
+    "EOcLKvbdqlzJyLgi",
+    "EOcLKvbdxsNiMqag",
+    "EOcLKvbdhzVFlROG",
+    "EOcKjvbdEztRFMCi",
+    "DnbkKvbdqiAJdmPF",
+    "EPDLKvbdjcMKqGtg",
+    "EObkKvbdTlWOaWOi",
+    "EPDLKvbdURRPUuHm",
+    "DoDKjvbdelfWgNKL",
+    "EOcLKvbdGAnqZJzm",
+    "EObjjvbdGZUuAdXb",
+    "DoDLKvbduLwwAtAw",
+    "DoCjjvbdZjTIQGbG",
+    "EPCjjvbdRNXbYnUz",
+    "EPDLKvbdiLeENtby",
+    "EObjjvbdMowpunGs",
+    "EOcKjvbdbiNJjevx",
+    "DoDKjvbdEYYLstTl",
+    "DoDLKvbdqUTfrRjt",
+    "DoDKjvbdbsCkUEJa",
+    "DoDKjvbdXsMBNUPY",
+    "EPCjjvbdRNXaxnUz",
+    "DoDLKvbdNGcQNQUk",
+    "DnbjjvbdEARiMywX",
+    "EPDKjvbdSKxfUfkT",
+    "DncKjvbdhtyeXRtb",
+    "DncKjvbdZLqcsnLm",
+    "EObkKvbdZnmheEzK",
+    "EObjjvbdtbcUvuno",
+    "DnbjjvbdrzMQTBHn",
+    "DnbjjvbdDwwktTsl",
+    "EPDKjvbdkxsSTYgU",
+    "DoDKjvbdIryArlxM",
+    "DoDKjvbdnBivxOnV",
+    "DoDKjvbdeATplwif",
+    "EOcLKvbdKeegbApu",
+    "EPCjjvbdMgDQMotk",
+    "DoCjjvbduCbtwWOo",
+    "DnbkKvbdyNsHwrhc",
+    "DnbkKvbdtvNxJpsA",
+    "EOcLKvbdqAheAWgd",
+    "DoCkKvbdURQoUtgm",
+    "EOcKjvbdqceIpOWB",
+    "DoCkKvbdVwIwudFH",
+    "DnbkKvbdbLMFnmcA",
+    "EOcLKvbdZjTHpHBf",
+    "EOcKjvbdRXNdCkhD",
+    "EPDLKvbdiHJcZViu",
+    "DoCjjvbdxxIjCPzL",
+    "DnbkKvbdBcpBWJmG",
+    "EPCkKvbdZyEKOCkr",
+    "EPDKjvbdOTUWHFVQ",
+    "DoCjjvbdIGgZxwwg",
+    "EPDLKvbdFjeSbhMu",
+    "EPDLKvbdhgKCxvJu",
+    "EOcLKvbdNsUWGdtp",
+    "EPDKjvbduVnXipsA",
+    "DncLKvbdGYuVBEXb",
+    "EPDLKvbdZtIhyESn",
+    "DoDKjvbdZxdJmcLr",
+    "DoCjjvbdUsltGLuj",
+    "DoDKjvbdDoDLKvbd",
+    "DncLKvbdrDdhpNvB",
+    "EPDLKvbdKCjDRJbx",
+    "DoDLKvbdxLWdHzyf",
+    "EObkKvbdrzMQTAhO",
+    "EOcLKvbdOFDtJJKd",
+    "EPCkKvbdrSVKmjaN",
+    "EOcKjvbdWWiYVdEg",
+    "EOcKjvbdWWhwvDdg",
+    "DncKjvbdpstHRqjt",
+    "EPCkKvbdKWVFceGi",
+    "DoCkKvbdZjShPfbG",
+    "DoCkKvbdSxKlNzkY",
+    "EPDLKvbdIwtCHkqQ",
+    "EOcKjvbdsCGNLgLZ",
+    "DncKjvbdzaAOfgCM",
+    "DoDLKvbdxmrhYSiD",
+    "DncLKvbdfMfWgMjL",
+    "EPDKjvbdqFdEsuaI",
+    "EOcLKvbdiLeDnUcZ",
+    "DoCjjvbdKVuFceHJ",
+    "DoCjjvbdfekzNgHA",
+    "EOcKjvbdOFEThiLE",
+    "EPDLKvbdqceJPnWB",
+    "DoDLKvbduCbtwWOo",
+    "DncKjvbdTqROtuIN",
+    "DncKjvbdpedFUWBI",
+    "DoDLKvbdrEFJQNua",
+    "DoDLKvbdyXhjCPyk",
+    "EPCkKvbdJYUBhLqQ",
+    "EPCkKvbdtcCuXVno",
+    "DoDLKvbdZLrEUOLm",
+    "EPCkKvbdpstGrRjt",
+    "DncLKvbddePSCXCj",
+    "EObkKvbdauCHXjsh",
+    "DoDLKvbdkHfkefNk",
+    "EObjjvbdMRwMzUpz",
+    "EObjjvbdaMkCTVNH",
+    "DoCkKvbdGGJrNhtR",
+    "EPDLKvbdvBDxrneI",
+    "EPDLKvbdIHHZxwxH",
+    "EOcLKvbdrJAJdmPF",
+    "EOcKjvbdGZUuAdXb",
+    "EOcLKvbdbUbHYLUI",
+    "DnbjjvbdJzofYEAN",
+    "EPDKjvbdFxtuBDxC",
+    "DnbkKvbdQvnDbkgc",
+    "EPDKjvbdJmADzGta",
+    "DoDKjvbdZRMdhleR",
+    "DnbkKvbdsrqsZZeD",
+    "EObkKvbdrovPJbuf",
+    "EPCjjvbddeOqbXCj",
+    "EObjjvbdtcDVXVoP",
+    "DncKjvbdMfbpNQVL",
+    "DoCkKvbdhbPCeXQq",
+    "DoCkKvbdNHComQVL",
+    "EObjjvbdvBDxroFI",
+    "EPCjjvbdnBivwoNu",
+    "EObjjvbdbhljKewY",
+    "EPDKjvbdZyDimcMS",
+    "EObkKvbdWSOXbElD",
+    "EOcKjvbdTfznMXVe",
+    "EPCjjvbdZtJJYcsO",
+    "DoCjjvbdRjxfVHLT",
+    "DoCkKvbdVTltGMVj",
+    "DncKjvbdYfwEAOri",
+    "DncKjvbdYkrEUOMN",
+    "EObkKvbdqGEEsuaI",
+    "DncLKvbdjJfHimXr",
+    "EPDLKvbddndsLUTr",
+    "DnbkKvbdqBJFAWhE",
+    "EPDLKvbdEOcKjwDE",
+    "EPCkKvbdtvOYJqTA",
+    "DncLKvbdkyTRsZHU",
+    "DoCjjvbdTppnuVIN",
+    "DncLKvbdwyhFeweS",
+    "DncKjvbdsBelkgKy",
+    "DoCjjvbdKDKCqJcY",
+    "DoCjjvbdkClKqHVH",
+    "DoCjjvbdcTCjtDia",
+    "EPDLKvbdUVkpJtAq",
+    "EPDLKvbdRyjITCvA",
+    "DnbjjvbdJuuFcdgJ",
+    "DoDKjvbdrJAJdmOe",
+    "DncKjvbdJcJbqKCx",
+    "DoDLKvbdJcJbqJcY",
+    "DoDKjvbdeEoSCXDK",
+    "DoDLKvbdSwjlNzkY",
+    "EObjjvbdzitopDrt",
+    "DoCkKvbdKWVGEEgJ",
+    "DncKjvbdpssfqrKt",
+    "EOcLKvbdUMWPBVoJ",
+    "DncKjvbdyzdmrIIh",
+    "EPCjjvbdxUldqZLn",
+    "DoDLKvbdySnImRbH",
+    "DoCjjvbdGdKvJaij",
+    "DoCkKvbdxZgeewdr",
+    "EObkKvbdiLddNuDZ",
+    "DnbjjvbdSCDdkiZL",
+    "DncKjvbdznpREcMY",
+    "EOcLKvbdaRebhTfL",
+    "DnbjjvbdZQldiMdq",
+    "EPCjjvbdbrbjtEKB",
+    "EOcKjvbdEARiMzXX",
+    "DoDLKvbdXrkaNTnx",
+    "EPCkKvbdQZNAHTRj",
+    "DoDLKvbdEzspeLcJ",
+    "EPCjjvbduVnYKRTA",
+    "EObjjvbdJXtBhMQp",
+    "EPDKjvbdeOdrjssr",
+    "EPCjjvbdLqwMytpz",
+    "EPDKjvbdUMVoBVoJ",
+    "DncKjvbdRpUGifDw",
+    "EPDLKvbdZyDinDLr",
+    "DnbkKvbdNrsufeVQ",
+    "EPCkKvbdZMSDtNlN",
+    "EPCkKvbdySnJNSCH",
+    "EPCjjvbdfMevfljL",
+    "DncLKvbdXsMBNTnx",
+    "DnbkKvbdpxoHfqDx",
+    "DncLKvbdUQpntthN",
+    "DncKjvbdIsZArlwl",
+    "DoDLKvbdZGwEAOsJ",
+    "EOcKjvbdVvhwvDdg",
+    "EOcLKvbduWNxJqTA",
+    "EPCjjvbdHEKvJaij",
+    "DoDKjvbdrpWOjCuf",
+    "DncLKvbdrpWOjDVf",
+    "DoCjjvbdIHGzYwwg",
+    "DoDLKvbdpxoIGqEY",
+    "DoDLKvbdJcJbqKDY",
+    "DoCjjvbdRWmdClHc",
+    "EPCjjvbdFWYopNJe",
+    "DncKjvbdmfdwlmfy",
+    "DoCkKvbdxUleQxlO",
+    "EObjjvbdnGdxMnGy",
+    "EPCjjvbdvvlAvBVu",
+    "DncLKvbddndsKssr",
+    "EObjjvbdZMRcsnLm",
+    "EOcKjvbdFxttaEXb",
+    "DncKjvbdVUNTfMVj",
+    "EOcLKvbdNrtWHFUp",
+    "DoDKjvbdwuMdqYlO",
+    "EPDLKvbdrXPkbhxq",
+    "EObjjvbdrEFIpNua",
+    "EObjjvbdziuQQDrt",
+    "EOcLKvbdqYoIGpcx",
+    "DnbjjvbdsQVoJcVf",
+    "EObkKvbdkDMKpgUg",
+    "EObjjvbdvBDyTPFI",
+    "DncKjvbduCbuWvOo",
+    "EPCjjvbdkVvnECYX",
+    "DncLKvbdZGvdAOri",
+    "DoCkKvbdrXPlDJZR",
+    "EOcLKvbduCcVWvOo",
+    "DoDKjvbdCEPaWJlf",
+    "EPDKjvbddoErjssr",
+    "DncKjvbdACqxKZiQ",
+    "EPCjjvbdUVlPitAq",
+    "EPDKjvbdjJfHjMxS",
+    "EObkKvbdAMhYsWzY",
+    "DoDKjvbdnBivxOmu",
+    "EOcLKvbdbiNKKfXY",
+    "EPDKjvbdYqMeIleR",
+    "EObkKvbdJmADygUa",
+    "EObjjvbdEPDLLWcE",
+    "EPCjjvbdrXPkcIxq",
+    "EOcLKvbdliDtQtqa",
+    "DoCjjvbdmoyxujyC",
+    "EPDLKvbddoFTLTsr",
+    "EOcLKvbdCWzdJEpW",
+    "DnbjjvbdrEEhpOWB",
+    "DoDKjvbdZLrDtNkm",
+    "EOcLKvbdLFfHbAqV",
+    "EOcKjvbdmttzLKSG",
+    "EOcLKvbdmbJvwoOV",
+    "EOcKjvbdUaCQrqSZ",
+    "DnbjjvbdmgExMnGy",
+    "EPDKjvbddndrkUUS",
+    "EObkKvbdDwwkstTl",
+    "DoCkKvbdcJMjLFwY",
+    "DnbjjvbdaNLBruMg",
+    "DoDLKvbdQYmAHTRj",
+    "DnbkKvbdsQWOicWG",
+    "EObkKvbdMRwMzUpz",
+    "DoDLKvbdZshiZDrn",
+    "EPDLKvbdnPzYujxb",
+    "EOcKjvbdCEQAujMf",
+    "EPDLKvbdKefHbApu",
+    "DoDLKvbdYpldiNFR",
+    "DoCkKvbdFWZQQNJe",
+    "DncLKvbdznpQeCkx",
+    "EOcKjvbdnQZxvKxb",
+    "DoCkKvbdVBBprpqy",
+    "DnbkKvbdZirhPfaf",
+    "DnbkKvbdegjvSNqH",
+    "EOcLKvbdqdEiPnWB",
+    "EObjjvbdBhkCKiGK",
+    "EObjjvbdxZgfGYFS",
+    "DnbjjvbdNQYQumgT",
+    "EPCjjvbdxsNhlrBg",
+    "DoCkKvbdQdDApRDr",
+    "DoCkKvbdxxIiaoyk",
+    "EPDKjvbdFeirNhtR",
+    "DoCjjvbdegjvSOQg",
+    "EObkKvbdqcdiQNvB",
+    "DncLKvbdiMEdNtcZ",
+    "DncLKvbdTqRPUthN",
+    "EPCkKvbdwygeexFS",
+    "DoDKjvbdyTOJMrBg",
+    "DncLKvbdeEoRavbj",
+    "EPCjjvbdtbcUvvOo",
+    "EObjjvbdKCicRJcY",
+    "EObjjvbdZyEKODMS",
+    "DnbjjvbdmJDtQtrB",
+    "DncLKvbdEARhlyvw",
+    "DnbjjvbdIxTbILqQ",
+    "EOcLKvbdwygefYFS",
+    "DoCjjvbdznoqFCkx",
+    "DoCjjvbdRpUGjGDw",
+    "DncKjvbdhzVGMQnG",
+    "EPCjjvbdhkeDnVCy",
+    "EObkKvbdOEdUIiKd",
+    "DncKjvbdrDeIomua",
+    "DncLKvbdiHJbxuiu",
+    "EPDKjvbddxZstRez",
+    "EPDLKvbdmSYuZrdJ",
+    "EObkKvbdVUNUFkvK",
+    "EPDLKvbdNeEUJIjd",
+    "DoCkKvbdiMEdNuCy",
+    "DoDLKvbdRDcApQcr",
+    "EPCjjvbdTlVoBVoJ",
+    "EObjjvbdLBKgNBwq",
+    "EPCkKvbdsCFllHKy",
+    "EObjjvbdnVUzLJqf",
+    "DoDKjvbdqrVLNkBN",
+    "DoCkKvbdqFcdtWBI",
+    "DncLKvbdbVCGxLTh",
+    "EOcLKvbdeFPSCXCj",
+    "EOcLKvbdRpTgKFdX",
+    "EObjjvbdznpQeDLx",
+    "EOcKjvbdjvXNcaxX",
+    "DnbjjvbdHDkWJbJj",
+    "DncKjvbdhkeENuDZ",
+    "DnbkKvbdnUtyjjSG",
+    "DoDKjvbdSQUHJfDw",
+    "DncKjvbdbUbHYLUI",
+    "EOcLKvbdNsTvGduQ",
+    "EPDLKvbdSZigsCvA",
+    "DncKjvbdMfcPlpUk",
+    "DoDLKvbdxrnIlrBg",
+    "DncKjvbdiLdcnVCy",
+    "EPCjjvbdmfeYNOHZ",
+    "DoCkKvbdjvWmcaxX",
+    "DoDKjvbdbUbHXkUI",
+    "DncKjvbdBhkBjiFj",
+    "DoDLKvbdNHColpVL",
+    "EOcKjvbdrykosAhO",
+    "DncLKvbdqGDeUVaI",
+    "DnbkKvbdhgJcZViu",
+    "DnbjjvbduLxXAtBX",
+    "EPCjjvbdYpleJNFR",
+    "EPDLKvbdQvmdClHc",
+    "DnbjjvbdJYTbIMRQ",
+    "DncLKvbdznpRFDMY",
+    "EOcLKvbdZnmiFEyj",
+    "DnbkKvbdrRuLOLAm",
+    "EObkKvbdhkeEOUby",
+    "DncLKvbdYlSEUOLm",
+    "DoCjjvbdhkdcmtby",
+    "DncLKvbdddnrCXDK",
+    "DoDLKvbdKaLHNCYR",
+    "EOcKjvbdcyxpYZQb",
+    "EPDLKvbdACqwjZhp",
+    "DoCkKvbdBsBDTevr",
+    "EObkKvbdeKJqvUzn",
+    "EObkKvbdcImJkGWx",
+    "DncLKvbdYSlAltOx",
+    "DncLKvbdlrYtyrdJ",
+    "EObkKvbdKxqJrztf",
+    "EOcKjvbdsQWPJcVf",
+    "DoDKjvbdkySqrxgU",
+    "EObjjvbdeEoRbXCj",
+    "EOcKjvbdHDkVjBij",
+    "DoDLKvbdCTBCsfXS",
+    "DoCjjvbdKCjDQibx",
+    "DoCjjvbdlhdTqUrB",
+    "DoDKjvbdTulQKTaR",
+    "DoCkKvbdRjxetfkT",
+    "EPCjjvbdEuyQQNKF",
+    "EPCjjvbdDoDKkXDE",
+    "DoCjjvbdsQWPJbuf",
+    "DoDKjvbdhuZdvqtb",
+    "EPDLKvbdiHKCyWJu",
+    "EPDLKvbdLFegaaQu",
+    "DoCjjvbdqZPHgRDx",
+    "DncKjvbdUWMPjUAq",
+    "DoDLKvbdTYKkmzjx",
+    "DoDKjvbdegjvSOQg",
+    "DnbkKvbdUtNTekvK",
+    "EObkKvbdNsTvGeVQ",
+    "DoDLKvbdfNFvgMjL",
+    "EOcLKvbdZQmEiNEq",
+    "EPDKjvbdBraDTfWr",
+    "EPDKjvbdNGcQNQVL",
+    "EPDLKvbdZyEKODMS",
+    "EOcKjvbdBvzdIdpW",
+    "EPCjjvbdACqwiyiQ",
+    "DoCjjvbddePRawCj",
+    "EPDKjvbdWWiXucdg",
+    "DoDKjvbdWexzUAPT",
+    "DnbjjvbdwXMBWBWV",
+    "EOcLKvbdUyHszLOn",
+    "EPCkKvbdOYOuzcnU",
+    "EPCkKvbdhancEwQq",
+    "DnbkKvbdjggLefOL",
+    "EPCkKvbdFjdsDIMu",
+    "DoDKjvbdrSUjmkBN",
+    "DoDLKvbdZjTIQGaf",
+    "DoDKjvbdMgDPmPtk",
+    "EPDLKvbdWRmwbFMD",
+    "DoCkKvbdzROmJKXA",
+    "DnbkKvbdrDdiQNvB",
+    "DnbjjvbduDCtwVoP",
+    "EOcLKvbdCIjbLJFj",
+    "EPDKjvbdXrkaMsnx",
+    "EPDKjvbdVhXvXfxz",
+    "DncKjvbdhbPDEwRR",
+    "DoCkKvbdpxoHgQcx",
+    "DoCkKvbduMXwBUBX",
+    "EObjjvbdNeEThhjd",
+    "DoCjjvbdirzhrkJz",
+    "DoDLKvbdaMkCTUlg",
+    "DncLKvbdWRnYBeLc",
+    "DnbjjvbdGBPRZJzm",
+    "EOcLKvbdeOeSjstS",
+    "DoDLKvbdmIctRVSB",
+    "DoCjjvbdZxdJnDMS",
+    "DoCkKvbdRpTgKFcw",
+    "DncLKvbdTukojTaR",
+    "DnbjjvbdKRZdoFme",
+    "DnbkKvbdURQoVUhN",
+    "DoDLKvbdyYJKBozL",
+    "EObkKvbdfNFwHMjL",
+    "DoDLKvbdZisIQHBf",
+    "EObkKvbdqFcdsuaI",
+    "DncLKvbdzoPqFDLx",
+    "DoDKjvbdSKxeuHLT",
+    "EPDKjvbdsBemLfjy",
+    "DoCjjvbdJbjCqJcY",
+    "DoCjjvbdNPxRVnGs",
+    "DncLKvbdGcjvJbKK",
+    "EOcKjvbdrWpMDIxq",
+    "EOcLKvbdQdDApQcr",
+    "DoDKjvbdZMRdTnLm",
+    "EOcLKvbddxZssrFz",
+    "EObjjvbdUtNTfLuj",
+    "EPCjjvbdLLBIWAKZ",
+    "DoCkKvbdgFlZmfgA",
+    "EPCjjvbdUVkoitAq",
+    "DoDKjvbdDncKjvcE",
+    "DoDLKvbdRpUHJfEX",
+    "EPDKjvbdLqvlzVQz",
+    "EPDKjvbdZMRdUOLm",
+    "EOcLKvbdCJLBkIfK",
+    "DncKjvbdaSFbhUFk",
+    "EPDLKvbdZoNheEzK",
+    "DncKjvbdUVlPjUAq",
+    "DnbkKvbdKNADyfuB",
+    "EObkKvbdZdwfzghb",
+    "EPDLKvbdZtIhxcrn",
+    "EObkKvbdGckViajK",
+    "DncLKvbdFfJqmiUR",
+    "DncKjvbdKWUfDdgJ",
+    "DoDKjvbdMtrqjmAX",
+    "EOcLKvbdsQWPKDVf",
+    "DoCjjvbdwtleRZMO",
+    "EObjjvbduaDxsPEh",
+    "EPDLKvbdKxqJrzuG",
+    "EOcKjvbdVAaprprZ",
+    "EObjjvbdEuxopMjF",
+    "DnbjjvbdyOTHwriD",
+    "EPDLKvbdrpVnibvG",
+    "EPDKjvbdkWWnDaww",
+    "DncLKvbdrXPkbiYq",
+    "DoDLKvbddxZssqez",
+    "EOcLKvbdHDkWJbJj",
+    "DncLKvbdEPCkLWcE",
+    "DnbkKvbdEXwkstTl",
+    "EObjjvbdqiAKEmOe",
+    "DncLKvbdjAQGaQGj",
+    "EPCjjvbdNeDtJJKd",
+    "EPCjjvbdvwMBWBVu",
+    "EPDKjvbdFejSOItR",
+    "EOcLKvbdNPwqWOHT",
+    "EPDKjvbdbsCjscia",
+    "EObkKvbdyYIiaoyk",
+    "DoDKjvbdLZQirzuG",
+    "EObjjvbdSLZGVGjs",
+    "DoCjjvbdAMgxsWzY",
+    "DoDLKvbdEObjjwCd",
+    "DnbkKvbdsPvOicWG",
+    "EPCkKvbdrJAKElne",
+    "EPCkKvbdauCGwjsh",
+    "DncLKvbdegkWRnQg",
+    "EPCkKvbdYpmEiNFR",
+    "DoDKjvbduaDxsPFI",
+    "DoCjjvbdcyxoxYqC",
+    "DoCkKvbdkMakzFHP",
+    "DnbjjvbdJbibqJbx",
+    "DnbkKvbdWWhxWDeH",
+    "DoCjjvbdssRsYzFD",
+    "DoDKjvbdpyPIHRDx",
+    "DncLKvbdwNWANDeN",
+    "DoDKjvbdJYUBglRQ",
+    "EObkKvbdXnRAYVVt",
+    "DoCjjvbdUWLpKTaR",
+    "DoDKjvbdTqROttgm",
+    "EPCkKvbdVqnXaeMD",
+    "EObjjvbdADRwiyiQ",
+    "DoDKjvbdlrZUyrci",
+    "EPDKjvbdvAdZSndh",
+    "DoCkKvbdzoQQeDLx",
+    "DnbkKvbdSQUGjFdX",
+    "EOcLKvbdqBJFAXIE",
+    "EObkKvbdSCEFLiZL",
+    "DnbjjvbdzoQQdcMY",
+    "DnbkKvbdpxngfqEY",
+    "DncLKvbdbsDLUEKB",
+    "DoCjjvbdXrlBMtOx",
+    "EObjjvbdKCjDQicY",
+    "DncLKvbdLrWlzUpz",
+    "EObjjvbdaaWEfQQX",
+    "EObjjvbdtlYWaTaX",
+    "DnbkKvbdMowpunGs",
+    "EObkKvbdSLYeuHKs",
+    "EObkKvbdTAEhhCOd",
+    "EPCkKvbdmSYtyrci",
+    "DncLKvbdYkqcsnLm",
+    "DoDLKvbdrylQTAgn",
+    "DncLKvbdJXtCIMRQ",
+    "EObkKvbdSBdElIyL",
+    "DoDLKvbdwygefYFS",
+    "DncKjvbdyXhibPzL",
+    "EPCjjvbduaDxsPFI",
+    "EObjjvbdZoNiFEzK",
+    "EPCjjvbdkNBkyeHP",
+    "EPCkKvbdWRnXadlD",
+    "DncLKvbdRWmdDLhD",
+    "DnbkKvbdmSYtzTDi",
+    "EOcKjvbdkVwODbXw",
+    "DncLKvbdQlxCZOUz",
+    "EObjjvbdbhlijfXY",
+    "EOcLKvbdXmqAXtut",
+    "EOcLKvbdmbKXXnnV",
+    "DoDKjvbdkHgMFfOL",
+    "EPCkKvbdfekymgHA",
+    "DoCjjvbdeKKRvUzn",
+    "DoDKjvbdkHfkefNk",
+    "DoCjjvbdyqPMiKXA",
+    "DnbjjvbdUQqOtuIN",
+    "EOcKjvbdEPCkKwDE",
+    "DoDLKvbdZRNFIleR",
+    "DnbjjvbdRacdlJZL",
+    "EOcLKvbdTukoitAq",
+    "EOcLKvbdZLrDtOMN",
+    "EOcLKvbdgKfzcGAE",
+    "EObjjvbdzjVQQESt",
+    "EOcLKvbdcIlijevx",
+    "EOcKjvbdGKdsDHmV",
+    "DncLKvbdKkBHvAJy",
+    "EOcKjvbdZMRctOLm",
+    "EPCkKvbdADRxKZiQ",
+    "EObjjvbdDwxLsssl",
+    "EPDLKvbdUxgszLPO",
+    "EPCkKvbdSQTfiedX",
+    "EPCjjvbdNeEUJIkE",
+    "DoDLKvbdpyPHfqDx",
+    "DnbkKvbdyOShXsJD",
+    "DncLKvbdLiBkpxAS",
+    "DoDKjvbdaaWEepQX",
+    "DoCjjvbdWSOYBeLc",
+    "EOcKjvbdLFegbAqV",
+    "EPDKjvbdffLzOGgA",
+    "EObkKvbdFkErbglu",
+    "DncLKvbdiZuFlROG",
+    "DncKjvbdegkWRnQg",
+    "DoDLKvbdQdDApRDr",
+    "EOcLKvbdeYZtURez",
+    "EObjjvbdrXQLcIxq",
+    "DoDLKvbdxZhGGXeS",
+    "DoDLKvbdGGKSOItR",
+    "EObjjvbdjhHLfFnL",
+    "EOcLKvbdUQpoUuHm",
+    "DoCkKvbdXrlBNUPY",
+    "DoDKjvbdJXtCIMRQ",
+    "DnbkKvbdZMSDsnLm",
+    "DncKjvbdCTBDUGWr",
+    "DncKjvbdbhlikGXY",
+    "DoDKjvbdXmqAYVWU",
+    "DnbjjvbdliDsqVRa",
+    "DnbkKvbdmajXYOnV",
+    "EObjjvbdJpyePGNe",
+    "DnbkKvbdCTAcUGXS",
+    "DoDLKvbdCDpBVjNG",
+    "EOcLKvbdxwhiaoyk",
+    "DoDKjvbdxVNFQyMO",
+    "EPCkKvbdVvhwvEEg",
+    "DnbkKvbdFWYoomJe",
+    "EOcKjvbdlrZUysEJ",
+    "EPDKjvbdqquKnKaN",
+    "DoCkKvbdTkunaVoJ",
+    "EOcLKvbdfHkVrOQg",
+    "EPDLKvbdiUzFWrUb",
+    "DoDLKvbdtAGqIABS",
+    "DoCkKvbdZRMdhmEq",
+    "DnbkKvbdNsUVfeVQ",
+    "EPDLKvbdqwPkbiZR",
+    "DoCkKvbdNUsSLNAX",
+    "DncKjvbdmpZxvKyC",
+    "EPCkKvbdLYqKSztf",
+    "EPDKjvbdZyEKODMS",
+    "EPDKjvbdNGbomPuL",
+    "DncKjvbdZMSDtNlN",
+    "EPCjjvbdTXjkmzjx",
+    "EObkKvbdBdQAvKMf",
+    "EOcLKvbdkySrTYgU",
+    "DnbkKvbdZoOIddzK",
+    "DoCkKvbdZMSDsmkm",
+    "EPCkKvbdCWzdIdpW",
+    "DncLKvbdBvzdIdov",
+    "DoCjjvbdaRfDHtFk",
+    "DnbkKvbdWeyZtAOs",
+    "DoDLKvbdnCJwYPOV",
+    "DoCjjvbdEYYLstUM",
+    "EOcLKvbdwtldqZMO",
+    "EPCjjvbdFVxoomKF",
+    "EObkKvbdyqPMhiwA",
+    "DoDLKvbdkxrrSxgU",
+    "DoCjjvbdeATqNYKG",
+    "DncLKvbdJKEAJpHE",
+    "DoCkKvbddndsLUTr",
+    "DnbjjvbdqFceUWBI",
+    "DoDLKvbdhkddOUby",
+    "DncKjvbdGKdrcIMu",
+    "EPCkKvbdelevflik",
+    "DoDKjvbdhaoDFWqR",
+    "DoCjjvbdYlSDsmlN",
+    "EPCjjvbdiZuGLpmf",
+    "EObkKvbdnCJvxPNu",
+    "DnbkKvbdhzUelRNf",
+    "DnbkKvbdZeYGzgiC",
+    "DoCkKvbdDnbkLWbd",
+    "DnbkKvbdnHFYMmfy",
+    "DoCjjvbdePEsKtTr",
+    "DnbjjvbdZQmEhleR",
+    "DnbkKvbdTkunaVoJ",
+    "DnbkKvbdFWZPpMjF",
+    "DoDKjvbdSwkMNzkY",
+    "EOcLKvbdwtldpyMO",
+    "EOcKjvbdhkdcmtby",
+    "DoCjjvbdNQXqWNfs",
+    "EPDKjvbdzjUpPdTU",
+    "DnbjjvbdqceJPnWB",
+    "EPDKjvbdUyHsyjoO",
+    "EPCkKvbdZshhxcsO",
+    "DncKjvbdqAiFAWgd",
+    "EObkKvbdgFkzOGgA",
+    "DncKjvbdmgFYNNgZ",
+    "DoDLKvbdDjHjWYKA",
+    "DnbjjvbdJbicRKCx",
+    "DnbkKvbdfNFwHMjL",
+    "EPCkKvbdWSNxBdlD",
+    "EPDLKvbdCJKbLJFj",
+    "EPDKjvbdEOcKkXDE",
+    "EPCkKvbdVrOYCElD",
+    "DnbjjvbdCIkBjhej",
+    "DoDLKvbddoFTKstS",
+    "DnbjjvbduDDVXVoP",
+    "EObkKvbdxwiKCPzL",
+    "DnbkKvbdZGvdAPTJ",
+    "DoDLKvbdBdPaVjNG",
+    "EOcKjvbdIHGzYwxH",
+    "DoCjjvbdGFjSNhsq",
+    "DnbjjvbdlYsSSxgU",
+    "EPCjjvbdqrUjnKaN",
+    "EOcLKvbdtvOXipsA",
+    "DoDLKvbdrounjCuf",
+    "DoCkKvbdFVyPomKF",
+    "EOcKjvbdNHCpNPtk",
+    "EPDLKvbdWeyZtAPT",
+    "EPDKjvbdjcLkQfuH",
+    "EOcLKvbdzHZMAMeX",
+    "DoCjjvbdUMWPBVni",
+    "EOcKjvbdHELWKBjK",
+    "DoDKjvbdMgComQUk",
+    "DnbkKvbdiGjDZWJu",
+    "DncKjvbdyqOmJKXA",
+    "DoDKjvbdVZITyjoO",
+    "DoCjjvbdzQoNJJwA",
+    "EOcLKvbdGAoQxizm",
+    "DoDKjvbdatagYKsh",
+    "EPDKjvbdSBceMJYk",
+    "DoDLKvbdMpYQvOHT",
+    "DncKjvbdiCOcFWpq",
+    "DoCjjvbdUGznLvvF",
+    "EPDLKvbdANIYrvyx",
+    "EPCjjvbdIwtCHkpp",
+    "EObkKvbdJSyBSmYM",
+    "EObkKvbdwuMdqYlO",
+    "EObjjvbdmuVZkKSG",
+    "DncLKvbdSPsfjFdX",
+    "DoDLKvbdSQUHJedX",
+    "DoDKjvbdiVZdwSUb",
+    "EPDLKvbdRjxfVGkT",
+    "EObjjvbdmpZyVkZC",
+    "DncLKvbdhzUelROG",
+    "EPCkKvbdxVMeRZMO",
+    "EOcKjvbdxxIiapZk",
+    "EOcKjvbdJSyBTNYM",
+    "EPDKjvbdMSXMzUpz",
+    "EObkKvbdJmADzHVB" };
+
+  public static void main(java.lang.String[] unused) {
+    try {
+      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("bad.out"));
+      for (int i = 0; i < strings.length; i++) {
+        out.write(strings[i].getBytes());
+        out.write("\n".getBytes());
+      }
+      out.close();
+    } catch (Exception e) {
+      System.out.println("Some exception occurred");
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/7158800/InternTest.java	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7158800
+ * @run shell/timeout=400 Test7158800.sh
+ * @summary This test performs poorly if alternate hashing isn't used for
+ * string table.
+ * The timeout is handled by the shell file (which kills the process)
+ */
+import java.util.*;
+import java.io.*;
+
+public class InternTest {
+    public static void main (String args[]) throws Exception {
+        final String badStringsFilename = "badstrings.txt";
+
+        if (args.length == 0 || (!args[0].equals("bad") && !args[0].equals("normal"))) {
+            System.out.println("Usage:  java InternTest [normal|bad]");
+            System.exit(1);
+        }
+
+        FileInputStream fstream = new FileInputStream(badStringsFilename);
+        DataInputStream in = new DataInputStream(fstream);
+        BufferedReader br = new BufferedReader(new InputStreamReader(in));
+        String toIntern, toDiscard;
+        int count = 0;
+        long current = 0L;
+        long last = System.currentTimeMillis();
+
+        if (args[0].equals("bad")) {
+            while ((toIntern = br.readLine()) != null) {
+                toDiscard = new String((new Integer((int)(Math.random() * Integer.MAX_VALUE))).toString());
+                toIntern.intern();
+                count++;
+                if (count % 10000 == 0 && count != 0) {
+                    current = System.currentTimeMillis();
+                    System.out.println(new Date(current) + ": interned " + count + " 0-hash strings - last 10000 took " + ((float)(current - last))/1000 + "s (" + ((float)(current - last))/10000000 + "s per String)");
+                    last = current;
+                }
+            }
+        }
+        if (args[0].equals("normal")) {
+            while ((toDiscard = br.readLine()) != null) { // do the same read from the file to try and make the test fair
+                toIntern = new String((new Integer((int)(Math.random() * Integer.MAX_VALUE))).toString());
+                toIntern.intern();
+                count++;
+                if (count % 10000 == 0 && count != 0) {
+                    current = System.currentTimeMillis();
+                    System.out.println(new Date(current) + ": interned " + count + " normal strings - last 10000 took " + ((float)(current - last))/1000 + "s (" + ((float)(current - last))/10000000 + "s per String)");
+                    last = current;
+                }
+            }
+        }
+        in.close();
+    }
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/7158800/Test7158800.sh	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,91 @@
+#!/bin/sh
+# 
+#  Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+#  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+# 
+#  This code is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU General Public License version 2 only, as
+#  published by the Free Software Foundation.
+# 
+#  This code is distributed in the hope that it will be useful, but WITHOUT
+#  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+#  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+#  version 2 for more details (a copy is included in the LICENSE file that
+#  accompanied this code).
+# 
+#  You should have received a copy of the GNU General Public License version
+#  2 along with this work; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+# 
+#  Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+#  or visit www.oracle.com if you need additional information or have any
+#  questions.
+# 
+#
+#   Run test for InternTest.java
+#
+
+if [ "${TESTSRC}" = "" ]
+then TESTSRC=.
+fi
+
+if [ "${TESTJAVA}" = "" ]
+then
+  PARENT=`dirname \`which java\``
+  TESTJAVA=`dirname ${PARENT}`
+  echo "TESTJAVA not set, selecting " ${TESTJAVA}
+  echo "If this is incorrect, try setting the variable manually."
+fi
+
+if [ "${TESTCLASSES}" = "" ]
+then
+  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
+  exit 1
+fi
+
+# set platform-dependent variables
+OS=`uname -s`
+case "$OS" in
+  SunOS | Linux )
+    NULL=/dev/null
+    PS=":"
+    FS="/"
+    ;;
+  Windows_* )
+    NULL=NUL
+    PS=";"
+    FS="\\"
+    ;;
+  * )
+    echo "Unrecognized system!"
+    exit 1;
+    ;;
+esac
+
+JEMMYPATH=${CPAPPEND}
+CLASSPATH=.${PS}${TESTCLASSES}${PS}${JEMMYPATH} ; export CLASSPATH
+
+THIS_DIR=`pwd`
+
+${TESTJAVA}${FS}bin${FS}java -fullversion
+
+${TESTJAVA}${FS}bin${FS}javac -d . ${TESTSRC}${FS}InternTest.java
+
+cp ${TESTSRC}${FS}badstrings.txt .
+
+${TESTJAVA}${FS}bin${FS}java -XX:+PrintStringTableStatistics -XX:+TraceSafepointCleanupTime InternTest bad > test.out 2>&1 &
+C_PID=$!
+
+sleep 60
+
+ps | grep ${C_PID} | grep -v grep
+
+if [ $? = 0 ]
+then
+    kill -9 ${C_PID}
+    echo "Test Failed"
+    exit 1
+else
+    echo "Test Passed"
+    exit 0
+fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/7158800/badstrings.txt	Wed Jul 05 18:15:14 2017 +0200
@@ -0,0 +1,30001 @@
+EOcLKvbddZyPxYpb
+DncLKvbdPxmAGrqj
+DoCjjvbdpxoIHQdY
+EPCkKvbdqYoHfqEY
+DnbkKvbdezvYdiUX
+DnbjjvbdeEoRbXCj
+EObkKvbdbsCkUEKB
+EOcLKvbdnUtyjiqf
+DncLKvbdRWnDcMHc
+DoCkKvbdrSUkOLAm
+DncLKvbdfNFwGmJk
+EPDLKvbdvAdYroFI
+DoDLKvbdiGibyViu
+DncLKvbdYqNEhmFR
+DoCkKvbdEARhlzXX
+DncLKvbdSZjHsCvA
+DncKjvbdqTsgRqkU
+DnbjjvbdqAiFAXHd
+EPDKjvbdGcjvJaij
+DnbkKvbdwtldpxkn
+DoDKjvbdYkrETnMN
+EPCjjvbdbBWEfQQX
+EPCjjvbduMXwAtBX
+DncLKvbdbsCkTcia
+DoCjjvbdczYpYZRC
+EOcKjvbdFeiqmhsq
+DoCkKvbdKCicQibx
+EOcKjvbdZLrEUOLm
+DoCjjvbdaNKbStmH
+DoDKjvbdJbjDQjDY
+EPCkKvbdemFwGmKL
+EPDKjvbdZQleImEq
+DncKjvbdZjShPfbG
+DnbjjvbdqYnhHREY
+DoCkKvbdaRfDIUGL
+DoDKjvbdLrWlyuQz
+DnbjjvbdZisHofaf
+EObjjvbdhtydvrUb
+DnbjjvbdRotHKGEX
+EObjjvbdNeEThhkE
+EPCjjvbdZtJJZESn
+DoDKjvbdnPyxvLYb
+EPDKjvbdeEoRbWbj
+EOcLKvbdFxttaEXb
+EObjjvbddwystRez
+EPCjjvbdJpzEnenF
+DnbkKvbdTppntuIN
+EPCkKvbdTukpKUBR
+DnbkKvbdhlFEOUcZ
+EObkKvbdlhdUQuRa
+DnbjjvbdkClKqHUg
+EOcKjvbdqTtGqqkU
+DncKjvbdtkwvaUBX
+DoDKjvbdsQWOjCuf
+DncLKvbdEKIJuwjA
+DncKjvbdGLErcIMu
+EOcLKvbdNPwpumfs
+EObkKvbdnVUzLJrG
+DoCkKvbdcTDKsdKB
+DncKjvbdKRZdoFme
+EOcLKvbdemFvgNKL
+EPCkKvbdznopdblY
+EPDLKvbdOYPVzdOU
+DnbjjvbdsZlPsAhO
+DoDLKvbdKCjDRKDY
+DoCkKvbdhuZeXSVC
+EPDKjvbdOStVgEtp
+DncLKvbdvwMAvBWV
+EPDKjvbdBcoaWJlf
+EOcKjvbdZxdKODMS
+DoCjjvbdbsCkTcjB
+EOcLKvbdwWlAuaWV
+DnbjjvbdFejRnJUR
+DnbjjvbdmIdTqVSB
+DnbkKvbdqBIeAWhE
+DncKjvbdrMzJyMIJ
+DoCkKvbdZGvdAOsJ
+DncLKvbdjggLfFnL
+DoCjjvbdYqNFJMdq
+DoCkKvbdqZPHfqDx
+DncLKvbdOEdThiLE
+DoCkKvbdZirgpGaf
+EPDLKvbdziuQPdSt
+EObkKvbdKQyeOenF
+DoDLKvbduaDySndh
+DoCjjvbdVUNUGLvK
+DncKjvbdAMhYrvzY
+DnbkKvbdnQZxvKxb
+EPCjjvbdBhjakJFj
+DncLKvbdmfeYNNfy
+DoDLKvbdjlbLydfo
+DoDLKvbdpyPIGpcx
+EOcLKvbdnVUzLJqf
+DoCjjvbdmJETqVSB
+DoDLKvbdJTZAsMxM
+DoCkKvbdnQZxvLZC
+DoDKjvbdACqwizJQ
+DncKjvbdvBEZSoFI
+DncKjvbdGckVjCJj
+DncLKvbdiMFENtcZ
+Dnbjjvbdjuvmcaww
+DnbkKvbdZyEKNblS
+DoCjjvbduMYXBUBX
+DnbjjvbdFWYopNJe
+DoDKjvbdelfXGljL
+DnbjjvbdakLenmcA
+EPDKjvbdfILWRmpg
+EObjjvbdSLYeuHLT
+DoCjjvbdMfbolotk
+EPDLKvbdrRuKnKaN
+EOcKjvbdyzdnRhIh
+DoDLKvbdGAoRZJzm
+DoCjjvbdhlFDnUcZ
+EPDLKvbdmpZyVkYb
+DncKjvbdTpqPUuIN
+DncLKvbdHDjvJaij
+EPDLKvbdYlRcsmkm
+EPDLKvbdvlvAMdFN
+DncKjvbdIsZArmYM
+EOcLKvbdegjuqnQg
+EOcLKvbdZQmFJNFR
+DoCjjvbdZxdJmcMS
+EPCkKvbdlZTSTYgU
+DoDKjvbdqceJPnWB
+DncLKvbdVgwuxGxz
+DncKjvbdDnbkLXDE
+EPDLKvbdatbHYKsh
+DncKjvbdEzsqFLbi
+EPDLKvbdnVVZkKRf
+EOcKjvbdKeegbBQu
+EPCkKvbdKfGHaaRV
+EPDKjvbdmIctRVRa
+EPCjjvbdRMxBxnUz
+DnbjjvbdJYTbILpp
+EPCkKvbdTAEiHbPE
+EOcLKvbdfelZnGgA
+DoCjjvbdOStWGeUp
+EOcLKvbdemGXHNJk
+DoDKjvbdYTMAmUOx
+EPCkKvbdpyOhGpcx
+EPCkKvbdAMgxsWzY
+DnbjjvbdYkrETnMN
+EPDLKvbdUQqPUtgm
+DncKjvbdehKurNqH
+DoCjjvbdZMSETnLm
+DoDKjvbdIHGyyXwg
+EObjjvbdXGYzUAPT
+DoCjjvbdhbPCeWqR
+DoCkKvbdKNADzGuB
+DnbjjvbdFeirOJTq
+DncLKvbdaRecHtFk
+DnbkKvbdzoPpeClY
+EObkKvbdZRMeJMeR
+DnbjjvbdYfvdAPSi
+DncLKvbdJcKCqJcY
+EOcLKvbdqvokbhyR
+DoDLKvbdrRuLNjaN
+DoCjjvbdTlWPBWOi
+DoCkKvbdjvWnEBxX
+DoDLKvbdTkunaVoJ
+DoCkKvbdQZNAHTSK
+EObjjvbdqwPkbhyR
+EOcLKvbdNHDPlpUk
+DncLKvbdIHHZxxYH
+DncLKvbdtkxXAtAw
+DncLKvbdSCEFMJZL
+DnbjjvbdZQmEhldq
+DoCjjvbdNGbolotk
+DnbjjvbdnCKWwnmu
+DncLKvbdzHZMANEw
+DoDKjvbdmttykJrG
+DnbkKvbdlrZUzSci
+EPDKjvbdSKyGVHKs
+DoCjjvbdKVuGEFGi
+EPCjjvbdCIkBkIej
+DncLKvbdzHZMAMeX
+DnbkKvbdaSFbgsek
+DncLKvbdHDjujBij
+DoDKjvbdGZVUaDwb
+DnbjjvbdZnnJFEzK
+DoCkKvbdtcDUwWOo
+DoCkKvbdlBMoNALA
+EOcKjvbdNsUWHFUp
+DoDLKvbdVUNUFlVj
+DnbkKvbdhkdcnUcZ
+DncLKvbdLiBkqYAS
+EOcKjvbdzoPpdcLx
+EPDKjvbdijGIJmXr
+EOcKjvbdZisHofaf
+DoDLKvbdeOdrkUUS
+DoDLKvbdnPyxvKxb
+EPDKjvbdIxUBhMRQ
+DncLKvbdlhctRUqa
+DoDLKvbdmgFXlnGy
+DncKjvbdCJKbKiGK
+EOcLKvbddndrjtUS
+DnbjjvbdkDLjqGuH
+DncKjvbdmIcsptqa
+DoCkKvbdvvlAvBWV
+EObjjvbdjblLQftg
+DnbjjvbdCEQBWKMf
+DnbjjvbdBdPaVilf
+DoCkKvbdZxcjODLr
+DoCkKvbdEObjjwCd
+EPDKjvbdyTNhlqbH
+EPCkKvbdUMVoAvPJ
+DncKjvbdUxhUZjoO
+DncKjvbdqqtjmkAm
+DncKjvbdKfGICBRV
+EPCjjvbdVrOXaeLc
+EPDLKvbdwXLaWBWV
+EPCkKvbdjblKqHUg
+DnbjjvbduDCuWuoP
+EPDKjvbdNGbpMouL
+EObjjvbdBcoaVjNG
+DncLKvbdrWpMDIxq
+DncLKvbdhaoCdwRR
+DnbkKvbdFxtuBDwb
+DncKjvbdIjEAKPgE
+EOcLKvbduCbuXVoP
+DoDKjvbdZtIiZDsO
+DnbjjvbdEztRElCi
+DncLKvbdxmsHwsJD
+DnbjjvbdRbEElIxk
+DoDKjvbdWHwvXgYz
+EOcKjvbdQlwbYnUz
+EOcLKvbdVTltFkuj
+DncKjvbdliETptqa
+DnbkKvbddoErjtTr
+DoCkKvbdgPazvdXh
+DncKjvbdySmhlqag
+DoCjjvbdbPgHDkzd
+DoCkKvbdFWZPomKF
+EObjjvbdssSSxydc
+EObjjvbdzQnliJwA
+EObkKvbdKCjCpibx
+EPCjjvbdpyOhHREY
+DncLKvbddjJqutzn
+EObkKvbdBdQAujMf
+EPCkKvbdLAjflbXq
+DncLKvbdLBLGlaxR
+DoDLKvbdrpWPJbuf
+DoCjjvbdEKHiuxKA
+DoCjjvbdXsMAlsnx
+EObkKvbdptTgSSLU
+DoDKjvbdnHFXmNfy
+DncKjvbdCJKbKhej
+EPCjjvbdhlEdOUby
+EOcKjvbdKWUfEFGi
+DoDKjvbdZQmFJMdq
+EPCjjvbdiGjDZWKV
+EObkKvbdVAbQrprZ
+DoDKjvbdfekzNgHA
+DoDLKvbdnHEwlmgZ
+DncKjvbdwzHeexEr
+DoCjjvbdmpZxujyC
+EPDKjvbdwMvAMcdm
+DoCjjvbdfHkVrNqH
+EPCkKvbdYzbfRiuy
+EPCkKvbdZtIiZDrn
+DnbjjvbdjvWnDbYX
+DoCjjvbdOStVgEtp
+EPDLKvbdZMSETmlN
+EPDKjvbdBhjajhej
+EPCjjvbddoFTLUUS
+DnbkKvbdsQVoJcWG
+EPCjjvbdrEFJQNvB
+DoCjjvbdMpYRWOGs
+EOcLKvbdZirgpHBf
+EPDLKvbdyOTIXsJD
+DoCkKvbdKRZdnfNe
+DnbjjvbdbBWFFoow
+EPCjjvbdgFlZnHHA
+DnbkKvbdGGJrOIsq
+DoDLKvbduDCtwWPP
+EObjjvbdNddUIhjd
+DnbjjvbdxsNiMqag
+EObjjvbddeOrCWbj
+EObjjvbdPxmAGsRj
+EOcLKvbddeOrCXDK
+DoDLKvbddeOrBwCj
+DoCjjvbdVqnYCElD
+DnbkKvbdUyIUZjoO
+EObjjvbdeFOrCXDK
+EObkKvbdVrNxCFLc
+EObjjvbdTfzmkwWF
+EOcKjvbdIHGzZYYH
+EPDKjvbdtbbuXWPP
+DoCjjvbdZisIQHBf
+EObjjvbdbsCkUDjB
+EPCkKvbdVwJXudFH
+EPDKjvbdrouoKDVf
+EPCkKvbdFyVVBEYC
+DncLKvbdZnnIeEzK
+EPDLKvbdxVNFQxkn
+DoDKjvbdpxnggRDx
+DoDLKvbdqZOgfpcx
+DncKjvbdCIjakJGK
+EPCkKvbdCJLBjhej
+DoDLKvbdnPzYvKxb
+EOcKjvbdqTsgSRkU
+EOcLKvbdLBLGlaxR
+DoDLKvbdcbTMrAUN
+DncLKvbdzitoodSt
+DoDKjvbdJvUfDdfi
+EOcLKvbdHDjvKCJj
+EPCkKvbdeOeTKssr
+DnbkKvbdlYrqsYft
+DncLKvbdiiehKMxS
+DncKjvbdURQoVUhN
+DnbkKvbduMYXBUAw
+DoDLKvbdSPtHJfEX
+EObkKvbdqBJFAWgd
+EOcKjvbdFpATWgFy
+DoDLKvbdBsBDTfXS
+DncKjvbdjhHLfFmk
+DoCjjvbdCJKakIfK
+DnbkKvbddoFSjtTr
+EObkKvbdANIYsWzY
+EObjjvbdCTAbtFvr
+EObjjvbdrRtkOLAm
+DnbkKvbdkxsSTYgU
+DoCjjvbdnBiwXnmu
+EObjjvbdwtmEqYlO
+EPDKjvbdrylQTAhO
+DoDLKvbdtbbtvvOo
+EPCjjvbdZLrETmlN
+EPDLKvbdWXJYWDdg
+DoCkKvbdKQzFOfOF
+EPCjjvbdwzIFfXeS
+DncKjvbdRjyFuHLT
+EPDLKvbdULunaWPJ
+DncKjvbdUxhTykOn
+DnbkKvbdJcKCqKDY
+EPDLKvbdcbSmSATm
+DnbkKvbdegjurNqH
+EPDKjvbdZjTIQGbG
+EPCjjvbdiLddNuCy
+DoCjjvbdZQldiNEq
+EOcLKvbdakMGPODA
+EObjjvbdnHEwlmgZ
+EOcLKvbdBsAcUGXS
+EPCkKvbdiVZdwSUb
+EOcLKvbddCTNSAUN
+DnbkKvbdEXxMUUUM
+DncKjvbdYpldiMeR
+DoDKjvbdNddTiIjd
+DoDLKvbdZLqdUNlN
+EPCkKvbdiBncFWpq
+DncLKvbdiCPDEvqR
+EOcKjvbdUyHszKoO
+DncKjvbdhtydvqtb
+EPCjjvbdpxoHgQcx
+EObkKvbdkWWnDaxX
+DnbjjvbdBhkBkJFj
+DoCkKvbdRacdkhyL
+EOcLKvbdZjTHpHCG
+EPCkKvbdMowqWOGs
+DncLKvbdegjurNpg
+EObjjvbdfMfWfmKL
+EPDLKvbdZirgpGaf
+DoDLKvbdiZuFlQnG
+DncLKvbdFxuVAcxC
+EObkKvbdZisHofaf
+EOcKjvbdJSyBSmYM
+EPDLKvbdVYgtZkPO
+EOcKjvbdRbEFMJYk
+DncLKvbdrEFIonWB
+DncKjvbdKDJbqJcY
+EOcLKvbdhfjCxuiu
+EObjjvbdLLAhWAKZ
+DoCkKvbdRXNcblID
+DoDLKvbdcbSmSATm
+EOcLKvbdwWlAvAuu
+EObkKvbdiBnbdvpq
+DoCkKvbdNQXpumgT
+DncLKvbdkVwOECYX
+DnbkKvbdfoazwDxI
+DoDLKvbdbBWFFpPw
+DoDLKvbdvBDxsPEh
+EPDKjvbdJqZdoFme
+DoDLKvbdIryArmXl
+EPCjjvbdANIZSwZx
+EPCkKvbdVhYVxGxz
+DncKjvbdLAjgNCYR
+DncKjvbdxxIjCQZk
+DncKjvbdbiNKKewY
+EPCjjvbdlrZVZsEJ
+EPDKjvbdIryAsMwl
+DoCkKvbdtAHRIAAr
+EPDKjvbdJmAEZfuB
+EPCkKvbdZjSgogBf
+DoDLKvbdOXnuzcnU
+DnbkKvbdehKvRnQg
+EObjjvbdZyDimbkr
+DoDKjvbdmajWwoOV
+EOcKjvbdkMalZeHP
+EOcKjvbdIjEAJpHE
+EPCkKvbdDihKVxKA
+DncKjvbdNddUIiKd
+EObjjvbdqdFIpOWB
+DoCkKvbdxnShXsJD
+DoDLKvbdjmBkzEfo
+EOcLKvbdatagYLTh
+DoCjjvbdVhYVxHYz
+DnbjjvbdJbjDRKDY
+EPCjjvbdLBLHNCYR
+DnbjjvbdnGeYNOGy
+EOcLKvbdUsmTekvK
+EPCjjvbdtkxXBTaX
+EPCjjvbdzoPqFCkx
+DncKjvbdCIjbKhej
+DncKjvbdZLqdTmkm
+DoDKjvbdsPunicVf
+EOcKjvbdmgFXmNgZ
+EObkKvbdiMFENuCy
+DoDKjvbdhanbeXRR
+EObkKvbdACqwiyhp
+DncKjvbdZisIQHBf
+EPCjjvbdgQBzwDwh
+DnbjjvbdyYJJaoyk
+DoDKjvbdxUldqZMO
+EObkKvbdkClLQgVH
+EPCjjvbdZQldiMeR
+EPDLKvbdZyEKOClS
+EPDLKvbdcIlikFvx
+DoDKjvbdrzMQTBHn
+DnbjjvbdVYgtZkPO
+DoDLKvbdHEKuiajK
+EPCkKvbdczZQXxqC
+DoDKjvbdrDdiQNua
+DncLKvbdcImKLGWx
+DoCjjvbdVYgtZkPO
+EPDLKvbdZnnIeFZj
+EPDKjvbdMIakqYAS
+DoCkKvbdSLYfUgLT
+EPDLKvbdiCObdvpq
+DnbjjvbdRpUHKFcw
+DoDLKvbdIHHZyYXg
+EPCjjvbdypoMhiwA
+DnbkKvbdCEPaVjMf
+DnbkKvbderAvzlDP
+DnbkKvbdZQleImFR
+EOcKjvbdKRZdneme
+DoDLKvbdiBnbeXQq
+DncLKvbdEPDKjvcE
+EOcLKvbdauCGwkTh
+DncLKvbdEvZQPmJe
+EPCkKvbdURQnuVIN
+DncLKvbdegjvSOQg
+EPCjjvbdKaKgMawq
+DnbkKvbdRzKISbvA
+DncLKvbdiLdcnUcZ
+EPDLKvbdkDMKpfuH
+DoDLKvbdRbDdkhyL
+DnbjjvbdDwxMUUTl
+DnbkKvbdrpWPKCuf
+DnbkKvbdNVSqjmAX
+DoDKjvbdRbDeMIxk
+EOcLKvbdcyxpXyRC
+DncLKvbdRMwbYnUz
+EObjjvbdqlzJxlHi
+DoCkKvbdJYUCIMQp
+DncLKvbdLZQjSzuG
+EOcKjvbdxVNEqYkn
+DnbkKvbdZoOIeFZj
+DoCjjvbdBraCtFwS
+EOcLKvbdliDsqVSB
+EPCkKvbdeATqNXif
+DncLKvbdkMbLydgP
+EObjjvbdZxdJmbkr
+DoCjjvbdraellHLZ
+EObkKvbduDCuWvPP
+DoCkKvbdpstGrSLU
+DoCjjvbdLGFgbBQu
+DnbkKvbdhtzFWquC
+EObjjvbdoAKztHdO
+EPDLKvbdatafxKtI
+EPDKjvbdkWXNcaww
+DoCkKvbdwkXEHzzG
+EObkKvbdmgEwmNgZ
+DncKjvbdBiLCLJFj
+DoCjjvbdeOdsKssr
+EOcLKvbdfILWSORH
+EObkKvbdCDpAujMf
+EPDKjvbdKDKDQibx
+DoDKjvbdVUMtGLuj
+EObkKvbdrXQMCiYq
+DncKjvbdePEsLTtS
+DncLKvbdDxYLtUTl
+EPCkKvbdGYuVBEYC
+DncLKvbdNeEUIiKd
+EPCkKvbdpxoIHRDx
+EObjjvbdFkEsDHlu
+EObjjvbdssSSxzFD
+DoCkKvbdUtNTfMVj
+DnbjjvbdJcKDRKDY
+DncKjvbdqiAKEmOe
+DoDKjvbdtlXwAtBX
+DnbkKvbdxmsIYTIc
+EObkKvbdLrXMzUpz
+DoCjjvbdkxsSSxft
+DncKjvbdQlwaxnUz
+EObkKvbdjhGlFfNk
+EPCkKvbdxsNhmRag
+DoDLKvbdMfcPmQUk
+DoDKjvbdQvnEDLhD
+EObjjvbdVgxVxHYz
+DoDLKvbdlrYtyrdJ
+DoCjjvbdezvYeIsw
+DncLKvbdNddTiIjd
+EPDLKvbdGGJrNiUR
+EPDLKvbdRzJhTDWA
+EPCjjvbdvvkaWBVu
+EOcKjvbdRXNdCkgc
+EOcKjvbdQZNAHTSK
+EPCkKvbdsCGNLfkZ
+EOcLKvbdDwwktTsl
+EOcLKvbdqlzJyLgi
+EOcLKvbdxsNiMqag
+EOcLKvbdhzVFlROG
+EOcKjvbdEztRFMCi
+DnbkKvbdqiAJdmPF
+EPDLKvbdjcMKqGtg
+EObkKvbdTlWOaWOi
+EPDLKvbdURRPUuHm
+DoDKjvbdelfWgNKL
+EOcLKvbdGAnqZJzm
+EObjjvbdGZUuAdXb
+DoDLKvbduLwwAtAw
+DoCjjvbdZjTIQGbG
+EPCjjvbdRNXbYnUz
+EPDLKvbdiLeENtby
+EObjjvbdMowpunGs
+EOcKjvbdbiNJjevx
+DoDKjvbdEYYLstTl
+DoDLKvbdqUTfrRjt
+DoDKjvbdbsCkUEJa
+DoDKjvbdXsMBNUPY
+EPCjjvbdRNXaxnUz
+DoDLKvbdNGcQNQUk
+DnbjjvbdEARiMywX
+EPDKjvbdSKxfUfkT
+DncKjvbdhtyeXRtb
+DncKjvbdZLqcsnLm
+EObkKvbdZnmheEzK
+EObjjvbdtbcUvuno
+DnbjjvbdrzMQTBHn
+DnbjjvbdDwwktTsl
+EPDKjvbdkxsSTYgU
+DoDKjvbdIryArlxM
+DoDKjvbdnBivxOnV
+DoDKjvbdeATplwif
+EOcLKvbdKeegbApu
+EPCjjvbdMgDQMotk
+DoCjjvbduCbtwWOo
+DnbkKvbdyNsHwrhc
+DnbkKvbdtvNxJpsA
+EOcLKvbdqAheAWgd
+DoCkKvbdURQoUtgm
+EOcKjvbdqceIpOWB
+DoCkKvbdVwIwudFH
+DnbkKvbdbLMFnmcA
+EOcLKvbdZjTHpHBf
+EOcKjvbdRXNdCkhD
+EPDLKvbdiHJcZViu
+DoCjjvbdxxIjCPzL
+DnbkKvbdBcpBWJmG
+EPCkKvbdZyEKOCkr
+EPDKjvbdOTUWHFVQ
+DoCjjvbdIGgZxwwg
+EPDLKvbdFjeSbhMu
+EPDLKvbdhgKCxvJu
+EOcLKvbdNsUWGdtp
+EPDKjvbduVnXipsA
+DncLKvbdGYuVBEXb
+EPDLKvbdZtIhyESn
+DoDKjvbdZxdJmcLr
+DoCjjvbdUsltGLuj
+DoDKjvbdDoDLKvbd
+DncLKvbdrDdhpNvB
+EPDLKvbdKCjDRJbx
+DoDLKvbdxLWdHzyf
+EObkKvbdrzMQTAhO
+EOcLKvbdOFDtJJKd
+EPCkKvbdrSVKmjaN
+EOcKjvbdWWiYVdEg
+EOcKjvbdWWhwvDdg
+DncKjvbdpstHRqjt
+EPCkKvbdKWVFceGi
+DoCkKvbdZjShPfbG
+DoCkKvbdSxKlNzkY
+EPDLKvbdIwtCHkqQ
+EOcKjvbdsCGNLgLZ
+DncKjvbdzaAOfgCM
+DoDLKvbdxmrhYSiD
+DncLKvbdfMfWgMjL
+EPDKjvbdqFdEsuaI
+EOcLKvbdiLeDnUcZ
+DoCjjvbdKVuFceHJ
+DoCjjvbdfekzNgHA
+EOcKjvbdOFEThiLE
+EPDLKvbdqceJPnWB
+DoDLKvbduCbtwWOo
+DncKjvbdTqROtuIN
+DncKjvbdpedFUWBI
+DoDLKvbdrEFJQNua
+DoDLKvbdyXhjCPyk
+EPCkKvbdJYUBhLqQ
+EPCkKvbdtcCuXVno
+DoDLKvbdZLrEUOLm
+EPCkKvbdpstGrRjt
+DncLKvbddePSCXCj
+EObkKvbdauCHXjsh
+DoDLKvbdkHfkefNk
+EObjjvbdMRwMzUpz
+EObjjvbdaMkCTVNH
+DoCkKvbdGGJrNhtR
+EPDLKvbdvBDxrneI
+EPDLKvbdIHHZxwxH
+EOcLKvbdrJAJdmPF
+EOcKjvbdGZUuAdXb
+EOcLKvbdbUbHYLUI
+DnbjjvbdJzofYEAN
+EPDKjvbdFxtuBDxC
+DnbkKvbdQvnDbkgc
+EPDKjvbdJmADzGta
+DoDKjvbdZRMdhleR
+DnbkKvbdsrqsZZeD
+EObkKvbdrovPJbuf
+EPCjjvbddeOqbXCj
+EObjjvbdtcDVXVoP
+DncKjvbdMfbpNQVL
+DoCkKvbdhbPCeXQq
+DoCkKvbdNHComQVL
+EObjjvbdvBDxroFI
+EPCjjvbdnBivwoNu
+EObjjvbdbhljKewY
+EPDKjvbdZyDimcMS
+EObkKvbdWSOXbElD
+EOcKjvbdTfznMXVe
+EPCjjvbdZtJJYcsO
+DoCjjvbdRjxfVHLT
+DoCkKvbdVTltGMVj
+DncKjvbdYfwEAOri
+DncKjvbdYkrEUOMN
+EObkKvbdqGEEsuaI
+DncLKvbdjJfHimXr
+EPDLKvbddndsLUTr
+DnbkKvbdqBJFAWhE
+EPDLKvbdEOcKjwDE
+EPCkKvbdtvOYJqTA
+DncLKvbdkyTRsZHU
+DoCjjvbdTppnuVIN
+DncLKvbdwyhFeweS
+DncKjvbdsBelkgKy
+DoCjjvbdKDKCqJcY
+DoCjjvbdkClKqHVH
+DoCjjvbdcTCjtDia
+EPDLKvbdUVkpJtAq
+EPDLKvbdRyjITCvA
+DnbjjvbdJuuFcdgJ
+DoDKjvbdrJAJdmOe
+DncKjvbdJcJbqKCx
+DoDLKvbdJcJbqJcY
+DoDKjvbdeEoSCXDK
+DoDLKvbdSwjlNzkY
+EObjjvbdzitopDrt
+DoCkKvbdKWVGEEgJ
+DncKjvbdpssfqrKt
+EOcLKvbdUMWPBVoJ
+DncKjvbdyzdmrIIh
+EPCjjvbdxUldqZLn
+DoDLKvbdySnImRbH
+DoCjjvbdGdKvJaij
+DoCkKvbdxZgeewdr
+EObkKvbdiLddNuDZ
+DnbjjvbdSCDdkiZL
+DncKjvbdznpREcMY
+EOcLKvbdaRebhTfL
+DnbjjvbdZQldiMdq
+EPCjjvbdbrbjtEKB
+EOcKjvbdEARiMzXX
+DoDLKvbdXrkaNTnx
+EPCkKvbdQZNAHTRj
+DoDLKvbdEzspeLcJ
+EPCjjvbduVnYKRTA
+EObjjvbdJXtBhMQp
+EPDKjvbdeOdrjssr
+EPCjjvbdLqwMytpz
+EPDKjvbdUMVoBVoJ
+DncKjvbdRpUGifDw
+EPDLKvbdZyDinDLr
+DnbkKvbdNrsufeVQ
+EPCkKvbdZMSDtNlN
+EPCkKvbdySnJNSCH
+EPCjjvbdfMevfljL
+DncLKvbdXsMBNTnx
+DnbkKvbdpxoHfqDx
+DncLKvbdUQpntthN
+DncKjvbdIsZArlwl
+DoDLKvbdZGwEAOsJ
+EOcKjvbdVvhwvDdg
+EOcLKvbduWNxJqTA
+EPCjjvbdHEKvJaij
+DoDKjvbdrpWOjCuf
+DncLKvbdrpWOjDVf
+DoCjjvbdIHGzYwwg
+DoDLKvbdpxoIGqEY
+DoDLKvbdJcJbqKDY
+DoCjjvbdRWmdClHc
+EPCjjvbdFWYopNJe
+DncKjvbdmfdwlmfy
+DoCkKvbdxUleQxlO
+EObjjvbdnGdxMnGy
+EPCjjvbdvvlAvBVu
+DncLKvbddndsKssr
+EObjjvbdZMRcsnLm
+EOcKjvbdFxttaEXb
+DncKjvbdVUNTfMVj
+EOcLKvbdNrtWHFUp
+DoDKjvbdwuMdqYlO
+EPDLKvbdrXPkbhxq
+EObjjvbdrEFIpNua
+EObjjvbdziuQQDrt
+EOcLKvbdqYoIGpcx
+DnbjjvbdsQVoJcVf
+EObkKvbdkDMKpgUg
+EObjjvbdvBDyTPFI
+DncKjvbduCbuWvOo
+EPCjjvbdkVvnECYX
+DncLKvbdZGvdAOri
+DoCkKvbdrXPlDJZR
+EOcLKvbduCcVWvOo
+DoDKjvbdCEPaWJlf
+EPDKjvbddoErjssr
+DncKjvbdACqxKZiQ
+EPCjjvbdUVlPitAq
+EPDKjvbdjJfHjMxS
+EObkKvbdAMhYsWzY
+DoDKjvbdnBivxOmu
+EOcLKvbdbiNKKfXY
+EPDKjvbdYqMeIleR
+EObkKvbdJmADygUa
+EObjjvbdEPDLLWcE
+EPCjjvbdrXPkcIxq
+EOcLKvbdliDtQtqa
+DoCjjvbdmoyxujyC
+EPDLKvbddoFTLTsr
+EOcLKvbdCWzdJEpW
+DnbjjvbdrEEhpOWB
+DoDKjvbdZLrDtNkm
+EOcLKvbdLFfHbAqV
+EOcKjvbdmttzLKSG
+EOcLKvbdmbJvwoOV
+EOcKjvbdUaCQrqSZ
+DnbjjvbdmgExMnGy
+EPDKjvbddndrkUUS
+EObkKvbdDwwkstTl
+DoCkKvbdcJMjLFwY
+DnbjjvbdaNLBruMg
+DoDLKvbdQYmAHTRj
+DnbkKvbdsQWOicWG
+EObkKvbdMRwMzUpz
+DoDLKvbdZshiZDrn
+EPDLKvbdnPzYujxb
+EOcKjvbdCEQAujMf
+EPDLKvbdKefHbApu
+DoDLKvbdYpldiNFR
+DoCkKvbdFWZQQNJe
+DncLKvbdznpQeCkx
+EOcKjvbdnQZxvKxb
+DoCkKvbdVBBprpqy
+DnbkKvbdZirhPfaf
+DnbkKvbdegjvSNqH
+EOcLKvbdqdEiPnWB
+EObjjvbdBhkCKiGK
+EObjjvbdxZgfGYFS
+DnbjjvbdNQYQumgT
+EPCjjvbdxsNhlrBg
+DoCkKvbdQdDApRDr
+DoCkKvbdxxIiaoyk
+EPDKjvbdFeirNhtR
+DoCjjvbdegjvSOQg
+EObkKvbdqcdiQNvB
+DncLKvbdiMEdNtcZ
+DncLKvbdTqRPUthN
+EPCkKvbdwygeexFS
+DoDKjvbdyTOJMrBg
+DncLKvbdeEoRavbj
+EPCjjvbdtbcUvvOo
+EObjjvbdKCicRJcY
+EObjjvbdZyEKODMS
+DnbjjvbdmJDtQtrB
+DncLKvbdEARhlyvw
+DnbjjvbdIxTbILqQ
+EOcLKvbdwygefYFS
+DoCjjvbdznoqFCkx
+DoCjjvbdRpUGjGDw
+DncKjvbdhzVGMQnG
+EPCjjvbdhkeDnVCy
+EObkKvbdOEdUIiKd
+DncKjvbdrDeIomua
+DncLKvbdiHJbxuiu
+EPDKjvbddxZstRez
+EPDLKvbdmSYuZrdJ
+EObkKvbdVUNUFkvK
+EPDLKvbdNeEUJIjd
+DoCkKvbdiMEdNuCy
+DoDLKvbdRDcApQcr
+EPCjjvbdTlVoBVoJ
+EObjjvbdLBKgNBwq
+EPCkKvbdsCFllHKy
+EObjjvbdnVUzLJqf
+DoDKjvbdqrVLNkBN
+DoCkKvbdqFcdtWBI
+DncLKvbdbVCGxLTh
+EOcLKvbdeFPSCXCj
+EOcLKvbdRpTgKFdX
+EObjjvbdznpQeDLx
+EOcKjvbdjvXNcaxX
+DnbjjvbdHDkWJbJj
+DncKjvbdhkeENuDZ
+DnbkKvbdnUtyjjSG
+DoDKjvbdSQUHJfDw
+DncKjvbdbUbHYLUI
+EOcLKvbdNsTvGduQ
+EPDLKvbdSZigsCvA
+DncKjvbdMfcPlpUk
+DoDLKvbdxrnIlrBg
+DncKjvbdiLdcnVCy
+EPCjjvbdmfeYNOHZ
+DoCkKvbdjvWmcaxX
+DoDKjvbdbUbHXkUI
+DncKjvbdBhkBjiFj
+DoDLKvbdNHColpVL
+EOcKjvbdrykosAhO
+DncLKvbdqGDeUVaI
+DnbkKvbdhgJcZViu
+DnbjjvbduLxXAtBX
+EPCjjvbdYpleJNFR
+EPDLKvbdQvmdClHc
+DnbjjvbdJYTbIMRQ
+DncLKvbdznpRFDMY
+EOcLKvbdZnmiFEyj
+DnbkKvbdrRuLOLAm
+EObkKvbdhkeEOUby
+DncLKvbdYlSEUOLm
+DoCjjvbdhkdcmtby
+DncLKvbdddnrCXDK
+DoDLKvbdKaLHNCYR
+EOcKjvbdcyxpYZQb
+EPDLKvbdACqwjZhp
+DoCkKvbdBsBDTevr
+EObkKvbdeKJqvUzn
+EObkKvbdcImJkGWx
+DncLKvbdYSlAltOx
+DncLKvbdlrYtyrdJ
+EObkKvbdKxqJrztf
+EOcKjvbdsQWPJcVf
+DoDKjvbdkySqrxgU
+EObjjvbdeEoRbXCj
+EOcKjvbdHDkVjBij
+DoDLKvbdCTBCsfXS
+DoCjjvbdKCjDQibx
+DoCjjvbdlhdTqUrB
+DoDKjvbdTulQKTaR
+DoCkKvbdRjxetfkT
+EPCjjvbdEuyQQNKF
+EPCjjvbdDoDKkXDE
+DoCjjvbdsQWPJbuf
+DoDKjvbdhuZdvqtb
+EPDLKvbdiHKCyWJu
+EPDLKvbdLFegaaQu
+DoCjjvbdqZPHgRDx
+DncKjvbdUWMPjUAq
+DoDLKvbdTYKkmzjx
+DoDKjvbdegjvSOQg
+DnbkKvbdUtNTekvK
+EObkKvbdNsTvGeVQ
+DoDLKvbdfNFvgMjL
+EOcLKvbdZQmEiNEq
+EPDKjvbdBraDTfWr
+EPDKjvbdNGcQNQVL
+EPDLKvbdZyEKODMS
+EOcKjvbdBvzdIdpW
+EPCjjvbdACqwiyiQ
+DoCjjvbddePRawCj
+EPDKjvbdWWiXucdg
+DoDKjvbdWexzUAPT
+DnbjjvbdwXMBWBWV
+EOcLKvbdUyHszLOn
+EPCkKvbdOYOuzcnU
+EPCkKvbdhancEwQq
+DnbkKvbdjggLefOL
+EPCkKvbdFjdsDIMu
+DoDKjvbdrSUjmkBN
+DoDLKvbdZjTIQGaf
+DoDKjvbdMgDPmPtk
+EPDLKvbdWRmwbFMD
+DoCkKvbdzROmJKXA
+DnbkKvbdrDdiQNvB
+DnbjjvbduDCtwVoP
+EOcLKvbdCIjbLJFj
+EPDKjvbdXrkaMsnx
+EPDKjvbdVhXvXfxz
+DncKjvbdhbPDEwRR
+DoCkKvbdpxoHgQcx
+DoCkKvbduMXwBUBX
+EObjjvbdNeEThhjd
+DoCjjvbdirzhrkJz
+DoDLKvbdaMkCTUlg
+DncLKvbdWRnYBeLc
+DnbjjvbdGBPRZJzm
+EOcLKvbdeOeSjstS
+DoDLKvbdmIctRVSB
+DoCjjvbdZxdJnDMS
+DoCkKvbdRpTgKFcw
+DncLKvbdTukojTaR
+DnbjjvbdKRZdoFme
+DnbkKvbdURQoVUhN
+DoDLKvbdyYJKBozL
+EObkKvbdfNFwHMjL
+DoDLKvbdZisIQHBf
+EObkKvbdqFcdsuaI
+DncLKvbdzoPqFDLx
+DoDKjvbdSKxeuHLT
+EPDKjvbdsBemLfjy
+DoCjjvbdJbjCqJcY
+DoCjjvbdNPxRVnGs
+DncLKvbdGcjvJbKK
+EOcKjvbdrWpMDIxq
+EOcLKvbdQdDApQcr
+DoDKjvbdZMRdTnLm
+EOcLKvbddxZssrFz
+EObjjvbdUtNTfLuj
+EPCjjvbdLLBIWAKZ
+DoCkKvbdgFlZmfgA
+EPCjjvbdUVkoitAq
+DoDKjvbdDncKjvcE
+DoDLKvbdRpUHJfEX
+EPDKjvbdLqvlzVQz
+EPDKjvbdZMRdUOLm
+EOcLKvbdCJLBkIfK
+DncKjvbdaSFbhUFk
+EPDLKvbdZoNheEzK
+DncKjvbdUVlPjUAq
+DnbkKvbdKNADyfuB
+EObkKvbdZdwfzghb
+EPDLKvbdZtIhxcrn
+EObkKvbdGckViajK
+DncLKvbdFfJqmiUR
+DncKjvbdKWUfDdgJ
+DoDKjvbdMtrqjmAX
+EOcLKvbdsQWPKDVf
+DoCjjvbdwtleRZMO
+EObjjvbduaDxsPEh
+EPDLKvbdKxqJrzuG
+EOcKjvbdVAaprprZ
+EObjjvbdEuxopMjF
+DnbjjvbdyOTHwriD
+EPDLKvbdrpVnibvG
+EPDKjvbdkWWnDaww
+DncLKvbdrXPkbiYq
+DoDLKvbddxZssqez
+EOcLKvbdHDkWJbJj
+DncLKvbdEPCkLWcE
+DnbkKvbdEXwkstTl
+EObjjvbdqiAKEmOe
+DncLKvbdjAQGaQGj
+EPCjjvbdNeDtJJKd
+EPCjjvbdvwMBWBVu
+EPDKjvbdFejSOItR
+EOcLKvbdNPwqWOHT
+EPDKjvbdbsCjscia
+EObkKvbdyYIiaoyk
+DoDKjvbdLZQirzuG
+EObjjvbdSLZGVGjs
+DoCjjvbdAMgxsWzY
+DoDLKvbdEObjjwCd
+DnbkKvbdsPvOicWG
+EPCkKvbdrJAKElne
+EPCkKvbdauCGwjsh
+DncLKvbdegkWRnQg
+EPCkKvbdYpmEiNFR
+DoDKjvbduaDxsPFI
+DoCjjvbdcyxoxYqC
+DoCkKvbdkMakzFHP
+DnbjjvbdJbibqJbx
+DnbkKvbdWWhxWDeH
+DoCjjvbdssRsYzFD
+DoDKjvbdpyPIHRDx
+DncLKvbdwNWANDeN
+DoDKjvbdJYUBglRQ
+EObkKvbdXnRAYVVt
+DoCjjvbdUWLpKTaR
+DoDKjvbdTqROttgm
+EPCkKvbdVqnXaeMD
+EObjjvbdADRwiyiQ
+DoDKjvbdlrZUyrci
+EPDKjvbdvAdZSndh
+DoCkKvbdzoQQeDLx
+DnbkKvbdSQUGjFdX
+EOcLKvbdqBJFAXIE
+EObkKvbdSCEFLiZL
+DnbjjvbdzoQQdcMY
+DnbkKvbdpxngfqEY
+DncLKvbdbsDLUEKB
+DoCjjvbdXrlBMtOx
+EObjjvbdKCjDQicY
+DncLKvbdLrWlzUpz
+EObjjvbdaaWEfQQX
+EObjjvbdtlYWaTaX
+DnbkKvbdMowpunGs
+EObkKvbdSLYeuHKs
+EObkKvbdTAEhhCOd
+EPCkKvbdmSYtyrci
+DncLKvbdYkqcsnLm
+DoDLKvbdrylQTAgn
+DncLKvbdJXtCIMRQ
+EObkKvbdSBdElIyL
+DoDLKvbdwygefYFS
+DncKjvbdyXhibPzL
+EPCjjvbduaDxsPFI
+EObjjvbdZoNiFEzK
+EPCjjvbdkNBkyeHP
+EPCkKvbdWRnXadlD
+DncLKvbdRWmdDLhD
+DnbkKvbdmSYtzTDi
+EOcKjvbdkVwODbXw
+DncLKvbdQlxCZOUz
+EObjjvbdbhlijfXY
+EOcLKvbdXmqAXtut
+EOcLKvbdmbKXXnnV
+DoDKjvbdkHgMFfOL
+EPCkKvbdfekymgHA
+DoCjjvbdeKKRvUzn
+DoDKjvbdkHfkefNk
+DoCjjvbdyqPMiKXA
+DnbjjvbdUQqOtuIN
+EOcKjvbdEPCkKwDE
+DoDLKvbdZRNFIleR
+DnbjjvbdRacdlJZL
+EOcLKvbdTukoitAq
+EOcLKvbdZLrDtOMN
+EOcLKvbdgKfzcGAE
+EObjjvbdzjVQQESt
+EOcLKvbdcIlijevx
+EOcKjvbdGKdsDHmV
+DncLKvbdKkBHvAJy
+EOcKjvbdZMRctOLm
+EPCkKvbdADRxKZiQ
+EObjjvbdDwxLsssl
+EPDLKvbdUxgszLPO
+EPCkKvbdSQTfiedX
+EPCjjvbdNeEUJIkE
+DoDLKvbdpyPHfqDx
+DnbkKvbdyOShXsJD
+DncLKvbdLiBkpxAS
+DoDKjvbdaaWEepQX
+DoCjjvbdWSOYBeLc
+EOcKjvbdLFegbAqV
+EPDKjvbdffLzOGgA
+EObkKvbdFkErbglu
+DncLKvbdiZuFlROG
+DncKjvbdegkWRnQg
+DoDLKvbdQdDApRDr
+EOcLKvbdeYZtURez
+EObjjvbdrXQLcIxq
+DoDLKvbdxZhGGXeS
+DoDLKvbdGGKSOItR
+EObjjvbdjhHLfFnL
+EOcLKvbdUQpoUuHm
+DoCkKvbdXrlBNUPY
+DoDKjvbdJXtCIMRQ
+DnbkKvbdZMSDsnLm
+DncKjvbdCTBDUGWr
+DncKjvbdbhlikGXY
+DoDKjvbdXmqAYVWU
+DnbjjvbdliDsqVRa
+DnbkKvbdmajXYOnV
+EObjjvbdJpyePGNe
+DnbkKvbdCTAcUGXS
+DoDLKvbdCDpBVjNG
+EOcLKvbdxwhiaoyk
+DoDKjvbdxVNFQyMO
+EPCkKvbdVvhwvEEg
+DnbkKvbdFWYoomJe
+EOcKjvbdlrZUysEJ
+EPDKjvbdqquKnKaN
+DoCkKvbdTkunaVoJ
+EOcLKvbdfHkVrOQg
+EPDLKvbdiUzFWrUb
+DoDLKvbdtAGqIABS
+DoCkKvbdZRMdhmEq
+DnbkKvbdNsUVfeVQ
+EPDLKvbdqwPkbiZR
+DoCkKvbdNUsSLNAX
+DncKjvbdmpZxvKyC
+EPCkKvbdLYqKSztf
+EPDKjvbdZyEKODMS
+EPDKjvbdNGbomPuL
+DncKjvbdZMSDtNlN
+EPCjjvbdTXjkmzjx
+EObkKvbdBdQAvKMf
+EOcLKvbdkySrTYgU
+DnbkKvbdZoOIddzK
+DoCkKvbdZMSDsmkm
+EPCkKvbdCWzdIdpW
+DncLKvbdBvzdIdov
+DoCjjvbdaRfDHtFk
+DnbkKvbdWeyZtAOs
+DoDLKvbdnCJwYPOV
+DoCjjvbdEYYLstUM
+EOcLKvbdwtldqZMO
+EPCjjvbdFVxoomKF
+EObkKvbdyqPMhiwA
+DoDLKvbdkxrrSxgU
+DoCjjvbdeATqNYKG
+DncLKvbdJKEAJpHE
+DoCkKvbddndsLUTr
+DnbjjvbdqFceUWBI
+DoDLKvbdhkddOUby
+DncKjvbdGKdrcIMu
+EPCkKvbdelevflik
+DoDKjvbdhaoDFWqR
+DoCjjvbdYlSDsmlN
+EPCjjvbdiZuGLpmf
+EObkKvbdnCJvxPNu
+DnbkKvbdhzUelRNf
+DnbkKvbdZeYGzgiC
+DoCkKvbdDnbkLWbd
+DnbkKvbdnHFYMmfy
+DoCjjvbdePEsKtTr
+DnbjjvbdZQmEhleR
+DnbkKvbdTkunaVoJ
+DnbkKvbdFWZPpMjF
+DoDKjvbdSwkMNzkY
+EOcLKvbdwtldpyMO
+EOcKjvbdhkdcmtby
+DoCjjvbdNQXqWNfs
+EPDKjvbdzjUpPdTU
+DnbjjvbdqceJPnWB
+EPDKjvbdUyHsyjoO
+EPCkKvbdZshhxcsO
+DncKjvbdqAiFAWgd
+EObkKvbdgFkzOGgA
+DncKjvbdmgFYNNgZ
+DoDLKvbdDjHjWYKA
+DnbjjvbdJbicRKCx
+DnbkKvbdfNFwHMjL
+EPCkKvbdWSNxBdlD
+EPDLKvbdCJKbLJFj
+EPDKjvbdEOcKkXDE
+EPCkKvbdVrOYCElD
+DnbjjvbdCIkBjhej
+DoDLKvbddoFTKstS
+DnbjjvbduDDVXVoP
+EObkKvbdxwiKCPzL
+DnbkKvbdZGvdAPTJ
+DoDLKvbdBdPaVjNG
+EOcKjvbdIHGzYwxH
+DoCjjvbdGFjSNhsq
+DnbjjvbdlYsSSxgU
+EPCjjvbdqrUjnKaN
+EOcLKvbdtvOXipsA
+DoDLKvbdrounjCuf
+DoCkKvbdFVyPomKF
+EOcKjvbdNHCpNPtk
+EPDLKvbdWeyZtAPT
+EPDKjvbdjcLkQfuH
+EOcLKvbdzHZMAMeX
+DoCjjvbdUMWPBVni
+EOcKjvbdHELWKBjK
+DoDKjvbdMgComQUk
+DnbkKvbdiGjDZWJu
+DncKjvbdyqOmJKXA
+DoDKjvbdVZITyjoO
+DoCjjvbdzQoNJJwA
+EOcLKvbdGAoQxizm
+DoDKjvbdatagYKsh
+EPDKjvbdSBceMJYk
+DoDLKvbdMpYQvOHT
+DncKjvbdiCOcFWpq
+DoCjjvbdUGznLvvF
+EPDLKvbdANIYrvyx
+EPCjjvbdIwtCHkpp
+EObkKvbdJSyBSmYM
+EObkKvbdwuMdqYlO
+EObjjvbdmuVZkKSG
+DncLKvbdSPsfjFdX
+DoDLKvbdSQUHJedX
+DoDKjvbdiVZdwSUb
+EPDLKvbdRjxfVGkT
+EObjjvbdmpZyVkZC
+DncLKvbdhzUelROG
+EPCkKvbdxVMeRZMO
+EOcKjvbdxxIiapZk
+EOcKjvbdJSyBTNYM
+EPDKjvbdMSXMzUpz
+EPCkKvbdNddThhjd
+DoDKjvbdznpREcLx
+DncLKvbdqYoHgREY
+DnbjjvbdiCPCdvqR
+DoCjjvbdsQVoKDVf
+DoCjjvbdqFcdtWBI
+EPCkKvbdFkFTDIMu
+DnbkKvbdQvmdCkgc
+DnbjjvbduCbtwWOo
+DoCjjvbdaNKaruNH
+EOcLKvbdrpWPKCvG
+DoCjjvbdEKHiuwjA
+DoDLKvbdsBfMlHKy
+EObjjvbduCcVWuno
+DoCkKvbdNddUIiLE
+DoDLKvbdVrNwbElD
+EPCkKvbdTqQoUuHm
+DoCjjvbdcJMikFvx
+EOcKjvbdijGIJmYS
+DncKjvbdtvNwipsA
+EPDKjvbdGQASwGey
+DoCkKvbdmJEUQtqa
+DncKjvbdpxnggQcx
+EOcLKvbdDnbjjwDE
+DnbjjvbdxVMdqZLn
+EPCkKvbdTkvPAvOi
+DnbkKvbddijRvUzn
+DnbjjvbdJuuFceGi
+DoDLKvbdeATplxJf
+EObjjvbdiLeDmuDZ
+EObkKvbdzHYlANFX
+EObkKvbdSBdFLiYk
+DncLKvbdMgCpNPuL
+DncLKvbdNsTufeVQ
+EPCjjvbdUQqOtuIN
+EPCkKvbdKDJcQicY
+DnbkKvbdsCFmLfjy
+DnbjjvbdNdctJIjd
+DoDLKvbdzjUpPdSt
+EPDLKvbdMoxRVmgT
+EOcKjvbdbsCjscia
+DoCjjvbdrDeIpOWB
+EPDKjvbdOTUVgFVQ
+EOcLKvbduWNwipsA
+DoDKjvbdJcJcRKCx
+DncKjvbdGZUtaDwb
+EPCjjvbdZtJJYdSn
+DoDLKvbdtcDVWuoP
+EObjjvbdKaLGmCXq
+DoCjjvbddZxoxYpb
+DnbkKvbdWRmxCEkc
+EOcLKvbdNrsufduQ
+DoDLKvbdqlzJxlIJ
+DoCkKvbdFVyPoljF
+DnbkKvbdjggMGGOL
+DoDLKvbdLAkHMawq
+DncLKvbdwuMdpxlO
+DoDKjvbdtSqrxydc
+DoCjjvbdSLZGVHKs
+DnbjjvbdrMzKYlIJ
+DnbjjvbdTAFIhBnd
+EPDLKvbdIxTbIMRQ
+DoDLKvbdbBVeGQPw
+DnbkKvbdvlvANEEm
+EPDLKvbdEOcKkXCd
+DoCkKvbdYqMdhmFR
+EObjjvbdnUtzKiqf
+EPCkKvbdtunXjQsA
+DnbkKvbdddoSBwDK
+DnbjjvbdTqROttgm
+EPCkKvbdzQnmJJwA
+EObjjvbdfpBzwDwh
+DncKjvbdRotHJecw
+EPCjjvbdhtzFWrVC
+DncLKvbdqdEhpNvB
+DnbjjvbdkWWmcbYX
+EOcLKvbdYSkaMsoY
+EObjjvbdDjIKVxKA
+DnbkKvbdrounjDVf
+EObkKvbdJzpFwdAN
+DoDLKvbdsBelkgLZ
+DoDLKvbdwtmEqZMO
+DncKjvbdxmrgwriD
+EOcKjvbdDoDLLWbd
+EPDKjvbdIwtBhLpp
+EPDLKvbdUaBqTRRy
+DoCjjvbdjKFhJlwr
+DoCkKvbdGLFTDIMu
+EPCjjvbdrbFmMHKy
+DoDLKvbdehKurOQg
+DncKjvbdijFhJlwr
+DoCjjvbdjvXOEBww
+EPCjjvbdTXjkmzkY
+EOcKjvbdaSFcHtGL
+EPDLKvbdpyPIHQcx
+EOcKjvbdmaiwXoNu
+DoDKjvbdSBdFMJZL
+DoDKjvbdjKGIKMwr
+DncLKvbdyXiKBozL
+DoCkKvbdqlzJxkhJ
+EObkKvbdrNZiyLhJ
+DoCkKvbdrpWPKCvG
+DncLKvbdVrOXbEkc
+DnbkKvbdOAIrtJrA
+DnbkKvbdrXQMChyR
+EOcLKvbdDnbjjwCd
+EPCjjvbdjvXOECXw
+EPCkKvbdMgDPmPtk
+DoDLKvbdYfwEAPSi
+EPCjjvbdzGxlANEw
+DoDKjvbdmbKWwoNu
+EOcLKvbddZxpXxqC
+DoDLKvbdLGGHbApu
+DoCjjvbdVTltGLuj
+EPCjjvbdOEdThiKd
+DoCjjvbdUyHtZkPO
+DncLKvbdHELWJajK
+EOcKjvbdcarmSAUN
+EObjjvbdqiAJdmOe
+EObkKvbdZQleImFR
+EObkKvbdQccBQRDr
+DoCkKvbdLAjfmBwq
+DncKjvbdSKxeuHKs
+DncLKvbdmJDsqUrB
+EOcLKvbdGFirNhtR
+DncLKvbdEARiMywX
+DnbjjvbdZxcjNblS
+DncLKvbdWXIwudEg
+DoDLKvbdhkeDmuCy
+EObkKvbdUslselWK
+DoCkKvbdLhakqYAS
+DoCjjvbdIMBzmvpk
+EPCjjvbdKaKgMbXq
+EPCjjvbdiLeDmtcZ
+DnbjjvbdsPvPKCvG
+DncLKvbdnVUzLKRf
+DoDLKvbdiUyeWrVC
+EOcLKvbdjblLRGuH
+DnbkKvbdhtydvqtb
+EOcKjvbdTqQnuVIN
+DoCjjvbdMtsRkNAX
+EPCjjvbdGKdrbglu
+DncKjvbdMoxQvOGs
+DoDKjvbdiHKDZWKV
+DoDKjvbdULvPAvPJ
+DnbkKvbdEvZQPmKF
+EObjjvbdkxrrTZGt
+EObjjvbdKCicQibx
+DoCjjvbdKkAgvAKZ
+EOcKjvbdNxOuzcmt
+EPDLKvbdbsCjsdJa
+EObjjvbdHDkVjBjK
+EPCjjvbdYqMdiMeR
+EPCkKvbdczYoxZRC
+DncKjvbdnPzYujxb
+DnbjjvbdMpYRWOHT
+DncLKvbdLFegbBRV
+DncKjvbdxVMdqYlO
+DoDKjvbdFkErbhNV
+DncKjvbdLLBHvAJy
+DoDKjvbdTfzmkwWF
+EPCjjvbdyXiKCQZk
+DoDKjvbdqUUGrSLU
+EObjjvbdGcjuiaij
+EOcLKvbdZRMdhmFR
+DoCjjvbdZoNiEdzK
+DoCjjvbdEARiNZwX
+DoCkKvbdwXMBVaWV
+EPCjjvbdVZHsyjoO
+DoDKjvbdyXhjBpZk
+EObkKvbdtkxWaUAw
+DnbkKvbdLrWmZuQz
+DncLKvbdySnJNRbH
+EPCjjvbdezvYdhsw
+DoDLKvbdhancFWqR
+EObjjvbdyzeORgiI
+EPCjjvbdyXiJbPyk
+EObjjvbduVnXiqTA
+DnbjjvbdZjTHofaf
+EPDLKvbdLrXMyuQz
+DnbjjvbdHffyxxXg
+DoDLKvbdOStWGdtp
+DnbjjvbddijRvUzn
+DoCjjvbdYNqAXtut
+EPCjjvbdUQpntuHm
+DoDKjvbduWOXjQsA
+DoDLKvbdtTRsYydc
+DncKjvbdpfDeUVaI
+DoDLKvbdULuoAvOi
+DnbjjvbdqmZjYkhJ
+EPDKjvbdZMSETmkm
+DoDLKvbdZshhyETO
+DncLKvbdQdCaQQcr
+DncKjvbdQccBQRES
+EOcKjvbdrNZjYlIJ
+EPDKjvbdjAQHBPgK
+DoCjjvbdnUuZkJqf
+DoDKjvbdLAjfmBxR
+EObjjvbdUsltFkuj
+DoDLKvbdZQleJMeR
+DnbjjvbdBraCtGXS
+DoDLKvbdaSFbhUGL
+EObjjvbdrbGMkgLZ
+EPCkKvbdJYUCHlRQ
+EOcKjvbdgFkzNfgA
+DoCjjvbdaRecHtFk
+EPDKjvbdnUuZkKSG
+EPDLKvbdkWWmdBww
+EObkKvbdypoNJKXA
+EOcKjvbdZxdJmblS
+DncLKvbdZirhPgCG
+DoDLKvbddeOrCXCj
+DoCjjvbdOXoVzcnU
+DncLKvbdSBdFMJZL
+DncKjvbdrzMPraHn
+DncLKvbdqZPHfpcx
+DncKjvbdVAbQsQqy
+DoDKjvbdySnJNSCH
+EPDLKvbdtSqsZZeD
+DncLKvbdtvOYKRTA
+DncLKvbdLGGICBQu
+DoDLKvbdDncLKwDE
+EObjjvbdNrtVgEtp
+EOcKjvbdUQqOtthN
+EObjjvbdZtIiYcrn
+EOcKjvbdmuVZjjRf
+DnbjjvbdcJNKKevx
+DoCkKvbdDxXlTtUM
+DncLKvbdqZOhHQcx
+EPDKjvbdIsZBSlwl
+EOcKjvbdNUsRkNAX
+DoDLKvbdRbEFMJYk
+DnbjjvbdiBncFWqR
+EOcLKvbdRzKIScWA
+EOcKjvbdRbEFMIyL
+EPDKjvbdsPunjDVf
+DoCjjvbdhzVFkpmf
+EOcKjvbddxZtUSFz
+DncKjvbdnVUykJrG
+EOcLKvbdEPCkKvbd
+EPCjjvbdnUuZkKSG
+DnbjjvbdnCKWxOmu
+DnbkKvbdYzcFrKVy
+DoDKjvbdvmWAMcdm
+EObkKvbdhkdcmuDZ
+DncKjvbdNsUVgFVQ
+EPDLKvbdYzbeqiuy
+EOcLKvbdUxgszLOn
+DnbjjvbdZQmEiMeR
+DoCjjvbdkHflFemk
+EPDLKvbdhbPCdwRR
+DoDLKvbdWXIwucdg
+DoCjjvbdOYOuzcnU
+DoDLKvbdcSbkTdJa
+EOcKjvbdEvYpQMjF
+EPDLKvbdrykosAhO
+EObkKvbdrovPJbvG
+DoDLKvbdkHflGGNk
+DoCjjvbdZtIiYcsO
+DoDLKvbdZnmiEdzK
+EObjjvbdZMSDsnLm
+EPCjjvbdLAjfmBxR
+DncLKvbdptUGrRjt
+EOcLKvbdNQXqVmgT
+DoDLKvbdCIkCLIfK
+EPDLKvbduVmxKRTA
+EPDKjvbdHbLzEzAD
+EPCjjvbdbUbGxKsh
+DoCkKvbdjlbLzEgP
+EPCkKvbdXGYzUAPT
+DnbkKvbduLxXAsaX
+EObkKvbdJvUfEFHJ
+EOcKjvbdmbKXXoNu
+EPDKjvbdQvnDbkgc
+DoDLKvbdiUzFWrVC
+EObkKvbdZyEKNcLr
+DoDKjvbdrEEhpNua
+DnbkKvbdzitoocsU
+EPCjjvbdmbJvxOnV
+EOcLKvbdNddTiIjd
+DncKjvbdfpBzvdYI
+EObkKvbdBhjbLIfK
+DoCjjvbdFjeTDHmV
+EOcKjvbdRjyGVGkT
+DoCkKvbdZQldhmFR
+EPDKjvbdqlzKZLhJ
+DnbkKvbdZoOIeEyj
+DncKjvbdBdPaVjNG
+EPCkKvbdTulPjUBR
+EPDLKvbdGGJqmiTq
+DoDLKvbdGGJqmhsq
+EOcKjvbdIryBTNXl
+EPDLKvbdIsYaSmXl
+DoCjjvbdVwJXudEg
+EPCkKvbduDCtvuoP
+EOcLKvbddBsMrAUN
+DncLKvbdrouoJcWG
+DoDKjvbdCgLfHAzc
+DncLKvbdhtzEvqtb
+DoDKjvbdZtIiYcsO
+DncKjvbdMfbomPtk
+DncKjvbdYqNEiMdq
+DnbkKvbdCTBCtFvr
+DncLKvbdhtzEvquC
+DoCjjvbdAMhZSvyx
+DoDKjvbdjlbLzEfo
+EOcKjvbdZLrETmkm
+DncKjvbdULvPAuni
+DoCjjvbdtcCtvuoP
+EPCkKvbdOTTugEtp
+EObjjvbdhtzEvquC
+DoCjjvbdkHgLfFmk
+DncKjvbdmoyyVkZC
+DnbkKvbdsBemLgKy
+DoDKjvbddCTMrAUN
+DoCjjvbdmuUykJqf
+DnbjjvbdbQHGckzd
+DoDLKvbdyOShXriD
+EPDLKvbdZRNFImFR
+EOcLKvbdDoDKkWcE
+EPCkKvbdwMvAMcdm
+DnbjjvbdbKlFoNcA
+DoCkKvbdMfbpMpVL
+DncLKvbdhkeDnUby
+DoDKjvbdMSWmZtpz
+EPCjjvbdmfeYMmgZ
+DnbjjvbdqiAKFMoF
+DoCkKvbdSBdElIxk
+EOcLKvbduoTzpkPU
+DncLKvbdDoCjjwCd
+EObjjvbdLGGHbBQu
+DnbkKvbdQcbaQRDr
+EPDLKvbdyNrgxTJD
+EObjjvbdtSqryZdc
+DoDLKvbdegkWSNpg
+EOcKjvbdZLrDsnLm
+EObjjvbdFkEsCgmV
+DoDKjvbdatagXjtI
+DncLKvbdGZUuBDwb
+DoDLKvbduDDUvuno
+EObjjvbdURROtuIN
+DnbkKvbdyXhjBpZk
+DoDLKvbdKaLGlaxR
+DoCkKvbdlZTRrxgU
+EPDLKvbdUsltFlWK
+DncLKvbdGGKRnIsq
+DnbkKvbdijFhKNXr
+DoDKjvbdrWokbiYq
+EObjjvbdUaCRSqRy
+EObjjvbdRkYfVHKs
+DnbkKvbdQvnDcMID
+EObjjvbdvBEYrneI
+DnbkKvbdySmiNRbH
+EPDKjvbdjuvmcaxX
+DoCjjvbdVTmUGLuj
+EPDLKvbdxVMeRYlO
+DnbjjvbdNPwpvNgT
+DoDKjvbdJTZArlxM
+EPDLKvbdjbkkRHUg
+DnbkKvbdSBdFMIyL
+EPDKjvbdMgColpUk
+DncLKvbdVAbQsQrZ
+DncLKvbdyTOJNRag
+DnbjjvbdmgFYMmgZ
+EPDKjvbdTAFIgbOd
+EObkKvbdFWYoomJe
+DoDKjvbdIxUBhMRQ
+DoCjjvbdFWYopNKF
+DoDKjvbdNdcshiLE
+EOcLKvbdwWlBWAuu
+EPCkKvbdYpldiNFR
+EPDLKvbdQwODbkgc
+EPCkKvbdqZOhHQcx
+EObjjvbdHDjujCKK
+DoDLKvbdnBjWwnmu
+EPDLKvbdUQqPUuHm
+DnbkKvbdIryBSlxM
+DnbkKvbdjhGlFfNk
+DnbkKvbdqlyiyMHi
+EPDLKvbdxmsIYTIc
+EPCjjvbdNrsufduQ
+DncLKvbdaaWEepPw
+DnbjjvbdkVvnDaxX
+EOcKjvbdUQpntuIN
+EOcKjvbdQdDAopcr
+DoCkKvbduMXvaUAw
+DnbkKvbdMRwNZuQz
+DoCkKvbdNGcQMotk
+EPDLKvbduWOYJpsA
+DncKjvbdZtJIxcrn
+DnbjjvbdwyhFfXeS
+EOcLKvbdIryAsNYM
+EObjjvbdyTNiNRag
+EPCkKvbdiZuGLqOG
+DncKjvbdHELWJbKK
+DoDKjvbdIGfyxwxH
+EPCkKvbdeOdrkTsr
+DoDKjvbdpstGrRjt
+EOcKjvbdZtJIxdSn
+EObjjvbdZtIiZDrn
+DnbjjvbdOEctIhkE
+DncLKvbdKDJbqJbx
+DncKjvbdEOcLKvcE
+EOcLKvbdgLGzcGAE
+DoCjjvbdGBPQxizm
+EPCjjvbdeFOqbXDK
+EObkKvbdehKuqnQg
+DncKjvbdRosgKFcw
+EOcLKvbdUsmUGLuj
+EOcLKvbdrXQMCiZR
+DoDKjvbdjcMLQftg
+EPDLKvbdHEKvKBjK
+EPDKjvbdbVCHYLUI
+DncKjvbdFfKSOItR
+DncKjvbdYSkaNToY
+DncLKvbdQvmccLhD
+EOcKjvbdnVUykKSG
+DoCkKvbdbsDKsdJa
+EObkKvbdGLFTChMu
+DoCkKvbdqGEFTuaI
+EPCkKvbdddoRbXCj
+EPCjjvbdMfbpNQVL
+DoDKjvbdFjdrbgmV
+EPCkKvbdmRxuZsDi
+DncKjvbdaRfChUGL
+DncLKvbdMJBkqYAS
+EObkKvbdxUmEqYlO
+EPDLKvbdtbbtvuoP
+DoDKjvbdxsOJNSBg
+EPDKjvbdZtIhyDrn
+DncLKvbdKCicRKDY
+EPDLKvbdUtNUFlVj
+EPCjjvbdeATqMxJf
+EOcLKvbdaNLBsUmH
+DoDKjvbdJcJcQjDY
+EPCkKvbdiMEdNtby
+DoCjjvbdiGibyWJu
+DncKjvbdeEnrCXDK
+EPCjjvbdUVlPisaR
+DncLKvbdXGZZtAPT
+DoDKjvbdddoRbXDK
+DoDLKvbdSBdElIyL
+DoCjjvbdRNXbZOUz
+DnbjjvbdTAEhhCPE
+EObjjvbdUMVoBWOi
+DnbkKvbdFjdrcHmV
+DoCjjvbdfIKurORH
+DoDLKvbdVBCRTQrZ
+EOcLKvbdZoNhddzK
+DoCkKvbdULvOaVoJ
+DnbjjvbdZirhPgCG
+EOcKjvbdVBBprqSZ
+DoDLKvbdaSFcIUGL
+DoDLKvbdfIKuqnRH
+DncKjvbdijGIKNXr
+EPDLKvbdrzMPsAgn
+EPDKjvbdNUsSKmAX
+EPCkKvbdLLAhWAKZ
+DncKjvbdkWWnDaww
+DnbkKvbdJYUCHlQp
+EPDLKvbdNwoVzdNt
+DoCjjvbdSLYetfjs
+DoDLKvbdptTgSSLU
+DncKjvbdxVMdqZLn
+DncKjvbdZyDinDMS
+DnbkKvbdnPyxujxb
+EPCkKvbdSiZjRABM
+EPDKjvbdPyNAHSqj
+DncLKvbdqwPlChyR
+EPDKjvbdGckWJbKK
+DoDLKvbdbBWFFoow
+DoCkKvbdkCkkRGuH
+DncLKvbdmJDtQuSB
+EObkKvbdQdCaQQdS
+DncKjvbdKfFhBaQu
+DncKjvbdaNKaruMg
+EOcKjvbdnPzZWLYb
+EObjjvbdxUldqZMO
+DnbkKvbdGckWJaij
+DncKjvbdkVwODaww
+EObjjvbdGKdsDHlu
+EObkKvbdKQyeOfOF
+EPCkKvbdGdKvKCJj
+DnbkKvbdGdKuibKK
+DoDKjvbdOFDtJJKd
+DoCkKvbdwuMdpxkn
+EObjjvbdZjShPgBf
+DoDKjvbdcyxpYZQb
+DnbjjvbdrbGMkgLZ
+DnbjjvbdxsNiMqbH
+DoDKjvbdWSOXbFLc
+EPCjjvbdrDeIomvB
+EOcKjvbdEuxopNJe
+DoDKjvbdKDKCqKCx
+DoCkKvbdkIHLfGNk
+EOcKjvbdnUuZjirG
+DncKjvbdIryArmXl
+DoDKjvbdraemMGkZ
+DncKjvbdEJgivYKA
+DoDLKvbdbhmJkGWx
+DnbjjvbdZyDimcMS
+EOcKjvbdhuZeWrVC
+DnbkKvbdRbEFMJZL
+EPCkKvbdeOdrkUTr
+DoCkKvbdlhdUQuRa
+DnbjjvbdZtIiZDsO
+EPCjjvbdZyEJmcMS
+DnbjjvbdFpATWgGZ
+EOcLKvbduaDxroEh
+DnbkKvbdpeceUWBI
+EOcKjvbdjcMLQftg
+DncLKvbdnPzZWLZC
+DnbjjvbdZyEKNcMS
+DoDKjvbdZMSDsnLm
+DnbjjvbdOAIsTjSA
+DoCjjvbdWSNxCFLc
+DoDKjvbdkClLRHVH
+DncKjvbdZxdJmcLr
+EPCjjvbdOYOuzdOU
+DncKjvbdWHxVxHYz
+DoDLKvbdwXMBWBVu
+EObjjvbdZxdJmcMS
+EOcKjvbdrEFJPmvB
+EOcKjvbdQcbaQQcr
+EPCkKvbdfHkWRnRH
+EOcKjvbdrEEiQNvB
+EObkKvbdcTCjtDia
+DoCkKvbdnCJvwoOV
+DoDLKvbdxnTIYSiD
+EOcKjvbdGQASvfey
+DoDKjvbdUtNTekvK
+DoDLKvbdbUbHXkTh
+DncKjvbdaNLBsVNH
+EPCkKvbdmtuZjirG
+EPDKjvbdvlvANEEm
+DnbkKvbdcIljLGWx
+EOcKjvbdJSyArmYM
+EObjjvbdVTltFlVj
+DncKjvbdTAFIgbOd
+EOcLKvbdUsltGLuj
+EObjjvbdZRNEhmFR
+EOcKjvbdUGznMXVe
+DnbjjvbdTqQoUthN
+DncLKvbdZRNEhmEq
+EObkKvbdKxpirzuG
+EOcKjvbdiVZdvqtb
+EOcLKvbdatbGxKtI
+DnbkKvbdpfDdsvBI
+DnbjjvbdpyPIGqDx
+DoCkKvbdqUUGrRjt
+DoCjjvbdfHjuqmqH
+EPDKjvbdqlzJyLgi
+DoCjjvbdznpREcMY
+EObjjvbdjuvnEBww
+DoCkKvbdQwNdCkgc
+DoCjjvbdxsNhlqag
+EOcKjvbdbsDKtEJa
+EPDLKvbdfIKuqnQg
+DncLKvbdJXsbILqQ
+DoDLKvbdiUydwRuC
+EOcLKvbdUtMsfMVj
+DnbkKvbdfNGWflik
+DoDLKvbdqwQLcJZR
+DncLKvbdYqMeIleR
+DoCjjvbdzaAPGgBl
+EPCkKvbdauBgYLUI
+EPDLKvbdiUydvqtb
+DnbjjvbdRyjITCvA
+DncLKvbdIwsahLqQ
+EPCjjvbdRacdkiYk
+EOcKjvbdRbEFMJZL
+DoCjjvbdrzLoraHn
+EObkKvbdxxIiaozL
+EOcLKvbdJcJbqJbx
+EPCjjvbdZisHogBf
+EOcKjvbdVTmUGMWK
+EPDKjvbdrylQSaIO
+DncLKvbdSCEEkiYk
+DoDLKvbdhtyeXRuC
+EObjjvbdQvmcblID
+DoDKjvbdauCGwjtI
+DnbkKvbdGYtuBEYC
+DoCkKvbdkyTSSxft
+EPDLKvbdIGfyyYYH
+EObjjvbdjlbLzEgP
+EPCjjvbdIwsbHkpp
+EPDKjvbdmuUyjjSG
+DoCkKvbdUQpoUtgm
+EObkKvbdUQqPVVIN
+DncLKvbdXrkaMsnx
+DncLKvbdaMjbTUlg
+DncLKvbdhgJbyVjV
+DnbkKvbdURQoUuIN
+DnbjjvbdFWZQQMie
+EPCjjvbdnCJwYPNu
+EOcLKvbdBcpBVimG
+DoCkKvbdyqPMiKXA
+EObkKvbdnVUzKjRf
+DnbkKvbdVgwvXgYz
+EObkKvbdZsiJZDsO
+EPDKjvbdiCPCdwRR
+EObkKvbdGYuUaEYC
+DnbkKvbdpyPIHREY
+DnbjjvbdiZtfLpnG
+EPCkKvbdVUNTelWK
+DnbkKvbdTppoVUhN
+DnbjjvbdxrnIlrBg
+EPDKjvbdmIdUQtrB
+EObjjvbdkNBkzFGo
+DncKjvbdhbOcFXQq
+DoDLKvbdNGcPmQVL
+EPDKjvbdZoNheEyj
+DnbkKvbdjlbLzEfo
+DoCjjvbdZRMdiNEq
+EObjjvbdczYoxYqC
+EPDKjvbdLAkHMaxR
+DoDLKvbdsPunibuf
+DoDLKvbdNdcshhkE
+EPDKjvbdhkdcnVCy
+EPCkKvbdVZHtZkOn
+DnbjjvbdsrrTYzFD
+DoCjjvbdatbGxKtI
+EOcLKvbdnGdxMnHZ
+EPDLKvbdmaivwoOV
+EObkKvbdjJegjMwr
+EPDKjvbdYfwEAOri
+EOcKjvbdpxngfpcx
+DnbjjvbdEPCjkXCd
+EPDKjvbdxsOImRag
+EObjjvbdEPDKjwDE
+DnbjjvbdYlSETnLm
+DncLKvbdBiLBjhej
+DoDKjvbdrpWPJcVf
+DncKjvbdRpTfiedX
+DoDKjvbdakMGOnDA
+DnbjjvbduVmxKQsA
+DncKjvbdKfFhCBRV
+DnbkKvbdpfEFTvBI
+DncLKvbdqwQLcIyR
+EOcKjvbdlhdTpuSB
+DncKjvbdqwQLbhxq
+DnbkKvbdnHEwlmgZ
+EPDKjvbdDoCjkWbd
+EObkKvbdANIYsWyx
+EObjjvbdpfEEsvBI
+EPDKjvbdCJLCKiFj
+DoDKjvbdqcdhonVa
+EPCjjvbdzjUpQESt
+DncLKvbdZQleImEq
+EPCjjvbdEPCkLXCd
+EPDKjvbdYlRdUNlN
+EObkKvbdxwiKBozL
+DnbjjvbdFjdsChNV
+EObjjvbdwtleRYlO
+DoDLKvbdeOdsLUUS
+EPDKjvbdZLqctOLm
+DoDLKvbdjlbLyeHP
+DoCkKvbdaNLCTVMg
+DnbkKvbdEKHjWXjA
+DnbkKvbdZshhyDsO
+DnbjjvbdsPunibuf
+EPCkKvbdwWkaWBVu
+EPDLKvbdFpATWfey
+EObjjvbdzoQQdcMY
+EPDLKvbdpxngfpcx
+DnbjjvbdgPazwDwh
+EPDKjvbdKVtfEEfi
+EOcLKvbdhkeENuDZ
+EObkKvbdIwtCILqQ
+EPCjjvbdyNrhXsJD
+DnbkKvbdMSWmZuQz
+EOcLKvbdsPunicWG
+DncLKvbdULvPBWPJ
+DoCkKvbdKfFhCApu
+EOcLKvbdTAEhhCOd
+DnbkKvbdSKxetfjs
+DoCjjvbdUtNTfLuj
+EObjjvbdhzVGMROG
+DoCkKvbdxsNhmRag
+DnbjjvbddZyPwxpb
+EObjjvbdEuxooljF
+DncLKvbdVTlsfLuj
+DoCkKvbdZjShQGaf
+EPDKjvbdrSVKnKaN
+DnbkKvbdFxuVBDwb
+DoCkKvbdJXtBhLpp
+EPCjjvbdHffzZXxH
+DoCjjvbdqZOgfqDx
+DncLKvbdqwQMChyR
+EObjjvbdaSGDIUFk
+EPDLKvbdZxdKNcMS
+EObjjvbdhuZdwSUb
+EPDLKvbdfMfWgMik
+DncLKvbdZRNFJMdq
+EOcKjvbdJKEAKPfd
+EPCkKvbdcyxoxYqC
+EOcKjvbdCSaCsevr
+DoDLKvbdKQzEoGNe
+DoDLKvbdjhHLefOL
+DoCjjvbdRjxeuGjs
+DncKjvbdyOTIXsIc
+DnbkKvbdBdQBWKMf
+EOcKjvbduLxXBUBX
+EObkKvbdrSUkNkAm
+DoDKjvbdKfFhBaRV
+EPCjjvbdddoSBvcK
+DncKjvbdyOTHxTJD
+EOcLKvbdiLeENuDZ
+DoCjjvbdJbjDRKCx
+EPDKjvbddoErkUUS
+DoCkKvbdBiKakJGK
+DnbkKvbdCIjbKiFj
+DoCjjvbdIsZBSmXl
+EOcLKvbdBhjajiFj
+DnbjjvbdrzMQTBIO
+EObjjvbdrWolChyR
+EPCkKvbdEARiMzXX
+DoDLKvbdrWpMDJYq
+EOcLKvbdKRZdoGOF
+DoCjjvbdBsAcUFvr
+DoCjjvbdBraDUGXS
+DoCkKvbdIwtBhMQp
+EObjjvbdeATqMxKG
+EPDKjvbdYzbfRjWZ
+EOcLKvbdsCGNLgKy
+DoDKjvbdhficZWKV
+EObjjvbdZQldhldq
+EPDKjvbdsQVoJbvG
+EPDKjvbdsQVnicWG
+DoDLKvbdVZITyjoO
+EPCjjvbdILazmvpk
+EPCkKvbdZMSDsmlN
+DoCjjvbdZGvdAOri
+DoDKjvbdwuMeRYkn
+DnbjjvbdZyEJmblS
+EPDKjvbdhkeENuDZ
+EPDLKvbdGdKvKCKK
+EPCjjvbdjuwOECXw
+EObkKvbdZeXfzghb
+EObjjvbdJmAEZgUa
+EOcLKvbdtcCuWvOo
+EPCkKvbdiiehJlwr
+DoDLKvbdwtldpyMO
+DoCjjvbdjblLQfuH
+DncKjvbdNPwpunGs
+DnbjjvbdSLZFtgLT
+EPDKjvbdyXhjCPyk
+EObjjvbdliETpuSB
+Dnbjjvbdqlyixkgi
+DoDLKvbdmbJvxOnV
+DoCjjvbdZjSgpGaf
+DoCjjvbdqdEhpNua
+DoDLKvbdelfXGmKL
+EPDKjvbdIGgZyYYH
+DncLKvbdfMfXHMik
+DoCjjvbdZoNheEyj
+EPCkKvbdsZlPsBIO
+EOcKjvbdLAjgMbXq
+DncKjvbdVZITykOn
+DnbjjvbdpyOgfqEY
+EPDKjvbdbUagYKtI
+EObkKvbdrSUjnLBN
+DncKjvbdQwNdDLhD
+EOcLKvbdrykosBIO
+EPDKjvbdsPunicWG
+EPCjjvbdliDtQuRa
+EOcKjvbdcSbkTdKB
+EOcLKvbdKaKgNCXq
+DnbjjvbdZshhxcrn
+DnbkKvbdcbTMrAUN
+EPCkKvbdsQWPKDVf
+DncKjvbdijGHjMwr
+EOcLKvbdULvPBVni
+EPCjjvbdffLynHHA
+DoCjjvbdTqQntuHm
+DoDLKvbdjuwNdCXw
+DoCkKvbdVZITzLOn
+EPDLKvbdqrUkOLAm
+EPDLKvbdZQmEhmFR
+DoDKjvbdwjvdHzyf
+EPDKjvbdePErjtTr
+EObjjvbdmozYvLZC
+DnbjjvbdACrXizIp
+EOcLKvbdTvMQJtAq
+DncLKvbdssSTZZeD
+DnbjjvbdmozZVjxb
+EOcLKvbdtSrSxzFD
+EPDLKvbdZyDjOCkr
+DnbkKvbdbBWEeopX
+EOcLKvbdkWWmcbXw
+DoCkKvbdkVwNdBww
+DncKjvbdEzsqFMCi
+DncLKvbdACqxJyhp
+DoDKjvbdYpmFIleR
+DncKjvbdGKdsCglu
+DoCkKvbdZnnJFEzK
+DoDKjvbdBsBCtGWr
+EPDKjvbdBcpAuimG
+DnbjjvbdIGfzYxXg
+DnbkKvbdGLEsCgmV
+EPCkKvbdySnJNSBg
+DoCkKvbdPyNAGrqj
+EPDKjvbdmaivxPNu
+DnbjjvbddoFSkUUS
+DoCkKvbdySmiNRag
+DoDLKvbdEYXlUUUM
+EObkKvbdCTBCtFwS
+DoDLKvbdoznDkXoA
+EOcLKvbdBvzciEov
+DoCjjvbdSPtHJfEX
+EPDLKvbdtvOYJqTA
+EPDKjvbdZisHpHBf
+EPDKjvbdILazmvqL
+EOcKjvbdRpUHKGDw
+DncKjvbdWXJYWDdg
+EPDLKvbdIwtCHlQp
+EPDKjvbdUtNTfLvK
+DncLKvbddZxpXxqC
+EOcLKvbdkNBlZdgP
+EObkKvbdqYnhGqEY
+EPDLKvbdfpBzwDwh
+DncLKvbdTkuoBVoJ
+DnbkKvbdvvlBWAvV
+DoCjjvbdrXQMCiYq
+EPCjjvbdFeiqmiUR
+DncLKvbdzjUopDsU
+DncKjvbdhkeDmuCy
+EPCjjvbdVqnYBdlD
+EOcLKvbdSCDeLiYk
+DoCjjvbdJvUeceHJ
+EPCjjvbdjgfkfFnL
+DnbjjvbdkVwNdBww
+EObkKvbdczYowyRC
+EPCjjvbdZoNhddyj
+EPCjjvbdOSsugEuQ
+EObkKvbdZMRcsnLm
+EObjjvbdrMzJyLgi
+EPDKjvbdrSUjnKaN
+EPDKjvbdSLYfUfkT
+EPDKjvbdUVlQKUAq
+DoDLKvbdJcKCqJbx
+DnbjjvbdeFPRbWcK
+DoCkKvbdVAbQsQqy
+DncLKvbdpeceTvBI
+DoDLKvbdcIlikFwY
+DoDLKvbdbsDLTdJa
+EPCkKvbdRXOEClHc
+DnbjjvbdbKkennDA
+DncLKvbdEzsqEkcJ
+EPCjjvbdJvUedEgJ
+EOcLKvbdzitpQDsU
+DncLKvbdQvnDblHc
+EOcKjvbdbQGgDkzd
+DnbkKvbddZyPxYpb
+EPDLKvbdLrXNZuQz
+DoDKjvbdDjIJvYKA
+EPCjjvbdbVCHXjsh
+EOcLKvbdsPunicVf
+EOcLKvbdEzspdlCi
+DoDLKvbdmRxtzSdJ
+DnbjjvbdsBfNLfjy
+DoCjjvbdcTDLUDia
+EPDLKvbdidjgVPAO
+DoCkKvbduVmxKQsA
+EObjjvbdxLXDgzzG
+EPCkKvbduaEZSoFI
+EOcLKvbddneSjssr
+DoCkKvbdWXJYVdFH
+DncLKvbdHkaznWqL
+DncKjvbdbVCGxKsh
+DnbjjvbdiMEcmtcZ
+DoDKjvbdqAheAXHd
+EPCkKvbdMIalQxAS
+DnbjjvbdVviXucdg
+DnbjjvbdMpXpumgT
+EObkKvbdMJCLqYAS
+EObjjvbdczZQYYqC
+DncLKvbdUxgtZjoO
+EOcLKvbdjuwNdCYX
+DncKjvbdSwjlNzkY
+EPDLKvbdrWpLbhxq
+DoDKjvbdnBjWwoOV
+EPCjjvbdmSYtyrdJ
+DoDLKvbdzeZnzdzQ
+DncLKvbdMowqWOGs
+EPCkKvbdqTsfqrLU
+EObkKvbdraemMHKy
+EOcLKvbdJcJbpjCx
+DnbjjvbdmuUzKjRf
+DncKjvbdNeEThhkE
+DoDKjvbdHakydzAD
+EOcKjvbdXsLaNUPY
+EObjjvbdLFfHbBQu
+DncLKvbdbKlFoODA
+DoCjjvbdRpTfiecw
+DnbkKvbdRkYetgLT
+DoCjjvbdegkVrOQg
+DoDLKvbdhlFEOUby
+DoCkKvbdFyUtaEXb
+DnbjjvbdAMgxsXZx
+EOcLKvbdUQqOtuHm
+EPDKjvbdxrmiMrCH
+EOcLKvbdREDApQdS
+DoDLKvbdWRmxBdlD
+DnbjjvbdiHKCyVjV
+EPCkKvbdxwhjCPyk
+EObjjvbdLKaHvAJy
+EPDLKvbdZtJJYcsO
+DoCjjvbdbPfgDkzd
+EObkKvbdUaBqTRRy
+EPDKjvbdGYtuAcwb
+DnbjjvbdQcbaQRDr
+EPCjjvbdsBfNMHKy
+EPDKjvbdZyDimblS
+DoDKjvbdJXtBglRQ
+EObkKvbdpssfrSLU
+EOcLKvbdMRwMytpz
+DoCjjvbdEYYMUTtM
+DoCkKvbdeAUQmXif
+DncLKvbdUaBqSpqy
+EObkKvbdVAbQrqRy
+EObkKvbdwXMAuaWV
+DncLKvbdCIjakIfK
+DncLKvbdjmBkzEfo
+EOcLKvbdKVtfDeGi
+EObkKvbdnQZyVjxb
+DncLKvbdzRPMhiwA
+DncKjvbdJpydnfOF
+EPDKjvbdqTsfrRkU
+EPDLKvbdEuyQPlie
+DnbjjvbdfSBWzlCo
+DnbkKvbdqiAKFMne
+EPCjjvbdatbHYLUI
+EOcKjvbdNsTugEtp
+EPCkKvbdmgFXmNgZ
+EPDLKvbdMSXNZtpz
+DoDKjvbdUaBprqRy
+DnbjjvbdXmqAXtvU
+EOcKjvbdHlBznWpk
+EOcKjvbdVqmwbElD
+DoCkKvbdqrVLOLAm
+DnbkKvbdZshiYcrn
+DoCkKvbdZoNhddyj
+EOcLKvbdEuxooljF
+DnbkKvbduCcVXVoP
+EPCkKvbdmuVZjirG
+DncKjvbdRzKHrbvA
+EObkKvbdeKJqutzn
+EObkKvbdyOShXsIc
+EPCjjvbdRbDdlJZL
+DoDKjvbdSBdFMIxk
+DncLKvbdKaKgMawq
+EObkKvbdCDpAuilf
+DnbkKvbdRWnDcLgc
+DncLKvbdqlzJxkhJ
+EPCjjvbdNHDQMpUk
+EOcLKvbdRMwbZNtz
+EPDKjvbdOEdThiLE
+DoDLKvbdUyHszKoO
+DnbkKvbdZisIPgCG
+DncKjvbdwzHeeweS
+DncKjvbdQwODcLhD
+DoDLKvbdqdFJPmua
+EOcLKvbdvwMAvBVu
+EPDLKvbdbVBfwjsh
+DoCkKvbdRyjHrcWA
+DoDLKvbdWIYVxGxz
+DnbkKvbdbiMjLGXY
+EOcLKvbdBhjbKiFj
+EObjjvbdCDpAvJmG
+EPDKjvbdLBKfmCYR
+DoCkKvbdbiMijevx
+DnbkKvbdyOSgwriD
+EPDLKvbdlYrqsZHU
+EOcLKvbdwyhGFxFS
+EPDLKvbdRyjHsCvA
+EPCkKvbdHgGzYxYH
+DoDLKvbdGFjRmhtR
+EPDKjvbdFyUtaEYC
+DncLKvbdeFOrCWbj
+DoDLKvbdJSyArlwl
+EOcKjvbdZyEKODLr
+EOcLKvbdemGXGmJk
+DnbjjvbdSCDeLhyL
+DoDLKvbdYTLaMsnx
+DoCjjvbdxKwEHzyf
+EOcLKvbdiVZdvquC
+DnbkKvbdUaBqTQqy
+EPCjjvbdGZVVBEXb
+DoDLKvbdCEQAvKMf
+DoDLKvbdRWmdCkhD
+EPDKjvbdRotHJecw
+DoCjjvbdZxcimblS
+EOcLKvbdtbcUvvOo
+DnbjjvbdZsiJZDsO
+EOcKjvbdRyjHsCvA
+EOcKjvbdxLWdHzzG
+DoCjjvbdFjdrbhMu
+EPCkKvbdxVNFRYlO
+DoCkKvbdmIcsqUqa
+EPDLKvbdfMfWgMjL
+EPDKjvbdTqQoUthN
+EOcKjvbdtkwvaUAw
+DoDKjvbdBdPaVilf
+DoDLKvbdZMRdTmkm
+EPDLKvbdelewGlik
+DoCkKvbdwzHfFxEr
+EPCkKvbdvAcyTPFI
+EObjjvbdQdDBPqES
+DoDKjvbdZtIiYcrn
+EOcKjvbdypnlhiwA
+DoCkKvbdNrtWGduQ
+DncKjvbdxsOIlqbH
+EPCjjvbdANIYrvyx
+DnbjjvbdNwnuzdOU
+EPCkKvbdFyUuBEXb
+EOcLKvbdaaWFGQQX
+DncLKvbdraelkfkZ
+EPCjjvbdTpqPVUhN
+DncKjvbdySmiNSBg
+EPDKjvbdrpWPJbvG
+EObjjvbdwNWANEFN
+EObjjvbdZeYGzhJC
+DoCjjvbddndsKstS
+EPDLKvbdegkWSORH
+EPCjjvbdvwMAvBVu
+EPCjjvbdkySqrxgU
+EPCkKvbdHkaznWqL
+EPCjjvbdqlzKYkhJ
+DncLKvbdZxdJmcMS
+EPCjjvbdqGEFTvAh
+EObjjvbdTYKkmzkY
+EPCkKvbdZisHofbG
+EOcLKvbdzoPpdcLx
+EPDKjvbdZjTHpHCG
+EOcKjvbdKWVGEFHJ
+EPCjjvbdhyuFlROG
+EPCkKvbdFjeTDIMu
+DncLKvbdOYPVzcnU
+DoCjjvbdSZjISbvA
+DoCkKvbdZoNiEdyj
+EPCjjvbdrWpMDJZR
+EObkKvbdkVvnDaxX
+EObjjvbdcSbjtDia
+DnbjjvbdLGGICBRV
+EPDLKvbdkWWmcbXw
+EObjjvbdnHExNOHZ
+DncKjvbdUtNUFlVj
+EObkKvbdEvZPomKF
+DoCkKvbduoTzpjnt
+EOcLKvbdURQoVVHm
+DnbkKvbdTAEiIBnd
+DncKjvbdQwOECkgc
+DnbjjvbdRbDdkiZL
+DoCjjvbdEPCkLWcE
+EPDKjvbdzjUpPdSt
+EPDKjvbdZMSDsmkm
+DoDLKvbdBdPaWJmG
+EPCkKvbdwjwEHzyf
+DnbjjvbdhuZeXSUb
+DoCkKvbdlYrqsYft
+DoCjjvbdEXxMTssl
+DoDKjvbdzoPpdbkx
+DncKjvbdWRnXbFMD
+DoDLKvbddijRutzn
+DncKjvbdnCKWwnmu
+EOcLKvbdZMSDsmkm
+EOcLKvbdUaCRTRSZ
+EObkKvbdkCkjpgVH
+DnbkKvbdirziTKiz
+DoDLKvbdJpyeOenF
+EObkKvbdGKdsDHmV
+EObjjvbdoAKzshDn
+EPDLKvbdlrZVZrci
+DncLKvbdRzKHsDWA
+EObkKvbdKkAhWAKZ
+EPDLKvbdVAaqSqRy
+DoCkKvbdjAPgApHK
+EPCkKvbdBcpBWJmG
+DncKjvbduCbuXWOo
+EOcLKvbdqiAKEmOe
+EPDKjvbdYpldhleR
+DnbjjvbdEPCjjwCd
+DnbjjvbdbsDKtEJa
+EObjjvbdKfGICBRV
+DoDLKvbdRadFMIxk
+DoDKjvbdGGJqmhsq
+EPCjjvbdJbicQjDY
+DncKjvbdbiNKKfWx
+EOcLKvbduLxXAsaX
+EPCjjvbdEKIJuwjA
+EPCjjvbdWRmwadlD
+DnbjjvbdfMewGmJk
+EOcLKvbdNxOuzdOU
+DnbkKvbdfIKvSOQg
+DncLKvbdQZNAHSqj
+DnbjjvbdZLqdUNlN
+EPCjjvbdSLYetgLT
+DncKjvbdeEoSCWbj
+EPDLKvbdsCFmMGjy
+EPDLKvbdLGGHaaRV
+DncLKvbdEuxpQMjF
+EObjjvbdVYhTzLPO
+EPCkKvbdaSFbhTek
+DnbkKvbdDihJuwjA
+EObjjvbdFjeTDIMu
+EObjjvbdhkeDnUby
+DoDKjvbdxUmEpyLn
+DncLKvbdiVZdvqtb
+DoCkKvbdunszqLPU
+DnbkKvbdSBcdkiYk
+EObjjvbdbhmKKevx
+DnbjjvbdVZHtZkOn
+DoDLKvbdZirgogCG
+DoDLKvbdqBIeAWhE
+EPCjjvbdwtmEqYkn
+DncKjvbdKCjDRJbx
+EOcKjvbdTvLpJsaR
+DoDKjvbdyXhjBozL
+DnbjjvbduDDUwVoP
+DoDKjvbdzaAOfgBl
+DoCjjvbdWSOYCElD
+EOcLKvbdqwQMDJYq
+DoCkKvbdNHColpUk
+EPCkKvbdCEPaVimG
+EOcKjvbdjKFhJlxS
+EOcLKvbdxUleRYkn
+DnbkKvbdrNZjZMHi
+DoDKjvbdmuUzLKSG
+EObjjvbdfIKurOQg
+EPDKjvbdQlwbZNtz
+DncKjvbdhkeDnUby
+EObjjvbdwuMdqZMO
+DncKjvbdliDtQtrB
+EPCjjvbdNPwqWNgT
+DncKjvbdjAPgApGj
+EObkKvbdMpYRVmfs
+DnbkKvbdGKeTChNV
+DoDLKvbdHbMZdzAD
+EObjjvbdQlwayOUz
+EPDKjvbdVqnYCFLc
+DoCkKvbdmpZyVjyC
+EObkKvbdUslsfLuj
+DoDLKvbdlhdURVSB
+EOcLKvbdmSZVZrci
+DoCjjvbdYzberJuy
+EPDLKvbdhzVGLpnG
+EPCjjvbdsPvOicVf
+EObkKvbdeOeTLUUS
+DncLKvbdmfdxMnHZ
+EPDKjvbdHffzYwxH
+EPDLKvbdrylPsAgn
+EOcKjvbdwWlBWAvV
+EPDKjvbdVAbQsQqy
+DnbkKvbdsZlPsBIO
+DncLKvbdEzspdkbi
+DncLKvbdhyuGMROG
+DoCkKvbdFaOpxizm
+DoCkKvbdZsiIxcrn
+DoCkKvbdijGHjMwr
+DnbkKvbdcyxpYZQb
+DnbjjvbdEzspdkbi
+DncLKvbdNQYRVnGs
+EObkKvbdkClKpgVH
+EOcLKvbdkClKqHVH
+EOcKjvbdhanbdvqR
+EPCkKvbdmfdwmNfy
+EObkKvbdYTMAmUPY
+DoCkKvbdIGgZxxXg
+EOcKjvbdnHEwlnHZ
+DncLKvbdCDpAuilf
+EPCjjvbdmbKXXoOV
+EObkKvbdapGfdLzd
+EPCkKvbdRjyGVHLT
+DoCkKvbddoFTLTtS
+EPCjjvbdGLFTCglu
+DoCjjvbdiLeENtcZ
+DoCkKvbdKCicQjCx
+EPCkKvbduoTzqLPU
+EPCjjvbduVmwiqTA
+EPCjjvbdWIXuxGxz
+EPCjjvbdpxngfqDx
+EOcKjvbdeOdrkTsr
+DoDLKvbdNrsufduQ
+EOcKjvbdIHHZyXwg
+DoCjjvbdpfEEsvBI
+EOcKjvbdhgKDYvKV
+DnbjjvbdmbJvxOmu
+EPDKjvbdGdKujCKK
+DoDLKvbdfkGzcGAE
+EPCkKvbdZoNiEeZj
+EPDLKvbdaMjbTUlg
+EPCkKvbdSPsgJfEX
+EPDKjvbdDxYLstUM
+EPCjjvbdKVtfDeGi
+EOcLKvbdpeceTvAh
+EObjjvbdHffzYwxH
+DnbjjvbdffMZnHHA
+EOcLKvbdsQVnibvG
+EOcKjvbdZirgpGbG
+EObjjvbdJSxaTMxM
+EOcLKvbdbrcLUEKB
+EPCjjvbdGZUuAcwb
+DnbkKvbdpssgRrLU
+DnbkKvbdKVteceHJ
+EPDKjvbdmajXYOmu
+EPDKjvbdNwoVzdOU
+DnbjjvbdrpVnicWG
+DoDKjvbdjhGlFfNk
+EObjjvbdEXwlTtTl
+DoDLKvbdkCkkQftg
+DncKjvbdDxYLtUTl
+DncKjvbdNQYQunGs
+DoDLKvbdZQleImFR
+DoDKjvbduVmxKRTA
+DoDLKvbdsrqsZZdc
+DoDLKvbdZLqctNlN
+EPDLKvbdNsUVfeVQ
+DncLKvbdhuZeXRuC
+EPCkKvbdiCObdwRR
+DoDKjvbdIwsbIMQp
+EObjjvbdtcCtvvPP
+EOcLKvbdpyOhHRDx
+EObjjvbdmgEwmOHZ
+DoCkKvbdelevgNJk
+DoCjjvbduLwwBTaX
+DoCkKvbdXrlBNTnx
+EPDLKvbduCcUvuoP
+EPDKjvbdURRPVUgm
+EObkKvbdBsBCsfXS
+DoDLKvbdZjSgogCG
+EObkKvbdhgKDZViu
+EPCkKvbdEYXkstUM
+DncLKvbdrMzJyLgi
+DnbjjvbdaSFcIUFk
+EPDLKvbdnBjWxOnV
+EPDLKvbdssRryZeD
+EOcKjvbderAvzkbo
+DoCjjvbdZirhQHCG
+DnbkKvbdBraCtFvr
+EOcLKvbdxZgfFxFS
+DoDKjvbdJuuFdFGi
+EPDKjvbdUQqPUtgm
+EPDLKvbdNHCpMpUk
+EPDKjvbdnCKXYOnV
+DoCkKvbddZyQXyQb
+DnbjjvbdpxoHgREY
+EPCkKvbdfNFwHNJk
+DncLKvbdVBCQsQqy
+EPCkKvbdUxhTzLOn
+EObjjvbdSQTgJfEX
+DoCkKvbdrWpLbiZR
+DoDLKvbdtcDUwWOo
+DoCkKvbdwzHfGXeS
+EPDLKvbdrzMPraHn
+EPCkKvbdDoCjjvcE
+DoDLKvbdbhlijewY
+EObkKvbdUxgsyjoO
+DoDLKvbdbUafxKsh
+DoCjjvbdULuoBWOi
+EPCkKvbdVBBqSqRy
+DoCjjvbdhkeENtcZ
+EPCjjvbdqYnggRDx
+DncLKvbdjhHMFfOL
+EOcKjvbdZxcinDMS
+DoDLKvbdvBDySndh
+DncKjvbdirziTKiz
+DncKjvbdJXsaglRQ
+DncKjvbdhfjDYvJu
+DncLKvbdjuvnDbYX
+EOcKjvbdKaLHMaxR
+DoCjjvbdiGjDZWKV
+DnbjjvbdEObjkWbd
+DnbkKvbdJmADygVB
+EPDKjvbdJvVFdEfi
+EPDLKvbdnGeXmOGy
+DoCjjvbdpssgSSKt
+EPDKjvbdwtldqYlO
+EPDKjvbdmfeXmNgZ
+DoCjjvbdqvokbiZR
+DoDLKvbdqUUHSRjt
+EObkKvbdmbKXYOnV
+EOcKjvbdaSGChTfL
+EPCkKvbdWWiYWDdg
+DoCjjvbduoTzqKnt
+DnbjjvbdHDkVjBjK
+EOcKjvbdbVBfwjtI
+EOcKjvbdjvXOEBxX
+DncKjvbdZLrETnMN
+EObkKvbdfNGXHMjL
+EPCkKvbdkDLkRHUg
+EObjjvbdZjTIQGbG
+DoDKjvbdZsiIyDsO
+DnbkKvbdbrbjscjB
+EPCjjvbdmbJwYPOV
+DoCkKvbdKDJcQicY
+DoDLKvbdZxcinCkr
+DoDKjvbduoTzqLPU
+EOcKjvbddndsKstS
+DnbjjvbdNQXqWNfs
+EOcKjvbdIidAKQGd
+DoDLKvbdTkvOaVni
+DoCjjvbdsPvPJcVf
+DoDKjvbdVqnXbElD
+EOcKjvbdIHGyyXxH
+DnbkKvbdUxgszLOn
+EPDLKvbdwuMdpxkn
+DnbkKvbdqrVLNkBN
+DncKjvbdijFgjMwr
+EPCkKvbdSQUGjFcw
+EObjjvbdRWmdCkgc
+DnbkKvbdVTltFkvK
+EOcLKvbdJbjCqKDY
+EObkKvbdfMfXGmKL
+EObjjvbdzRPNJKXA
+EPCjjvbdBsAbtGWr
+DoDKjvbdJXsahLqQ
+DnbkKvbdlBNOmALA
+DoDLKvbdlrYtzTDi
+EPDLKvbdZtJIxdTO
+DncKjvbdmbJvxPOV
+EPDLKvbdaMkBsUmH
+EPCkKvbdNsUVgFUp
+DoCjjvbdWfYytAPT
+EObjjvbdNHCpMpVL
+EPCjjvbdMgComPtk
+EOcLKvbdeqaWzlDP
+DoCkKvbdFVxopNKF
+EOcKjvbdYkrDsmlN
+DncKjvbdWWiYWEFH
+DoDKjvbdSLYfUfkT
+DnbjjvbdhkeEOVCy
+DoDKjvbdJXsagkpp
+DoDLKvbdZoOIdeZj
+DncLKvbdLiCMRYAS
+DncKjvbdyOTHwsJD
+DncKjvbdvmWANDeN
+DoDLKvbdtTSTYydc
+DoCkKvbddneSjtTr
+EObkKvbdkDMKpftg
+DnbjjvbdbhljKewY
+EPCkKvbdIsZBSlwl
+EPCjjvbdlqxuZsDi
+DnbjjvbdNrtWGeVQ
+EOcLKvbdvBEZSndh
+EOcKjvbdrJAJdmOe
+DoCjjvbdyOTHxTIc
+DoCjjvbdmfdwlnGy
+EOcLKvbdkDMKpgVH
+DoCkKvbdRECaQQdS
+DncKjvbdaMjartlg
+EPCjjvbdVviXuceH
+DnbkKvbdNsUVgFVQ
+DoDKjvbdFkEsDIMu
+EOcKjvbddZyPwyQb
+DoDKjvbdqmZixlIJ
+DoDKjvbdrEEhomvB
+EOcLKvbdlZSqsZHU
+EPCkKvbdehKuqmqH
+DoDLKvbdFxtuBDwb
+EPCjjvbdKjaHvAJy
+DncLKvbdBcpAujMf
+DoCjjvbdNQYRWOHT
+DoCjjvbdHakzEzAD
+EPCkKvbdJTYaSlwl
+DoCjjvbdzitpQETU
+DoDKjvbdvBEZSoFI
+DncLKvbdnBjXXoOV
+DoDLKvbdiZuGMROG
+DoDKjvbdKVtecdfi
+DnbjjvbddjJqvUzn
+EPCkKvbdaMjbStlg
+EOcKjvbdSZjHsDWA
+DnbkKvbdUaCRSqSZ
+DoDLKvbdxZgefXeS
+DncKjvbdjhGkfFnL
+DncKjvbdIjEAJogE
+EPCkKvbdNGcPlpVL
+DncKjvbdUMWPAvOi
+DnbkKvbdatafxKsh
+EObkKvbdjcMLQgUg
+DoDKjvbddeOqavcK
+EOcLKvbdoznELXoA
+EPDLKvbdeOdrjtUS
+DnbkKvbdjKFhJmXr
+EPCkKvbdpxoHfpdY
+DoCjjvbdZLrDsnMN
+EPCkKvbdwyhFexFS
+EOcKjvbdkClKpftg
+DoDKjvbdxnTIYSiD
+DncKjvbdxnShYSiD
+DoCkKvbdFxtuBDwb
+EObjjvbdYkrEUNkm
+DnbjjvbdNQYQvNfs
+EPCkKvbdhlFDnUby
+EOcLKvbdiCObdwRR
+DoCjjvbdVwJXvEFH
+DnbkKvbdBvzchePv
+EObkKvbdZHWdAPSi
+DncKjvbdHgGzYxXg
+DoCkKvbdMJCMQxAS
+EPCkKvbdZLqdTmkm
+DoDLKvbdnCJwYPNu
+EPCjjvbdOSsvGdtp
+DncKjvbdlYrqsZGt
+EOcLKvbdJYUBhLqQ
+DoCjjvbdZisHpGaf
+DnbjjvbdVgxWXfxz
+EPDKjvbdkWXNdBxX
+DoCkKvbdlZTSSyHU
+DncKjvbdjggLeenL
+DnbjjvbdKNAEZfuB
+DoCjjvbdLAkHMaxR
+EOcLKvbdZRNFJNFR
+DoDLKvbdjAQGaPfj
+EObjjvbdjggMGFmk
+DoDLKvbdyfyMAMeX
+DncLKvbdjbkkRHVH
+EOcLKvbdOTTugFVQ
+EOcKjvbdWHxWXfxz
+EPCkKvbdvwMBWBVu
+EPCjjvbdnHEwlnHZ
+DoDKjvbdHEKuiaij
+DoCjjvbdVwIwvEEg
+EPDLKvbdehKvRnRH
+DncLKvbdnVUyjirG
+EObjjvbdfMevgNJk
+EPDKjvbdjbkjqHVH
+DncLKvbdrJAKEloF
+DoCkKvbdGckWJaij
+DnbjjvbdTvMQJtAq
+EPCkKvbdhkddNtcZ
+DnbkKvbdrzMQTBIO
+DncKjvbdsZlQTAgn
+EPDLKvbdOFDtJIjd
+EOcLKvbdnBivwoOV
+DncKjvbdJXtBhLpp
+EPCkKvbdJTYaSmXl
+EOcLKvbdLGFgbBQu
+DncKjvbdnHEwlmgZ
+DoCjjvbdACrYJzJQ
+EPCkKvbdiZuGLqNf
+DnbjjvbdnGdxMmfy
+DnbkKvbdRkZGUgKs
+DoDLKvbdZisHofaf
+EPDLKvbdJKEAJpGd
+DnbkKvbdBsBDUFwS
+EObjjvbdtcDVWuno
+EOcKjvbdBsAbsfWr
+EPDKjvbdrWpMChyR
+DoDLKvbdVTltFkuj
+EPDKjvbdGFjSOJUR
+EOcKjvbdBsAcUGXS
+EPCkKvbdcJNKKfWx
+EPDLKvbdnQZyWKxb
+EPCkKvbdqTtGrSKt
+EObkKvbdjJfIKNXr
+EOcLKvbdVqmxBdkc
+EOcKjvbdFWYopMjF
+DnbjjvbdqdFJPnWB
+DoCjjvbdehKvRnRH
+EPDKjvbdkyTRsZGt
+EObjjvbdozmckYPA
+DnbjjvbdbrcLUDjB
+DoDLKvbdrMyixkhJ
+DoDLKvbdrpWOjCvG
+DoDKjvbdLFehCAqV
+DncKjvbdrWpMCiYq
+EOcKjvbdVTmUFkvK
+EObkKvbdhficZVjV
+EPCkKvbdIsZAsNXl
+DoCjjvbdmfdxNOHZ
+EPDKjvbdznopdblY
+DnbjjvbdLiCMRYAS
+DncLKvbdePEsKstS
+DoDLKvbdUMVoBVni
+DncKjvbdWRnXaeLc
+EObjjvbdrDdiPmvB
+DoDKjvbdDoDKkXDE
+DncKjvbdOAIrtJrA
+EPCkKvbdwzIGGXdr
+EOcLKvbdUQqPUtgm
+EPDLKvbdhlFEOUby
+DncKjvbdZirhPfbG
+EOcLKvbdKVuGEEgJ
+DoDKjvbddePSBvbj
+EPDLKvbdfHjuqmqH
+EPDKjvbdZjSgpHBf
+DncLKvbdunszpjoU
+EPCkKvbdqTtHRrKt
+EObjjvbdfNGXGljL
+EObjjvbdUGznMWue
+DnbkKvbdsPuoJbvG
+EObjjvbdnQZxujxb
+EPDLKvbdczZPwyQb
+DoCkKvbdWXIwvDdg
+EOcKjvbdQvmdDLhD
+DncLKvbdCIkBjiFj
+EObjjvbdjJegjNXr
+DncLKvbdcIlikFvx
+EPDLKvbdRkZFtfjs
+DoCjjvbdczYoxZRC
+EOcLKvbdatagXjsh
+DncLKvbdjcLjqGuH
+DoCjjvbdMSWlyuQz
+DoCkKvbdjuvnDbYX
+DnbjjvbdiMEdOUcZ
+EPCjjvbdcTDKtEKB
+DnbjjvbdwzHeexEr
+EPDLKvbdemGWgNJk
+EObjjvbdakLfOnDA
+EPDLKvbdTfznLvvF
+DoDKjvbdaNLBsUmH
+EOcLKvbdhzVFkqNf
+DoDKjvbdZRNFIldq
+DoDKjvbdlrZVZsEJ
+EObkKvbdbUagXjtI
+DoDLKvbdUyHsykPO
+EObjjvbdkVwNdCYX
+EPDLKvbdUVkpJtBR
+EPDKjvbdrMzJxkgi
+EOcKjvbdSLYfUgLT
+DoCjjvbdMRwNZtpz
+EPDLKvbdIxTaglRQ
+EPDLKvbdJqZdnenF
+DoDLKvbdZMRdTmkm
+DnbkKvbdANHxrvyx
+EPCjjvbdFkErbhNV
+EOcLKvbdWSNxCEkc
+EPCjjvbdiCPCdwQq
+DnbkKvbdbAvEeoow
+EOcKjvbdeFOrBvcK
+DnbkKvbdaRecHtGL
+DnbkKvbdZshhxcrn
+EOcKjvbdqTtHRrKt
+EObjjvbdauBgXjtI
+EOcKjvbdQdCaQRDr
+DoCjjvbdFVxopMjF
+EPDLKvbdIGgZyXwg
+DoDLKvbdRpTfjFdX
+DnbkKvbdSQUGifEX
+DnbjjvbdpxoIHREY
+DoDLKvbdqiAJeMne
+EOcLKvbdCIkBkJFj
+DncLKvbdFfKSNhsq
+DoDKjvbdwWkaVaVu
+EPDLKvbdNeETiJKd
+DnbjjvbdhbOcEvpq
+DoCkKvbdrbGMlHLZ
+DnbjjvbdLAjgMawq
+DncLKvbdlqyUzSdJ
+DncLKvbdYkqdTnLm
+EOcKjvbdYkrDsnMN
+EOcLKvbdnCKXXnnV
+DoCjjvbdDncLLWbd
+DoDKjvbdYpmFJMdq
+EPDLKvbdFpATXHFy
+DoDKjvbdJvUfEEfi
+EPDLKvbdmJEURVSB
+DncLKvbdtbcVWuno
+EOcLKvbdbUagYKtI
+EObkKvbdcJMjKevx
+DnbjjvbdKVuGEFGi
+DoCkKvbdZMRctNkm
+EOcLKvbdYpmEiMdq
+DoDKjvbdYpmEhmEq
+DncKjvbdzjVQQDrt
+EPCjjvbdzHYlAMdw
+EPDLKvbdYkqcsnMN
+EObkKvbdiiehJmYS
+DnbjjvbdDwwktUUM
+EObkKvbdrounjCuf
+DnbjjvbdGGKRmiUR
+EOcLKvbdwzIGFxEr
+EPDKjvbdOEdUJJLE
+DoCkKvbdfNFvgMjL
+DoDLKvbdOEdThhjd
+DnbkKvbdyTOImSCH
+EOcLKvbdzitpQESt
+DoDKjvbduDCuWvPP
+DoCjjvbdTppnuUhN
+DoCkKvbdIBlZdzAD
+DoCjjvbdZQmFJMeR
+DnbkKvbdJXsaglQp
+DoCkKvbdSZigrcWA
+EObjjvbdZsiIyETO
+EPDKjvbdZLqctOLm
+DncKjvbdwyhGFxFS
+DncLKvbdqwPkcIyR
+EPDKjvbdRkYfUgLT
+DoCkKvbdxxIjBpZk
+DncLKvbdqlyjYlIJ
+EPCjjvbdRaceLiYk
+EPDKjvbdjlbLyeHP
+EPDKjvbdrbFmLfkZ
+EPCkKvbdvBEYsPFI
+DncKjvbdSBdElJYk
+EPDKjvbdpxoIHREY
+EPCkKvbdjhHMFfNk
+EPCkKvbdANIYsXZx
+EObjjvbdnGdxNOHZ
+EObjjvbdKQzFPGOF
+DoCjjvbdtunYKRTA
+DnbjjvbdLFfHbBRV
+EOcKjvbdpedEsuaI
+DnbjjvbdYkqcsmkm
+EPCkKvbdbrcLUEKB
+DnbkKvbdNQYQunGs
+DoDLKvbdJcJbqKCx
+EPDLKvbdIxTbHlRQ
+DnbkKvbdvwMAvBWV
+EOcKjvbdfHkVqnQg
+EOcLKvbdbKkfPNcA
+EPDLKvbdVAbQrpqy
+DncLKvbdWRnXaeLc
+EPCkKvbdFpATXGey
+DoDLKvbdyfxlANFX
+DoCkKvbdFVyQQMjF
+EOcLKvbdxnShXrhc
+DoCjjvbdmaivwoOV
+DnbkKvbdbsDLTdJa
+DoCkKvbdUtMtGMVj
+DnbjjvbdNVSqkNAX
+EPDLKvbdWfYytAOs
+EPCkKvbdZyEJnDLr
+EObkKvbdyXhjCQZk
+EObkKvbddoFSkUTr
+EOcKjvbdeATqMxKG
+DnbkKvbdnPyyWKyC
+DncKjvbdkySrTZHU
+DnbjjvbdmfdxNNfy
+EPCkKvbdHlBznXQk
+EPDKjvbdZisIPgCG
+DncLKvbdrEEhonVa
+DoDLKvbdrykosBHn
+EObkKvbdqvpLbiZR
+DoCjjvbdhkeDnUcZ
+DoCkKvbdVwIwudEg
+DncLKvbdyXiJaozL
+DoCkKvbdyzeOSIIh
+EPCjjvbdkVwNcbYX
+DncLKvbdTkuoAuoJ
+EPCjjvbdijFgimYS
+DncLKvbdliEURUrB
+DoDKjvbdURQoUuIN
+DoDKjvbdrMzJxkhJ
+EPCkKvbdqYngfqEY
+EPDLKvbddwzUTrFz
+DoCkKvbdyYIjBpZk
+EPCjjvbdssSSxzEc
+EObkKvbdFejSNiUR
+EPCkKvbdrEFJPmua
+DnbkKvbdiifIJmXr
+EPDLKvbdZLrEUOLm
+EObjjvbdGFiqnItR
+DoCkKvbdjuwNcaww
+DncKjvbdmpZxukYb
+DoDLKvbdqdFJQNua
+EPDKjvbdNQYRWOGs
+DoCjjvbdZeYGzhIb
+EObjjvbdZjSgpHCG
+EObjjvbdhfjDYvKV
+EPCkKvbdJpzFOeme
+DnbkKvbdlhcsptrB
+DncLKvbdFeiqnJTq
+EObjjvbdZxcinCkr
+EPDLKvbdFVyQPmKF
+EObkKvbdelfWfljL
+EOcKjvbdJpydnenF
+DnbkKvbdbVCGwkUI
+EObkKvbdemFwGmJk
+DoCkKvbdBsAbsfWr
+EPDLKvbdJYTbHkqQ
+DncKjvbdyNrgxTIc
+DoDKjvbdGQASvfey
+EOcLKvbdRNYCZOUz
+EOcKjvbdyzeORgiI
+EOcLKvbdZQmEhleR
+EPCjjvbdmttyjjRf
+DnbjjvbdLBLGmBwq
+EOcLKvbdKVuFdFGi
+EPCkKvbdxmsHwsJD
+DoDLKvbdyOTIXriD
+EPDLKvbdZsiJYcsO
+EPCjjvbdjvXOEBxX
+DoCkKvbdlZSqsZGt
+DoDKjvbdADRxKZiQ
+EOcKjvbdzoQREcMY
+EObkKvbdGGKRmhsq
+EObjjvbdJutfDdgJ
+DoDLKvbdUsltFkvK
+EObkKvbdHDkWKBjK
+DncKjvbdLqwMzVQz
+EObjjvbdaRecITfL
+DoDKjvbdakMGPNcA
+DnbjjvbdwXMBWAvV
+EOcKjvbdQwOEDLhD
+EOcKjvbdAMgxrwZx
+DnbjjvbdqqtkNkAm
+DoDLKvbdbhmKKewY
+DoCjjvbdQmYBxnUz
+DnbkKvbdvPTzqKnt
+EPCkKvbdJqZePGOF
+DoDLKvbdTfznMXVe
+DoCkKvbdFyVUaDwb
+DncLKvbdFxuUaDwb
+EObkKvbdhlEcnUby
+DnbjjvbdCJLCKhfK
+DoCkKvbdPyNAGrrK
+EOcKjvbdVgxVxGxz
+EObkKvbdSxKkmzjx
+EOcLKvbdemFwHMjL
+EObjjvbdrEEiPnVa
+DoCkKvbdDjIJvXjA
+EPCjjvbdYTMAmToY
+DoCjjvbdbLMFnmcA
+DoCkKvbdrounjCuf
+EPDKjvbdrJAJeNOe
+DncLKvbdJbicQjDY
+EPCjjvbdmpZxvLZC
+DncLKvbdVrNxCElD
+DnbkKvbdDoDLKwCd
+DoDKjvbdsZkpSaIO
+EPCjjvbdNQYRVnGs
+DoCkKvbdVrOXbFMD
+DoCjjvbdlYrqryHU
+DoDLKvbdVTltGMVj
+DncLKvbdwzHfGXeS
+EPCkKvbdmajXYOnV
+EOcLKvbdZLqdTmlN
+DoDLKvbdqdFJQOWB
+EObkKvbdVgwvXgYz
+EPDKjvbdkMakzFHP
+DoDKjvbdakLfPNcA
+EObjjvbdyYJJbQZk
+DoDLKvbdDigivXjA
+DoDLKvbdHELWJajK
+EObjjvbdZGvdAPTJ
+EOcKjvbdUGzmkvue
+DncLKvbdSZigsCvA
+DoDLKvbddBsMrATm
+EObkKvbdmSZUzSdJ
+DncKjvbdjAPfaQGj
+DoDKjvbdlBMoNALA
+DnbkKvbdJTZArlxM
+EObjjvbdHgHZyXwg
+EPDLKvbdhzUekpnG
+EPDKjvbdEOcKjvbd
+DoCkKvbdjcLkRHUg
+EObjjvbdBiLBkIej
+DnbjjvbdZMSEUNkm
+DoCkKvbdzRPNJJwA
+EPCjjvbdGdKuiajK
+EPDLKvbdrEFIpOVa
+EPCkKvbdKfGHbApu
+EPDKjvbdUtMsfMVj
+DoDLKvbdbVCHYKsh
+EPDLKvbdEztRFMCi
+EOcLKvbdJmADzGta
+DnbjjvbdtSrSxydc
+DoCjjvbdACrYKZiQ
+EPDKjvbdsrqsYzEc
+DoCjjvbduLxXAtAw
+DoCjjvbdEztQdkbi
+DoDLKvbdkClKpgVH
+DoDLKvbdSCDeMJYk
+DoDLKvbdpxoIGqDx
+DoCkKvbdDigjVxKA
+EPDKjvbdGGKSOJUR
+EOcLKvbdiLeDnVDZ
+DnbjjvbdyOSgxShc
+EPDLKvbdNsUWHEuQ
+EOcLKvbdYpmFImEq
+DoDKjvbdZLrDtOLm
+DncKjvbdJvVGEFHJ
+EOcKjvbdZirgogCG
+EPCkKvbdKCjCqJbx
+EObjjvbdgKfzcGAE
+DncKjvbdZjTIQHBf
+DoDKjvbdRDcBQQcr
+DnbkKvbdZQmEiNFR
+EObkKvbdSiZjRABM
+EObkKvbdURROttgm
+EObjjvbdlZSrSxft
+DoCjjvbdNxPVzdOU
+EPCjjvbdqAheAWhE
+EPCkKvbdwXLaWBWV
+DoCkKvbdKDKDQjCx
+EOcKjvbdehLVqnQg
+DoCkKvbdZxdJmcMS
+DncLKvbdDjHjVxKA
+EObkKvbdXrlAmToY
+EOcLKvbdwtleRYlO
+EPCjjvbdtlYWaUBX
+EPCkKvbdiUzFXSVC
+DoCjjvbdcJNJkFwY
+EObkKvbdaRebhUGL
+EOcKjvbdNHDQMotk
+DoDLKvbdyTNhlqbH
+EOcLKvbdKfGIBaRV
+EObkKvbdKaLHMawq
+DoCkKvbdnCKWwoNu
+EPDLKvbdHffzYwxH
+DncKjvbdnGdxMmgZ
+EPCjjvbdNPwpvNgT
+DoDLKvbdYkrEUOMN
+DoDKjvbdTqROuUgm
+DoDKjvbdvBDyTPEh
+DnbkKvbdJKEAKQHE
+EObjjvbdiBoCeWqR
+DnbkKvbdmRyUyrci
+DnbkKvbdJuuGEFGi
+EOcLKvbdFyVVBEXb
+EObkKvbdwyhGFwdr
+EObkKvbdCTBDTevr
+DoDKjvbdjbkkQftg
+EOcKjvbdVAbQrqRy
+EObjjvbdLAkHMawq
+EObjjvbdEztQeLcJ
+EPCjjvbdcIlikFvx
+DncKjvbdZyEJmcLr
+EObjjvbdqceJPmua
+DncKjvbdZnmiEdyj
+EOcLKvbdiGicYujV
+DoCkKvbdFeirNhtR
+DoCkKvbdDjHjVxKA
+DnbkKvbdqFdEsvBI
+EOcKjvbdcImKKevx
+EPDLKvbdQmXbZOUz
+DncKjvbdqcdhpNvB
+EObkKvbdsPvOjCvG
+DoDKjvbdFVyQPmKF
+EOcKjvbdqYnhGpcx
+EPDKjvbdKfGIBaRV
+EPCkKvbdnGeXmNgZ
+DncKjvbdKVtedEgJ
+EObjjvbdCTAbsewS
+DnbjjvbdeEoRavcK
+EPCkKvbdNsUVfeVQ
+EPDLKvbdGdLWKCKK
+DnbjjvbdKfFhCBRV
+DoCjjvbdZLrDtOLm
+EPDLKvbdhtydvrVC
+DoDLKvbdZjTIPfaf
+DoCjjvbdbrcLTdKB
+DncKjvbdzoQRFClY
+DnbjjvbdSKyFuHKs
+EOcKjvbdZQldiMeR
+DncLKvbdkySrTYft
+DnbkKvbdSLZGUgKs
+EPCkKvbduCbuWvOo
+DoDKjvbdsCFlkgLZ
+DoCjjvbdrDdiPmvB
+EPDLKvbdySnJNRbH
+EPDLKvbdDoDKkXDE
+EPCjjvbdijGHjMwr
+EOcLKvbdeJjSWUzn
+EPCkKvbdKWVFdEgJ
+DoDLKvbdVYhTykPO
+EObkKvbdeJiqutzn
+DoCjjvbdRjyFuGkT
+DoDKjvbdHDkWJajK
+EPCkKvbdbKlFnnDA
+EPDKjvbdQwOEDMHc
+DoDLKvbdZshiZESn
+EObjjvbdkyTSSyGt
+DoCkKvbdxUmEpyLn
+EObjjvbdMuSqkNAX
+DncLKvbdbiNJkGWx
+DoCjjvbdWIYVwfxz
+DncLKvbdkVwNcaww
+DoDLKvbdOFEThhjd
+DoDLKvbddndrkUTr
+DnbkKvbdyzeNrHiI
+EPCjjvbdZRNEhldq
+DncKjvbdhlEdNuDZ
+DoCjjvbdqquKmkAm
+DoDKjvbdFyVVBDxC
+EPCkKvbdJuteceHJ
+DnbkKvbdiBoDEvqR
+DoDLKvbdLqvlzUpz
+EPCjjvbdrRuKnLBN
+DnbkKvbdZjShQHCG
+DnbkKvbdcScLTcjB
+EOcKjvbdyNrgxSiD
+EOcKjvbdZirhPfbG
+DoDLKvbdkIGkefOL
+EPDLKvbdkCkkRGtg
+EPDKjvbdbUafxLTh
+EObkKvbdhfjDYvKV
+DoCjjvbdpecdsvAh
+EOcKjvbdpfDeUWAh
+DnbkKvbdPxmAGsRj
+DnbjjvbdZMSEUNlN
+EOcLKvbdqFdFTvAh
+DoCjjvbdWXJXvDeH
+DoCjjvbdqUTfqrLU
+EPCjjvbdvOszqLPU
+EObkKvbdmtuZkJqf
+EOcLKvbdjgfkefNk
+DoCjjvbdhaoCeWqR
+EObjjvbdKaLHMbXq
+DoCjjvbdSLZFtfjs
+DoCjjvbdFfKSOItR
+DnbkKvbdqUUHSSKt
+EPCkKvbdHEKujBjK
+EObkKvbdIsZBSmXl
+EOcKjvbdRDcApQcr
+DoDKjvbduDDVWvPP
+EOcKjvbdLBLGlaxR
+DoDLKvbdIxTbHlQp
+EPDLKvbdrRtkOKaN
+DoCjjvbdRjyFtfkT
+EPDKjvbdGQASwHGZ
+EPDKjvbdMgDPlouL
+EObkKvbdJXtCILqQ
+EObkKvbdrEFJQNvB
+DoCkKvbdeOeTKtUS
+EObkKvbdSQTgJfDw
+EPCjjvbdSQUGiedX
+DoCjjvbdqUUGrRjt
+EPDKjvbdTqRPVUgm
+EPCkKvbdIMBznWqL
+EObkKvbdhancEwRR
+EOcKjvbdrMzJxkgi
+EPCjjvbdhbPDEvqR
+EPDKjvbdZHXEAOsJ
+EPDLKvbdxnShXriD
+DoCkKvbdLLAgvAKZ
+DoCkKvbdhficYvJu
+EObjjvbdZRMeIleR
+DncLKvbdYfwEAOri
+DoDLKvbdDwxMTtUM
+DoCkKvbdWRmwbFLc
+DnbkKvbdNQYRVnHT
+DnbjjvbdjmCMZeHP
+EPDKjvbdaNKbTUlg
+EPCkKvbdidkHVPAO
+DoCjjvbdHfgZxwxH
+EObjjvbdxwhibPyk
+EPDKjvbdFjeTDHmV
+DoDKjvbdiCOcFWqR
+DoCkKvbdJmADyfuB
+EOcLKvbdhficYujV
+DncLKvbdYzbfSJuy
+DoCjjvbdbUagXjtI
+DoDKjvbdjKFhKNYS
+EOcLKvbdCIkCLJGK
+DoDKjvbdZshiZESn
+EPCkKvbdSQTfjFcw
+EObkKvbdiMEcnUcZ
+EPDLKvbdyOTHxSiD
+EPCjjvbdFjeTDHmV
+DnbjjvbdJuuGEFGi
+EPDKjvbdhkeDnVCy
+EPCkKvbdVAaqSprZ
+DncLKvbdVUNTelVj
+DoCkKvbdfILVrNpg
+DncKjvbdNHDQNPuL
+EOcLKvbdLZQirztf
+EObjjvbdGckWKCJj
+EObkKvbdIHGyyXwg
+DncLKvbdiUydwSVC
+DoDLKvbdpecdtWBI
+EOcLKvbdLGFgaaRV
+EOcLKvbdezuxeJUX
+EObkKvbdgGLymgHA
+DnbjjvbdEvZQQNJe
+DncKjvbdJcJbpjDY
+DoDKjvbdIxTahLqQ
+DncKjvbdBcpAvJlf
+EObjjvbdnPyyVkYb
+EObjjvbdfNGWfljL
+DnbjjvbdieLHVPAO
+EOcKjvbdRNYCYmtz
+EPDKjvbdiHJcYuiu
+EObkKvbdMowqVnHT
+DoCjjvbdiUydvrUb
+EObjjvbdZMRcsnLm
+DnbkKvbdaSFcIUFk
+DnbjjvbdZyEKNcLr
+DnbkKvbdZnnJFEzK
+DncLKvbdJSyBSlxM
+DoCkKvbdXsMAmUOx
+EPCjjvbddneSkTtS
+EOcLKvbdVwIxWEEg
+EPCjjvbdxsOJMrBg
+DncKjvbdkIHMGGOL
+DncLKvbdGFjRmhsq
+DnbkKvbdySmiNRag
+EPDKjvbdpyPHgREY
+DnbjjvbdGZUuAcxC
+DnbjjvbdiHKDYvJu
+DoCjjvbdtlXwBUBX
+EObkKvbdTkvPAvPJ
+EOcKjvbdSxLLmzkY
+DncKjvbdhgJcZVjV
+EOcLKvbdZirgogBf
+EOcKjvbdTukpKUBR
+EPDLKvbdQlwaxmtz
+DoCkKvbdNxOuzdNt
+EPDLKvbduCbuXWPP
+EPCkKvbdmbJvwoNu
+EObkKvbdKDKCqJbx
+EPCjjvbdyNsIXrhc
+EPCkKvbdSCEEkiYk
+EObkKvbdOFDshiLE
+DoDKjvbdZnmiFEzK
+EObkKvbdJbjDRKDY
+EObkKvbdYfvdAOri
+DncKjvbdkDLjpfuH
+DoCkKvbdsrqsZZdc
+DoDKjvbdLBLHNBwq
+DncLKvbdDjHjWYKA
+DoDKjvbdZQleIldq
+DoDKjvbdatbGxKtI
+EObjjvbdUWMQKUAq
+EOcLKvbdlhdUQtrB
+EPCjjvbdAMhZTWyx
+DoCjjvbdjhGlGFmk
+DoDLKvbdHgGzZXxH
+EOcKjvbdrykoraIO
+DoDKjvbdjJehJlwr
+EObkKvbdrEEhonWB
+EPCjjvbdiUyeWrUb
+DnbkKvbdNQYRVmgT
+EPCjjvbdVUNUFkuj
+DnbjjvbdEYYMTtUM
+DoDKjvbdYpldhldq
+EPCjjvbdtlYWaTaX
+DoCjjvbdozmdLXoA
+DnbjjvbdZnnJFFZj
+EObjjvbdZshiZDrn
+EPDLKvbdZjShPfaf
+DoCkKvbdrpVnibvG
+DoCkKvbdQwNcblHc
+EObkKvbdxZgefXdr
+DoDKjvbdNddUIhkE
+DncKjvbdcImJkFwY
+DoDKjvbdZirhQGaf
+DoDKjvbdqwPkcJZR
+EPDLKvbdkHgLfFnL
+DncKjvbdlqxuZrci
+DncKjvbdRadFLiYk
+EPDKjvbdIHGyxxXg
+EObkKvbdmpZyVjyC
+EPCkKvbdUaBqSpqy
+EOcKjvbdqZOgfqDx
+EObkKvbdkNBlZeGo
+EObjjvbdOAIrsjSA
+EPDLKvbdEvZPpNKF
+DnbjjvbdczYoxZRC
+DoDKjvbdvAdZTPEh
+DncKjvbdqUTfqrKt
+EPCkKvbdZGwEAPTJ
+EPDLKvbdZMSEUNkm
+EPCjjvbdYkqctNlN
+DnbkKvbdeEnqawDK
+DoCjjvbdKVuGEFHJ
+EOcKjvbdzitopDsU
+DnbjjvbdsBfNLgLZ
+DnbjjvbdcImJkFvx
+EPCkKvbdMgCpNQUk
+EOcLKvbdZQmEhleR
+EPDLKvbdtTRrxzEc
+DncLKvbdKVuFceHJ
+EPCkKvbdyfxlAMdw
+DnbkKvbdsZkosBHn
+EPDLKvbdwWlAvBVu
+DoDLKvbdlqxuZrdJ
+EPDLKvbdMRwMzUpz
+EObjjvbdFkFTCgmV
+EObkKvbdHEKvJbKK
+DncLKvbdkNCMZdfo
+DoCjjvbddoFSkTtS
+EPCkKvbdRpTfjFdX
+DoDKjvbdIGgZyYXg
+EPCkKvbdBiLCLIfK
+DoCjjvbdKQydnfNe
+EPCjjvbdHgGzZYYH
+DnbjjvbdYNqAYUvU
+DncKjvbdGckVjBjK
+DoCjjvbdjhHMFemk
+DnbkKvbdkIGkeenL
+DncLKvbdmaivwnmu
+EPDLKvbdmuVZkJqf
+EPDKjvbdNddUIhjd
+DoCkKvbdRDbaQRES
+DncLKvbdTvLojUBR
+DncLKvbdtSrSxyeD
+DncKjvbdjgflGFmk
+DoCkKvbdQwNdDLgc
+DoCkKvbdEXwksssl
+DoDKjvbdtAHRIAAr
+DoDLKvbdSPsgJecw
+EObkKvbdjggLfGOL
+DoCjjvbdSBdFLhxk
+DoCkKvbdiMEdNuDZ
+DoCjjvbdhtzFWrUb
+EPCjjvbdSKxetgKs
+DoDLKvbddndsLTtS
+DncKjvbdtcCtwVno
+DoDLKvbdACrYJzJQ
+EOcLKvbdyOShXrhc
+EObjjvbdqquKnKaN
+DoCkKvbdnCJvxOnV
+EPDLKvbdFWYpQMjF
+DnbjjvbdnCJvwoNu
+EObkKvbdhfjCyWKV
+DoDKjvbdrNZjZLhJ
+DnbkKvbdyNrgwsIc
+EPCkKvbdSZjITDWA
+DncLKvbdqiAJeNOe
+DoCkKvbdhaoDEvpq
+EOcLKvbdtkwwAtAw
+DncKjvbdsPvOicWG
+DoCjjvbdWXJYVcdg
+DoDLKvbdmIdUQuSB
+DnbkKvbdauBgYKtI
+EOcLKvbdJbicRKCx
+DoDLKvbdsPuoJcVf
+EPCkKvbdfILWRnRH
+EPCkKvbdAMhYrvzY
+DoCjjvbdKWUedEfi
+EPCkKvbdhaoDEvqR
+EObjjvbdxVMeRZMO
+DncKjvbdFaOqZJzm
+DncKjvbdIryArlwl
+EObkKvbdRWmccLgc
+EPCkKvbdsPunibvG
+EOcKjvbdQccBPpcr
+EPDKjvbdssRsYzFD
+DncLKvbdySmiMqbH
+EObkKvbdZLqdTmlN
+EPDLKvbdVAaqTQqy
+DncLKvbdFWZPomJe
+DoDKjvbdUVkojTaR
+DncKjvbdULvPBWPJ
+EObjjvbdUslsfLuj
+DoDKjvbdsBfMlHKy
+DoCjjvbdkySrTYgU
+EPDKjvbdYgXEAPTJ
+EOcLKvbdrzMPsAhO
+DoCkKvbdcyxpXyRC
+DncLKvbdkIGkeemk
+EObkKvbdVqnXbElD
+EObkKvbdMuSqkNAX
+DncLKvbdkNCLydfo
+EOcLKvbdUVlQJsaR
+EOcKjvbdczZPxYqC
+EObkKvbdWIXvXfxz
+DoCkKvbddndsLTtS
+DnbkKvbdFfJqmiUR
+DncKjvbdURROuVIN
+EObkKvbdddnrCXDK
+DncLKvbdZyEJmcLr
+EPCkKvbdVgxVxHYz
+DoDKjvbdFfKRmiTq
+EPDKjvbddCTNSAUN
+DoDLKvbdUxgsykOn
+DoDLKvbdBhjbLIfK
+DoCkKvbdFejRmiTq
+EPDLKvbdmuUykJqf
+DoCkKvbdVTmTfLuj
+DoCjjvbdkNCLydgP
+DnbjjvbdHffzYxYH
+EObkKvbdpxngfpcx
+EPCjjvbdKQzFOfOF
+DncLKvbdOEdThiKd
+EOcKjvbdJSyBTNXl
+DncLKvbdyNsIXriD
+EOcLKvbdJYTagkpp
+DoCjjvbdkMakzEfo
+DoDLKvbdZjSgpGbG
+DnbjjvbdSQUHJfDw
+DncKjvbdRpTgJedX
+DncKjvbdrykosBIO
+EObkKvbdGYttaEYC
+DoCkKvbdZxcjNcMS
+DoCjjvbdRadElIyL
+DoDKjvbdkySqryGt
+EPDKjvbdiHJbyWJu
+EPCjjvbdwzHeewdr
+EPDKjvbdQwNccLhD
+DoCjjvbdbBVeGPow
+EOcKjvbdddnrCWcK
+EPCjjvbdJXtCHkqQ
+EObkKvbdrbFllHLZ
+DncKjvbdACqxKZhp
+DoCkKvbdJXtCILpp
+DncKjvbdEYYMTssl
+EOcKjvbdwjvdHzzG
+EPDLKvbdemGWgMik
+EPCjjvbdqvokcIyR
+DnbkKvbdUaCQrprZ
+DoCjjvbdKCjCqKDY
+EPDKjvbdYSlBMtOx
+EPDLKvbdyXiKBozL
+EObkKvbdZxdKNcMS
+EObkKvbdCDpBVjNG
+DncKjvbdmgExMmgZ
+EObjjvbdHkaznWqL
+EObjjvbdkNCLzEfo
+EPDLKvbdyNrgwsIc
+DncKjvbdnHFYNNfy
+DoCkKvbdDwwktTsl
+EPDLKvbdTlWOaWPJ
+DoDKjvbdmIctRVRa
+EPCkKvbdeEnqbWbj
+EPDKjvbdTYLMNzkY
+DncKjvbdkHgLfGNk
+DncLKvbdnPyxvLZC
+EOcLKvbdjKGHjMxS
+DoCjjvbdiZtfMROG
+EPDKjvbdFeiqmhsq
+EPDKjvbdDoDKjvbd
+EOcLKvbdKRZeOfOF
+DoDKjvbdzoQQeCkx
+EObjjvbdEOcLKwDE
+DoCkKvbdrafNLgLZ
+EObjjvbdMfbomPuL
+DncKjvbdUQqPUthN
+EOcLKvbddjJrWUzn
+DoDLKvbdvBDySoEh
+DnbjjvbdVUMselVj
+DoCkKvbddndrkUUS
+EObkKvbdmpZxvKxb
+EPCkKvbdmbJvxPNu
+EPCkKvbdmfdwlnHZ
+DnbkKvbdZRMdhmFR
+DnbjjvbdYSlBNToY
+DncLKvbdzoQRFClY
+EPCkKvbdVZITzLOn
+DncKjvbdZtIiZDrn
+DncKjvbdFVxopNKF
+EOcKjvbdtTSSxydc
+EObjjvbdUVlQKTaR
+EPDLKvbdkMbLzEgP
+DoDLKvbdKDJcQicY
+DoDLKvbdJmAEZgVB
+EOcKjvbdCWzdJFPv
+DncLKvbddneTLUUS
+EObjjvbdBcoaWJlf
+EPDKjvbdGcjvJbJj
+DoCjjvbdddoRavcK
+EOcLKvbdAMhZSvyx
+DnbjjvbdajlGOmcA
+DoCkKvbdCIkCLJFj
+DnbjjvbdMSWmZtpz
+EOcKjvbdNGcQMpUk
+EOcKjvbdTqROuUhN
+DoCkKvbdFVxoolie
+DoDKjvbdUQpnuUgm
+EPDKjvbdnBiwXnmu
+DnbjjvbdJuuGDdgJ
+EPCjjvbdZLqcsnLm
+EObkKvbdZnmheEzK
+DoDKjvbdXsMAltOx
+EObkKvbdiMEdOUcZ
+DoDKjvbdZRNEhleR
+DoDLKvbdMIbLpxAS
+DoDLKvbdVwIwucdg
+DoCjjvbdRbDeLiZL
+DncLKvbdZMRctNlN
+DoCkKvbdGcjvJbJj
+DnbjjvbdSZihScWA
+EPDLKvbdkDLjqHUg
+DnbjjvbdZisIPfaf
+EObjjvbdmpZyWLZC
+EOcLKvbdrbGNLgLZ
+DnbkKvbdkVvmdBww
+EObjjvbddoFSjstS
+EObjjvbdxwiJbPyk
+EPDKjvbdTvLoitAq
+DoCkKvbdZLrDsnMN
+DoDKjvbdOAJTUJrA
+EObkKvbdURQntuHm
+EObkKvbdkIGkefOL
+DncLKvbdsCFllHKy
+EPCkKvbdatafxKtI
+DoCjjvbdiifHjMxS
+DnbkKvbdZsiIyDsO
+DncKjvbdieKgUoAO
+EPCjjvbdBhkCLIej
+DnbjjvbdDxXktTsl
+EObkKvbdKCjCqKCx
+EOcLKvbdIwsahLqQ
+EPDLKvbdhzUfLpnG
+EObjjvbdbAvEepPw
+EOcLKvbdSLZFuHKs
+DnbkKvbdIidAJogE
+DnbjjvbdJbjDQicY
+EPDLKvbdQwODblID
+EObkKvbdqZOgfqEY
+EObjjvbdkWWnDbXw
+DncLKvbdEvZPpMjF
+EPDLKvbdKQydnfNe
+EObjjvbdUWMQJtAq
+EOcLKvbdqrUjmkBN
+DoDLKvbdJmAEZfuB
+DoCkKvbdhtydvqtb
+DoCkKvbdtAHQhABS
+EPDLKvbdxZhGGXdr
+EPDKjvbdmSZVZrci
+DnbkKvbdZjTHogCG
+EObkKvbdYqMdiMeR
+DoDKjvbddwzUURez
+DoDLKvbdbKlFnnDA
+EPCkKvbdGGKSOJTq
+EObkKvbdLGFgbBRV
+DoCkKvbdKyQjSzuG
+DncKjvbdJcJcRJcY
+EOcLKvbdnBiwYPOV
+EOcLKvbdLGGHaaRV
+EObjjvbddneSkTtS
+DoDKjvbdiLddOUcZ
+EObkKvbdsPvOjCuf
+DnbkKvbdZyEKOClS
+DoCjjvbdyzeORhIh
+DnbkKvbdhkeDmuCy
+EObkKvbdvvkaWAvV
+EOcKjvbdzeZnzdzQ
+DoCjjvbdVAaprqSZ
+EObjjvbdjhGkefNk
+DncLKvbdSKxfVHLT
+EPCjjvbdZRMeImFR
+DncLKvbdFeirOJTq
+DncLKvbdFfJrOItR
+DoDLKvbdmoyyVkYb
+DncLKvbdddoRavcK
+DoDLKvbdauBfxKtI
+EObjjvbdSPtHJfDw
+EPCjjvbdCEQBWJmG
+DoCjjvbdDnbkLWcE
+EPDLKvbdVUNUGMVj
+DnbkKvbdnQZyVjyC
+DnbkKvbdgFkymfgA
+DoDKjvbdRDcBQQdS
+EOcKjvbdtcCuWvOo
+EObkKvbdlrYuZrdJ
+DoCjjvbdZirgogBf
+DoDLKvbdMfcPmPuL
+EOcKjvbdDwwlTtTl
+DncLKvbdwXLaWAuu
+EPDKjvbdUaBqSpqy
+EObkKvbdHlBznXRL
+EPCkKvbdkMakzFHP
+DnbkKvbdqZOgfpcx
+DnbkKvbdUMWOaWPJ
+DncLKvbdMfbolpVL
+EObjjvbdfekynGgA
+EPCkKvbdWWiXvEFH
+DoCjjvbdpxnhGqDx
+DoDKjvbdsQVnjDWG
+EObkKvbdYNqAXtut
+DncLKvbdDnbkLXCd
+EObkKvbdKaLGmBwq
+DoCkKvbdBvzciFPv
+DoDLKvbdjKFgilwr
+EPCkKvbdUaBqTQqy
+DoDLKvbdVgwvYHYz
+EPDKjvbdIHGyyXwg
+EPDKjvbdEXxMTstM
+DnbkKvbdQccBPpcr
+DnbkKvbdMgCpNPuL
+EPDKjvbdSPtHKFcw
+DoDKjvbdkIHMGFnL
+DncLKvbdnGeXmNgZ
+DoDLKvbdhtyeWquC
+EObjjvbdqGEFUVaI
+EOcLKvbdNPwpumgT
+DnbkKvbdZshiYdTO
+DoDKjvbdZMSETmkm
+DncLKvbdRbDdkhyL
+EPCjjvbdTvMQJtBR
+EObkKvbdjvXOEBww
+DncLKvbdrXPkbiZR
+EOcLKvbdFejSOJTq
+EOcKjvbdegjvRnRH
+EPDLKvbdJvVGDeHJ
+EObjjvbdXrlBMtOx
+DncKjvbdFejSNhsq
+EPDKjvbdBiLBjiGK
+EOcKjvbddiirVtzn
+EPDLKvbdVBBqTRRy
+DoCkKvbdeqaWzkcP
+EObjjvbdqYnggREY
+EPDKjvbdEARiNZwX
+EObjjvbdSQTfifEX
+EObjjvbdLBLHNBxR
+EPCkKvbdNHCpMpUk
+EPCkKvbdKVuGDdfi
+EPCkKvbdxrnImRbH
+EOcLKvbdZRNEiNFR
+EOcLKvbdtbcUvuno
+EPCjjvbdJTZAsNXl
+EPDLKvbdFVyQPljF
+DoCkKvbdieKftoAO
+EObkKvbdZMSETnMN
+DoCjjvbddePSBvcK
+DncLKvbdqUUHSSLU
+DoDLKvbdZQldhmEq
+DoDKjvbdOTTugFUp
+DncLKvbdZsiJZESn
+DnbjjvbdtbcUwWPP
+EPDLKvbddwzTtRez
+DnbjjvbdZoNheFZj
+EPCkKvbdKfFgbApu
+DoDLKvbdhytfMQmf
+DnbkKvbdnGeXlnGy
+EPCjjvbdSBcdlIyL
+DncKjvbdbAvFFpPw
+EObjjvbdzoPpeClY
+EOcLKvbdqwQMDIyR
+EPCjjvbdmaivxOmu
+EPCjjvbdIwsahLqQ
+DncLKvbdddoSBwCj
+EOcLKvbdrEEhpNvB
+DoCjjvbdEPCkKvcE
+DncKjvbdePEsLTsr
+DncKjvbdmRyVZsEJ
+DnbjjvbdZLqdTnMN
+EPDKjvbdRbEFMIxk
+EObjjvbdJXsbHlRQ
+DncKjvbdkDMLQftg
+EOcKjvbdOEctJIjd
+DnbkKvbdqTsfrRkU
+EPDKjvbdkIGkeenL
+DoDLKvbdUxhUZjnn
+DncLKvbdwyhFexFS
+EPDKjvbdbLLfOmcA
+DnbkKvbdtbbuXWPP
+EOcLKvbdYpmEhmFR
+DnbkKvbdxmsHxTIc
+DoDKjvbdznoqFDLx
+EObjjvbdmfdxMnHZ
+EObjjvbdYTMBNUOx
+EObjjvbdADRwizJQ
+EOcLKvbdMoxQvOGs
+EOcLKvbdrWolDJYq
+EPCjjvbdeFPRbXDK
+DoDKjvbdrDdhpNvB
+EPDKjvbdZxdKODLr
+EOcLKvbdWSNwadlD
+EOcKjvbdxrmhlqbH
+DoDLKvbdzoPqEblY
+DncKjvbdTkuoBWPJ
+DnbjjvbdrykpSaHn
+EOcKjvbdKWUfDdgJ
+DnbkKvbdZMSEUOMN
+EObkKvbdSBcdkhxk
+DnbjjvbdIGfyyYXg
+EPCkKvbdnBjWwoOV
+EOcKjvbdzaAPGgBl
+DnbjjvbdkVvmdCXw
+DoDLKvbdkDLkQfuH
+DoCkKvbdVqnXbFMD
+DncKjvbdWWiXuceH
+DoCjjvbdBvzdIePv
+DncKjvbdLFfICBQu
+DncLKvbdeFPRawDK
+DncKjvbdjmBkydgP
+EObjjvbdVUMtFkuj
+EPDLKvbdrSUjmkBN
+DoDLKvbdSPsgKFdX
+DoDKjvbduDDVXVno
+DoCjjvbdMuSqjmAX
+EPCkKvbdZyEJmcLr
+DnbkKvbdMfcQMouL
+DoDLKvbdUMWPAuni
+DnbjjvbddZxpYZRC
+EPDKjvbdbAvEeopX
+DnbkKvbddoErkUUS
+DoCjjvbdePErjstS
+EOcKjvbdGKeTDHlu
+EObjjvbdfIKvSORH
+EPCjjvbdUsmTelWK
+EObkKvbdaMkBsVMg
+DoCkKvbdRjxfVHKs
+DnbkKvbdMpYQumgT
+DncLKvbdVwIxWEFH
+DncKjvbdaMkCTUmH
+DoDLKvbdhlFENuDZ
+EPCjjvbdZisIPgCG
+EPCjjvbdZnnJEdzK
+EPDKjvbdGLEsDINV
+EObjjvbdYzcFrKVy
+EPDKjvbdZirhPgBf
+EPDLKvbdKaLGmCXq
+EObkKvbddoErkTsr
+DoCkKvbdRXNdCkgc
+DoDLKvbdEvZQQNKF
+DoCkKvbdZoNhdeZj
+EPCkKvbdhkddNtby
+EPDLKvbdZLrDtNlN
+DncKjvbdRbDdlIxk
+EPCkKvbdEOcKjwCd
+DncKjvbdlqyUyrdJ
+DoDLKvbdNddThhkE
+EOcKjvbdwyhFewdr
+EPDLKvbdiUydwSVC
+DnbkKvbdYzcFqjWZ
+DnbkKvbdiBoCdwRR
+EOcLKvbdpecdsuaI
+EPCkKvbdQlxCYnUz
+EPDLKvbdVvhxWEEg
+EOcLKvbdlZSqryGt
+EPCkKvbdUaCQsQqy
+DoCkKvbdvAdZSndh
+DnbjjvbdmttykKRf
+EPCkKvbdYgWdAPTJ
+DoCkKvbdlYrqsZGt
+DnbkKvbdZsiIxcrn
+DoCjjvbddeOqavbj
+EObkKvbdbVBfwjsh
+EObjjvbdMoxQvOHT
+EPCkKvbdRbEFLiYk
+DoCkKvbdlhdTqUqa
+EOcLKvbdMIbMRYAS
+EObkKvbdDncKkWbd
+DncLKvbdfSAvzkcP
+DnbkKvbdxsOIlqbH
+DoCkKvbdADSYKZhp
+EPCjjvbdZshiZESn
+DoCjjvbdieLGuPAO
+EPCjjvbdkHgMFenL
+EPDKjvbddBrlrAUN
+DncKjvbdddoSCXCj
+EPCjjvbdsQWOibvG
+EObkKvbdKkBHvAKZ
+EObjjvbdkWWmdBww
+EObjjvbdnGeXmNgZ
+EOcLKvbdyNrgwrhc
+DnbkKvbdNddThiLE
+DncKjvbdDjHivYKA
+EObjjvbdWXIxWDdg
+EObjjvbdrMyixlIJ
+EOcKjvbdcyyPxYpb
+DncKjvbdcyxowxpb
+EOcLKvbdhbOcFXQq
+EOcKjvbdHDjuibKK
+DoDKjvbdiVZeXRuC
+EOcKjvbdnBjXYOnV
+DnbkKvbdOTTufdtp
+DoDKjvbdVAbRTRSZ
+DnbjjvbdRXOEDLgc
+EOcLKvbdznopdcLx
+DncLKvbdRNXayOUz
+DncLKvbdSPtHKFdX
+EPDKjvbdxUldqYkn
+DoCkKvbdZRNEiNEq
+EPDKjvbdrbFllGjy
+EPCjjvbdUyHszLPO
+DncLKvbdxwhibQZk
+EOcKjvbdFWYopMie
+EOcKjvbdaNKbTVMg
+DnbjjvbdliETqUrB
+EObjjvbdRXODbkgc
+DnbkKvbdTlWPBWPJ
+EOcKjvbdOFEThiKd
+EObjjvbdMSXMzVQz
+EObjjvbdHDkVjCKK
+EPDLKvbdqFceTuaI
+EOcKjvbdFyUtaDxC
+EOcLKvbdmgExMnGy
+DncKjvbdtlYWaUBX
+DoDKjvbdCDoaWJlf
+EPDKjvbdkyTSTYgU
+DoCjjvbdqqtjnLAm
+DnbjjvbdGYtuAdXb
+DoCkKvbdBhjbLIfK
+EPDKjvbdNPwqVmfs
+DoCjjvbdsrqsYzFD
+EPDKjvbdSPsfjFdX
+EPCjjvbdZyDjNbkr
+EPDKjvbdqZOgfpcx
+EPCkKvbdqGDeUVaI
+DoDKjvbdUVkpKUAq
+DoCjjvbdRpUGjGEX
+DoDLKvbdmgFYMmfy
+EPDLKvbdRpUHKFcw
+DoDLKvbdEvZQPmKF
+DoDKjvbdZshhxdTO
+DoCjjvbdiZuGMROG
+DoDKjvbdfpBzvdYI
+EPCjjvbdmgFYNOGy
+EOcKjvbdNrtWGdtp
+DnbjjvbdWHxVwgYz
+EPCkKvbdJbjDRKDY
+EPCjjvbduWOYJpsA
+DncKjvbdehLVrORH
+DoCjjvbdGFjSOItR
+DoCkKvbdjuwODbYX
+EObjjvbdJTZBSmXl
+DnbkKvbdzQoNIiwA
+EObjjvbdjJfHilwr
+EOcKjvbdJpyeOfOF
+DnbjjvbdqFdEsuaI
+EPDLKvbdUxhTzKoO
+EPDKjvbdBraCsfXS
+DoCjjvbdLAjgNBxR
+EObkKvbdlhdTqUrB
+EPCjjvbdZoOIeFZj
+DnbjjvbdrDdhpNua
+EPCjjvbdIHHZxxYH
+EPCkKvbdiMEdOVCy
+DoDKjvbdhgJbxvKV
+DoDLKvbdUyHsyjoO
+DoDKjvbdGQATXGfZ
+DnbjjvbdvAdYroEh
+EPCkKvbdhtydvrUb
+DoCjjvbdsQWOicWG
+DncLKvbdcJMjLGWx
+DoCkKvbdIwsaglQp
+DoCkKvbdYkrEUOLm
+EObkKvbdVvhxWDeH
+EPDLKvbdZMRdTnLm
+DoCjjvbdADRwizJQ
+DoDKjvbdSwjkmzjx
+DnbkKvbdBiKbLIfK
+EPCjjvbdRyigsDWA
+EPDKjvbdRXOECkhD
+EObjjvbddxZtTqez
+EObjjvbdbBVdfPow
+DncLKvbdMfcQNQVL
+EPDKjvbdVBBqTQrZ
+DncKjvbdZMRctOLm
+DncKjvbdGGJrOIsq
+EPCjjvbdZMSETmlN
+DoDLKvbdhlEdOVDZ
+EOcLKvbdOhAXyAZB
+DoCkKvbdyOTIYSiD
+DoCjjvbdUtNUGMVj
+EObkKvbdWXJYWDdg
+EOcLKvbdBhjbKhej
+EObkKvbdVwIwvDdg
+EPDLKvbdzjUpQDsU
+EOcKjvbdqAiFAXHd
+DoDLKvbdqrUkNjaN
+EOcKjvbdYORAYUvU
+EOcLKvbdcIljLFwY
+DnbkKvbdVwJXvDdg
+DoDKjvbdVBCQsRSZ
+DoDLKvbdmuUzKiqf
+EObkKvbdJYUCILpp
+EPDKjvbdsQVoKCvG
+EPDLKvbdmoyyVkZC
+EPDLKvbdsCGNLfjy
+EOcKjvbdbiNKLGWx
+DoCjjvbdrpVnjDWG
+EObkKvbdfVzxPizs
+DnbkKvbdRXODcLgc
+EPCjjvbdjJfIJlxS
+DoCjjvbdZLqcsnLm
+DncKjvbdjuvnECXw
+DoDLKvbdEPDKkXCd
+DnbjjvbdOSsvGduQ
+DoDKjvbdIMBzmvpk
+EPCjjvbdqrUkOLAm
+EPCjjvbdTkvOaVoJ
+EObjjvbdozmdKwoA
+DncLKvbdDxXkstTl
+EOcKjvbdfMewHMik
+DoDLKvbdGKeTCgmV
+EObjjvbdxnSgwsIc
+EPCkKvbdaaVdepPw
+EObkKvbdqGEFUVaI
+DncLKvbdjblKpgUg
+DoDLKvbdRWnEDLhD
+DnbjjvbdFxuVAcxC
+DncKjvbdqZOhGpcx
+DoCkKvbdfHjvRnQg
+DnbkKvbdwMvANDeN
+EObkKvbdFfKSOIsq
+DoCjjvbdmajXYPNu
+EObkKvbdANHyTXZx
+EPCjjvbdLFfHbAqV
+DoCjjvbdVgwuxHYz
+EPCjjvbdQvmcblHc
+DoDKjvbdaSFbhUGL
+DncLKvbdzHZMANFX
+DncKjvbdySnJNRbH
+DoCjjvbdMpYRVnHT
+EObkKvbddePSBwDK
+EPCkKvbdMfcPmQUk
+EObjjvbdMgCpNQVL
+DoDKjvbdrEFIonWB
+DoDLKvbdFjdsCgmV
+EObjjvbdwtmFRYlO
+DnbjjvbdIwtBgkqQ
+EPCjjvbduaDxrndh
+EPDLKvbdShzKRABM
+DnbjjvbdfHjvRnRH
+EOcKjvbdBiLBjiGK
+EPCjjvbdCEPaWKNG
+DoDKjvbdtbbuWuoP
+DoDKjvbdegkWRmqH
+DnbjjvbdNeETiJLE
+EPCkKvbdjcLkRHUg
+DnbjjvbdjvXOEBww
+EOcLKvbdTlWPAvOi
+DoCjjvbdrMyixkhJ
+EObkKvbdqGEEtWAh
+DncKjvbdbBVeGQPw
+DoDLKvbdpssfqqjt
+DnbkKvbdFWZPomJe
+DoDKjvbdSBcdkiYk
+DoCkKvbdvBEZSoFI
+EOcKjvbdRaceLhxk
+EOcKjvbdJKEAKQHE
+DoDLKvbddZyQYYpb
+EObjjvbdeXzTsqez
+DncLKvbdCSaCtGXS
+EPCkKvbdlZSrSyHU
+EOcLKvbdTJZiqABM
+DncLKvbdvAdYsOdh
+DnbkKvbdcyxoxZQb
+DnbkKvbdhanbdwRR
+EPCjjvbdbBVeFopX
+DncKjvbdGLFTDHmV
+DoCjjvbdiZuGLpmf
+EOcLKvbdJbjCqJbx
+EObkKvbdGdLWJbKK
+DoCjjvbdRkZGVHKs
+DoCjjvbdGckWJajK
+DncKjvbdAMgxrvyx
+EPCjjvbdEPDKjvbd
+EOcLKvbdkDLjqGtg
+DoDLKvbdNPxRVnGs
+DoDKjvbdySmhmRag
+EPCjjvbdVqnXadkc
+EPDKjvbdTulPitAq
+EObjjvbdGLErcHlu
+DoDLKvbdHELWKCJj
+EObjjvbdbVCHYLUI
+DncKjvbdqvpLbiZR
+EPCjjvbdvAdZSoFI
+EOcLKvbdfjfzcGAE
+DnbjjvbdaNKartmH
+EOcLKvbdcTDKsdJa
+DncLKvbdOSsufduQ
+DnbkKvbdyYIiapZk
+DoCjjvbdunszqKoU
+DoCkKvbddndsLTsr
+DoDKjvbdxxJKBoyk
+DoDLKvbdrovOibvG
+EPCkKvbdiLddOVDZ
+EPCkKvbdiBncFWqR
+EOcLKvbdZQldiNFR
+DoCkKvbdOEctJJKd
+DoCkKvbdrMzKZMIJ
+DnbkKvbdVhYVwgYz
+EOcLKvbdQvnDblHc
+DoDLKvbdmJEURVRa
+DoDLKvbdCTBDUFwS
+EPCkKvbdNrsvHEuQ
+DnbkKvbdegkVqnRH
+DoCjjvbddBrlrATm
+DoCkKvbdCJLCLJFj
+EOcKjvbdxZgefXeS
+EPDKjvbdZtJJZDsO
+DoCkKvbdQvmdDMID
+DoDLKvbdRaceLhxk
+DnbkKvbdSBdFLhxk
+DoDKjvbdOTTufdtp
+DoDLKvbdnQZxujyC
+DnbjjvbdZshhyETO
+DoCjjvbdtvOYJqTA
+DncLKvbdRMxBxmtz
+DnbjjvbdEzsqElCi
+EObjjvbdKefHbAqV
+DnbkKvbdmpZyWKyC
+DncLKvbdNQXqWOGs
+EPDLKvbdVTlsekuj
+EPCkKvbdGcjvJajK
+EPDLKvbdIryArlxM
+DoDLKvbdwyhGFwdr
+EPCkKvbdzaAOgGal
+DncLKvbdiHKCxvJu
+EOcKjvbdLBKgMbXq
+DoCjjvbdTppoVVIN
+EPDKjvbdNPxQvOHT
+DnbjjvbdTvLpJsaR
+DncKjvbdnVUyjiqf
+EPCjjvbdVUNTfLvK
+EOcLKvbdDxYLtTtM
+DnbkKvbddePSCXCj
+EPDLKvbdgGLzOHHA
+DoCkKvbdTukpKTaR
+DncLKvbdVUMtGMWK
+EObkKvbdXnRAYVWU
+DncLKvbdyqOmJJwA
+DoDKjvbdFVyQQNKF
+DncKjvbdvOszqLOt
+EPCkKvbdZRMdhmFR
+EPDLKvbdhlFDmuCy
+EOcKjvbdkIHLeenL
+DnbjjvbdqceJQOWB
+DoCkKvbdzitpPdSt
+EPCjjvbdFeiqmhtR
+DoDLKvbdsQVoJcVf
+EPDLKvbdUQpnuVIN
+DoDLKvbdWSNxBdlD
+EPCjjvbdpyPHgQcx
+EOcKjvbdUyHsyjoO
+DoCjjvbdxrnJNSCH
+DoCjjvbdKDKCpjCx
+EPDLKvbdxsOIlrBg
+DoCkKvbdnGdxMnHZ
+EPDLKvbdfHkWSNpg
+DnbjjvbdkHgMGFnL
+EOcLKvbdxmsIYSiD
+DoDLKvbdEXxLsssl
+DoDKjvbdjFLGuPAO
+EOcLKvbdeEoRawCj
+DoDKjvbdyOTIYSiD
+DnbjjvbdIHGyyXxH
+DncKjvbdTqQoUuHm
+EOcKjvbdMfcQNPuL
+DnbkKvbdatbGxKsh
+DoDKjvbdOTUWHEtp
+EPCkKvbdGLFTCgmV
+DoDKjvbdkHfkfGNk
+EObjjvbdJXtBhMRQ
+EObkKvbdRpUHKGEX
+DnbjjvbdiUzFWrVC
+EPCkKvbdliETqUrB
+DnbkKvbdZjTIQHBf
+DoCjjvbdZMSETnLm
+EPDLKvbdFWYoomKF
+EPDLKvbdRaceLhxk
+DoDLKvbdEASJNZwX
+EPDLKvbdGZUtaEXb
+DncLKvbdyNrgxSiD
+EOcKjvbdbVBgXkTh
+EPCkKvbdvOszpkOt
+EObkKvbdKfGHbBRV
+DncLKvbdjvXOEBxX
+EPDLKvbdvAcyTPFI
+EObjjvbdNsUWGeUp
+EPCjjvbdZtIiZDrn
+DoDLKvbdrRtkOLBN
+DncKjvbdptUHSSLU
+DncLKvbdWSOXaeLc
+EPCkKvbdiLeDmuCy
+DoCjjvbdhyuFkqNf
+DnbkKvbdzoPqFDMY
+DoCkKvbdGFirOItR
+DoCjjvbdEObjkXCd
+DnbkKvbdjKFgilwr
+EPDLKvbdVwIwvEFH
+DoDKjvbdfIKvRmpg
+EPDLKvbdOFDsiIkE
+EPDLKvbdGKdrcIMu
+EPDKjvbdZnmiEeZj
+DoDKjvbdKWVFceHJ
+DncKjvbdvBDySneI
+DncKjvbddeOqawCj
+DoCkKvbdEztRFLbi
+EPDKjvbdMpXpumgT
+EPDKjvbdtunYJqTA
+EPCjjvbdegkVqmpg
+EObjjvbdlYsRsZHU
+EOcKjvbdbUagXkUI
+EPDLKvbdANHySvyx
+DnbkKvbdmJEUQtqa
+EPDKjvbdVUNUFlVj
+EPCkKvbdvvlBVaVu
+DoCjjvbdmozZWLYb
+DoDKjvbdwzIFfXeS
+DoDLKvbdNQXpvOGs
+DncLKvbdEYXlTstM
+EPCkKvbdbUbGwkUI
+EOcLKvbdLBLHNBxR
+DnbkKvbdePErkUUS
+EObjjvbdyXiJaoyk
+DncLKvbdVrNxBeLc
+DoCjjvbdaRebhUGL
+EOcKjvbdxsNhmSBg
+EOcKjvbdXrkaMsoY
+EObjjvbdhuZdwSVC
+DoCkKvbdqGEFUWAh
+DoDKjvbdegkVrNpg
+DoCkKvbdtcCtvuoP
+EOcKjvbdmJEUQtrB
+EOcKjvbdWXIwucdg
+DoDLKvbdhgKCyWJu
+EPCjjvbdcSbkUDjB
+EPDKjvbdLrWmZuQz
+EPDLKvbdXrlAlsnx
+DnbkKvbdKNADygUa
+EPDKjvbdyNrhXsJD
+EOcLKvbdIsZBSlxM
+EPCkKvbddndrkTsr
+DnbjjvbdFyUuBEYC
+EPCkKvbdJcKCpjCx
+EObkKvbdbBWFGQPw
+EOcLKvbdFjdrbhNV
+EPDLKvbdrDdiQNvB
+EObkKvbdkHgMGGOL
+EPCkKvbdkySrSyHU
+DncLKvbdaaWEfQQX
+EObkKvbdehKvRmpg
+DnbkKvbdmIdURVRa
+DoDLKvbdvBEZSneI
+DoCkKvbdNdcshhjd
+DncLKvbdZyEKOCkr
+DoCkKvbdVrNwbFMD
+DnbkKvbdnCKXXoNu
+EPDKjvbdSQTgKGDw
+EObkKvbdaRfCgtFk
+EObjjvbdkWXNcaww
+EObkKvbdDihJuxKA
+DncLKvbdnVVZkKSG
+EPCkKvbdVBBqSpqy
+DncLKvbdqGEFUWAh
+DoCkKvbdsPvOjDWG
+DncKjvbdySmiNRbH
+DoDKjvbdraemLfjy
+DoDLKvbdnPzZWKxb
+DnbjjvbdRjxfVGkT
+DoDKjvbdGLEsDHlu
+DnbjjvbdRotHKFdX
+DoCkKvbdRpUGiecw
+DnbjjvbdZjTHogBf
+EPDKjvbdcTCjtDia
+EOcKjvbdrounibuf
+EOcKjvbdVBCRSqRy
+EPDKjvbdEvZPolie
+DnbkKvbdzRPNJKXA
+DncLKvbdBhjbKiGK
+DnbkKvbdqrVKmkBN
+DnbjjvbdBraDTewS
+DnbkKvbdJcKDRJbx
+DoCjjvbdbUbHYLUI
+DoDKjvbdUyITykOn
+DoCkKvbdYlSEUOMN
+EPCkKvbdRpUHKGEX
+EObkKvbdTAFJICPE
+EPDKjvbdrpWPJcVf
+DoCkKvbdZnnJFFZj
+EPCkKvbdkVvmcaxX
+EOcKjvbdyzdnRgiI
+EObjjvbdqAiFAXIE
+DncLKvbdWWiYWDeH
+EPCjjvbdqlzKZLgi
+EObjjvbdauCGwkUI
+DoDLKvbdtTSSxydc
+EObkKvbdbVCGxLTh
+EObkKvbdkWWmdBxX
+EObjjvbdRNXaxnUz
+EOcKjvbdwXLaVaVu
+DncKjvbdqTtGqrKt
+DncKjvbdIjEAJpGd
+EPDKjvbdHffyyXwg
+EObkKvbdSCEFLiYk
+DncKjvbdiVZeXRuC
+DoDLKvbdWWhwudFH
+EPDLKvbdrRuKmkAm
+EObjjvbdxsNhlqag
+EPDKjvbdcJMikFwY
+DoDKjvbdpyPHfpdY
+DncKjvbdwyhGGXdr
+DoCkKvbdkVwODbXw
+DncLKvbdJcJbpibx
+EPCkKvbdsQWPJcVf
+EOcKjvbdZRNEiMdq
+EObkKvbdjvXOECXw
+EObjjvbdZxcjODLr
+DncKjvbdRWmdDMID
+DncKjvbdjvWmcbYX
+DoCjjvbdnBjXXoOV
+DncKjvbdiBnbdwQq
+EPDKjvbdDoDKjwCd
+EPCkKvbdFxuVBEYC
+DncKjvbdFVxopMie
+EOcLKvbdKWUfEEfi
+EPCkKvbdNrtVgEtp
+DoDLKvbdfoazwDxI
+DoDKjvbdqquKmkAm
+EPDKjvbdhbPCeXRR
+DncKjvbdZtIhyETO
+EPCkKvbdQwNdCkhD
+EPDKjvbdhzUfMROG
+DnbjjvbdrpVoKCuf
+EPDLKvbdtlYWaUAw
+EOcLKvbddoErjstS
+DnbkKvbdyzeORghh
+EPDLKvbdZnmhdeZj
+DoCjjvbdcIlikGXY
+EOcLKvbdLAkHNBxR
+DoCjjvbdtkwwBUAw
+DoCjjvbdgGMZnHHA
+DnbkKvbdUsmTfLuj
+EOcLKvbdqZPHgQcx
+EPDLKvbdLqvlytpz
+DoDLKvbdqdFIomvB
+EObjjvbdBhjbKhfK
+EOcLKvbdrMyjYlIJ
+DncKjvbdDncKkXCd
+DnbkKvbdNQXpunHT
+EPDKjvbdZjSgofbG
+DnbjjvbdBiKbLIej
+DoCjjvbdGAoQxizm
+EOcLKvbdwtldqZLn
+DoDLKvbdIrxaSmXl
+DoCjjvbdNHDQMpUk
+EOcLKvbdTkunaWOi
+DncLKvbdNHCpMpVL
+DoDKjvbdelfXHNKL
+EObjjvbdcyxpYYqC
+DoDLKvbdZGwEAOri
+DoDLKvbdIxUCHkqQ
+DoCjjvbdoznEKxPA
+EOcKjvbdbLMGPNcA
+EObjjvbdiiegilxS
+DoDKjvbdZRNFImFR
+DncLKvbdRbDeLhxk
+EPCkKvbdqlzJxlHi
+EOcLKvbdhkeDnUby
+EPCjjvbdhaoDEwQq
+EPCkKvbdFkFScHlu
+EPCjjvbdJKEAKQGd
+DoCkKvbdpxngfqDx
+EObjjvbdUGznLwWF
+EObjjvbdVZHsykPO
+DncLKvbdYlRdUNlN
+EPCkKvbdHDkWKBjK
+DncLKvbdjKFhKMxS
+DnbjjvbdnBjWxPOV
+EObkKvbdtcCtvvOo
+DnbjjvbdTpqPUthN
+DncLKvbdMoxQvOGs
+DnbjjvbdfNGXHMjL
+EPDKjvbdhgJcZVjV
+DoDLKvbdNGbolpVL
+EPDKjvbdatbHYLUI
+DncLKvbdczZPwxqC
+DnbjjvbdZxcimblS
+EPDLKvbdKaKgMbXq
+EOcLKvbdtbcUwWOo
+DnbkKvbdJutfEEfi
+DoCjjvbdmIdURUqa
+EPCjjvbddBrmSATm
+EPCkKvbdXsLaNUPY
+DnbkKvbdNPwpvOGs
+EOcKjvbdIwsaglQp
+DoCkKvbdlhdUQtrB
+DoDLKvbdGdLWJaij
+DoCjjvbdwXMAvAvV
+DnbkKvbdbrbkTdJa
+EPDKjvbdFVxpQNJe
+DoCjjvbdHDkWJbKK
+DnbkKvbdjvXODbYX
+DoCjjvbdemFwGmJk
+DoCjjvbdQdCaPpcr
+EOcKjvbdqcdiQNvB
+DncLKvbdbBWFFoow
+EOcKjvbdKaKgMawq
+EObkKvbdLBKgMawq
+DncKjvbdcbSmSAUN
+DoCjjvbdyOTHwsJD
+EOcLKvbdOStVfeUp
+EObkKvbdHffyyYXg
+EPCjjvbdmuUykJrG
+DoDLKvbdJYTbILpp
+DncKjvbdnGdwlmgZ
+EPDKjvbdZQldhldq
+EObjjvbdUaBpsRSZ
+EOcKjvbdrzLpSaIO
+DnbjjvbdLGFgbAqV
+EPDKjvbdXrlAmUOx
+EPDLKvbdtSqryZeD
+DoDKjvbdtlXwAtAw
+DoDKjvbdaRebgsfL
+EObjjvbdUWLpKUAq
+EObjjvbdQvmccLgc
+EOcLKvbdznopeDMY
+EOcLKvbdIwsbHkpp
+EPDLKvbdziuQPcsU
+EPDLKvbdelevgMik
+DoDKjvbdTAFIgbOd
+DoDLKvbdbBWFGPow
+DoDKjvbdYqNEiMeR
+EOcLKvbdhficYuiu
+EOcKjvbdyTOImRbH
+DncKjvbdiLeDmtby
+EPDLKvbdUsmTekvK
+DoCkKvbdkCkkQftg
+DoCkKvbdVTmUFlVj
+DoCkKvbdTIyjRAAl
+EOcKjvbdbUafxKtI
+EOcKjvbdZsiIxdSn
+DoDKjvbdSCEElIyL
+DnbjjvbdBsAbsfXS
+DoCkKvbdBcpAuimG
+DoCkKvbdVwIwvEEg
+DnbjjvbdajlFoNcA
+EPCkKvbdtSrTYzFD
+DnbkKvbdGFirNhsq
+EOcKjvbdapHHELzd
+DoDLKvbdiUyeXSUb
+DnbjjvbdtAGqIABS
+DnbkKvbdXsLaMsnx
+DoCkKvbdeEnqawDK
+EOcKjvbdDxXkstUM
+DnbjjvbdcyxoxZQb
+DoDLKvbdlrZVZrci
+DoCkKvbdTAEiICPE
+EOcLKvbdpyPHfpcx
+EPDLKvbdVBCRTQqy
+DnbjjvbdmJEUQtqa
+DnbjjvbdkClKqHVH
+EObkKvbdCJKajiGK
+EObkKvbdeAURMxJf
+EPDLKvbdcSbkUDjB
+DncLKvbdsCFmLfjy
+EPCkKvbdIwsahLqQ
+DoCkKvbdrJAJeMne
+DoDLKvbdIHGzYwxH
+DoCjjvbdGckVjBjK
+EObjjvbdegkVqmqH
+DoDLKvbdLKaIWAKZ
+EPDLKvbdaRfChUGL
+DoDLKvbdyYJJaozL
+DoCkKvbdrWpLbhyR
+DoCkKvbdLGGIBaRV
+DoDKjvbdKyRJrztf
+DoCkKvbdjuvnEBxX
+EObkKvbdNeEThhkE
+EPCjjvbdQwNcbkhD
+DoCkKvbdJqZePGOF
+EObjjvbdNGbomQUk
+EObkKvbdkxrqsZHU
+EOcLKvbdrounjDVf
+DoDLKvbdkClLRGtg
+EOcLKvbdbKkfOnDA
+EPCkKvbdRDbaPpcr
+EPDLKvbdkHgLefNk
+EOcLKvbdFVxpPmKF
+EObkKvbdsrrSxzEc
+DnbkKvbdFeirOIsq
+DncLKvbdzitopDrt
+DoCjjvbduWOXjQsA
+EPCkKvbdyXhjCPyk
+DoDKjvbdaaWEfPow
+DncLKvbdvAcySneI
+EObjjvbdADRwjZhp
+EObkKvbdnPyxvLYb
+DncKjvbdijGIJlwr
+EPCjjvbdJcJbqJcY
+DnbkKvbdkMbLydgP
+DoCkKvbdRDbaQQcr
+DoCjjvbdxsOIlrCH
+DnbjjvbdKQydnfOF
+EPDKjvbdcImKKfWx
+DnbjjvbdcImKKewY
+EObkKvbdqdFJPmua
+EObjjvbdajkennDA
+DnbjjvbdZyEKNcLr
+DoCjjvbdKWVFdEgJ
+EPDKjvbdWXIwuceH
+DnbjjvbdqiAJdlne
+EOcLKvbdkyTRryGt
+EPCjjvbdpaJFAWgd
+EPCjjvbdmJDsqVSB
+EPCjjvbdREDAopdS
+DoCjjvbdRpUHKFdX
+DncKjvbdptUHSSKt
+EPCjjvbdiCObdvpq
+DncLKvbdNwnuzcmt
+DncKjvbdqdFIpOWB
+DoDKjvbdjggLefNk
+EObkKvbdrNZiyLgi
+EPCkKvbdaSFcITfL
+DnbjjvbdGLFTDINV
+EPCkKvbdiLeENuDZ
+DncLKvbdZyEJmcLr
+EObjjvbduDCuWvOo
+DoDKjvbdNQXqWNgT
+DncKjvbdVBCRTRRy
+EPCjjvbdSQUGifEX
+EOcLKvbdANIZSvyx
+DoDKjvbdvBDyTPFI
+DnbkKvbdEPCkLWbd
+DoCkKvbdyYIjCPyk
+DnbkKvbdelewGmKL
+EPDLKvbdatbGxLUI
+EPDLKvbdTvLojTaR
+DoCjjvbdhtyeWrVC
+DoDKjvbdzeZnzdzQ
+DnbjjvbdyzdnRhJI
+EPCjjvbduLxWaUBX
+EOcLKvbdkyTRsYgU
+DnbjjvbdCTBCsewS
+EObjjvbdjAPgApHK
+EPDLKvbdwkWdHzyf
+EObjjvbdsPvOicWG
+DoCkKvbdTulPisaR
+DnbkKvbduCcUvuoP
+EObkKvbdZRMdiMeR
+DoCkKvbdSPtHJfDw
+DncLKvbdKaLGlaxR
+DnbkKvbdRpTgKGDw
+DoCjjvbdWXJYWEEg
+EObjjvbdWXJYWDdg
+EOcKjvbdKCjCqKCx
+DnbkKvbdakMGPNcA
+DoDKjvbdwkXDgzzG
+EObkKvbdNHDPlotk
+DncLKvbdyzdmrIJI
+EObkKvbdFkErbhMu
+EPCkKvbdNeDsiIjd
+DoDKjvbdIGfyyXxH
+DoCjjvbdZyDinDLr
+EPCjjvbdemFvfmJk
+EObjjvbdJYTbILqQ
+DnbjjvbdWXIwucdg
+DoCjjvbdiHKCxvJu
+EPDKjvbdfpBzwDxI
+DoCjjvbdaNLCStlg
+EPCkKvbdnVUykJqf
+DoCjjvbdyYIjBozL
+EPCjjvbdzjUpQDsU
+DoDLKvbdZxcjOCkr
+EPCkKvbdeFOrBvcK
+EPDKjvbdKaKflaxR
+EOcLKvbdfMevgMjL
+EPDKjvbdGckWKCKK
+DoCjjvbdKVuFdEgJ
+EObjjvbdfMfWfmJk
+DoDLKvbdMfbomQVL
+EPDLKvbdRkYeuGjs
+EOcLKvbdKfGHaaQu
+EObkKvbdoznDjwoA
+EOcKjvbdUMWPBVoJ
+DoCkKvbdFjeSbgmV
+EPCjjvbdrEFJQOWB
+EOcLKvbdvAcyTOdh
+DnbjjvbdWfYzUAOs
+EObkKvbdTkuoBWPJ
+DnbkKvbdFpASvgFy
+DoCjjvbdczZQXyRC
+DoCjjvbdRDcBQQdS
+DoDKjvbdqYngfqDx
+EObkKvbdWRmwbElD
+EPCjjvbdFyVVBDwb
+EObjjvbdBhjbKhej
+DncLKvbdzaAPGgBl
+EObkKvbdTppoVUgm
+DoCjjvbdbrcLTcjB
+EPCkKvbdGLFTCglu
+DoDLKvbdDwxMUUUM
+EPCjjvbdNQYQumgT
+DncKjvbdmfeXmOGy
+EPCjjvbdwtmFRYkn
+DoCkKvbdsBfMlGjy
+DncLKvbdRpUHKGDw
+EObjjvbdjblLQfuH
+EObjjvbdJYTbHlRQ
+DoCkKvbdmttyjiqf
+DoCkKvbdZQldiMdq
+EPDKjvbdFejSNiUR
+EOcLKvbdjgfkfFnL
+DnbjjvbdMpYQvNgT
+DnbkKvbdUyIUZjnn
+DnbkKvbdJbjDRKDY
+EPCjjvbdeEnrBvcK
+EOcKjvbdyzdnSIIh
+DoDKjvbdDoDKjwCd
+DoDLKvbdCSaDUFwS
+DoDLKvbdIrxaTMwl
+DnbkKvbdRNXayNtz
+DoCkKvbdxxJKBoyk
+DncLKvbdnGdxNOGy
+DnbjjvbdySmhlqbH
+DoCkKvbdxwhjBoyk
+EPCjjvbdZQleIleR
+EPCjjvbdaRfChTek
+EOcKjvbdYTMBNUPY
+DoCjjvbdegkWSNpg
+EObkKvbdziuQPdTU
+EOcKjvbdnCKXYOmu
+DoCkKvbdZnmhddzK
+EObjjvbdzaAPGgBl
+DoDLKvbdePFSjtTr
+EPCkKvbdNrtWGeVQ
+EPCjjvbdelfWfmKL
+DoDKjvbdKxpjSztf
+EPDKjvbdxmsIXsIc
+EPCjjvbddZyPxYqC
+DoDKjvbdvOszqLOt
+DncKjvbdatbGxLTh
+EObjjvbdzoQQdbkx
+DoCjjvbdZRMeImEq
+EOcKjvbdqTtGqqjt
+EOcKjvbdqAheAWgd
+DnbjjvbdySmhmRag
+DncKjvbdjKFhJlwr
+EPDKjvbdqFceUWBI
+DoDKjvbdsBemLgLZ
+EPDLKvbdKQzEoFnF
+EOcKjvbdFjdsCgmV
+EObjjvbdpfEEtWBI
+EPDKjvbdZxcjOClS
+EPDKjvbdnBivwoOV
+EPCjjvbdrylQTAhO
+EPDKjvbdKaLGmBxR
+EPDKjvbdHgGzYwxH
+EObjjvbdkHflGFmk
+DnbjjvbdqGDeUVaI
+EPDKjvbdMgDQNQUk
+DncLKvbdSKyGVHKs
+EOcKjvbdqFdEsvAh
+EOcKjvbdYkrETnLm
+DnbkKvbdqBIeAXHd
+DncLKvbdZQldhmFR
+DncLKvbdFjeSbhMu
+EPCkKvbddePRavcK
+EPCkKvbdssRsYzEc
+EPCkKvbdRadFLhxk
+DnbkKvbdVvhxWEEg
+EOcLKvbdIryArmYM
+EPCkKvbdKfGHbAqV
+DncKjvbdEKIJuxKA
+EPDKjvbdIwsbIMRQ
+EObkKvbdzaAOfgBl
+DncLKvbdeUAUASlv
+DnbjjvbdlqxuZsDi
+DnbjjvbdUWMQKTaR
+EOcLKvbdNGbpNPtk
+EPDKjvbdWSOYCEkc
+DoCkKvbdjggMGGOL
+DoCjjvbdSQUHJecw
+DncLKvbdZyDjODMS
+EObjjvbdfpBzvcxI
+EOcLKvbdTlVoAvPJ
+DnbjjvbdVviYWEFH
+EPCkKvbdZnmiFFZj
+EObjjvbdNGbpNQUk
+DoDLKvbdrbGMkfjy
+DoDLKvbdxnShYSiD
+EObkKvbdJYTahMRQ
+DoDLKvbdoAKzshEO
+DoCkKvbdZxcjOCkr
+EPDLKvbdRWmdCkgc
+EPCkKvbdGFiqnJUR
+DoDKjvbdRzJgsDWA
+DncLKvbdptTfqqjt
+EPDKjvbdmIctRUqa
+EObkKvbdnBiwXoOV
+DnbjjvbdfMevfljL
+EObkKvbdBraDUGWr
+DncKjvbdUxhTzKnn
+DoCjjvbdmfdxMmfy
+DnbjjvbdhuZeWrVC
+DnbkKvbdLiCLpxAS
+DnbjjvbdKfFgbApu
+DnbjjvbdziuPpETU
+DoCjjvbdwuNEqZLn
+EPCkKvbdEXwksssl
+EPCjjvbdhgKCxujV
+DoDKjvbdhlEdOVDZ
+DncKjvbdLAjgMbXq
+DncKjvbdOFEThhkE
+DoCkKvbdANHxrvzY
+EPCjjvbdZtIiZDrn
+DoCjjvbdYpldhmEq
+DncLKvbdqwPlDIyR
+DncLKvbdUtNUFlWK
+EObkKvbdkWXODbYX
+DnbjjvbdRzJhSbvA
+DoCkKvbdEJgjVxKA
+DncKjvbdxnSgxShc
+EObjjvbdbUbHYKsh
+DncLKvbdZoNiFEzK
+EPDKjvbdbiMjKevx
+DnbkKvbdIwsbHlRQ
+EObjjvbdhWyAzzAJ
+EObkKvbdqvpLcIyR
+EObjjvbdGGKSOIsq
+EObkKvbdTpqPUthN
+DncKjvbduaEZTOdh
+EObkKvbdJJdAJofd
+DoCkKvbdEKIJuwjA
+DncLKvbdDnbjkXDE
+DnbjjvbdhbObdwQq
+EObjjvbdunszpkPU
+EPCjjvbdwNWANDdm
+EPDLKvbdozmcjxPA
+EObjjvbdZnmiFFZj
+DnbjjvbduDDUwVno
+EOcKjvbdZjShPfbG
+DncLKvbdADSXiyhp
+DoCjjvbduCcVXWPP
+DnbkKvbdffLzOHHA
+DncLKvbdBdPaWJlf
+EPDLKvbdJvVGEFGi
+EPCkKvbdvwMBWBWV
+EObjjvbdijGHjMxS
+EPCkKvbdaNLCTVNH
+EPCjjvbdbAudeopX
+DoDKjvbdozmcjwoA
+EPCjjvbdYlRctOMN
+DoCjjvbdDoDLKvcE
+EObkKvbdVqmwaeMD
+DnbjjvbdqvolChyR
+EPCkKvbdRkZGVGjs
+DoDKjvbdjvXOEBxX
+DoCjjvbdIHHZyXwg
+DnbkKvbdLBKgNCYR
+EPDKjvbdyNsHxShc
+EOcKjvbdyzdmqhJI
+DnbjjvbdqFcdtVaI
+EObjjvbdrJAKElne
+DncKjvbdTvLpJtAq
+EObkKvbdDoDKjvbd
+EPCjjvbdYlRcsnLm
+DoDKjvbdegkVqmqH
+EPDLKvbdZHXEAPSi
+DoDKjvbdakLennDA
+DncLKvbdrDdiPmua
+DoCjjvbdhbPDEwRR
+EPDLKvbdtcDUvuno
+DnbjjvbdEKHjVxKA
+EOcLKvbdYqMdhmFR
+EPDLKvbdmttzKiqf
+EPDLKvbdTkvPAuoJ
+DncLKvbdVAbRTQqy
+DncLKvbdLBKflbYR
+DoCjjvbdZyDimcMS
+EOcKjvbdFpATXHFy
+EObkKvbdnCJwYOmu
+EPCkKvbdVZHszLPO
+EPCkKvbdCSaDTfXS
+DncKjvbdNVSqjmAX
+EPCkKvbdFjdrbhMu
+EPCkKvbdbsCkUDjB
+EObjjvbdMowpumfs
+DoDLKvbdRotHJecw
+DnbjjvbdTfzmkwWF
+EObjjvbdBcpAvKNG
+DoDLKvbdWHxWXfxz
+EPCjjvbdqUUGrSKt
+DncLKvbdliDsqVSB
+DnbkKvbdBdQAujMf
+DnbkKvbdWXIxVcdg
+DoCkKvbddePSCXCj
+DnbjjvbdZirhPfbG
+DnbjjvbdyXiKBozL
+DnbjjvbdznpREcMY
+DncKjvbdJcKCqKCx
+EPCkKvbdJbibpjDY
+EPDLKvbdkClLRHVH
+EPDKjvbdTvLoisaR
+EOcKjvbdZGwEAPSi
+EPCkKvbdKRZdnenF
+DncKjvbdfMfXGmJk
+EPCkKvbdhfibyWJu
+EOcKjvbdMIbLqYAS
+EPDLKvbdbUbHXjtI
+EObkKvbdCSaDUFwS
+EPDLKvbdGGJqnJUR
+EOcLKvbdDoDKjvbd
+DnbjjvbdFkFTDIMu
+DnbjjvbdgFlZnGgA
+DoCkKvbdakLfPODA
+EPDLKvbdDwwlTstM
+DoCjjvbdMJBkqYAS
+DnbjjvbdiGjCxujV
+EPDLKvbdVwIwuceH
+EPDLKvbdZyEKOCkr
+EPDKjvbddoFTLTtS
+DoCkKvbdXrlAlsnx
+EOcLKvbdZoOIeEzK
+DnbjjvbdaMjbTVMg
+EPDKjvbdeOeTKssr
+DncKjvbdSKxetfjs
+DoCjjvbdpxnhGpcx
+EPDLKvbdmtuZkJrG
+DoCjjvbdYkqdTmlN
+EOcLKvbdJuuGEEfi
+DoCjjvbdhzUfMROG
+DncLKvbdddnrBvbj
+EOcLKvbdWSNwbFMD
+DoDLKvbdtSrTYydc
+EPCjjvbdRjxetgKs
+DncKjvbdFxttaEYC
+EPDLKvbdiBncFWpq
+DnbjjvbdyTOImSCH
+DoDKjvbdcyyQXyRC
+EOcLKvbdZLrEUOLm
+DoCjjvbdXmqAYVWU
+EPCjjvbdUsltFkvK
+DncKjvbdLqvmZuQz
+DnbjjvbdZjTIQGaf
+DoDKjvbdzoPpeCkx
+EPDKjvbdGGKSNhsq
+DncKjvbdtSrSxzFD
+EPCkKvbdyOTHxShc
+DnbkKvbdehKvSORH
+DoDLKvbdWIXvYHYz
+EObkKvbdDoCkLXCd
+DoDLKvbdLBKflaxR
+EPDLKvbdKQzFOenF
+EObjjvbdjFLHVPAO
+EObkKvbdFeiqmhsq
+DoDKjvbdRotHKFdX
+DnbkKvbddZxpYZQb
+DncKjvbdqqtkNkBN
+EPDKjvbdZjShPgBf
+DoCkKvbdNHCpMouL
+EObjjvbdxZgefYFS
+DoCjjvbdNrsvHEuQ
+DoCjjvbdwzHeewdr
+EObjjvbdvPTzpkPU
+EPDKjvbdrounibvG
+DnbkKvbdpstGqqjt
+EPDLKvbdeFOrCXDK
+EOcLKvbdGBPRYizm
+DoDLKvbdNwnuzdOU
+DnbkKvbdRMwaxnUz
+EOcLKvbdDihKWXjA
+EObkKvbdFeirOJTq
+DoDLKvbdSKxeuGjs
+EOcLKvbddndsKssr
+DnbjjvbdiCPDEvpq
+EOcKjvbdMoxQumfs
+DnbkKvbdfNGWfljL
+DnbkKvbdIHGzZXwg
+EObjjvbdTlWPAvOi
+DoDLKvbdnPyyVkZC
+EOcKjvbdkWWmdBxX
+EObkKvbdEJgjWXjA
+DnbjjvbdkMalZdgP
+DnbkKvbdsCGNLfjy
+DnbjjvbdYqMeIleR
+DncLKvbdMgComPtk
+DoCkKvbdMfbolouL
+DncKjvbderAvzlDP
+DnbjjvbdqwQLcIyR
+EObjjvbdcImJkFwY
+EPCjjvbdYzberKVy
+DoCjjvbdEzsqElCi
+EObkKvbdRotGiecw
+EPCkKvbdGLErcINV
+DoCkKvbdYpmEiMdq
+DoDKjvbdJXsaglRQ
+DnbkKvbdFVxpPmJe
+DnbkKvbdxUmEpyLn
+EPCjjvbdLrXMytpz
+DnbkKvbdhtzEvqtb
+EPDKjvbdDxYLstTl
+EPCkKvbdiBoDFXQq
+EPCkKvbdZoOJEeZj
+DoCjjvbduDCuWuoP
+EObkKvbdjcLkQfuH
+DoCkKvbdcImKLGWx
+EPDLKvbdEYXlUUTl
+EOcLKvbdZLqdTnMN
+EOcKjvbdmozYujyC
+DncLKvbdJpzEnfOF
+EOcLKvbdiCPCdvpq
+DncKjvbdADRxKZhp
+DoDLKvbdmJDsqVSB
+EObkKvbdnBiwYPOV
+EObkKvbdqwQMDIxq
+DncKjvbdeFOqbWbj
+EPDKjvbdmfeYMmfy
+DnbkKvbdGLFSbhNV
+DoDLKvbdwkXDgzzG
+EObkKvbdbAvFFpQX
+EPDLKvbdyXhjBoyk
+DoCjjvbdMfbpMouL
+DoCjjvbdREDApRES
+DncLKvbdmajWwnmu
+DoDLKvbdIidAJofd
+DoCjjvbdSZihTCvA
+DoCkKvbduLwvaUBX
+EPCkKvbdiHJbyVjV
+EObkKvbdGYtuAdXb
+DoDLKvbdCTBCtFwS
+EOcLKvbdhlFENtby
+DoCkKvbdySnIlrBg
+EPDLKvbdwuNFQyMO
+DncKjvbdlqxtzTDi
+DoDKjvbdWWhxWEFH
+DoCkKvbdiHJcZVjV
+EPDKjvbdCflGHAzc
+DncLKvbdzROmJKXA
+EPDLKvbdCJLBjhej
+EOcKjvbdVrNwbEkc
+DnbkKvbdUtNUFlWK
+DoDKjvbdLBKflbYR
+EPCjjvbdauBfwkTh
+EPCkKvbdrXQMDJZR
+DnbjjvbdnVUyjjSG
+DncKjvbdiMEdOUby
+DoDKjvbdqiAKFNPF
+EOcLKvbdQdDBQQcr
+DoDKjvbdpxnggQdY
+DncKjvbdtSrTYydc
+DnbjjvbdwzHefXeS
+DoCjjvbdRosfjGEX
+EPCkKvbdnPyxujyC
+EObjjvbdZyEJnCkr
+DnbkKvbdhytelRNf
+EPDLKvbdeYZstSFz
+EObjjvbdTfzmlXVe
+EOcKjvbdbKkenmcA
+DncLKvbdvwMAuaVu
+EObkKvbdwMvAMdEm
+EOcLKvbdkHflFfNk
+EPCjjvbdzoPpeDMY
+DoCjjvbdiLeDmuCy
+EOcKjvbdRpUGjGDw
+DnbkKvbdUslsekuj
+EPCjjvbdmJEURVRa
+DncLKvbdZjSgofaf
+EOcLKvbdaMjasUlg
+DoCjjvbdREDBPpdS
+DnbjjvbdIwsaglQp
+DoCkKvbdkNCLzFHP
+DoDLKvbdaRfChUFk
+EPCjjvbdrRtjnKaN
+EPCkKvbduoTzpkOt
+EOcKjvbdnHFYMmfy
+EOcKjvbdHDkVjBjK
+EObjjvbdEXxMTssl
+DnbjjvbdNPxRWOHT
+EObjjvbdiZtfLpmf
+EObjjvbdTvLojTaR
+DoDKjvbdKkBIWAKZ
+DoDLKvbduCbtwVno
+DncLKvbdmttzKjSG
+DncLKvbdbBVdfQQX
+EObkKvbdyXiKBpZk
+DncLKvbdzGxlAMdw
+DoCkKvbdMpXpvNfs
+DoCkKvbdKQydoGOF
+EPDLKvbdTfzmlXVe
+EPDKjvbdQccBPqES
+EPCjjvbdZtJIyESn
+DoCjjvbdVrOXbElD
+DnbjjvbdbLMGOmcA
+DnbkKvbdnPzZWKyC
+EPDLKvbdmajWwoOV
+EObjjvbdQwOEDMHc
+EPCkKvbdTvMQKUBR
+DoCjjvbdOTUVgEtp
+DoCkKvbdIHHZyXxH
+EPDLKvbdDoDLKwDE
+EObjjvbdiZtfMQmf
+EObjjvbdijGHimXr
+DoDKjvbdVrNxCElD
+EPDLKvbdJutedFGi
+DnbjjvbdmSZVZsEJ
+DncKjvbdqlzKYlIJ
+EOcKjvbdfelZnGgA
+EOcKjvbdYlRctOLm
+DoDKjvbdPxmAHSrK
+EPCjjvbdWWiYWEEg
+DoCjjvbdbAvFFoow
+EOcKjvbdFjeSbglu
+EPDLKvbdlqyVZsEJ
+EOcKjvbdddoRbXDK
+EPCkKvbdaRecHtFk
+DncLKvbdSKyGUgKs
+DoDLKvbdcyyPwyQb
+DoDLKvbdnVUzKjRf
+EObjjvbdYkqdUOLm
+EObkKvbdRbEEkhyL
+DncKjvbdtAHQhAAr
+DnbkKvbdVqmwbFMD
+EOcLKvbdznoqFDLx
+EOcLKvbdEXxLtTsl
+DnbkKvbdtumwipsA
+EObjjvbdmJEUQtqa
+DncKjvbdxwhjCPyk
+DnbkKvbdyfyMANFX
+DncLKvbdiVZeXRtb
+EObkKvbddtAUATMv
+EOcKjvbdxnSgwriD
+EObjjvbdlrZVZrdJ
+EPCkKvbdsBelkfkZ
+DoDKjvbdFVyPomJe
+EPCkKvbdQmYBxnUz
+EOcKjvbdSBdFLhyL
+DncLKvbdmJETpuSB
+DoDLKvbdRECaPpcr
+DncLKvbdIxUBglRQ
+DoCjjvbdpssfrSLU
+DnbkKvbdSQUHJedX
+EObjjvbdkySrTZHU
+EObkKvbdZtIiZETO
+DoCjjvbdtumwipsA
+DoCjjvbddBrlrAUN
+EPCjjvbdKCjDQibx
+DoCjjvbdQccAopdS
+DoDLKvbdSBceLiYk
+EPDKjvbdREDAoqDr
+EOcKjvbdZQleJMeR
+DoCkKvbdEARiMywX
+EPDKjvbdkDLkQgUg
+DncLKvbdFjdsDIMu
+EPCjjvbdlrYtysDi
+EPCkKvbdezuxeIsw
+EObkKvbdyNsHxTJD
+DnbkKvbdemGWgMik
+DoDLKvbdBhkCKhej
+EOcLKvbdjvWmcaww
+EPDLKvbdqTsgRrLU
+EObkKvbdZyDimcLr
+EPCjjvbdlrYtzTEJ
+DoCkKvbdHgGyyYXg
+DoCkKvbdZoNhddyj
+EPDKjvbdhtzFWquC
+EPCkKvbdDoCkKwDE
+DoDLKvbdsrqsZZeD
+EPCkKvbdiHJbxuiu
+DoCjjvbdhlFEOUcZ
+EPDKjvbdDigiuwjA
+EPDKjvbdQdDBPqES
+DoCjjvbdcTCjsdKB
+DncLKvbdUsmUFkuj
+EPDLKvbdnHEwlnGy
+EOcLKvbdxVNEqYkn
+DoDKjvbdEuxopNJe
+EObkKvbdkClLQfuH
+EPCjjvbdcTDLUEKB
+EOcKjvbdEPDKkXDE
+EPCjjvbdXsLaNUOx
+DoDKjvbdFWZQQNKF
+EPDLKvbdUtMtFlVj
+EOcKjvbdzaAPGfal
+DnbkKvbdHlBznXRL
+DoDLKvbdTlVoBWPJ
+EPCkKvbdDoCjkXDE
+EOcKjvbdrzMQTAhO
+EOcLKvbdozmdLXoA
+DoDLKvbdzQnmIjXA
+DoCkKvbdmgExMmgZ
+EPCkKvbdzjUoocrt
+EOcLKvbdwyhGFweS
+EOcLKvbdWWhxVceH
+DncLKvbdqqtkOKaN
+DoCkKvbdOTTvHEuQ
+DoDLKvbdjJehKMwr
+DoCjjvbduDCtvuoP
+DnbjjvbdqdEiPmvB
+DnbjjvbdhtzEwRuC
+DnbkKvbdRkYetfkT
+DoDKjvbdCDpBVjNG
+DoCkKvbdcSbjscjB
+EPDLKvbdYpldiMdq
+DoCjjvbdaaWEfPow
+EOcKjvbdqZPHgQdY
+DoCkKvbdeOdrjtUS
+DoDLKvbdFaPRZJzm
+DnbjjvbdRECaPqES
+DncKjvbdaMjaruMg
+EObjjvbduVnYJpsA
+DnbkKvbdqTsfrSLU
+DncKjvbdYqMeJMdq
+EOcKjvbdvvlBWAuu
+DnbjjvbdUxgtZkOn
+EOcKjvbdOSsufduQ
+EOcLKvbdtumxJqTA
+DncKjvbdIryAsNXl
+DoDKjvbdMuTRkNAX
+DoDLKvbdxnSgwrhc
+EOcKjvbdiHKCxujV
+EObkKvbdeKJrVtzn
+EPDLKvbdjhHMGGNk
+EOcLKvbdkVwNdBww
+EOcLKvbdygZMANEw
+EPDLKvbdRXODcLhD
+EPCjjvbdSPsfjFcw
+DoDKjvbdYpleIldq
+DoDLKvbdOEcsiIjd
+DnbjjvbdddoRavbj
+DncLKvbdHDkWKBjK
+DoCjjvbdxxJKBoyk
+EPDKjvbdYkqdUNkm
+DoDLKvbdDnbjjvcE
+DoCkKvbdVvhxVceH
+EPDLKvbdWRnXbFMD
+EObkKvbdliEUQtqa
+EPCkKvbdNQXqVmfs
+EOcLKvbdIGfyyYYH
+DncKjvbdxUldpxlO
+DoDKjvbdznopdcLx
+DncKjvbdHDkVibKK
+EPDLKvbdjlbLydgP
+DoDKjvbdYTMAltOx
+DoDKjvbdcSbkUEKB
+EPCjjvbdzoQREblY
+EOcKjvbdZxcinDMS
+DoDKjvbdZyDjODMS
+DoCjjvbdxZgfFwdr
+EPDLKvbdaMkBsVMg
+EPCkKvbduDDUvuno
+DncKjvbdsCFmLgKy
+DoDLKvbddeOrCWcK
+DncLKvbdNddThhjd
+EOcKjvbdBvzcheQW
+EPDLKvbdeEnqbXCj
+DoCjjvbdNrtVfduQ
+EOcKjvbdZQmEiNFR
+EPCkKvbdGFjSNiTq
+EPDKjvbdZxcinCkr
+DoCjjvbdkNBlZdgP
+DoCkKvbdEYXkstTl
+DncLKvbdYpmEhmEq
+EOcLKvbdePFSkTsr
+DoCjjvbdemFvfmKL
+DnbkKvbdemFwGljL
+EPDLKvbdmbJvxOnV
+EPCjjvbdtbcVXVoP
+EOcKjvbdFkErcHmV
+DoDKjvbdVUMtFlWK
+EOcLKvbdkMakydfo
+DnbjjvbdIMBznWqL
+EObkKvbdptUHRrLU
+DnbkKvbdjJfHilwr
+EPCjjvbdGYuUaDxC
+EObjjvbdmtuZjjRf
+DncLKvbdkCkkQfuH
+DoDLKvbdtlXwBUBX
+DncLKvbdCWzchePv
+EObkKvbdrEEiPmua
+EOcLKvbdYqNFIldq
+DoDLKvbdfILWRnQg
+DoDLKvbdqUUGrRkU
+DoCjjvbdfMfWflik
+EOcLKvbdOTTugEuQ
+DncLKvbdjvWnDaww
+EOcLKvbdsPuoKDVf
+EPDLKvbdZirhPfaf
+DoCjjvbdDwxLsstM
+DnbjjvbdfHkWRmpg
+DncLKvbdrpWOibuf
+EPDLKvbdZtIhyESn
+DncLKvbdwygfGYEr
+EPCjjvbdeEoSCWcK
+EPCjjvbdjuvmdBww
+EObjjvbdqUTfqqjt
+EOcLKvbdZjSgogBf
+DoDKjvbdYqMdiMeR
+DoCjjvbdKefICApu
+DoDLKvbdMfcQNQVL
+EPCkKvbdjggMGGNk
+EObkKvbdCDoaVjMf
+EObkKvbdWWiXuceH
+EOcLKvbdURROuVHm
+DnbjjvbdpssfrSLU
+DncKjvbdgFkzNgHA
+DnbjjvbdaSFbgtFk
+DncLKvbdIxTahMQp
+EPDLKvbdKWVFceGi
+DncKjvbdFVyPomKF
+DoDKjvbdZirgpHBf
+EObjjvbdVqmwadkc
+EPCkKvbdieLHVPAO
+DncKjvbdZLqdUOMN
+DoDKjvbdWWiYWDeH
+EObkKvbdQwNdClID
+DnbjjvbdMoxRVnGs
+DncLKvbdrDdiPmvB
+DnbjjvbdZQleJNFR
+EOcLKvbdrDdhpOVa
+EPDLKvbdYqNFImFR
+DoDKjvbdEYXlTtUM
+DoCjjvbdhuZeWqtb
+EPDKjvbdMfcPlpVL
+EOcKjvbdNQYQvNfs
+DoDKjvbdiUzFXSVC
+DoCkKvbdmRxtzSci
+DnbjjvbdbiMikGXY
+DoCjjvbdQdDBQQdS
+EObjjvbdqZPIGqDx
+DoCkKvbdkWWmdBxX
+DoDKjvbdKxpirzuG
+DoCjjvbdlBNPNALA
+DoCjjvbdhzVGMROG
+DoCjjvbdzoQREcMY
+EPDKjvbdlAlnmALA
+EPDLKvbdwuMeRZLn
+EOcLKvbdYqMdiNFR
+EObkKvbdOTTugEuQ
+EOcKjvbdYTMAmUOx
+DnbjjvbdRDcBQRES
+DoDLKvbdidkHVPAO
+EPCkKvbdSKyFtfjs
+DoCjjvbdhytelQmf
+DncLKvbdEztRElCi
+EPDLKvbdRWnEDLgc
+DoDKjvbdwuNFQyLn
+EObkKvbdGLFTDHmV
+DnbkKvbdShyiqABM
+EObkKvbdUaCQsRSZ
+EOcKjvbdjuwNcbXw
+DnbkKvbdmfeXlnHZ
+DncKjvbdsPuoKDVf
+EOcKjvbdNGbomPtk
+DoDKjvbdvPTzpkOt
+EPDKjvbdJqZdneme
+DncKjvbdqTtGqqkU
+DnbkKvbdjggLeemk
+DoCjjvbdVZIUZkOn
+EPCkKvbdzjVPodTU
+DncKjvbdnBjXYOnV
+DoDKjvbdHgGzYxYH
+EPCkKvbdSZigsCvA
+EPCjjvbdtbbtvuno
+DoDKjvbdPIAXyAZB
+EObjjvbdRNXaxmtz
+DoCkKvbdUyITykPO
+EPCkKvbdssRryZeD
+EObkKvbdJuuGEFGi
+DoDLKvbdxZgfGXeS
+EObjjvbduoTzqLOt
+DoDKjvbdbrbkTcjB
+DncLKvbdxxIiaoyk
+DoCjjvbdFxtuBDxC
+EPDLKvbdzaAPGgBl
+EPDLKvbdpxnhGqDx
+EOcKjvbdtSqsZZeD
+EOcLKvbdMowpvOGs
+EObkKvbdVBCRSpqy
+DoCkKvbdZRNEiMeR
+EPCjjvbdczYowyQb
+DncKjvbdjgfkfGNk
+DnbkKvbdssSTYzFD
+EOcLKvbdVhYWYGxz
+DncKjvbdKDJcQibx
+DncKjvbdZHWdAPTJ
+EPCkKvbdFjdsChNV
+DoDLKvbdJcJcRJcY
+EPCjjvbdRjyGVHLT
+DnbkKvbdBcpBWKMf
+DoCjjvbdxUmEpyMO
+EPDKjvbdZoNiFEzK
+DoCjjvbdPIAYZAZB
+EOcLKvbdFejSOIsq
+DoDKjvbdjggMGFmk
+EObkKvbdWRnXadlD
+EObkKvbdnGdxMmfy
+DoDLKvbdLBKgNBxR
+DoCjjvbdaSGChTek
+EPCkKvbdSCEElIxk
+EObjjvbdIxTbHlQp
+EPCkKvbdOEcshhkE
+EOcLKvbdbsCjsdKB
+DncLKvbdCSaDUGXS
+EPCjjvbdRzJgsDWA
+EPDLKvbduCbuXVno
+EOcLKvbdGdLViajK
+DncKjvbdCWzdJEpW
+DncKjvbdjuwODbXw
+DncLKvbdqUTfqqjt
+EOcKjvbdxUmFRYkn
+DoCjjvbdVAaqSqRy
+EPDLKvbdaMkBsUlg
+EOcKjvbdGLFTCgmV
+EPCkKvbdZeYGzgiC
+DoCjjvbdwXLaWBVu
+DoCjjvbdelevgMik
+EPDKjvbdkHgMGGOL
+DoCjjvbdcJMjKewY
+EOcLKvbdwzHfGYEr
+DncLKvbdlZTRryGt
+EOcLKvbdfVzwoizs
+EPDKjvbdhzUelRNf
+EPCkKvbdiHKCxvKV
+EOcKjvbdGFjRmhtR
+EPDLKvbdGLEsChNV
+DoDKjvbdYORAXuWU
+DnbjjvbdpstHSSKt
+EObkKvbdegkVqmpg
+EPDLKvbdhyuGMQmf
+EObkKvbdliDtQtqa
+DoCkKvbdfNGXGlik
+DoCkKvbdHfgZyXwg
+DoCjjvbddndsKssr
+EPCjjvbdZMSDsnLm
+EObkKvbdEXxMTstM
+EPDKjvbdJvUecdfi
+DnbkKvbdVUMsekuj
+EPCjjvbdPyNAGsSK
+DoCjjvbdMSWmZuQz
+EObkKvbdBcpBVjNG
+DnbjjvbdezuxdiUX
+EPCjjvbdBdQAvJlf
+DncKjvbdOTUWHFVQ
+DoDKjvbdaSGDIUFk
+EOcKjvbdUGzmlWvF
+EOcLKvbdjlakydfo
+DoCkKvbdWSOXaeLc
+DoDKjvbdznpRFDLx
+DoCkKvbdwtldpxlO
+DoDLKvbdGdLVjBjK
+EObjjvbdmttykKSG
+DoDKjvbdZjShQGaf
+DoDKjvbdrDdhomvB
+EPDLKvbdiUyeXSVC
+DncKjvbdIsYaSmXl
+DnbjjvbdVhXvYHYz
+EPDKjvbdwzHfGXdr
+EOcKjvbdxsOJMqbH
+DoCjjvbdehKuqmqH
+EPCjjvbdZdxGzhJC
+EOcKjvbdsCGMlHLZ
+DoCjjvbdOEcshhkE
+DoCjjvbdEzsqElDJ
+DncLKvbdURRPVVIN
+EPCkKvbdZoOJFEzK
+DnbjjvbdBiKajhfK
+EOcLKvbdbUafwkTh
+EOcLKvbdVZHszKoO
+DnbkKvbdGKdsDIMu
+DnbkKvbddoFSkUUS
+DnbjjvbdPxmAGrqj
+EPCjjvbdKNADzHVB
+EPCjjvbdcyxpXxqC
+DnbkKvbdLBLGmBxR
+EPDKjvbdFWYopNJe
+EPCkKvbdcJNKKewY
+DoCjjvbdGLErcHmV
+EPCjjvbdWXIxWDdg
+DnbkKvbdQvmcbkhD
+EOcLKvbdbVCGwjtI
+DoCjjvbdmgFYMmfy
+EPDLKvbdQdDApRES
+DnbkKvbdWWhwvEFH
+DnbjjvbdxZhFexFS
+EPCkKvbdCIjakJGK
+EPCkKvbdKQyeOfOF
+DncKjvbdEObjkXDE
+DnbjjvbdNGcPlotk
+DoCjjvbdVUMtGMVj
+EPDLKvbdelfWgNKL
+DnbkKvbdqwPlDJZR
+DncLKvbdbiMikFwY
+EObkKvbdkNBkzEgP
+DoCkKvbdmuUyjiqf
+DncKjvbddneSjtTr
+EPCkKvbdRkZFtgLT
+EObkKvbdRjyGUgLT
+EPCkKvbdKaKgMaxR
+DnbkKvbdZMRdTnMN
+EPCkKvbdqZOhGpcx
+EPCkKvbdxwhjBozL
+DncKjvbdGckViajK
+EPCkKvbdiifHilxS
+EOcLKvbdqUUGrRjt
+EPCjjvbdbhljLGWx
+DnbkKvbdhgKCxujV
+DoDLKvbdJSyAsNXl
+DoDLKvbdjgflFenL
+EPCkKvbdMJBlQxAS
+DncLKvbdUMVoAvPJ
+DoCkKvbdkCkjpgVH
+EPDKjvbdqGEEsvAh
+EObkKvbdmRxuZrci
+EObjjvbdNdctIhjd
+EPCkKvbdCSaDTevr
+EPCjjvbdRDcAopcr
+EObkKvbdwtmEpyMO
+EOcKjvbdqZPHfqDx
+EOcLKvbdaNKbStmH
+EOcLKvbdaSFcHsfL
+DnbkKvbdRosgJecw
+EObkKvbdkySrSyGt
+EOcLKvbdwuMdqYkn
+EPCjjvbdrDdhonWB
+EPCkKvbdiBoDEwRR
+EPCkKvbdEztQdlCi
+EObkKvbdFyUuBEXb
+EPDKjvbdOAIsUJrA
+EPDKjvbdKCicRKCx
+EObjjvbdSZihSbvA
+DncLKvbdvAdYsPEh
+DncKjvbdySnImSCH
+EObkKvbdiVZeXRtb
+EOcKjvbdsCFllHLZ
+EPDKjvbdZeXfzgiC
+DnbjjvbdMpXpvNgT
+DoDLKvbdsCFllHKy
+DoCkKvbdqYoHfpdY
+DnbjjvbdRzKHrbvA
+EOcKjvbdNHComPtk
+EOcLKvbdCJLBjiGK
+EPDLKvbdsZlPsAhO
+DnbkKvbdemFvgMik
+DoCjjvbdFyUuBDwb
+DnbjjvbdrafMlGkZ
+DncKjvbddZyPxYpb
+EObjjvbdxZhGFwdr
+EPCkKvbdEXwlTssl
+DnbkKvbdANIYrvyx
+EObjjvbddePRawCj
+EPDKjvbdyNsIXrhc
+EPCkKvbdhkeEOVDZ
+DoDLKvbdAMgxrwZx
+EPDLKvbdsQWPJbvG
+DoCkKvbdkVvmcbXw
+EPDKjvbdJYTbIMQp
+DncLKvbdBsAcTewS
+DncLKvbdxrnJNRag
+EOcLKvbdmSYtzSdJ
+EObkKvbdqdFJQNua
+DoCjjvbdZyEKOCkr
+DoCkKvbdZLrEUOLm
+EPCkKvbdRNXaxnUz
+EPDLKvbdnUuZjjRf
+EObkKvbdmbKXYOmu
+DnbkKvbdlZTSTYgU
+EPDKjvbdGYuUaDxC
+DncLKvbdFyVVAcxC
+DoDKjvbdEvZPpMjF
+EPDLKvbdSwjlNzjx
+EPCjjvbdbKkeoNcA
+DoCkKvbdMfcQMotk
+DnbkKvbdyTNiNRbH
+DncLKvbdFWYpQMjF
+EPCkKvbdEvYopMjF
+DncKjvbdeKJrWUzn
+EOcKjvbdpssfrSLU
+EObjjvbdKCjDRJbx
+DnbkKvbdeUAUATMv
+EPDLKvbdjKGIJlxS
+DnbkKvbdpssfqrLU
+EPDKjvbdqZPHgQdY
+EPDLKvbdeAURNXif
+DoCjjvbdypoMhiwA
+EPDLKvbdGYtuAdXb
+EObkKvbdRaceLiYk
+DoCjjvbdXsMBNTnx
+EOcLKvbdKCjCqKCx
+DoCjjvbdYSlAmUPY
+EPDLKvbdpstGrSKt
+EPDKjvbdhtyeXRuC
+EObjjvbdtlYXBUBX
+EObjjvbdRMxByNtz
+EObjjvbdhanbeWqR
+EOcKjvbdpyPIHQcx
+EPDLKvbdrRtjnLBN
+DoDKjvbdNQYQvNgT
+DnbjjvbdbsDKsdJa
+DnbjjvbdDxYMTssl
+EPDLKvbdnCKWxOmu
+DncKjvbdILazmwQk
+DoDKjvbdhgJcYuiu
+DoCjjvbdlYrrSyHU
+EOcKjvbdVUNUFkvK
+EObjjvbdRyjHrbvA
+DoDLKvbdDnbkKvbd
+EOcKjvbdaNKbStmH
+DnbkKvbdjblLRGtg
+DncKjvbdxUleQyLn
+EPDKjvbdLGFhBaQu
+EObkKvbdqmZiyLgi
+DoCjjvbdJuuGEFGi
+EPDKjvbdqmZixlIJ
+DoCjjvbdXnRAYVVt
+EOcLKvbdWIYVxGxz
+EPCkKvbdxZgfGYEr
+EPDKjvbdfNGWfmKL
+EPDKjvbdbrbjscjB
+DoDKjvbdsPunjCvG
+DoDKjvbdziuQQDsU
+DoDLKvbdbhlijfWx
+EPCkKvbdhgKCyWKV
+EPDLKvbdGLEsCgmV
+EOcKjvbdmIcspuSB
+EPDKjvbdIwsbILqQ
+DoDLKvbdpedEsvBI
+DncLKvbdsPunjDVf
+DncLKvbdIxTbHkqQ
+DncLKvbdcSbkTdJa
+DncKjvbdUWLpJsaR
+DnbkKvbdsQVnjCvG
+EPDKjvbdyXiJapZk
+EPCkKvbdrzLosAgn
+DncLKvbdNsTugEuQ
+DoDLKvbdrykoraHn
+EObjjvbduaDySoFI
+DncKjvbdZHWdAOri
+EPCjjvbdlqxtysEJ
+DnbkKvbdOSsvHEtp
+DoDKjvbdRotGjGDw
+DoDKjvbdYfvdAOsJ
+DoCkKvbdBhjajiGK
+EObjjvbdCgLegAzc
+DoDLKvbdhtyeWrVC
+EOcKjvbdzitoocrt
+EOcKjvbdNVTSKmAX
+EPCjjvbdVYgsyjnn
+EObkKvbdliEUQuRa
+DoCkKvbdqFceUWAh
+EPDKjvbdIsZAsMxM
+DnbkKvbdUVlPjUBR
+DoDKjvbdbUafwjsh
+EObjjvbdQlxCZOUz
+DoCkKvbdQvnEDLhD
+EOcKjvbdUVlQKUBR
+EPDKjvbdehKvRnQg
+DoDLKvbdxmsIYTIc
+EObjjvbdsCGNLfkZ
+EObjjvbdmSYtzSdJ
+DoCjjvbdiMEcnVDZ
+EPCjjvbdypnlhiwA
+DoCjjvbdRyihTDWA
+DoCjjvbdZoOJEdzK
+DoCjjvbdJpzEoGOF
+DoCkKvbdYpmEiMeR
+EPCkKvbdbhljKfWx
+EPDLKvbdqYnggQcx
+EOcLKvbdwjwEHzyf
+EPCjjvbdLFegbAqV
+DoCjjvbdMoxQvNgT
+EPCjjvbdZsiIyETO
+DoDLKvbdZQmFImEq
+DnbjjvbdYkrDtOMN
+EPCjjvbdjggMGGOL
+DncLKvbdDwwlTstM
+EOcKjvbdCWzciFQW
+DoCkKvbdyYIiaozL
+DnbkKvbdNsTufeVQ
+DoDKjvbdjlakydfo
+EObjjvbdUGznLvue
+DoCjjvbdeFOqawDK
+DoCjjvbdZnmiFEyj
+EOcKjvbdVBCQrprZ
+EOcLKvbdrovOjCvG
+DncKjvbdrovPKCuf
+EOcLKvbdlYrqryHU
+EObkKvbdcyyPxZQb
+EObjjvbdnBivwnnV
+EObjjvbdjJehJlwr
+DnbkKvbdOFDtJIjd
+DnbjjvbdVAaqSqSZ
+EObkKvbdrXPkbiZR
+DoCjjvbdzaAPGfal
+DncKjvbdZQldhmEq
+EObjjvbdmoyxvLZC
+DnbkKvbdmpZxujyC
+DoCjjvbdvwLaWBWV
+DncLKvbdiVZdvquC
+DnbjjvbderBWzlDP
+EPCjjvbdjbkjpfuH
+DncLKvbdrafNLfkZ
+DncKjvbdrWokbhxq
+EPCkKvbdsZkosBHn
+EOcKjvbdidjfuPAO
+DnbjjvbdNGcPmQUk
+EPCjjvbdrJAKFNOe
+DnbjjvbdTukoitBR
+DnbkKvbdySmhlrCH
+EObkKvbdrXPkcIxq
+EOcLKvbdFejSOItR
+EObkKvbdmgExMnGy
+EPDKjvbdqrVLOLBN
+DoDKjvbdLAkHNCYR
+EObkKvbdVrOXbEkc
+DnbjjvbdEXwlUTsl
+EPCkKvbdyXhjBpZk
+EObkKvbdiifHjMxS
+EOcKjvbdEKHiuxKA
+EObkKvbdZLqdTmlN
+EObkKvbdWRnXaeLc
+DnbjjvbdWSNwaeMD
+DnbjjvbdfNGWgNKL
+DoDKjvbdoAKztIDn
+DncLKvbdmaivxOmu
+DnbjjvbdZLqcsnMN
+EObjjvbdcTDKscia
+EPCjjvbdOTTufeUp
+DoDKjvbdGdLVjBjK
+DncKjvbdcJNKLFvx
+EOcLKvbdTYKkmzjx
+EOcKjvbdZRMeImEq
+DoDLKvbdKQyePFnF
+DnbkKvbdNrtWGduQ
+EPCjjvbdatbHXjtI
+EPCjjvbdvwMAuaVu
+EPDLKvbdnQZxvLZC
+EObjjvbdtlYXAsaX
+DnbkKvbduDDVWvPP
+EPDLKvbdqTtGrSKt
+EObjjvbdxnSgwsJD
+EObjjvbdbKkenmcA
+EPCkKvbdFaOqYizm
+EOcKjvbdLGGHbBRV
+DoDLKvbdRzJhTCvA
+EPCjjvbdiMFDmtcZ
+DnbjjvbdWWhwvEEg
+EPCjjvbdJmAEZgVB
+DoCjjvbdmuVZjirG
+DoCjjvbdliEURUqa
+DoDLKvbdnCKWwnnV
+EPDLKvbdhgJbyViu
+DnbkKvbdjggMFfNk
+EObkKvbdEuxopMie
+EPDKjvbdssRsYydc
+DncLKvbdliDsqVRa
+EOcLKvbdLBKflbYR
+DncKjvbdzoPpeClY
+DncKjvbdqFdEsvBI
+DoCjjvbdZMRctOMN
+DncKjvbdDnbkLWcE
+EObkKvbdMfcQNPuL
+DoDKjvbdUWMPjTaR
+DnbjjvbdxmsHwsIc
+EObkKvbdrDdhonWB
+EPCkKvbdhgJcYvJu
+DoCkKvbdlYsSSyHU
+EPCjjvbdNdcsiJLE
+DoDKjvbdhlEcmuCy
+EObjjvbdJTZAsNXl
+EPCjjvbdznpQeClY
+DncLKvbdDxYMTssl
+DoCjjvbdkVwNcbXw
+EOcLKvbdMgDPlpUk
+EObkKvbdXsMAlsnx
+DnbkKvbdiBncEvqR
+EPCjjvbdeFPSCWcK
+DoDKjvbdmuUzKjSG
+EPDKjvbdqrUkNjaN
+DoDKjvbdhyuFlQnG
+EOcKjvbdDigivYKA
+DoDLKvbdJYUCHkqQ
+DncKjvbdACqwiyiQ
+EPDKjvbdEYXkstUM
+DoDLKvbdKDKCpicY
+DncLKvbdCDoaVjNG
+EObkKvbdxZhFexFS
+EPCkKvbdKDJcQjCx
+DoDLKvbdEPCkKwCd
+EPCkKvbdTfzmkwVe
+DnbjjvbduWOYJqTA
+DoCjjvbdcJMijfXY
+EPCkKvbdmaiwYPOV
+EOcKjvbddjJrVtzn
+EObkKvbdpstHSRjt
+EOcKjvbdyXiKCQZk
+DnbkKvbdIsYaSmYM
+DnbjjvbdwtmFQxlO
+DnbkKvbdYpleJMdq
+DoCjjvbdkNBkzFGo
+EOcKjvbdbsCkUEKB
+DoDKjvbdYlRctOMN
+DnbkKvbdjuwOECXw
+EPDKjvbdWRnXaeMD
+DncLKvbdkDLkQgVH
+DoDLKvbdFeiqnJTq
+EOcKjvbdzHYlAMeX
+EPCjjvbdJbjCpjDY
+EPDLKvbdzitopDsU
+DnbkKvbdziuPpDrt
+DncLKvbdySnImSCH
+DnbjjvbdySnImRbH
+DoCjjvbdKjaIWAJy
+DnbjjvbdTqRPUthN
+DoCjjvbdURQntuIN
+EObjjvbdQlxCYmtz
+EPDKjvbdMtsSLNAX
+EObjjvbdJbjDQicY
+DoDKjvbdEPCkKwDE
+EObkKvbdKQydoGNe
+DoDLKvbdVwJXuceH
+EObjjvbdnUtykJrG
+DncLKvbdwMvANEEm
+EPDKjvbdpyPHgQdY
+DnbjjvbdUVkpKUBR
+EOcLKvbdhfjCyVjV
+EPDKjvbddoFTKstS
+EPCkKvbdANHyTXZx
+EPCkKvbdUxhTyjoO
+EObjjvbdkVwNdBxX
+EPDKjvbdDoCjjvbd
+DnbkKvbdWWhwudEg
+DnbkKvbdyTNiMrCH
+DoDLKvbdelewGljL
+DncLKvbdUGznMWue
+DncKjvbdwygfFwdr
+EPCkKvbdJqZePFnF
+DnbjjvbdNsTugEuQ
+DoDKjvbdQcbaPqDr
+DncLKvbdfMevgNJk
+DncLKvbdlrZVZrdJ
+DoCjjvbdFjeTCglu
+DnbjjvbdYqNFImEq
+DoCjjvbdsCGMkfkZ
+DncLKvbdhuZdwSUb
+DoCkKvbdrXPkbiZR
+DoCjjvbdZRMdiMdq
+DoDKjvbdemFvgMjL
+DoCjjvbdygZMANEw
+EOcKjvbdZRMeIldq
+EObkKvbdiHJcZWKV
+DncKjvbdCJKbKiFj
+EObjjvbdzROlhjXA
+DnbjjvbdDoDLKvbd
+EPDLKvbdVYgtZjnn
+EObkKvbdDoCjjwDE
+DnbkKvbdrouoJbuf
+DoCkKvbdyTOImRag
+EPDKjvbdBcpBVilf
+DoCjjvbdCWzdJFQW
+EPCkKvbdbrbjscjB
+EOcLKvbdwkWdHzzG
+EPDKjvbdnGeXlnGy
+EPCkKvbdznpREcLx
+EPCkKvbdZMRcsnLm
+EOcKjvbdJSyArmXl
+DnbkKvbdZMSDtNkm
+EPDKjvbdAMgySvzY
+DoDLKvbdyYJJbPzL
+DoCkKvbdLAjgMaxR
+DoDLKvbdWIXuxGxz
+DoCjjvbdqwQLbiYq
+DnbkKvbdpyPIHQcx
+EOcKjvbdfNGXHNJk
+DncKjvbdqYnhHQdY
+DncKjvbdeEnrBvcK
+EPDKjvbdZjTHpGaf
+DoDLKvbduoTzqLPU
+DnbkKvbdIjEAJofd
+DnbkKvbdxnSgxTJD
+DoDLKvbdXsLaMsnx
+DnbjjvbdaRfDHsek
+DoCkKvbduLwwAtBX
+DnbkKvbdrpWPJcVf
+DoDKjvbdrbFlkgLZ
+DoCkKvbdlqxtyrdJ
+EObkKvbdRyihSbvA
+EObkKvbdWRnYCFLc
+DoCkKvbdOEcshhjd
+DnbkKvbdZjTHpHBf
+DnbjjvbdcyyPwxpb
+DncLKvbdkVvmdCXw
+DncLKvbdcScKtEJa
+DnbjjvbdrSVLOLBN
+EObkKvbdiGjDYvKV
+EPCkKvbdEJgjVwjA
+DnbkKvbdRosgKFdX
+EPDLKvbdcScKtDia
+DoCjjvbdtbcVXVno
+DncKjvbdhgJbyViu
+EPCjjvbdjJehKNYS
+EObkKvbdyOTIYTJD
+DnbkKvbdRaceMJYk
+DoCkKvbdqiAKEmOe
+DoDLKvbdEKHiuwjA
+EObkKvbdxUldpxkn
+EObkKvbdFejRmhtR
+DncLKvbdSBcdlIyL
+EPCkKvbdxZhFexFS
+EObjjvbdwjwEHzzG
+EPCjjvbdmRxtzSdJ
+EPDLKvbdEvYooljF
+DoCkKvbdmgFXlmfy
+DoCjjvbdtkxXBTaX
+EObkKvbdmgExMnHZ
+DncLKvbdjvXODaww
+DoCkKvbdSCEFMIyL
+EPDKjvbdVYhTykOn
+DoDLKvbdNsUVgFUp
+DncKjvbdRXOEClID
+DoDKjvbdnVVZkKSG
+DoDKjvbdWWhxVcdg
+EPCkKvbdwuNFQxlO
+DncLKvbdKeegbBRV
+DncLKvbdUWLpJsaR
+EOcLKvbdNxOuzcmt
+EObjjvbddwzUUSFz
+DoCjjvbdJXtBhMQp
+DoCkKvbdLGFgbBRV
+EOcLKvbdcJMjKewY
+DnbjjvbdxUmEqYkn
+DnbkKvbdjbkjqGtg
+EPCkKvbdIHGzYwwg
+DnbjjvbdrpWOjCvG
+DoDKjvbdZMRctNkm
+DnbkKvbddZyPwxqC
+DoCjjvbdtcDVWuno
+DoCkKvbdJcKDRJcY
+EOcLKvbdmbKWwnnV
+EPDKjvbdcasNSAUN
+EPCkKvbdUaBpsQqy
+EObkKvbdJutedFHJ
+DoDLKvbdBhjakJFj
+DnbkKvbdnUuZjiqf
+EPDKjvbdpxoHgQcx
+DnbjjvbdZjTHofbG
+EObkKvbdkxsSSxgU
+DnbjjvbdWRmwbElD
+DoCkKvbdRkZFuGjs
+EPCkKvbdwNWANDdm
+EObjjvbdTkvPBVni
+DoDKjvbddndrkTtS
+DncLKvbdZtJIxdSn
+EOcLKvbduaDyTOeI
+EOcKjvbdxZgfGXdr
+EOcLKvbdkySrTZGt
+EPDKjvbdVwJXucdg
+EPDLKvbdatagYLUI
+DoCjjvbddZxpYZQb
+EPDKjvbdtunXjRTA
+DoDLKvbdWSOYBeMD
+DoCjjvbdHlBznXRL
+EPDLKvbdcyxpXxpb
+DnbjjvbdAMhYsWzY
+EObjjvbdraemLgKy
+EPDKjvbdJpzFOenF
+DoCjjvbdZnnIeEyj
+DoCjjvbdrWpLbiZR
+EOcKjvbdLqwMytpz
+DncKjvbdKQzEoFme
+EPDKjvbdZRMeJMeR
+DncKjvbdEuxpPlie
+EOcLKvbdFWYpPlie
+EOcLKvbdjblKpgUg
+EOcLKvbdiBnbdwQq
+DoDLKvbdOTTufeVQ
+EPDKjvbdpyOggQdY
+DnbkKvbdGBOqYizm
+EObjjvbdRjxfUfkT
+EPCjjvbdUMVoAuoJ
+DoDLKvbdVwJXvEEg
+EObkKvbdnCKXXoOV
+DoDKjvbdNPxRVmgT
+DncLKvbdZsiIxdSn
+EPDKjvbdjlalZeHP
+DoDLKvbdeFPSBvbj
+DoDKjvbdVqnXbFMD
+DncKjvbdHffyyYYH
+EOcLKvbdBhjbLJFj
+EPDKjvbdJvVGEFHJ
+EOcKjvbdgQBzvdYI
+EPDLKvbdpyOggRDx
+EObjjvbdKQyeOfNe
+EPCjjvbdtcCtwVno
+EPCjjvbdQvmdClHc
+DnbkKvbdyXiKBoyk
+DncKjvbdqTsgSSLU
+EObjjvbdyNrgxShc
+DnbjjvbdRkZFuGjs
+EObjjvbdYfvdAOri
+DoDKjvbdkMbMZeGo
+EPDLKvbdCIjbLIej
+DoDKjvbdHffyxwwg
+EPCkKvbdGdLVibJj
+DoCkKvbdaaVdepQX
+DnbkKvbdSQUGifDw
+EPCkKvbdqYngfpdY
+DnbkKvbdxUleQyLn
+DoCjjvbdqlyixkgi
+EPCkKvbdjgfkfGNk
+EObjjvbdeFOqavbj
+DoDLKvbdYkrDtNlN
+DoCkKvbdjhGlFenL
+EPCjjvbdijFhJmXr
+EObjjvbdnGeYMmfy
+EOcLKvbdbhmJjfXY
+EOcLKvbdLBKfmCYR
+DncLKvbdJSxaSmXl
+EPCjjvbdsQVnicWG
+DoDKjvbdjhHLfFnL
+EObkKvbdjuwOEBww
+DoCjjvbdiBncEvpq
+EOcLKvbduLxWaUAw
+DncLKvbdhuZdwRtb
+EOcKjvbdjvWnECXw
+EObkKvbdZeYGzghb
+DoDLKvbdNQYQumgT
+DoDKjvbdJpydoFnF
+EPCkKvbdRjyFuGkT
+DnbjjvbdraelkgKy
+EObjjvbdfNGXHMjL
+DoDLKvbduWNwiqTA
+DncKjvbdnVUzLJrG
+DoDLKvbdehKvSOQg
+EPDLKvbdwtmFRYkn
+DoDKjvbdKfFgaaQu
+DncKjvbdCTBDTfXS
+EObjjvbdDoCjjwCd
+EPCjjvbdYTMAmUOx
+EOcKjvbdiMFDnVCy
+EObkKvbdjlalZeHP
+DnbjjvbdCJLCLIfK
+DoDLKvbdZMRdUNkm
+DnbjjvbdURRPVUgm
+EObjjvbdJcJbpibx
+EObkKvbdrWpMDJZR
+EObjjvbdjuwNdBxX
+EPCjjvbdbBVdfQQX
+EPCjjvbdKRZeOfOF
+DoCkKvbdKDKCqKCx
+DoCjjvbdkVvmdBxX
+EPDKjvbdvAdYroEh
+EOcLKvbdtcCuXWPP
+EPCjjvbdczZQXxpb
+DncKjvbdUxhUZkPO
+EObjjvbdlrYtysEJ
+DncLKvbdcScLUDia
+EPDKjvbdBsAbsevr
+DoDLKvbdqTtGqrLU
+DoDKjvbdSCEFLiYk
+EPCjjvbdRWmccLgc
+DncLKvbdNQYQunGs
+EObkKvbdmbKXYPNu
+EPCjjvbdfMewGmKL
+EObjjvbdzROmIiwA
+DnbkKvbdliETptqa
+EPDKjvbdHlBznWpk
+DoCkKvbdUaBpsQqy
+DoCkKvbdWSOYCFMD
+DoDLKvbdxmrhYTIc
+DncLKvbdLAkGlbYR
+DncKjvbdlhctRUqa
+DoCjjvbduDCtwVno
+DnbkKvbdIjEAKQHE
+DnbjjvbdiLddNuCy
+EPDKjvbdEXwktUTl
+EPCjjvbdyNrgwsJD
+EObkKvbdnPzYujxb
+EPDKjvbdznoqEcMY
+EPDKjvbdZRNEhleR
+DoCjjvbdGQATXHFy
+EPCjjvbdyqPNIiwA
+EOcKjvbdkxrrTYgU
+EOcKjvbdcImKLFvx
+DoCkKvbduoTzpkPU
+EPCjjvbdJXtCIMQp
+EOcKjvbdrpVoJbvG
+DncLKvbdqZPIHRDx
+DnbjjvbdTAFJHand
+EOcKjvbdtcCuWuno
+DncLKvbdfIKurNqH
+DncKjvbdLrWmZtpz
+DoDLKvbdMtsRjmAX
+EObjjvbdLGGHbBRV
+EObkKvbdCWzchePv
+EOcKjvbdZxcjODMS
+EObkKvbdzaAPGgBl
+DoDLKvbdKVtecdgJ
+DnbjjvbdHDjvJbJj
+EPCjjvbdLiCLqYAS
+EPDLKvbdFVxpPmKF
+DoDLKvbdZisIPgBf
+DncLKvbdTppoUtgm
+DnbjjvbdpyPIGpdY
+DoDLKvbdEztRElCi
+DncLKvbdHgGzZYYH
+DnbjjvbdZLqctOMN
+DnbkKvbdqTtGqqkU
+DnbjjvbdiMEcnVCy
+EPDKjvbdvBDxrneI
+DoDKjvbdemGXHNJk
+DoDKjvbdhficYvKV
+EObjjvbdegkWSOQg
+DoDLKvbdOFDtIiKd
+EPCjjvbdBdQAuimG
+DoCjjvbdpyPHgREY
+DncKjvbdJXsbHkpp
+DoDKjvbdRbEElIxk
+DoDKjvbdsQWPJcWG
+EObkKvbdsCGNLfkZ
+EOcLKvbdzaAPGgCM
+EObkKvbdzjUoodSt
+DnbkKvbdemFvgMjL
+DnbkKvbdWWhxVcdg
+DncLKvbdxrmiMqag
+EPCkKvbdMSWlytpz
+EObjjvbdwNWAMdFN
+EPDLKvbdlrYtzTEJ
+DnbjjvbdVqnYBeLc
+DncKjvbdnHEwmOGy
+DnbjjvbdtbbuWvPP
+DncKjvbdmIcspuSB
+EObkKvbdEOcKkXCd
+EOcKjvbdDncKkXCd
+EPDLKvbduaDxrndh
+DoCjjvbdOFDshhkE
+DnbkKvbdRaceLhyL
+EPCkKvbdZshhyDrn
+DoCjjvbdCSaDTfWr
+EOcKjvbdqUTfrSLU
+EPDLKvbdtTRryZdc
+DoDLKvbdkyTRsZGt
+EPDKjvbdyqPNIjXA
+DoCkKvbdNUrrKmAX
+DoCjjvbdSCDeMIxk
+EObkKvbdkMbLzEgP
+DncKjvbdEvZPpMie
+DoCkKvbdyYIibQZk
+EObkKvbdNPxQumfs
+EOcLKvbdDncKjvbd
+EPCkKvbdozmcjxPA
+EPDKjvbdCIkCLIfK
+DncKjvbdcyxoxZRC
+DoCkKvbdeOdrkUUS
+DoCjjvbdhzVFlQnG
+EObjjvbdOFETiJLE
+DncKjvbdhyuGLqNf
+EObkKvbdRWmdClID
+DoCjjvbdFpATWgFy
+DnbkKvbdlqxtysDi
+EObjjvbdqmZjYkhJ
+DoDKjvbdZyDjODMS
+DoCjjvbdEJhJvYKA
+EOcKjvbdqTsgRrLU
+EOcKjvbdZsiIxcrn
+EObkKvbdIHGzZYYH
+EPDKjvbdHgGyxxXg
+EObkKvbdxmrgwriD
+EPCkKvbdxrnJNSBg
+DnbkKvbdjhGkefOL
+EPCjjvbdKQydoGNe
+EOcKjvbdqvpMDJZR
+EObjjvbdQdDBQQdS
+DoDKjvbdSKxfVHKs
+DoDKjvbdbLLeoODA
+DoDLKvbdBsAcUGWr
+DoCjjvbdRzKHrbvA
+EObjjvbdfMfXGljL
+EObkKvbddeOrCWbj
+DoDKjvbddjJrVtzn
+DoDLKvbdhtydvqtb
+DnbjjvbdRNXayOUz
+EPDLKvbdRjyFtgKs
+EObkKvbdsPuoKCvG
+EPCkKvbdYqNEiNFR
+DncKjvbdUxgsyjnn
+EPCjjvbdZRMdhldq
+DoDLKvbdEJhKWXjA
+DoCkKvbdQwODblID
+EPCkKvbdssRrxzFD
+DnbjjvbdZxdKOCkr
+EObjjvbduCcUwVno
+EOcKjvbdmuUzLKRf
+EPCjjvbdfpBzvcwh
+DnbjjvbdMowpvNfs
+EPDKjvbdGLErcHmV
+EPDLKvbdZoOIeEyj
+DncLKvbdSLZGUgKs
+DncLKvbdlqyUzTEJ
+EPCjjvbddePRawDK
+DncKjvbdHEKvKCJj
+DoDKjvbdeEnqavcK
+DoDLKvbdtSrTYzFD
+EPDLKvbdxUmFQxlO
+DnbjjvbdLLBIWAJy
+EOcLKvbdMowqWNfs
+EPDKjvbdptUGrSKt
+DoDLKvbdHEKvKCKK
+EPCjjvbdJcJbpjDY
+DnbjjvbdMuTRkNAX
+DnbkKvbdEzspdlDJ
+DncLKvbdVUMsekvK
+EPDKjvbdOTUVgEtp
+DncKjvbdAMgySwZx
+DoCkKvbdwtmFRYkn
+EObjjvbdIjEAKPgE
+EPDKjvbdRpTfjGEX
+DncKjvbdFjeSbglu
+EObkKvbdjFLGtoAO
+DoCkKvbduWOYJqTA
+EPCkKvbdVAapsQrZ
+DnbjjvbdVwJXudEg
+DoDLKvbdUtMsfLvK
+EPCjjvbdHELVjBij
+DncKjvbdRWnECkhD
+EPDLKvbdZsiJZDsO
+DncLKvbdnPzZWLYb
+EPCjjvbdznoqEcMY
+EOcKjvbdzoQQeDMY
+DnbjjvbdznpQdbkx
+EPDKjvbdeYZtTrFz
+DoCkKvbdkySrTZHU
+DncKjvbdCSaDUGXS
+DoCkKvbdcJNJjfXY
+EOcLKvbdCEQAvJlf
+EPDKjvbdyzdmqhJI
+DncLKvbdNPwpvNgT
+DoDKjvbdqmZixkgi
+EOcKjvbdVYhUZkPO
+EObkKvbdhgJbxvJu
+DoDKjvbdUQqPUuHm
+DncLKvbdqvolChyR
+EPCkKvbdEXxMTssl
+DnbkKvbdHgGzYwxH
+DoDLKvbdIidAJpGd
+DnbkKvbdZLqdUOMN
+DnbkKvbdGckViaij
+DoCkKvbdFVxopNJe
+EOcLKvbdRbEFMIyL
+EObkKvbdLAjflawq
+EObjjvbdziuPodTU
+EPDLKvbdQwNdCkhD
+EPCjjvbdZxdJmcLr
+EPDLKvbdxrmhlqag
+DoCkKvbdSPsgJfDw
+EPCjjvbdkDLjpgUg
+DnbjjvbdtbcUwWOo
+DnbkKvbdWIXuxHYz
+EObjjvbdEvYpQMie
+DoDLKvbdIHGzZXxH
+EPDLKvbdVYgszKoO
+DncKjvbdhancEvpq
+EPCjjvbdcJNKKewY
+EPDKjvbdWWhwvEEg
+EOcLKvbdvAdYsOdh
+EObkKvbdcyyPwxqC
+EObjjvbdSPtGifDw
+EOcLKvbdkMalZeHP
+EPDKjvbdYlRctNlN
+DoDLKvbdKWVGEFGi
+DncLKvbdMgColouL
+DncLKvbdhbPCeXRR
+DncLKvbdDwxMTstM
+DoDKjvbdvAcySndh
+EObkKvbdXGYytAPT
+DoCjjvbdmuVZjjRf
+EOcLKvbdDGlFgAzc
+DoDKjvbdiBncFXRR
+DoDKjvbdkaMnmALA
+DncKjvbdVBCQrqSZ
+DoCkKvbdVviYWEFH
+EObkKvbdAMhZSwZx
+DoDLKvbdeAUQlwjG
+DoDLKvbdZxcjODMS
+EOcLKvbdrpWPKDVf
+EPCkKvbdWRnYCFLc
+DnbkKvbdKeehBaRV
+DoDKjvbdMSXMzUpz
+EOcKjvbdRkZGVGjs
+DoDLKvbdFkFScIMu
+DoCjjvbdZjTHogBf
+DnbkKvbdnBivwnmu
+EOcKjvbdCTAcTevr
+EOcKjvbdVviXvDeH
+DoDLKvbdliDsptqa
+EPDLKvbdZirgpGaf
+EPCjjvbdaRfChUFk
+EPCjjvbdkClKqGtg
+DoCjjvbdKQyeOfOF
+EPCkKvbdqvpLbiYq
+DnbjjvbdCTBDTfXS
+DoCjjvbdOEctIhkE
+EObjjvbdbVCHXkUI
+DncKjvbdxnTIXrhc
+DnbjjvbdezvYdhsw
+EPCjjvbdDwwkstUM
+EPCkKvbdaaVdepQX
+DoDLKvbdjlbMZeHP
+DoDLKvbdqAiFAXHd
+EPDLKvbdGLEsCglu
+EPCjjvbdZyDinClS
+EPCkKvbdSLYeuGkT
+EPDKjvbdwyhGFweS
+EOcLKvbdjJfIKNYS
+DoCjjvbddeOrCXCj
+DoDKjvbdkxrqsZHU
+EOcKjvbdGYuVBEYC
+DncKjvbdHkazmvqL
+DnbkKvbdZsiIxdSn
+EObkKvbdhanbeXQq
+EOcLKvbdMpXqWNfs
+DnbkKvbdEztQdkcJ
+EPCjjvbdDjHjWXjA
+EOcKjvbdNQYQvNgT
+EPCkKvbdNHCpNPtk
+DoCjjvbdbsCkUDjB
+EObkKvbdOStWGeUp
+EOcKjvbdVqnYBdlD
+DoCkKvbdvlvANDeN
+DoDKjvbdnQZyWKyC
+EOcLKvbdkyTRsYft
+EOcKjvbdnVUyjiqf
+EPCjjvbdXnRAXtut
+EPDKjvbddZxpXxpb
+EPDLKvbdfHjvSOQg
+DncKjvbdXsMBNTnx
+DncKjvbdEARiMzXX
+EPCjjvbdOStVgEuQ
+DnbjjvbdHELWKCKK
+EOcLKvbdehLWSOQg
+DncLKvbdYkqctOLm
+DoDLKvbdxsOJMqbH
+DoCjjvbdzGyMANFX
+DoCjjvbdSCEElJZL
+DoDKjvbdRkYeuHLT
+EOcKjvbdXsLaMsnx
+DnbjjvbdePFSkUUS
+DncKjvbdGZUuAdXb
+EOcLKvbdlZSqsZGt
+DncKjvbdiCPCdwRR
+EObjjvbdjvXOEBxX
+EPDLKvbdRXOEDMHc
+EPCkKvbdZisIQHCG
+EPDKjvbdjKGIKNYS
+DncLKvbdWWiYVdEg
+DnbjjvbdaMkBruNH
+EOcLKvbdOFEThiKd
+DoCkKvbdVZHszLPO
+DoDKjvbdiHJcYvJu
+EPCkKvbdwuNFRZLn
+EObkKvbdJqZdoGNe
+EOcKjvbddndsLUUS
+EOcLKvbdBraCtGWr
+DncLKvbdxrnJNRbH
+DoDLKvbdCWzciFPv
+EPCkKvbdtlXvaUAw
+DoCjjvbdMfbomQUk
+DoCjjvbdfoazwDxI
+DoCkKvbdauCHXkUI
+DnbjjvbdaogHELzd
+EPCjjvbdTulPisaR
+EPCkKvbdOSsvHEtp
+DoDLKvbdTkuoBVni
+EPDKjvbdVBBqTRSZ
+DnbjjvbdEJgivYKA
+DncKjvbdJXtBgkqQ
+DnbkKvbdbsCjsdJa
+EPCjjvbdhlEcnUby
+EObjjvbdssSSyZdc
+EObkKvbdhgKCyWJu
+EObkKvbddeOqbWcK
+DoCkKvbdqvpLcJYq
+EPDKjvbdxZgefXeS
+EOcLKvbdkVwOEBww
+EPDKjvbdemFvfljL
+EPCjjvbdFkErcIMu
+EOcKjvbdZyEKNcMS
+EPDKjvbdqlzJxlHi
+EPCjjvbdmbJwXnmu
+EOcLKvbdcTDLTcia
+DoCkKvbdyzdmqhJI
+DnbjjvbdGdLWKBij
+DoDKjvbduaDxsPEh
+DoDKjvbdZshhxdTO
+DncKjvbdptUGqrKt
+EPCjjvbdJvVFceGi
+EOcKjvbdddoRawDK
+DoCkKvbdfMfXHMik
+EObjjvbdVAbRSpqy
+EObkKvbddZyPxYpb
+DnbkKvbdVYgszKnn
+DoCkKvbdZMRdUNkm
+EObjjvbdTvMPitBR
+EObkKvbdIxTaglQp
+EObkKvbdGGKSNiUR
+DoCkKvbdGBOpyJzm
+EPCjjvbdqrUjmjaN
+DncKjvbdIMBzmvpk
+EPCjjvbdcyxoxYpb
+EOcKjvbdmIcsqUrB
+DoCkKvbdqvolChyR
+EPCjjvbdkHgMGGOL
+EPDLKvbdpaIeAWgd
+DncLKvbdqvokcIxq
+EOcKjvbdZsiJYcrn
+EObkKvbdyYJKBpZk
+DoCkKvbdKDKDQicY
+EObkKvbdlhdTptqa
+EObkKvbdyXhjBpZk
+EObkKvbdKNAEZfta
+EOcLKvbdRyihTCvA
+DncLKvbdtcCtwVno
+DnbjjvbdVZITykOn
+DoCjjvbdJSyArlwl
+EPDKjvbdDxYLtUUM
+EPDKjvbdvlvANEFN
+DoDKjvbdrykpTAgn
+DnbjjvbdeYZtUSFz
+DoDKjvbdzjVQQETU
+EObjjvbdiHJbyVjV
+DoCjjvbdcScLTcjB
+DncLKvbdhaoDEwQq
+DnbkKvbdQlwbZNtz
+EPCjjvbdEARiMzXX
+EPCjjvbdGFjSOIsq
+DoDKjvbdrXPlChxq
+DoDLKvbdYqMeImEq
+DoDKjvbdOFETiJKd
+EPCjjvbdCTBDUFvr
+DoCkKvbdZoOIdeZj
+DncLKvbdHgHZyYXg
+EOcLKvbdCSaCsevr
+DoCjjvbdsQWOjCuf
+DoDKjvbdKWUfDeGi
+EOcKjvbdzitpPcrt
+EPDKjvbdZyDimcMS
+EPCjjvbdBcpAuilf
+EOcKjvbdqwQMCiYq
+EOcLKvbdsrrTZZdc
+EObjjvbdSQUHKGEX
+DoDLKvbdcyxoxZRC
+EObkKvbdWXJYWEFH
+DnbkKvbdhgKDYuiu
+DoDKjvbdrSVLOKaN
+EPCjjvbdMoxQumgT
+EPDKjvbdcbTMrATm
+EPDKjvbdznopdcMY
+DnbjjvbdzdzOzdyp
+EObjjvbdGYuVBEXb
+EPDKjvbdiZtekpnG
+DoDLKvbdvvlAuaVu
+DoDKjvbdEYXkstTl
+EPCjjvbdauCHYKsh
+DoCjjvbdDjIJuwjA
+EObjjvbdkNCLzFGo
+EPDLKvbdiGicZWKV
+EPCkKvbdtlXvaTaX
+DoCkKvbdpyOggQcx
+EObjjvbdtTSSyZdc
+DoDLKvbdiZtelROG
+EOcLKvbdWRnYCFMD
+EPDLKvbdNddUIhjd
+DncLKvbdEObjjvbd
+EPDLKvbdVUNTelVj
+EPCjjvbdVhXvYGxz
+DoCkKvbdfRaWzkbo
+DoCjjvbdRjyGVHKs
+DoCjjvbdSKxfUfkT
+EOcKjvbdaRecITek
+DoCkKvbdEJhKVwjA
+DoDLKvbdwXLaWBVu
+EPDLKvbdLYqJrztf
+DncKjvbdUMVoAuoJ
+DnbjjvbdvmWAMcdm
+EObjjvbdpssfqrKt
+DnbjjvbdhlEcnVDZ
+EOcKjvbdNsUWGeVQ
+EObjjvbdVUNTekuj
+DnbkKvbdVYgsykOn
+EObkKvbdpssgSRjt
+DncKjvbdVZITzLOn
+DoDKjvbdGGJrNiTq
+DoDLKvbdACqwizJQ
+DoDKjvbdIryArmXl
+DoCkKvbdZMRdTmlN
+DnbkKvbdrovPKDVf
+EObkKvbdrounjDWG
+DnbjjvbdCSaDTevr
+DnbjjvbdUyITyjnn
+DnbkKvbdKRZeOfOF
+DoCkKvbdDigiuxKA
+EOcKjvbdxsNhlrCH
+EOcLKvbdDjHiuxKA
+DncKjvbdXmqAXtvU
+DnbjjvbdqFdFTvAh
+EObkKvbdxrmhmSBg
+DoCjjvbdIidAKPfd
+EOcKjvbdKQydoGOF
+DnbjjvbdlqyUzSdJ
+EPDKjvbdtvOYKQsA
+EPCkKvbdcIljLFvx
+DoCjjvbdYqNEhldq
+EPDKjvbdczYpYZRC
+DoDLKvbdiBoCeXQq
+EOcLKvbdiCPDFXRR
+EPDLKvbdZisHofaf
+EPDKjvbdmIdURVSB
+EPDKjvbdZRNFIldq
+DoDKjvbdJpydoFme
+DoDLKvbdWWhwudEg
+DncLKvbdDnbjjwDE
+DncKjvbdqTsfqqkU
+DncKjvbdKDKDRKDY
+DoDKjvbdTulQJsaR
+DoCjjvbdSBdFMIyL
+DncLKvbdqTtHSSKt
+EOcKjvbdBcoaVjMf
+EObjjvbdiiehKNXr
+EObjjvbdCWzciFQW
+EPDLKvbdWSNwadlD
+EPDKjvbdKVuGEFHJ
+DoCkKvbdZMRdUNlN
+EPDKjvbdZRMdiMdq
+EPCkKvbdxUmEpyMO
+DoDLKvbdRkYfVHKs
+EObjjvbdIwtCIMQp
+EPDKjvbdmJDsqUqa
+EPDKjvbdrDeJPmvB
+EOcKjvbdTvMPisaR
+DncKjvbdMtsRjmAX
+DnbjjvbdlqyUysDi
+EPDKjvbdQwNdClID
+DncLKvbdRjxfVGjs
+EObkKvbdauBfxKtI
+DoDLKvbdiZtfLpnG
+DoDKjvbdhancFXRR
+DoDKjvbdREDBQQdS
+EObjjvbdrzMQTBIO
+EOcKjvbdcImKKfXY
+DoDLKvbdijGIKNXr
+DncLKvbdgGMZmfgA
+EPCjjvbdZnmheFZj
+EPDKjvbdmuVZjiqf
+EObjjvbdeFPRawDK
+EPDLKvbdrNZiyLhJ
+EOcKjvbdlhdURUrB
+EPDLKvbdGGJrNhtR
+EOcKjvbdiGibyWKV
+EOcKjvbdQlwbZNtz
+DncLKvbdnVUzKiqf
+EOcKjvbdbsDKscjB
+EPDLKvbdDnbjjvcE
+DoCkKvbdySmhmRag
+DncKjvbdkyTSTYft
+DoDLKvbdEYXkstUM
+EOcKjvbdiHJbyVjV
+EOcKjvbdsQVnicWG
+DoCkKvbdoznDkYPA
+EObkKvbdURQoVVHm
+EPDLKvbdFfKSNiTq
+DnbjjvbdVgxVwgYz
+DnbkKvbdmfeYNOHZ
+DoDKjvbdyqPNIiwA
+EObjjvbdFVyQPlie
+EOcLKvbdGdKvKBij
+EPCjjvbdDwxMUTtM
+DoCkKvbdKVtfEEfi
+DoCkKvbddjKRvUzn
+EObkKvbdliEURVSB
+EPDLKvbdWSNwaeMD
+EOcLKvbdJqZdoFnF
+DnbjjvbdKxqJrzuG
+DnbjjvbdmuUyjjSG
+EPDLKvbdADRxKZhp
+EPCkKvbdiCPDEwRR
+EObjjvbdTXkMNzkY
+DnbjjvbdMgDPlouL
+EPCjjvbdyzeNqghh
+EOcKjvbdmuUyjjSG
+EPDKjvbdDoDLKvcE
+EPDLKvbdNxPVzdNt
+DoDKjvbdBhjbKhfK
+DnbjjvbdZLrETmlN
+DoCkKvbdHffyxwwg
+EOcKjvbdYSlAmUPY
+EPCjjvbdtTSTYzFD
+DoCjjvbdFjeTCgmV
+EObjjvbdNwnuzcnU
+DoDLKvbdSPsfiecw
+DoDKjvbdKVtedFGi
+EObjjvbdUaCQsRRy
+EObkKvbdbsDLUDjB
+EObkKvbdEOcKjvcE
+EPCjjvbdyNsIYShc
+EOcLKvbdbVCGxKsh
+DoDKjvbdlZSqsYft
+DoCjjvbdUslselWK
+DncLKvbdbUbHXkUI
+DnbkKvbdYkqcsmkm
+DncKjvbdXsMAmUOx
+DoDKjvbdJuuFcdgJ
+EOcLKvbdGLFTChNV
+DoCkKvbdaaWEfQQX
+DncKjvbdVqnXbFMD
+EOcKjvbdZyEJnClS
+DoCkKvbdNdctJIjd
+DoDLKvbdmaiwYOmu
+EPCkKvbdmbJvxPOV
+DncLKvbdTqRPUuIN
+EPDLKvbdGGKSNiUR
+EPCjjvbdIwtCIMQp
+EOcKjvbdHDjvJajK
+EOcLKvbdZyEJnDMS
+DnbkKvbdrWpMDJZR
+EOcLKvbdbUagXjtI
+EOcLKvbdLGFgbBRV
+EOcKjvbdqvpMDIxq
+EPDKjvbdOAJSsjSA
+DncKjvbdsrqsYyeD
+DnbjjvbdtkwvaUBX
+DnbjjvbdGQASwGfZ
+EObkKvbdURROtuIN
+EObkKvbdiUydwRtb
+EOcLKvbdqlyixkhJ
+EPCkKvbduaEYroFI
+DoCkKvbdnUtyjiqf
+DoCkKvbdssSTYzFD
+DncLKvbdeATqMwjG
+DnbkKvbdqlyjYlHi
+DncLKvbdTAEhhCOd
+EOcLKvbdpxoIHQdY
+EPDKjvbdEXxLsstM
+DncLKvbdbLLfPNcA
+DoDLKvbdCWzdIeQW
+DnbjjvbdWSNwbElD
+DoDKjvbdGFjSOJUR
+DoCjjvbdmttzKjRf
+EPCjjvbdqmZjZMHi
+DncLKvbddwzUTqez
+EObkKvbdrEFIpOVa
+DnbjjvbduMYWaTaX
+EPDKjvbdTAEiIBoE
+EOcKjvbdVrNwaeMD
+DoCjjvbdSwkMNzjx
+DoDKjvbdZoNheEyj
+EObjjvbdFpASvgGZ
+DnbkKvbdvBDxsPEh
+DoDKjvbdIHGzYxYH
+EOcLKvbdhanbeXQq
+EObkKvbdACqxJyhp
+DoDLKvbdgQBzwDxI
+EObjjvbdOYOuzdNt
+DnbjjvbdRWmdDMHc
+EPCkKvbdePFTLUUS
+DnbkKvbdHlBznWpk
+EPCkKvbdqlyixlIJ
+DnbjjvbdIHHZyYXg
+EObjjvbdBcoaVimG
+EOcLKvbdZnnIddzK
+DnbjjvbdBiLBjhfK
+EPDLKvbdeOeTKtTr
+EObkKvbdYlRcsnLm
+DoDKjvbdnHExNOGy
+DoCkKvbdnCJwXoNu
+EOcKjvbdwWlBWBWV
+DnbjjvbdGYuVAdXb
+EObkKvbdLGGHbBQu
+EPCkKvbdEJgjVxKA
+EObkKvbdlqyVZrdJ
+EObkKvbdaNLBsUmH
+EPCkKvbdGQASwHGZ
+DncLKvbdnBjWwnnV
+DnbjjvbdUslsekuj
+DncLKvbdeATqNYJf
+EOcLKvbdIwtCHlQp
+EOcLKvbdGLErcIMu
+DnbkKvbdjvXOECXw
+EPCkKvbdfSAvzkbo
+DnbjjvbdsCGNMHKy
+DoDLKvbdURQnuVHm
+EObjjvbdQvmdCkgc
+EPCjjvbdSPsgKFcw
+EPDLKvbdYpmEhleR
+EPCjjvbdFjdsDHlu
+EPDLKvbdqdFIpOWB
+EObjjvbdnQZyVkZC
+EPCjjvbdQdCaQRES
+DnbjjvbdADRwiyiQ
+DnbjjvbdiiehKNYS
+DoCkKvbdHkaznWqL
+EObjjvbdmoyxujxb
+EOcLKvbdxxIibQZk
+EObjjvbdsPuoKCvG
+EObjjvbdjcMKpftg
+EOcKjvbdZisHofbG
+DncLKvbdUGznLwWF
+DoDLKvbdFfJqnJUR
+DnbjjvbdsBelkgLZ
+DoCkKvbdrbGNLfkZ
+DncKjvbdeYZssqez
+EPCkKvbdyNsHwsIc
+DnbkKvbdrafMkfjy
+EPCjjvbdZyEJnDMS
+DnbjjvbdFpASwGey
+DnbkKvbdLGGIBaQu
+DncLKvbddiiqutzn
+DncKjvbdWIXuwfxz
+DoCjjvbdNPxRVnHT
+DncKjvbdwygefXeS
+EPDLKvbdmJEUQtrB
+EPCjjvbdQwOECkhD
+DoDLKvbdNGbpMotk
+DncLKvbdRyjIScWA
+DncLKvbdVrOXaeMD
+DncLKvbdQmYBxnUz
+DnbjjvbdVBCRSqSZ
+EPCkKvbdRosfifEX
+EPDLKvbdlYrqrxgU
+EPDLKvbdKVuGDeHJ
+DncLKvbdDncLLWcE
+EOcLKvbdfNGXGmKL
+EOcLKvbdQvmdDMHc
+EOcLKvbdEARiMyvw
+DoCjjvbdnHFXlnGy
+EOcKjvbdhtyeXRtb
+DncKjvbdMgDQNQVL
+EObjjvbdpedFUWBI
+EPDKjvbdkHfkfFnL
+DoDKjvbdrXQMChyR
+EObkKvbdREDAoqES
+DoDKjvbdBdQAvKMf
+DoCkKvbdjvWnDaxX
+DnbkKvbdePEsKstS
+EPDKjvbdyOTHwsJD
+DnbkKvbdrSVKnKaN
+EPCkKvbdZirgpHBf
+DoCkKvbdsQVnjDVf
+DnbjjvbdGLEsCgmV
+EPDLKvbdelewHMjL
+EObjjvbdjlbMZeGo
+DoDLKvbdxrmhlrCH
+DoCkKvbdczZQXyQb
+EObjjvbdRDcBQRDr
+DoCjjvbdxLXEHzyf
+DoCkKvbdkySrTZGt
+DoCjjvbdDoDKjwCd
+EObkKvbdKWVGEEfi
+DoDKjvbdTqQoUuIN
+EObjjvbdZRNEiMeR
+DoDKjvbdxUmEpyMO
+EPDLKvbdxxJJaozL
+EObkKvbdraemLfkZ
+EPCjjvbdbiNKLFvx
+DnbjjvbdZjSgpHCG
+EObjjvbdqBIeAXHd
+EObjjvbdVUNUGMWK
+EPDKjvbdliDsqUqa
+EOcLKvbdxZgfGYFS
+DnbjjvbdYpmFJMdq
+EPCkKvbdcTCjtEKB
+DncLKvbdVUMtFlVj
+EPDKjvbdcIlijevx
+DoCjjvbdpstHSSKt
+EOcKjvbdLAjgMaxR
+DoDKjvbdHkaznXQk
+EPDLKvbdrovPJcVf
+EObjjvbdjblLRHVH
+EPCkKvbdfSAvzlCo
+EPDLKvbdkHfkefOL
+DoCjjvbdbiNKKfXY
+EPDLKvbdjJfHilwr
+EOcKjvbdxVMeQxkn
+DncKjvbdqlzJyMIJ
+DoDLKvbdffMZnGgA
+EPDLKvbdrpWPJcVf
+DnbkKvbdNsTvGeVQ
+DncKjvbdZshiZETO
+DoCjjvbdWRnXaeLc
+EPDLKvbdUaCRTQqy
+EOcKjvbdKDKDQjCx
+EPCkKvbdLKaIWAJy
+DoDKjvbdjblKpftg
+EPDKjvbdfHkWSNqH
+EObjjvbdSCEEkiZL
+EPDKjvbdcyxpYZQb
+EPDLKvbdVUMtFkuj
+DnbjjvbdVBCQrprZ
+EObjjvbddoEsLUUS
+DnbkKvbdiHKDZVjV
+EOcKjvbdpyPHgRDx
+EObjjvbdYpleJNFR
+DncLKvbdrDdhpOWB
+DncLKvbdcbSmSAUN
+DncLKvbdQwODcLgc
+EPCjjvbdKVuFcdgJ
+EPDLKvbdJvUecdfi
+EObkKvbddjJqvUzn
+EPCkKvbdLrXNZuQz
+DnbkKvbdDihJuxKA
+DoCjjvbdegkWSORH
+DncKjvbdFyVUaEYC
+DoDLKvbdNHDPlpVL
+DoDLKvbddneTKtUS
+DoCjjvbdEARhlywX
+DncKjvbdmbJwYPOV
+DnbjjvbddeOrBvbj
+EPDKjvbdAMhZTXZx
+DnbjjvbdULuoBVoJ
+DoCkKvbdMfbomQVL
+EObjjvbdyTNhlqbH
+EPDLKvbdcyxowxpb
+DoCkKvbdEPDLLXCd
+DncLKvbdSCEFLiZL
+DnbjjvbdBiLCKiFj
+EPCjjvbdmgExNNgZ
+EOcLKvbdsPvPKDVf
+DoCkKvbdbKkfOmcA
+DncLKvbdIxTaglRQ
+DnbkKvbdFVyQQNJe
+EPDLKvbdbsCjtEKB
+EPDKjvbdakMFnnDA
+EObjjvbdWWiYVcdg
+DnbkKvbdfSAvzkcP
+EOcLKvbdbKkennDA
+EPCjjvbdTppoVUhN
+EPDLKvbdemGWgMjL
+DnbjjvbdJvUedFHJ
+DoDLKvbdqvokbiZR
+EPCjjvbdZMRctOMN
+DoCjjvbdNPwpunGs
+DoCkKvbdZtJIyDrn
+EPCjjvbdFejRnIsq
+EPDLKvbdZshhxdTO
+DncLKvbdxZhGGXeS
+DoDLKvbdKyRKSztf
+EPDKjvbdCflFgAzc
+EPDKjvbdOEdThiKd
+DoDLKvbdTAFIgaoE
+EObjjvbdEARiNZvw
+EOcLKvbdjhHLefOL
+DncKjvbdbVCHXjtI
+EPDKjvbdeFPRawCj
+DoDLKvbdtcCuWuoP
+DoDLKvbdUVkpJtAq
+EPCjjvbdaSFcHsfL
+EPDKjvbdPxmAGrrK
+EPCkKvbdDjHjWXjA
+DnbkKvbdpssfqrKt
+DoDKjvbdePEsKtTr
+EObkKvbdDwxMUTtM
+DnbkKvbdZRMdiNEq
+EPCjjvbdhuZdvquC
+DoCjjvbdGLEsChMu
+EPDKjvbdRDbaQQdS
+EOcKjvbdEJhJvYKA
+DncKjvbdkxsSSxft
+EObjjvbdKRZdnfOF
+EOcLKvbdZQmFIleR
+DnbkKvbdjcLjpfuH
+DnbkKvbdYzbfSKWZ
+EPDLKvbdbUafxLTh
+EPCjjvbdJuuFcdgJ
+DoCkKvbdJcKCqJcY
+DoCjjvbdSKyGVGkT
+DoCjjvbdemFvflik
+DoCjjvbdvBEYsPEh
+EOcKjvbdCWzdJEov
+DncLKvbdqTsgSSKt
+DnbkKvbdUMVoBWOi
+EPCkKvbdOEcsiIjd
+DncLKvbdaSFbhUFk
+DoCkKvbdhtzEwRuC
+DoCkKvbdiCOcEvqR
+DoCkKvbdfILVqnRH
+DnbkKvbdCJLCKhej
+EPCkKvbdakLeoODA
+DnbkKvbdUaCRTQrZ
+DoDKjvbdRacdkhyL
+EPCjjvbdYNqAXtut
+DncKjvbdwzHfFwdr
+DncLKvbdNrsvGeUp
+EPDKjvbdDoCkKvbd
+EPCjjvbdrafNLfkZ
+EObjjvbdmajXXoOV
+DncLKvbdVAbRTQrZ
+EObkKvbdkySrTZHU
+DoDKjvbdZeXfzghb
+EPDLKvbdiCOcFWpq
+EOcKjvbdUQpnuUhN
+DncLKvbdijGIKMwr
+DncKjvbdHgHZxwwg
+DncLKvbdVTmUFlWK
+DoDKjvbdeYZtUSFz
+EPDKjvbdHffyyYXg
+DncKjvbdXsLaMtOx
+DncKjvbdzitoocrt
+DoDKjvbdhtyeWquC
+EPDKjvbdEuyPpNKF
+DnbkKvbdtvOYKRTA
+DncKjvbdZnnJFEzK
+EPCkKvbdqZPIGpcx
+DnbkKvbdVgxWYGxz
+EPCjjvbdOStWHEuQ
+EObkKvbdNddTiIjd
+DoDKjvbdwXMBWAuu
+EPDLKvbdsPvPKDVf
+DncLKvbdQvnDbkhD
+DncKjvbdEKHjWYKA
+EPCkKvbdCgMFgAzc
+EOcLKvbdQvnDbkgc
+EPCjjvbdDoCkLWbd
+DnbkKvbdKCibpicY
+EOcLKvbdhfibyViu
+EOcLKvbdzQnliJwA
+DncKjvbdEASImZwX
+EPDLKvbdFkFTChNV
+DnbjjvbdEuxoomKF
+EOcKjvbdYqMeJMeR
+DnbjjvbdgQBzvdYI
+DoCjjvbdkxrrSxft
+DnbjjvbdjuwNdCYX
+EOcLKvbdfpBzwEXh
+DoCkKvbdnHFYMmgZ
+EOcKjvbdjlbMZeHP
+DoCkKvbdmttzKjSG
+EPDLKvbdzjUopDsU
+EPDLKvbdsZlPraIO
+EOcLKvbdLBLHMbYR
+EPDLKvbdtbcVXVno
+DoDLKvbdaaVeGQQX
+EPCjjvbdWSOYCEkc
+EObjjvbdxUmFQyMO
+DoDLKvbdRbDdkiZL
+DoCjjvbdhlFDnVCy
+EPDKjvbdcTDKscia
+EPCkKvbdjlbMZeGo
+DncLKvbdCIkCKiGK
+DoCjjvbdrbFmMGkZ
+EObkKvbdQccAoqDr
+DnbjjvbdTqRPVUgm
+EPCkKvbdNrsufeUp
+EOcLKvbdrMyjZLhJ
+EPDLKvbdiifHimXr
+DnbkKvbdpstHSRjt
+EOcKjvbdZtIhxdSn
+DnbkKvbdbhmKLGXY
+DnbkKvbdkxsSSxft
+DoCjjvbdTAFIhBnd
+EObkKvbdUtMtGLvK
+EPCjjvbdpstGrSLU
+DncKjvbdxLXDgzyf
+EOcKjvbdSCDdlIxk
+EObkKvbdOFEUIiLE
+DnbkKvbdjggLefNk
+DncKjvbdliEUQtqa
+EOcLKvbdFjdsDHlu
+DncLKvbdeEnqavcK
+EOcLKvbdnPyyVjyC
+DoDKjvbdliDsptrB
+DoCkKvbdrXQLbiZR
+DncLKvbdFkErbhNV
+DoDKjvbdTqROtthN
+DoCkKvbdYSlAmUOx
+DnbkKvbdKVuGDdgJ
+EOcKjvbdvwLaWAvV
+DoDLKvbdEObjjvbd
+DnbkKvbdwXLaWBVu
+DnbkKvbdmtuZjiqf
+DoDKjvbdegkWRnRH
+DoCkKvbdeXzUUSFz
+DncLKvbdfNGXGmJk
+DoCjjvbdEztQdlCi
+EPCkKvbdEuyQPljF
+EPCjjvbdrEEiQNvB
+DnbkKvbdLqwNZtpz
+EObkKvbdKeegbBQu
+EObkKvbdvBEZSoFI
+DoDLKvbdrXQLbhyR
+DnbkKvbdbKlGPODA
+DncLKvbdnCKXYOnV
+EOcKjvbdjcMKpfuH
+DoCkKvbdQdCaQRES
+EPCkKvbdDncKjwCd
+DoDLKvbdYlSDtNkm
+EObkKvbdmbKXXnmu
+EPCkKvbdjgfkfGOL
+DnbkKvbdZyDjNcMS
+EOcLKvbdkNCLyeHP
+DncLKvbdVUMtGLuj
+EOcKjvbdKVtedFGi
+EPCjjvbdKRZeOenF
+DoCjjvbdUQqPUthN
+EPDKjvbdkMbLydgP
+EObjjvbdVqmxBdlD
+EPDKjvbdjAQGaPgK
+DoCkKvbdTlVnaWPJ
+EPCjjvbdwjvdHzzG
+EObjjvbdBsBCtGWr
+EPCjjvbdwuNEqZMO
+DncLKvbdbrcKtEKB
+EPCkKvbdFyVVAcxC
+EPCkKvbdaSGCgsfL
+EPDKjvbdrylQTBIO
+DncKjvbdfSBWzlCo
+EObjjvbdfRaWzlCo
+DnbkKvbdsPvOjDWG
+EPCjjvbdcbSlrAUN
+EObkKvbdrWpLbhxq
+EPCjjvbdhgKDZVjV
+EOcKjvbdhlFDnUby
+DoCkKvbdddoSBvcK
+DoCkKvbdpssfrRkU
+DoDLKvbdJutfEFGi
+EObkKvbdEPDKkWcE
+EOcKjvbdcJNJjevx
+EPCjjvbdcTDKscia
+DncKjvbdYlRcsmlN
+EPDLKvbdkHgMFfNk
+DoCkKvbdjbkjqGuH
+EPDKjvbdTvMPjUAq
+DnbkKvbdQYmAGsRj
+EPCkKvbdKeegbApu
+EPDKjvbdiLdcmtcZ
+DoCkKvbdNeDshhjd
+EOcLKvbdxnShXsIc
+EPDLKvbdyOShXrhc
+EObkKvbdbPgHELzd
+DoCjjvbdDoCkKwDE
+EOcLKvbdmbJvxPOV
+DnbjjvbdkNBlZeHP
+DnbkKvbdRXNdDMID
+DncLKvbdXnRAYUvU
+EObkKvbdBcpAuilf
+EPDKjvbdSLYeuGkT
+DoCjjvbdRaceLiYk
+DncLKvbdZoNiFEzK
+EOcLKvbdGLEsDIMu
+DnbjjvbdnUuZkJqf
+DoCkKvbdlqyUyrci
+DoCkKvbdLGGHaaRV
+DnbkKvbdmoyyWLYb
+DncKjvbdMpYRWOGs
+DnbjjvbdkyTRsYft
+EObkKvbdjKFhJmXr
+DnbjjvbdxLWcgzzG
+DoCkKvbdxnShXrhc
+DnbjjvbdRbEEkiZL
+EOcLKvbdWWiXudEg
+DoDLKvbdDjIKVxKA
+DoDKjvbdgFkzNgHA
+EPDLKvbdvvlAuaVu
+EPDLKvbdauBfwkTh
+DncLKvbdmIctQtrB
+EPDKjvbdCDpBWJmG
+DoDKjvbdvAcxsPEh
+EOcKjvbdrJAKFNOe
+EOcLKvbdbsDKscia
+DncLKvbdAMhYsWzY
+DncKjvbdddnrCXDK
+EOcLKvbdkHflGGOL
+DoDKjvbdbUafxKsh
+DnbkKvbdNdctIiLE
+EOcLKvbdvBDyTPEh
+DoCjjvbdFejSOJUR
+DnbkKvbdUQpntuHm
+EObjjvbdTpqOttgm
+DoDLKvbdddoSCXCj
+DncLKvbdbVCHXkUI
+EPCjjvbdKNAEZgVB
+EPDKjvbdFjdsDIMu
+DnbjjvbdpaIeAXHd
+EOcLKvbdrDdhpOWB
+EPDKjvbdIxUBhLpp
+EPDKjvbdhkddOVCy
+EPCkKvbdTkuoAuni
+EPDLKvbdnPyxujxb
+EObjjvbdfSBWzlCo
+EPDKjvbdMuSrKmAX
+EPDLKvbdmozYvKyC
+DnbkKvbdZirhPfaf
+EPCjjvbdNQXqWOHT
+DncKjvbdZsiIyESn
+DnbkKvbdURQnuUgm
+DoCjjvbdkIHMFfOL
+EPDKjvbdKfGHaaRV
+DncLKvbdtcDUwVoP
+EOcLKvbdxrnImRbH
+EPDLKvbdozmdLYPA
+DoDKjvbdUVkojUBR
+DnbjjvbdqUUHRrLU
+DoDLKvbdEARhmZvw
+EOcLKvbdZHWdAOri
+DoCjjvbdVUMtGLuj
+EOcLKvbdmfeYNNfy
+EPDKjvbdZirgogCG
+DnbjjvbdEJhKVwjA
+DnbkKvbdkVvmdBxX
+DnbjjvbdvBEYsOeI
+EPCkKvbdDoCjjwDE
+DoCjjvbdRXNdClID
+EPDKjvbdkxrrTZGt
+EOcLKvbdZdxGzhJC
+DoDLKvbdxnSgxSiD
+DoDKjvbdIryAsMxM
+DnbkKvbdTYKlNzjx
+DncLKvbdIGfzZYXg
+DncLKvbdQvnEClHc
+DnbkKvbdqUTfrRkU
+DoDKjvbdRDcAopdS
+DoDKjvbdTfznMXWF
+EOcLKvbdauCHYKtI
+EObkKvbdNrsvHEtp
+DoDLKvbdDihJvXjA
+DnbjjvbdliDtRVRa
+DncKjvbdgFlZmfgA
+DncLKvbdmJDsptqa
+DncKjvbdfoazvdXh
+EOcKjvbdJXtBgkpp
+EPCkKvbdqUUGrSKt
+EPDKjvbdrMzJyLgi
+EPCjjvbdiGjDYuiu
+EOcLKvbdkWXNcaww
+EOcLKvbdxxIjBoyk
+DnbkKvbdePErjssr
+DnbjjvbdIryArmYM
+EOcLKvbdRMwayNtz
+EOcLKvbdRkZGUgKs
+DoDKjvbdZLrEUOMN
+DnbkKvbdDHMFgAzc
+DnbkKvbdwXMBVaVu
+DnbjjvbddeOrCXDK
+EPDLKvbdwuMeQyLn
+EPCjjvbdBhjbLIej
+EPDKjvbdaNLCSuMg
+EPCjjvbdBhkCKhej
+EPCkKvbdptUGrSKt
+EObkKvbdVTmTfLvK
+DoCkKvbdDoDKkXDE
+DnbjjvbdfoazvdYI
+DnbkKvbdatbHYKtI
+DnbkKvbdVUMtGLuj
+EPDKjvbdeEoRavbj
+DoCkKvbdJpzFPGNe
+DnbjjvbdNHDQNQUk
+DncKjvbdYNqAXuWU
+EPCkKvbdZnnIddzK
+EObkKvbdYlRdTnMN
+EPDKjvbdEzspdkcJ
+DoDLKvbdCIkBjhfK
+EObjjvbdTkuoAvOi
+DoCkKvbdhkdcnUby
+EPCjjvbdHfgZyYXg
+DncLKvbdbsCkTdKB
+DoCjjvbdLqwMzVQz
+DoDLKvbdRkYfUgLT
+EOcLKvbdbQHHELzd
+EPCkKvbdbVCGxLTh
+EObjjvbdmSYuZsEJ
+DoDKjvbdssRsYyeD
+EPDKjvbdLrWlytpz
+DncKjvbdJTZBSlxM
+DnbkKvbdxrnJMrBg
+EPCjjvbdxZgfFxFS
+EObkKvbdUQpnuVIN
+EObkKvbdzjUpQESt
+EObjjvbduaDxsPFI
+DoDLKvbdkyTRsYft
+DoDKjvbdyTOImRbH
+EObkKvbdegkWRnQg
+DoCjjvbdaSFbgsek
+DoDKjvbdrylPsAhO
+DoCjjvbdgGMZnGgA
+EPCkKvbdlqyUzSdJ
+DncKjvbdwNWAMdFN
+EPDKjvbdTlWPAuoJ
+EOcLKvbdUMWPAuoJ
+DnbjjvbddZxowxqC
+EPCkKvbdEuyQPlie
+DoDKjvbdVAaqSqSZ
+EPDLKvbdwtldpxlO
+EOcLKvbdrRtkNkBN
+DncKjvbdJqZeOenF
+DncKjvbdfHkWSNqH
+DoCkKvbdnUuZjirG
+EOcKjvbdsCFmMGkZ
+DoDLKvbdwzIFfYEr
+EOcLKvbdqqtjmjaN
+DoCjjvbdrbGNLgKy
+EPDKjvbdNHComQUk
+DnbkKvbdIMBznWqL
+EPCjjvbdEKHivXjA
+EPDLKvbdVhYWYGxz
+EPDLKvbdZxcjNblS
+DnbjjvbdJpzEoFme
+EPDKjvbderBWzkcP
+DoDLKvbdpssgRrKt
+EObkKvbdtbbtvuoP
+EOcLKvbdqGDeUWAh
+DoDKjvbdlZSrTYft
+EOcKjvbdFfKRmhtR
+DnbkKvbdNPxRVnGs
+EPDLKvbdZshhxcsO
+EPCjjvbdMoxQvNgT
+EPCjjvbdKaKfmBxR
+EPDLKvbdSwjkmzjx
+DoCkKvbdjbkkRGtg
+DoDKjvbdfoazwDxI
+DoDKjvbdqwQLbhxq
+EPCkKvbdZtIhyETO
+DncLKvbdmpZxukYb
+EOcKjvbdMoxQumgT
+DoCjjvbdLYqJrzuG
+EObjjvbdnGeXlmfy
+EPDLKvbdyzeOSHhh
+EOcLKvbdiZuGMQmf
+EPCkKvbdWSNwadkc
+DncKjvbdhfibyVjV
+EOcKjvbdQmXbZOUz
+DoCjjvbdSKxeuGkT
+DnbjjvbdbrbkUDjB
+EPDLKvbdJcKCqJbx
+DnbjjvbdjSziTLJz
+EOcKjvbdZxdKNcMS
+DoCkKvbdelfWfmJk
+DoCjjvbdFjeScHlu
+EPDLKvbdnCJvwnnV
+EPDKjvbdNrsufduQ
+DnbkKvbdjcLjqGuH
+EObjjvbdmbKXYOnV
+DoCjjvbdRacdkiYk
+EObkKvbdaaVdfQQX
+DoCkKvbdJpydnfOF
+DoCkKvbduCbtwVoP
+DoDKjvbdpxnhHRDx
+EOcKjvbdmJEUQtqa
+EPDLKvbdRkZGVGjs
+EPDKjvbdEObjkXCd
+EObjjvbdCTAbtGWr
+DoCkKvbdqTsfrSKt
+DncLKvbdaMkBsUmH
+DncLKvbdqlyixlIJ
+EPCkKvbdvwMAuaVu
+DncKjvbdiUzEwRuC
+DoDKjvbdiUzFWrVC
+DnbkKvbdkDMKpfuH
+EObkKvbdZnnJFEzK
+EObkKvbdWWhwudEg
+DoCjjvbdypoNIiwA
+DoCjjvbdShyiqABM
+DnbjjvbdOFEThhkE
+DnbjjvbdRXNcbkgc
+DoCkKvbdqUTfrSKt
+EPDLKvbdfNGWgMjL
+EPDLKvbdGFirOJUR
+EOcKjvbdSCEFMJYk
+EOcKjvbdmpZxukYb
+EPDLKvbdrafNLgKy
+DnbkKvbdmJDsqUrB
+DnbjjvbdjKFgimXr
+EOcLKvbdVYgtZjoO
+EObkKvbdTvMPjUBR
+EOcLKvbdSxKkmzjx
+DoDKjvbdnPzYvKxb
+EPCjjvbdaRfDITek
+EObkKvbdjKGIJmXr
+DoCjjvbdliEURVSB
+EObkKvbdFaOqYizm
+EOcLKvbdqGEEsuaI
+DoCjjvbdZQleJNEq
+DoCjjvbdbKlFnnDA
+DnbjjvbdWIXuwfxz
+EPDLKvbdNGcPmPuL
+DoCjjvbdBsBDTevr
+DnbkKvbdczYoxYpb
+EObjjvbdJutedEfi
+DncLKvbdGFirNhsq
+EPDKjvbdUaCQrqRy
+EPCjjvbdQwNdDMID
+EPDLKvbdtSrSyZeD
+DnbkKvbdNHDQMpUk
+DoDKjvbdZirgofaf
+EObkKvbdrpWOibuf
+DoCkKvbdwygfFxEr
+EPCjjvbdSwjlNzjx
+DnbkKvbdjKGHjMxS
+DncLKvbdijFhKNXr
+EOcKjvbdddoRavbj
+EPDLKvbdmIdTpuSB
+DncLKvbdiiehJmYS
+EObkKvbdjcLkQgUg
+DoDKjvbdsQVoJbuf
+EObjjvbdhzUfMQmf
+DnbkKvbdcImKKfWx
+EObkKvbdbQHHELzd
+DnbjjvbdWWiXuceH
+EPDKjvbdjJegjNXr
+EPCjjvbdZyEKNblS
+DoDKjvbdLqvlzVQz
+EPDLKvbdZRNEhmFR
+DnbkKvbdGcjuibJj
+EOcLKvbdGAnpxizm
+EPCjjvbdkVvnDaww
+EOcKjvbdHffzZXwg
+DoCkKvbdKeehCAqV
+EPCjjvbdHEKuiajK
+EOcKjvbdUtMselWK
+EPDKjvbdEXwlTstM
+EPDKjvbdsrrSxzFD
+EOcKjvbdEztQeMDJ
+EPCkKvbddoFSjstS
+DoCkKvbdSCEElIyL
+DncKjvbdFVxpQNJe
+DnbjjvbdXmqAYUut
+DoCjjvbdiZtfLpmf
+DoDKjvbdwygeexEr
+EOcLKvbdiUyeXSUb
+DncKjvbdsZkoraIO
+EOcLKvbdACrYJyhp
+EOcLKvbdTlVoBVoJ
+EPCkKvbdqZPHfqDx
+DnbkKvbdmJDsptqa
+DncKjvbdhkeDnUcZ
+EPDKjvbdURQoUtgm
+EPDKjvbdjAQHAogK
+EObjjvbdCIkCKhfK
+EOcKjvbdYzbfRjWZ
+DnbkKvbdWRnYCEkc
+DncKjvbdyzeORgiI
+EObjjvbdEPCkLWbd
+DoDLKvbdNHComPuL
+DnbkKvbdaRebhUFk
+DnbkKvbdhlEcmtby
+EOcLKvbdliETqUrB
+EPDKjvbdIxTbHkqQ
+DncLKvbdCEPaVjNG
+EOcLKvbdIjEAJogE
+DoCkKvbdsZkpSaHn
+EPDLKvbdEXxLtTtM
+DncKjvbdwXMAvAuu
+EPDKjvbdakMGPODA
+EPCkKvbdauBfxKsh
+EOcKjvbdCJKakJFj
+EPCkKvbdyXhjBozL
+DoDLKvbdkWWnDbYX
+DncKjvbdEPCjkXDE
+DoDKjvbdlqxtzTDi
+EPCjjvbdyTOJNSBg
+DoCkKvbdnGeYMmgZ
+EPCkKvbdaSFbhUFk
+EObjjvbdnCKWxPNu
+DoCjjvbdrWpLbhyR
+EPDLKvbdmRxtyrci
+DnbjjvbdSBdElJZL
+DnbkKvbdrXQLbiYq
+DoDLKvbdWHwuwfxz
+DoCjjvbdZRNFJNEq
+DncKjvbdUVkpJsaR
+DoCjjvbdbiMijfXY
+EPDKjvbdVTmTekvK
+DoCjjvbdeXytTrFz
+DoDLKvbdyYJKCQZk
+DoDLKvbdczZQYZQb
+EObjjvbdRadFMJZL
+DncLKvbdkVvnECYX
+DncKjvbduaDySneI
+DnbjjvbdwuNFQyMO
+DncLKvbdsrqrxzEc
+DoDLKvbdcSbjtEKB
+EPCjjvbdZtJIyETO
+DoDLKvbdJvUfDdgJ
+DnbjjvbdhbPDFWqR
+DncKjvbdcyyQYYpb
+DoDKjvbdWSNwbFMD
+DoCjjvbdmajXXoNu
+EPCkKvbdxZgeexEr
+EOcKjvbdxsOIlrBg
+DoDKjvbdZyEJmbkr
+DncLKvbdTkunaVni
+EOcLKvbdUQpoUthN
+DoDLKvbdyNsHxTJD
+DncKjvbdEztRElCi
+DnbkKvbdXnRAYVVt
+DnbjjvbdqAheAWgd
+DnbkKvbdCJLBkIfK
+EPDKjvbdUGzmkwWF
+EPCkKvbdSiZiqABM
+EPDLKvbdidkGtoAO
+EOcLKvbdYlSDsnLm
+EPDKjvbdMSWmZtpz
+DoDKjvbdlhdURVRa
+EOcLKvbdOYOuzdOU
+DncLKvbdrafMlGkZ
+EObjjvbdrylPraHn
+DnbjjvbdDncLKwCd
+DoCkKvbdoznELXoA
+DoCkKvbdmttykJrG
+DoDLKvbdBvzciEov
+EPCjjvbdeXzUUSFz
+DoDKjvbdtunYKQsA
+EObjjvbdqceJQNvB
+EOcLKvbdqTtGqqkU
+DoCkKvbdiGjDYujV
+EPCkKvbdRWnEDLhD
+EOcLKvbdcSbjtDia
+DncLKvbdTqROuVHm
+EOcKjvbdiifIKMxS
+EObkKvbdlYrqsZGt
+DoDKjvbdSBdFLhxk
+DnbkKvbdVUNUFkuj
+DoCjjvbdrzLpSaIO
+DoDKjvbdzGxlANFX
+DoDLKvbdfHjuqmpg
+EPDKjvbdZRMeIldq
+DncKjvbdMfcPlpVL
+DncKjvbdxKwDgzzG
+EOcLKvbdYzbfRjVy
+EObkKvbdWSNwbElD
+DoCkKvbdeFOrCXCj
+EObjjvbdbKlGOmcA
+EOcKjvbdDxXktUTl
+EPCjjvbdvBDySneI
+EPDKjvbdLFehCBRV
+DoDLKvbdiZuFlROG
+EPDKjvbdDoDLKvbd
+DoCjjvbdQwNdCkhD
+DoCjjvbdCJLBkIfK
+DnbjjvbdlqyUzSci
+DncLKvbdNHCpMpUk
+EOcKjvbdiMFEOVCy
+DoCkKvbdnGeYNOGy
+DnbkKvbdZoOIddzK
+EOcKjvbdFpATWffZ
+DoDKjvbdeOeTKtTr
+DnbjjvbdGGKSNhsq
+EOcKjvbdyXiKCPyk
+DoCjjvbdeAURNYKG
+DoDKjvbdpssfrRjt
+EPDKjvbdnVVZjjRf
+EOcKjvbdiZuGMQmf
+EOcLKvbdNHDPlotk
+DnbjjvbduCbtwVoP
+EOcKjvbdxUleQxlO
+DoDKjvbdnHFYMnGy
+DnbjjvbdUVlPitAq
+EPCkKvbdjAPgAofj
+DoCkKvbdTlVoAuoJ
+EPCkKvbdmSYtyrdJ
+EPDKjvbdBsAcTevr
+EPCkKvbdUyITzKnn
+DnbjjvbdbQHGdLzd
+EOcLKvbdezuyFIsw
+DoDLKvbdEXwlTtUM
+EOcKjvbdKyRJrztf
+DnbjjvbdtTSSxzEc
+DnbjjvbdHDjujBij
+DoCjjvbdsQVnicWG
+EObkKvbdZsiJYcrn
+EPDLKvbdUtNUFkuj
+DoDKjvbdNPwpumfs
+EOcKjvbdSBcdlJZL
+EPDLKvbdmfeXlmfy
+DncKjvbdIsZAsNXl
+DncLKvbdmJDsptrB
+DncKjvbdGYuUaEXb
+DncLKvbdyYJJbPzL
+DnbkKvbdrpVnicWG
+EPCjjvbdTqQoVUgm
+DoDLKvbdFVyPpMjF
+EObkKvbdZnnIeEyj
+EObkKvbdbUagYKtI
+DoCkKvbdqGDdtWBI
+EPDLKvbdFVxpQNKF
+DncLKvbdkWXNdCYX
+EPDKjvbddwystRez
+EOcKjvbdaNKasUlg
+DnbkKvbdNdctIhjd
+EPCkKvbdatagYKsh
+DoCkKvbdfNFvgMik
+EObjjvbdJYTbIMQp
+DoCjjvbdEYYMTtTl
+DncKjvbdWRmxCElD
+EPCkKvbdbsCjsdKB
+EOcLKvbdFVxpQMie
+EObkKvbdpaJFAWgd
+EPDLKvbdijGHimXr
+EPCjjvbdlhctQtqa
+EObjjvbdFVxoolie
+DncKjvbdrJAKEmOe
+DnbkKvbdzQnmIiwA
+EPCkKvbdkHfkeemk
+DnbjjvbdLGGHaaQu
+DnbkKvbdOSsugEtp
+DnbkKvbdZtIiYcrn
+DoCjjvbdQZNAGsSK
+EObjjvbdNPxRWOGs
+DoCkKvbdVUMsfLuj
+DnbjjvbdmJETqUqa
+EPDLKvbdBsAcUFvr
+EOcLKvbdIsZArlwl
+EPCjjvbdNddTiJKd
+DoDKjvbdyXhiaozL
+DncLKvbdjmCLzEfo
+EOcLKvbdRadElJYk
+DncLKvbdjbkkQfuH
+EObkKvbdXFxzUAOs
+DncLKvbdxZhGFwdr
+DoCjjvbdNsTugEuQ
+EObjjvbdRbDdlIyL
+DoCkKvbdePEsLUUS
+DoCjjvbdOStVgFVQ
+EPDLKvbdUtMtGLuj
+EObjjvbdFjdrbhMu
+EOcKjvbddeOrBwCj
+DnbjjvbdxUmFRYkn
+DnbjjvbdCEQBVimG
+EOcLKvbdvAdZTPEh
+EPCkKvbdGcjvJaij
+EPCjjvbdOFETiIjd
+EOcLKvbdemGWgNKL
+DoCkKvbdqTsfrRkU
+DncLKvbdbrcKsdKB
+EPDLKvbdTAFIhBoE
+DoCjjvbdKCjCqJbx
+DnbjjvbdNsUWHFUp
+EPDKjvbdkWWmcaxX
+EPDLKvbdbKlFoNcA
+DoCjjvbdkIGkefNk
+EPCkKvbdXFyZtAPT
+EPDKjvbdpxnhGpcx
+DoDLKvbdhanbeWqR
+EOcKjvbdliEUQtqa
+EObjjvbdbBVeFpPw
+EObkKvbdQdDApQdS
+EPDLKvbdnQZyVkZC
+EObjjvbdhbOcEwQq
+DnbjjvbdBdPaWKMf
+DoCjjvbdCTAbtGWr
+EPCjjvbdEvYpQMie
+EObjjvbdDxYLtUTl
+EObkKvbdCTBDTfXS
+EPCjjvbdmpZxvKyC
+EPCkKvbdRzKITDWA
+EObkKvbdemGXGmJk
+EOcLKvbdIryAsNXl
+DoDKjvbdkWXNcaww
+EObkKvbddCTNSAUN
+DncKjvbdvBDxroEh
+DncLKvbdiCPDEwRR
+EObjjvbdRkZGVHLT
+DoCjjvbdFkFSbhNV
+EPDLKvbdwjvdHzzG
+DoDLKvbdqquKmkBN
+EOcKjvbdsQVoJcVf
+EPCjjvbdYlSEUOMN
+EObkKvbdjKGIKMxS
+DncLKvbdRpUGifDw
+EObkKvbdEuxooljF
+EPDLKvbdzitpQETU
+EOcKjvbdTvLpKUAq
+DoCjjvbdrSVKmkAm
+EOcLKvbdEvZQPmJe
+EPCkKvbdfelZnHHA
+EOcLKvbdjhGlGGNk
+DncKjvbdCEPaWJmG
+DncLKvbdrpVnjDWG
+DoDLKvbdeOeTKtUS
+DoCkKvbdtbbuXVno
+EObkKvbdYpleJMeR
+DnbjjvbdiCPDEvqR
+DoDLKvbdUslsekuj
+DnbkKvbdGBPQyJzm
+EPCkKvbdtbcUwVoP
+DoDKjvbddxZssrFz
+DncLKvbdkIGlGFmk
+EPCkKvbdhuZdwRtb
+EObkKvbdehLWSOQg
+DoCkKvbdatafwjsh
+DoDKjvbdhfjCyViu
+DoCjjvbdFyUuAcxC
+EObkKvbdUMWPAvPJ
+EPDLKvbdxxIjBoyk
+DnbjjvbdMRvlytpz
+EPCkKvbdDxYLtUTl
+DnbjjvbdiVZeXSUb
+DoCjjvbdffMZmgHA
+EPDLKvbdnPyyVkYb
+EPCkKvbdZtIhyETO
+DncKjvbdRECaPqDr
+EPDKjvbdVrNxBeMD
+DnbkKvbdKVuFdFGi
+EOcLKvbdrzLosAgn
+EPDKjvbdLLAgvAKZ
+EOcLKvbdLYpirztf
+DncKjvbdnGeXlnHZ
+EOcLKvbdQdDAopdS
+DnbkKvbdptTfrRkU
+DoCjjvbdqGEFUVaI
+DncLKvbdrDeIomvB
+DoDLKvbdyOTHxSiD
+EOcLKvbdRpTfjGDw
+DoDLKvbdzitpPdTU
+DnbjjvbdUxhTykOn
+EOcKjvbdGFjSNhtR
+EObkKvbdidkGuPAO
+EObjjvbdVAapsQrZ
+EPDLKvbdQccAopdS
+EObjjvbdmozYukZC
+EOcKjvbdGFjSOIsq
+EPCkKvbdyzeNrHiI
+DncLKvbdEOcKjvcE
+DncLKvbdLFfIBaQu
+DoDKjvbdtlXwBUBX
+DoCjjvbdeOeTLTsr
+DncKjvbdiZuGLpnG
+DoCkKvbdWRnYBdkc
+DncLKvbduCbtvvOo
+DnbkKvbdGGKRnIsq
+EOcLKvbdVTmUFkuj
+EOcKjvbdFkEsDHlu
+DoDKjvbdQwNcbkgc
+DncLKvbdWRmwbFLc
+DnbjjvbdHlBzmwRL
+EPDKjvbdDncKjwCd
+EObkKvbdGBPRYizm
+EOcKjvbdqrVLNjaN
+EObjjvbdqFceUVaI
+DoCkKvbdZQmFImFR
+EPDLKvbdmIctRVSB
+EObkKvbdjAQHBPfj
+EObjjvbdrEFIonWB
+DnbjjvbdsPuoKCuf
+DoDKjvbdtbbuXWPP
+EPDLKvbdOStWGduQ
+DoCkKvbdUQqPUuIN
+EPDLKvbdwyhFewdr
+EObkKvbdShyiqAAl
+EPDLKvbdGZUuBEXb
+EPCkKvbdHffyyXwg
+EObjjvbdGBOpyJzm
+EObkKvbdZirgpGaf
+EObkKvbdRjxfUfkT
+EPDKjvbdZHWdAPSi
+DnbjjvbdVrOYBdkc
+DoCjjvbdGGKSNhsq
+EOcKjvbdJqZeOenF
+EOcLKvbddBsNSAUN
+DncKjvbdZtJJYcsO
+EPDKjvbdBraDTevr
+DoCkKvbdRDcApQdS
+EObjjvbdGGJrNiTq
+DoCjjvbdGLFTCgmV
+DoCjjvbdtlXwBUAw
+DncLKvbdQwNdClHc
+DoDLKvbdygYlAMeX
+EPDLKvbdTvMQKTaR
+EPCjjvbdiMFDnVDZ
+DoCjjvbdiBoDFXRR
+EObkKvbdUQqOuUgm
+EOcKjvbdaMkBsVNH
+EObkKvbdwuNEqZMO
+EObjjvbdLAkGlbXq
+EObkKvbdkCkkQgUg
+DncLKvbdVqnYCFLc
+EPCkKvbdxVMeRZLn
+DncLKvbdRXOEClHc
+EObjjvbdvwMAvBWV
+EObjjvbdIwsahLpp
+EObjjvbdKDKCpicY
+DoDKjvbdlrZUzTEJ
+EOcLKvbdyYIjBpZk
+DncLKvbdxsNhlqag
+EPDKjvbdgPazvdXh
+EPDLKvbdbKlGPNcA
+DoCjjvbdqUUHSRjt
+DnbkKvbdNeDsiJKd
+DnbjjvbdqGEFTvAh
+DoDKjvbdnUtykKRf
+EPDKjvbdZtJJZDrn
+DoCjjvbdmRxtysEJ
+EOcKjvbdQmXbYnUz
+EPDKjvbdjmCLzFGo
+DncKjvbdsBfMkfkZ
+EPCkKvbdFVxpPlie
+DnbkKvbdZLrEUOMN
+DoCkKvbdEOcKkXDE
+EObkKvbdvBEYsPEh
+EPDKjvbdcJMjLGXY
+EOcLKvbdOYPVzcnU
+DnbkKvbdsQWOjDWG
+EOcLKvbdfHjvRnRH
+DoDLKvbdmbKXYPOV
+DncKjvbdrpWPJcVf
+EOcKjvbdURROuUgm
+DnbkKvbdrovOicWG
+EObjjvbdLYpirzuG
+DnbjjvbdGQASvgGZ
+DnbkKvbdYzcFqjVy
+DncKjvbdBsBCtFvr
+DoDLKvbdYgXEAOri
+EOcLKvbdqTsfqqjt
+DncKjvbdPIAYZAYa
+EOcLKvbdypnliJwA
+DnbkKvbdhyuGLqNf
+EOcLKvbdjhGkfGOL
+DncKjvbdjblLRGuH
+EPCjjvbdxwhibPyk
+EOcKjvbdBhkCLIfK
+DnbjjvbdJTZArlxM
+DoCkKvbdRjxetgKs
+EObkKvbdiUyeWrVC
+EOcKjvbdwXLaWAuu
+EPDLKvbdssSTZZdc
+EObkKvbdcSbjtDia
+DncKjvbdgGMZnHHA
+DoCkKvbdatafwkUI
+DncLKvbdnCKWxPNu
+EObjjvbdyOShXrhc
+EPCjjvbdpyPHfqEY
+DoDKjvbdbUbGxKsh
+EOcKjvbdypoNJKXA
+EObkKvbdyTOJMrBg
+DoDLKvbdiZtfLpmf
+EPCkKvbdLGFgbBQu
+EOcLKvbdCJLBkJFj
+DnbkKvbdUxgszLPO
+DoDKjvbdUQqPVVHm
+EPCjjvbdijGIKNYS
+EPDKjvbdCJKajhej
+EPDLKvbduoTzqLPU
+DnbjjvbdJTZBTMwl
+EOcLKvbdLAjfmBwq
+DoDLKvbdQwOECkhD
+DoCjjvbdQYmAHTSK
+DoDKjvbdEuyQQMjF
+DoDKjvbdZdwfzhIb
+EOcKjvbdyTOJNRag
+DoDLKvbdbBVdfQPw
+DoCkKvbdbVBfxLUI
+DncKjvbdcIljKevx
+EOcLKvbdhgKDZViu
+EObjjvbdOTUWHEtp
+DncKjvbdZRMeIldq
+DnbjjvbdkHgMGGNk
+EOcLKvbdZMSETmlN
+EPCkKvbdjcMKpfuH
+EPDLKvbdiBncFXQq
+EObjjvbdJcKCqKDY
+DoDKjvbdQwOEClID
+EPCkKvbdRpUHJecw
+DoDKjvbdZjSgogBf
+DoCkKvbdEObkKvbd
+DoDLKvbdDwwktUTl
+DoCkKvbdSKyGVHKs
+DnbkKvbdZMSETnMN
+DncLKvbdiZuGLpmf
+EObjjvbdjcLjpgVH
+EOcLKvbdYzcFqjVy
+EPCjjvbdQvnDcLhD
+DoCkKvbdDihJvYKA
+EPDLKvbdJqZeOenF
+EOcKjvbdWXJXvDdg
+DoCjjvbdznpQeCkx
+EPCjjvbdjJehJmXr
+DoDKjvbdmSYuZsDi
+DoDKjvbdFVyPolie
+DnbjjvbdULvPAvOi
+DncKjvbdwzIGFwdr
+DnbkKvbdOEcsiJKd
+EPCkKvbdEJhJuwjA
+EObkKvbdYSkaNUOx
+EObkKvbddoFSkTtS
+DoDLKvbdFkFTDHlu
+DoCjjvbddwzTtRez
+EOcLKvbdDwwlUTtM
+DoDKjvbdHDjvJaij
+EObkKvbdyTOIlrBg
+EOcLKvbdtSqsYzFD
+EObkKvbduVmwjQsA
+EPDKjvbdbiMjKfXY
+DncLKvbdsQWPKDWG
+DncLKvbdRbEElIyL
+DnbjjvbdGKeTDHlu
+EPCkKvbdrpWOjDWG
+EObjjvbdVwJYWEFH
+EPCjjvbdvBDySoFI
+EPCkKvbdZMSDsmkm
+EObkKvbdqYnhHREY
+EObjjvbdyqPMiJwA
+DncLKvbdCTBCtGXS
+EPCkKvbdfekynGgA
+EPCkKvbdvvkaWBVu
+DoCjjvbdGZUuAdYC
+DoDKjvbdpyOgfqDx
+EPCjjvbdePFTKstS
+EOcLKvbdVviXudFH
+EPCkKvbddZyQYZQb
+DnbkKvbdUaCQrqRy
+EPDLKvbdQwNdDMID
+DncKjvbdUaCRTQrZ
+DnbjjvbdHDkWJbKK
+EOcKjvbdOTTvGduQ
+DnbjjvbdssRrxzEc
+EObjjvbdezuxdiTw
+EOcLKvbdGLFTCgmV
+EPDLKvbdUxgtZkOn
+EOcLKvbdbrbjscia
+DnbjjvbdjJfHimXr
+EOcKjvbdjcMLQgUg
+DoDKjvbdlYrqrxft
+EPDKjvbdGYttaEXb
+EOcLKvbdhbPDEwQq
+EOcKjvbdvAcxroEh
+DoDKjvbdVgxVxHYz
+DoCkKvbdTqQnuVIN
+DoCjjvbdrXQMCiZR
+EOcKjvbdMSWlytpz
+DoCjjvbdBiLCLJFj
+EObkKvbdUyHtZkPO
+DoDLKvbdGcjujCJj
+EPCjjvbdfkGzbfAE
+DoCjjvbdDoCjjwDE
+DnbkKvbdqGDdsvAh
+DoDLKvbdjvXNdBww
+EOcKjvbdANHySvyx
+DoCjjvbdeJjRvUzn
+DncKjvbdqUTgRqkU
+DncLKvbdEvZQPljF
+DnbjjvbdSPsgKFdX
+EOcKjvbdGLFScHmV
+EPCjjvbdqUTgRqkU
+EPCkKvbdNxOuzdOU
+DoCkKvbdpfEEtWBI
+EOcLKvbdDwwlTtTl
+EPCjjvbdSZjITDWA
+DncKjvbdQwNcblID
+DnbjjvbdijGIKMwr
+DnbjjvbdYpldiMdq
+DncLKvbdemGXHNKL
+EPCkKvbdEKHjWYKA
+DoDLKvbdwXMBWAvV
+DnbjjvbdQwOEClHc
+DnbkKvbdbUbHYKtI
+DncLKvbdCSaCtFvr
+DncLKvbdEuyPpNJe
+EPDKjvbdFVyPolie
+DncKjvbddneSkTtS
+EOcKjvbdZtJIxcsO
+EOcKjvbdiGicZWJu
+DncLKvbdOFDtIiLE
+DoDLKvbdOSsufduQ
+DnbkKvbdMfcPmQVL
+EObjjvbdiUzEwSVC
+DoCkKvbdCIkBkJFj
+DncLKvbdYkrETmlN
+EObjjvbdqZOggREY
+EPCkKvbdHDkViajK
+DnbkKvbdbsDLTdKB
+EPDLKvbdlqxtzTDi
+DncKjvbdLGFgbAqV
+EObjjvbdoAKztHcn
+EPDLKvbdRXODblID
+DoCjjvbdIHGzYwxH
+EObkKvbdNPwqVnHT
+EOcKjvbdxrnImRag
+EOcLKvbdiLddNuCy
+DoCkKvbdkMakzEfo
+EObkKvbdnPyxukYb
+EPCjjvbdZdwfzgiC
+EPCkKvbdnHEwmNfy
+EObjjvbdySmiNRag
+EOcKjvbdzeZnzdyp
+EPCjjvbdJvVFdEgJ
+EOcKjvbdZQldiMeR
+EOcKjvbdFyVVAdYC
+DncKjvbdJXsahMRQ
+DnbjjvbdfNGXGljL
+EOcLKvbdwWlAvAvV
+DncLKvbdkIHLefNk
+DncLKvbdliDtQtrB
+DoCkKvbdxZgefXdr
+DncKjvbdCWzchdpW
+EPCkKvbdpyPHfpdY
+EOcKjvbdhbOcFWqR
+DnbjjvbdzjUpPdSt
+DoDLKvbdZMRdUOLm
+DncLKvbdVwJXucdg
+EPCjjvbdWXIxVcdg
+DnbkKvbdMpXpvOHT
+DncLKvbdRkZGVHKs
+DoDKjvbdmpZyWKxb
+DoCjjvbdegkWRmpg
+DncLKvbdyzeOSHhh
+EPDLKvbdRECaPpdS
+EPDKjvbdqvpLcJZR
+DoCjjvbdRDbaPqDr
+EObjjvbdRECaPqDr
+EOcLKvbdsBfNLgLZ
+DncKjvbdZyEKOCkr
+DnbkKvbdSPsgJfEX
+EPDKjvbdZRMdiMeR
+EPDLKvbdDwwktTsl
+EPDLKvbdLhbLpxAS
+EPDKjvbdZirgpHBf
+DoCkKvbdmtuZkJqf
+DnbjjvbdwWkaWAuu
+DnbjjvbdRDcBPqES
+DnbkKvbdyzeNqgiI
+EObjjvbdYkrEUOLm
+DoCkKvbdmtuZkKRf
+DoCkKvbdNdctIhkE
+DnbjjvbdhytfLqOG
+EOcLKvbddZyPwxpb
+EPCjjvbdYzbeqivZ
+EOcKjvbdwygfGXeS
+EOcLKvbdRosfifEX
+EPCkKvbdznopdbkx
+EObkKvbdVBBqSqSZ
+EObjjvbdQlxCZNtz
+EPCkKvbdhlFDmtby
+DoDLKvbdCDpAvJmG
+EPDKjvbddeOrCXDK
+EOcLKvbdrovOjDWG
+DnbkKvbdIGfyyYYH
+EObkKvbdmbKWwnmu
+EOcLKvbdkDLjqGuH
+EPDLKvbdqrUkNjaN
+EPDKjvbduDDVXWPP
+EObjjvbdZnnJFEzK
+DnbjjvbdaRfCgtGL
+DoCkKvbdGKdsDHlu
+DncKjvbdqlyiyMHi
+DoDLKvbdSLYetgLT
+DnbkKvbdZQleJNEq
+EOcLKvbdZLrETnMN
+DnbjjvbdiUydwRuC
+EObjjvbdnPzYvLYb
+EPCjjvbdGYuUaEYC
+EObjjvbdACqwiyiQ
+DncKjvbdIHGzZYXg
+DncKjvbdxrnIlqag
+DnbjjvbdySmhlqag
+DoCjjvbdSCEFMJZL
+EObjjvbdSKxfUfjs
+DnbjjvbdnUtyjjRf
+DncLKvbdkyTRsZGt
+DoDLKvbdWRnXbElD
+EOcKjvbdjvXNcbYX
+EOcKjvbddjKSWUzn
+DoDKjvbdvBDxrneI
+EOcLKvbddndsKtTr
+DoDLKvbdZjTHpGbG
+DnbkKvbdpfDdsuaI
+EPCkKvbdfMfWgNJk
+DoCkKvbdjJegjNXr
+DoDKjvbdcTDLTdKB
+EPDLKvbdwzHfFxEr
+DncKjvbdfMfWgMik
+DnbkKvbdrbFllGkZ
+EPCkKvbdCIkCLJGK
+EObjjvbduDDUvvOo
+EOcKjvbdDxYMUTsl
+EOcLKvbdsPvOibuf
+DncKjvbdUsltGLvK
+EPCjjvbdyOShYTIc
+DoDKjvbduaEZSoEh
+DncKjvbdLrXMzUpz
+DoCkKvbdNsTufeUp
+EObkKvbdLGGIBaQu
+EPCjjvbdmSZVZsEJ
+DncLKvbdQdDAoqDr
+DoCkKvbdKCicRJbx
+EPCkKvbdxwhibQZk
+DoDKjvbdTvMQJsaR
+DoCkKvbdYzcGSJuy
+DnbkKvbdwyhGFwdr
+DoCjjvbdEOcLKwDE
+DoCkKvbdGGKRmhtR
+EOcLKvbdrzMQTAgn
+DoDLKvbdJvVFceHJ
+DnbkKvbdfMfWfmJk
+EPCkKvbdmajWwnmu
+EPCjjvbdxrmiMqag
+EOcKjvbdqUTfqqkU
+EObkKvbdoAKztHcn
+EObkKvbdkyTSTZHU
+EPCjjvbdiCOcEwRR
+DnbkKvbdGZUtaDwb
+EPCjjvbdYORAXuWU
+DoCkKvbdULvPAuoJ
+DnbjjvbdcSbjscjB
+DoDKjvbdLrXMytpz
+DncKjvbdIryBTNYM
+DoCjjvbdZyDinCkr
+EPDLKvbdZoOJFEyj
+DncLKvbdajkfOmcA
+EPDLKvbdRNYCYmtz
+DoCkKvbddePRawDK
+EOcKjvbdbUbHYKtI
+EPCjjvbdbrbjscjB
+EPDKjvbdKDJcRKCx
+EObjjvbdqcdiQOVa
+EPDKjvbdZjTIPgBf
+DnbjjvbdrSUjmjaN
+DnbjjvbdEXxLsstM
+EPCkKvbdFjeSbglu
+DnbkKvbdLqwMytpz
+DoDKjvbdUGznMXVe
+EObkKvbdpstHRrLU
+DoDKjvbdYTLaNUPY
+DnbkKvbdGKdrbhNV
+EObjjvbdRMxCZNtz
+DncLKvbdDihJuwjA
+EPCjjvbdOFDtJIkE
+DnbkKvbdliEUQuSB
+DoDKjvbdkCkkQftg
+EPCkKvbdGZVVAcwb
+EObjjvbdkyTSSxgU
+EPDKjvbdIryBSlxM
+EOcKjvbdWIXvXfxz
+DoDLKvbdhfjCyWKV
+DoDKjvbdNQXpumfs
+DncKjvbdiMEcnVCy
+EPDLKvbdxVMeRZLn
+EPCkKvbdDoDKjwDE
+DnbkKvbdSCEFLiZL
+DoCjjvbdqYoHgQcx
+EObjjvbdxZhFexFS
+EOcLKvbdkDMLRGuH
+EPCkKvbdVwJXvDdg
+DoCjjvbdjhHLefOL
+EOcLKvbdiCOcFWpq
+DnbjjvbdrovOjCvG
+DncLKvbdRzKHsCvA
+EPCkKvbdDoDLKwDE
+EOcKjvbdrNZjZLhJ
+EObjjvbdTAFIhBoE
+DncKjvbdlqyVZsDi
+DncLKvbdjggMFenL
+EPDLKvbdUsltGMWK
+DoCjjvbdkyTRsZGt
+EOcLKvbdrzMPsBHn
+EPCkKvbddZxpYYpb
+DncLKvbdGKdsCgmV
+DnbkKvbdvAdYsPEh
+DoDLKvbdqUUGrSKt
+EPCjjvbdxnTHxTIc
+EOcKjvbdZisIQGaf
+DncLKvbdBhjbLJFj
+DoCkKvbdJSyBTNYM
+DnbjjvbdmfdwlmgZ
+EOcLKvbdJcJcRJbx
+DncLKvbdmoyyWLYb
+EObjjvbdSKxfUfkT
+EObjjvbdlAlnmALA
+DoDLKvbdTlVnaVoJ
+EOcKjvbdnCKWwnnV
+EPCjjvbdjbkkRGtg
+EPCjjvbdULuoBVoJ
+EPDKjvbdwMvAMceN
+DnbkKvbdznopdcLx
+EPCkKvbdeuzwoizs
+EPCjjvbdpssfrRjt
+EOcKjvbdiGibyWJu
+DnbkKvbdYSlBNToY
+EPDKjvbdkVwNcbYX
+DoCjjvbdsPuoJcVf
+DnbkKvbdrbGNLgLZ
+DnbkKvbdRbEFMJYk
+EObjjvbdqceIonVa
+DnbkKvbdTpqPUuHm
+EOcLKvbdVviXvEEg
+EOcLKvbdvAcxrndh
+DnbjjvbdTYKkmzkY
+EOcLKvbduDCuXVno
+EPCkKvbdEvYpPlie
+DncLKvbdaSGCgtFk
+DoCjjvbdpfDdtWBI
+DncLKvbdHDkWJbJj
+DncLKvbdqZOgfpdY
+EPCkKvbdFxuVBEXb
+DoDKjvbdnBivwnnV
+EPCkKvbdRWmcbkhD
+EObjjvbdfIKvSOQg
+DnbkKvbdcIlikGWx
+EOcKjvbdQdDBQQdS
+EPCjjvbdnPzZWKyC
+DnbkKvbdZxcimbkr
+DncLKvbdLFfHaaRV
+DoCjjvbdYSlBNToY
+DnbjjvbdKCicRKDY
+EPCkKvbddneSjtUS
+EObjjvbdmIctRUqa
+DncKjvbdYqMdiNFR
+DnbjjvbduaDyTPFI
+EPCkKvbdePEsLTtS
+EPCkKvbdbUagYKsh
+DoDLKvbdssSSxzFD
+EObkKvbdMuSrLNAX
+EPDLKvbdddnqbWbj
+DnbkKvbdvAcySneI
+EPDKjvbdatbGxLUI
+EOcLKvbddePRbWbj
+DoDLKvbdijGIKNYS
+EPCjjvbdNrsugEtp
+EOcLKvbdxZhGGYEr
+DnbkKvbdTkvPAvPJ
+DoCjjvbdFyUuAcwb
+DnbjjvbdJTZBTMxM
+EPDLKvbdaMkCStmH
+EPDLKvbdjKGHimYS
+DnbkKvbdelewGlik
+EObjjvbdkHgMGGOL
+EObkKvbdURRPUuHm
+EOcLKvbdjKFhKNYS
+EPDLKvbdhyuFkpnG
+EOcLKvbdRosgJecw
+DoCjjvbdczYoxYqC
+DncLKvbdzaAPGgCM
+EPDKjvbdiUzEwSUb
+DoCjjvbdKQzEneme
+EObjjvbdatagXkTh
+DoCjjvbdwtldqYkn
+EOcKjvbdUxgszLOn
+EPCkKvbdUaBprprZ
+EOcLKvbdYNqAYVVt
+EObjjvbdbUafwkTh
+EPDLKvbdcIljLGWx
+DnbjjvbdNHDPlotk
+EOcLKvbdkIHMFfOL
+EPDKjvbddePSCXDK
+EOcLKvbdbUafxLTh
+DoDKjvbdQlwaxmtz
+DoCkKvbdbQHHELzd
+EPDLKvbdhficZWKV
+DoDKjvbdqrVLOLAm
+DoCjjvbduDDUvvPP
+EPCjjvbdCEQAuilf
+EOcLKvbdEASIlywX
+DncLKvbdRNXayNtz
+EOcKjvbdVrOXaeMD
+EPCjjvbdFWYopNKF
+DnbkKvbdSQTfjFcw
+DoDLKvbdJTZAsMwl
+DoCjjvbdiCPDEvpq
+DncKjvbdVwIwuceH
+EPDLKvbdJvVFcdfi
+EPCjjvbdcbSlrATm
+DnbjjvbdqBJFAXIE
+EPCkKvbdTAFJHbOd
+EPCjjvbdcTCkUEKB
+EPCkKvbdxwhibPzL
+EPCkKvbdRpTfifEX
+EPDLKvbdvAdYsOeI
+DncKjvbdpxngfpdY
+EPCjjvbdEXwksstM
+DnbkKvbdNrsufeUp
+DnbkKvbdJKEAJogE
+DoCkKvbdNsUWGduQ
+DoCkKvbdbrcLTcjB
+EOcKjvbdiHJcZViu
+EObkKvbdEztQdkcJ
+DoCjjvbdliETptqa
+EOcLKvbdOEdUIhjd
+DoCkKvbdSKxfVGkT
+EPCjjvbdIsZAsMxM
+EOcKjvbdZsiIyDsO
+DncLKvbduDCtwWOo
+DnbkKvbdEztQdlCi
+DnbjjvbdLZQjSztf
+DoDLKvbdXmqAXuVt
+EPCjjvbdxsOJNSCH
+DoDLKvbdRadElJZL
+EOcLKvbdWRnXbEkc
+DncKjvbdSCEFLiYk
+EPDLKvbdidkHVPAO
+DoCjjvbdkClKqGtg
+EPDKjvbduLxXBUAw
+DncLKvbdqUTfqqkU
+EObjjvbdcImKKevx
+DoDLKvbdMgCpMpVL
+DnbjjvbdtTRsYydc
+DnbkKvbdKefHbBQu
+EOcKjvbduoTzpjnt
+DoCjjvbdjuwNcaww
+DncKjvbdTkvPBVni
+EPDLKvbdapGfdLzd
+EPDKjvbdvAdZTPEh
+EPCkKvbdwXLaVaWV
+EOcKjvbdZoNhddyj
+DncKjvbdqceIonVa
+DnbjjvbdIwsbHkqQ
+DoDKjvbdjFKfuPAO
+EOcLKvbdbhmJkFvx
+DncKjvbdDxYMUUTl
+DnbjjvbdMfbpNQVL
+DoDLKvbdZeXfzhIb
+EOcLKvbdVAbRSpqy
+DncLKvbdZxcjOCkr
+EOcKjvbdyTNiNSCH
+EObkKvbdiLddOUcZ
+DoCjjvbddwystRez
+DoDKjvbdUsmTelWK
+EPDLKvbdEPCjkWcE
+DoDKjvbdIwsaglQp
+EObkKvbdGcjvJbKK
+DoCkKvbdRzJgrbvA
+EObkKvbdkxsSSxft
+DncLKvbdfHjvSNpg
+DnbkKvbdxsNiMqag
+DoDLKvbdcImKKevx
+EOcLKvbdJutfDdgJ
+DoDLKvbdhancEwRR
+EObkKvbdnPzYvKyC
+DoDKjvbdNHDPlouL
+EPCkKvbdKaKgMbXq
+EOcLKvbdqUTgSRkU
+EPCkKvbdZjSgpHBf
+DncLKvbdHffzYxXg
+DoCkKvbdFkErbhMu
+EObjjvbdhancEwQq
+EPDKjvbdJYUCHkpp
+EPDKjvbdtkwwBUAw
+EOcLKvbdiZuGMRNf
+EObkKvbdrJAKElne
+DnbjjvbdIHHZxwwg
+EPDKjvbdkHgMGGNk
+DoCjjvbdeOeSjtUS
+DoDLKvbdJbicQjCx
+DncKjvbdnGeXlnGy
+EPDKjvbdKVtecdfi
+EOcKjvbdULuoBVni
+DnbkKvbdmJDtRVRa
+DncLKvbdJTZAsMxM
+EPDKjvbdVgxVxHYz
+EPCjjvbdVBCRSqSZ
+EPCjjvbdJqZdnfOF
+DncKjvbdqdEiQOVa
+DnbkKvbdZLqdTnLm
+EOcKjvbdzHZMANFX
+DncKjvbdVrNxBdkc
+DnbjjvbdKkAgvAKZ
+DnbjjvbdmbKWxOnV
+DoDKjvbdYqMeImEq
+EObjjvbdbUagYKtI
+DncKjvbdQZNAHSqj
+DoDLKvbdfoazvcwh
+DnbkKvbdVvhwvDdg
+DoDKjvbdURQoUthN
+EPDLKvbdvBDyTOeI
+DnbjjvbdrRuKmkBN
+DnbkKvbdRbDdlIxk
+EObjjvbdSCDdkhyL
+DoDKjvbdSBceMJYk
+DoDLKvbdwyhGGYFS
+EPDKjvbdQvmcblID
+DoDLKvbdaaWFGQQX
+DoDKjvbdEASImZvw
+EPDLKvbdnQZyWLYb
+EPDKjvbdbrcLUEJa
+EOcLKvbdKCicQjDY
+EPCjjvbdVBCQsQqy
+EPCkKvbdkaNPNALA
+DncLKvbdaNKartmH
+DoDLKvbdCTAbtFvr
+EObjjvbddZxowxpb
+EObkKvbdTpqOuUgm
+DncLKvbdZQleJNFR
+DnbjjvbdUVlPisaR
+EObjjvbdBsBCtFvr
+EPCjjvbdJutecdgJ
+EOcKjvbdfNFvgNKL
+DncKjvbddneSjtUS
+DoDKjvbdjcMKqGtg
+EOcLKvbdGdLWKCKK
+EOcKjvbdRDcBPpdS
+DoCkKvbdauCGwkTh
+EPCjjvbdaNLCStmH
+EOcKjvbdelfWgMjL
+DoDLKvbdtSrSxyeD
+EPCjjvbdemGXGmKL
+EOcLKvbduDCuXWOo
+DncKjvbdauBfxLUI
+DnbjjvbdIHGyyXwg
+EPCjjvbdEvYooljF
+EObjjvbddneTLUTr
+DoCjjvbdySmiNRag
+DoDKjvbdqUUHSRjt
+EObjjvbdczYpXxpb
+EObkKvbdaMkBrtlg
+EPDLKvbdnUuZkKRf
+DoDKjvbdcScKsdJa
+EPCjjvbdsrrTYydc
+EObjjvbdZoNiFEyj
+EPDLKvbdmttyjirG
+EOcLKvbdYqMeIleR
+DoDKjvbdKWUfEFGi
+EOcLKvbdcyxoxYqC
+EObkKvbdNeETiJLE
+EPCkKvbdUMWOaVoJ
+EPCjjvbdWSOXbElD
+EPCkKvbdNHCpNPuL
+EObkKvbdEuyQQNJe
+DoCkKvbdmgExNOGy
+EOcKjvbdZtJJYcsO
+EOcLKvbdMpXqVnGs
+EObjjvbdbsDLTcjB
+EPCjjvbddoFTLUTr
+EOcLKvbdaNKbTVNH
+DoCjjvbdJcKCpicY
+DoDLKvbdsBfMlGjy
+EPDKjvbdqiAJdlne
+EObkKvbdKefHaaRV
+DoDLKvbdbiNJjewY
+EPCkKvbdVTltFlWK
+DoDLKvbdbBWFGPpX
+DncLKvbdVZITzKoO
+EPCjjvbdnUtzLKSG
+EPCkKvbdBraDTevr
+EPDLKvbdTkunaWPJ
+EObjjvbdZRNFJNEq
+DnbkKvbdxUldqYkn
+EPDLKvbdtvOYJpsA
+EOcLKvbdJvUfEEgJ
+DoDKjvbdlYrqsZGt
+DncKjvbdePFSjstS
+EPDLKvbdqquLOLAm
+DoCkKvbdSPtHKFdX
+DoCjjvbdZyDjNcMS
+EPDKjvbdTlVnaWPJ
+EPCjjvbdZirgpHCG
+EObkKvbdNQYQvNfs
+DncKjvbdqqtjnLBN
+DoDKjvbdjJehJmYS
+DncLKvbdrNZixlHi
+EPDLKvbdMfcPlpVL
+EPCjjvbdUWMQJtBR
+DoCkKvbdfMfWfljL
+DnbjjvbdaRfDHtFk
+DncLKvbdiMFDnVDZ
+DoCkKvbdXrkaNToY
+DoCjjvbdZLqdUNlN
+EObkKvbdRjxetfkT
+EOcLKvbdmgFXmOGy
+EPDKjvbdUQpntuHm
+DoDKjvbdpstHRrKt
+DncLKvbdHkazmwRL
+EObjjvbdpfEFUWAh
+DoDKjvbdZyEJnDMS
+EObkKvbdiBoCeXQq
+DoCkKvbdeATplxKG
+DncLKvbdWRmwadkc
+EPDKjvbdUQqPUthN
+DoCjjvbdnBjXXnmu
+EPDLKvbdZjTIPfbG
+EPCkKvbdWHwuxGxz
+DncKjvbdYpmFJMdq
+DoDKjvbdhbPDFXRR
+DnbkKvbdBdQBVimG
+DoCjjvbdmIctRUqa
+EPDKjvbdZyDjNbkr
+EOcLKvbdQYmAHSrK
+DnbjjvbdqYoHgQcx
+DncKjvbdqiAKFMoF
+DncKjvbdOTUWHEuQ
+DoCjjvbdVTmTfLuj
+DoCkKvbdddoRbWcK
+EPDKjvbdIsYaTNYM
+EObkKvbdRosfiedX
+EOcKjvbdcTDLUEKB
+EOcLKvbdmozYujxb
+DnbjjvbdZirgogBf
+EPCjjvbdKWUeceHJ
+DnbjjvbdZoOJEdzK
+EPDKjvbdEJhKVwjA
+DoCkKvbdfpBzvcxI
+DoDKjvbdlrYtysDi
+DoDLKvbdZjSgofbG
+DoCjjvbdUtMtGMVj
+EPCjjvbdGGKRmiTq
+EPCkKvbdQvnDcMID
+DnbkKvbdKCjCqJbx
+EPCkKvbdYpleImEq
+DoDLKvbdjKFgjNXr
+DoDLKvbdZshhxcrn
+EPDLKvbdnVVZjjRf
+EOcKjvbdqdFIpNua
+DnbjjvbdVwIxVdEg
+DoCkKvbduaEZSneI
+DnbkKvbdznoqFClY
+DoCjjvbdoAKzsgcn
+EOcKjvbdSLZGVGkT
+DncKjvbdiCObeWqR
+EPCjjvbdWRnXbEkc
+EObjjvbdRotGiecw
+EObkKvbdKDKDQibx
+DnbjjvbdlYsRsYft
+EOcKjvbdUaBqSprZ
+DoCjjvbdhkdcmuDZ
+EOcKjvbdjgflFfNk
+DoCjjvbdGKdrcINV
+EOcLKvbdEJgjVxKA
+EObkKvbdSxKkmzkY
+DnbjjvbdsZkosBIO
+DoCjjvbdBvzchePv
+EObkKvbdGYtuBEXb
+EPDKjvbdiLeENtby
+EPCkKvbdRNXbYnUz
+EObjjvbdfHkWRnQg
+EObkKvbduDDVXWOo
+DoCkKvbdJbjCqJbx
+EPDLKvbdpedFTvBI
+DncLKvbdjJegjMwr
+EPCjjvbdUxgszLPO
+EObkKvbdxmrhXsJD
+EOcKjvbdJSxaSmXl
+EPDLKvbdfNFwGmJk
+EPDKjvbdsrrTYydc
+DncKjvbdhgKDZVjV
+EPCkKvbdZMRctNkm
+DoDKjvbdezuyEhtX
+EPCkKvbdEXwlUTsl
+EPDLKvbdeAUQlxKG
+DoDKjvbdZnmiEdyj
+EObkKvbdrzMPraIO
+EPCjjvbdxxIibPyk
+EPCkKvbdKfFgbBRV
+DoDKjvbdyzeORhIh
+DnbkKvbdbAvFGPpX
+DncKjvbdZoOJEdyj
+DnbkKvbdrJAJdmOe
+DoDKjvbdKVuFdEfi
+EOcKjvbdqdFJQNvB
+EPDLKvbdOEctIhkE
+EPDLKvbdvBEYsOeI
+DncKjvbdHELVjBjK
+DncLKvbdZshhyDsO
+EPDKjvbdGdKuibJj
+DoCkKvbdEYXkstUM
+DnbjjvbdJpyeOfNe
+EPDKjvbdzoPpdbkx
+DoCkKvbdMSXMytpz
+DncLKvbdqZOggQcx
+DoDKjvbdmuUyjirG
+DnbkKvbdNVSqkNAX
+DncLKvbdRotHJfEX
+EOcKjvbdZyEJnCkr
+EPDLKvbdyYJKBpZk
+DnbkKvbdxmrgxTJD
+DnbkKvbdhaoDFWqR
+DncKjvbdbhmJjevx
+EObjjvbdSKyGVGjs
+DnbjjvbdSKxfVHKs
+DnbjjvbdqdFIomua
+DnbkKvbdkHflGGOL
+DoDLKvbdqGDeUVaI
+EObjjvbdjmBlZeHP
+EPCkKvbdmttykJrG
+DncLKvbdRXOEDLgc
+DoDLKvbdhaoDFWqR
+DoDKjvbdvvkaWAuu
+DoCkKvbdbhmKKfWx
+EObjjvbdSBdFMJZL
+DnbjjvbdnUuZjjSG
+EPDLKvbdliDtQuSB
+EOcLKvbdsCFmMGjy
+DnbjjvbdtunXjQsA
+EObkKvbdkCkjqHUg
+EObjjvbdDoCkKvbd
+DnbkKvbdiZuFlROG
+EOcKjvbdRNYCZNtz
+EOcLKvbdxUmEpxlO
+EPCkKvbddePSBwDK
+EOcLKvbdauBfxKsh
+DoCjjvbdtkwwBTaX
+EObjjvbdmgEwmNfy
+DnbjjvbdOStWHEuQ
+EPCkKvbdGLFTChNV
+EPCkKvbdKDJbpjDY
+DoDLKvbdnPzZVjxb
+DoCjjvbdFVyPomJe
+DncLKvbdACqwizIp
+EPCkKvbdZirhQGaf
+DncKjvbdtTRsZZeD
+EObkKvbdLBLHMbYR
+EOcLKvbdrNZjZLgi
+EObjjvbdTXkLmzkY
+EPCkKvbdBsAbsfXS
+EOcKjvbdeATpmXif
+DoCkKvbdMSWmZuQz
+DncLKvbdVTmTfMVj
+DoDLKvbdZxdKODMS
+EPDKjvbdZjShPgCG
+EPDLKvbdxVMdpxkn
+EPDLKvbdcSbjsdKB
+EPDLKvbdiifIJlwr
+DoDKjvbdKQydoFnF
+EObkKvbdegkWRmpg
+EObkKvbdiBncFXQq
+DoDLKvbdNdctJJLE
+EOcKjvbdUyHszKnn
+EOcLKvbdSQUHKFcw
+EObkKvbdUaBqSprZ
+DoCkKvbdSCDeLiZL
+EPCkKvbdKDKCpjCx
+EPDLKvbdwygfFweS
+DoDKjvbdiVZeWqtb
+DoCjjvbdMRwMyuQz
+DoCjjvbdsCGNLfkZ
+DoCkKvbdmRxuZsEJ
+EPCkKvbdkDMLRGtg
+EObkKvbdGdKuibJj
+EPCkKvbdePFTLUTr
+EOcKjvbdXrlAlsoY
+DoDLKvbdZjTHogBf
+DnbjjvbdZirhQGaf
+EPCkKvbdFVxooljF
+DoCkKvbdbKkeoNcA
+DoDKjvbdqYngfqEY
+EPDLKvbdrWokcJYq
+DoCkKvbdMowqVnHT
+EPCkKvbdqqtjnKaN
+DoDLKvbdiCPDFWqR
+DoDLKvbdeJiqutzn
+EObkKvbdqcdiPmvB
+EPCjjvbdMgComQUk
+DoDLKvbduVnYKQsA
+DnbjjvbdjhHLfFmk
+EOcKjvbdVvhwvEEg
+DnbkKvbdZtIhyESn
+DncLKvbdznopeClY
+EPCkKvbdwtldqZLn
+EOcKjvbdeEnrBwDK
+DoCkKvbdkxrqsZHU
+DoDKjvbdijGHimYS
+DncLKvbdfNGWgMjL
+EOcKjvbdmbKWxOnV
+EPCkKvbdhtzEvrVC
+DoDLKvbdhfibyWJu
+DoCkKvbdXrkaMsoY
+DoCkKvbdzoPpdbkx
+EPDLKvbdSLYeuGjs
+EOcLKvbdqlyixlIJ
+EObjjvbdnVVZjiqf
+EOcLKvbdyNrhXriD
+DoCjjvbdRjyFtgLT
+EOcLKvbdkyTRryHU
+EPCjjvbdrykpTBIO
+EObjjvbdlqxtzSdJ
+EObjjvbdcarmSATm
+EOcKjvbdXsLaNToY
+EOcKjvbdlqxtysDi
+EOcLKvbdaMkCStmH
+DncKjvbdbAvFGPow
+EPDLKvbdTulQKTaR
+DncKjvbdXGYzUAOs
+DncKjvbdezuxeItX
+DnbkKvbdrykpTBIO
+DoCkKvbdxnShXsIc
+DoDLKvbdEPCjkXCd
+DnbkKvbdIxUBgkpp
+DnbkKvbdBiKbKhfK
+DoDKjvbdKNADygVB
+EObjjvbdADRxKZiQ
+EPCjjvbdMfcQMotk
+EObjjvbdSBcdkhxk
+EPDKjvbdNrtVgFVQ
+EPDKjvbdZMRdTnLm
+EObkKvbdehKvRnQg
+DoCkKvbdliETptqa
+DoDLKvbdEXwktUUM
+EObjjvbdBiLBjiFj
+EOcLKvbdRkYeuGjs
+EOcKjvbdmttzKjRf
+EObkKvbdxrmhmRbH
+DnbkKvbdyXiJaoyk
+EObkKvbdxmrgwsIc
+DoDLKvbdiZtfMQmf
+DnbkKvbdpxoHfpcx
+EObjjvbduaEZTOdh
+EObkKvbdqqtkNkAm
+DoDKjvbdxmrgxTIc
+DncLKvbdMgColpVL
+EPCkKvbdZnnJEeZj
+EPCjjvbdVYgszKoO
+EPCkKvbdBcpAuilf
+EObkKvbdlhdUQuSB
+EObkKvbdMIbLpxAS
+EPCjjvbdnVUyjirG
+DoDKjvbdKRZeOenF
+DnbjjvbduCbuXWPP
+DnbjjvbdssRsYydc
+EPCkKvbdlhctQtqa
+DoCkKvbdsQVoJcVf
+EObjjvbdegkWSNpg
+DoDLKvbdOAJTUKSA
+DoDLKvbdliEURVSB
+DoDKjvbdxsNhlqbH
+DnbjjvbdOSsvGdtp
+EPDKjvbdaaVeGPow
+EObjjvbdNeETiIjd
+DnbkKvbdJKEAJpHE
+EPCjjvbdANIYsWzY
+DoCjjvbdjvWmdCXw
+EPDKjvbdrouoJcVf
+DnbjjvbdiUzFWquC
+DnbjjvbdFxtuBEYC
+DnbjjvbdRkYfVHLT
+EObjjvbdQwNccMID
+DoCjjvbdXsMAmTnx
+DoCjjvbdjJfIKMxS
+EOcLKvbdbiMikGXY
+DoCjjvbdQdDAoqES
+EPCkKvbdVwIxVcdg
+EOcLKvbdCEQAvKMf
+EPDLKvbdzROmJKXA
+EPDLKvbdZLrDsnLm
+DncKjvbdjggMGFmk
+DnbkKvbdddnrBvcK
+DnbjjvbdpecdsvBI
+EPCkKvbdijFgjNYS
+EOcLKvbdUaBqTQqy
+DncKjvbdkHgMFfNk
+EObkKvbdZGvdAPSi
+DnbjjvbdqUTgSRjt
+DoDLKvbdqvpLcIyR
+DncLKvbdLqvlytpz
+DnbkKvbdKDJbpjCx
+DoCjjvbdlqyUyrci
+DnbkKvbdUQqPUuIN
+EObkKvbdTlVnaVni
+EOcLKvbdNdcshiLE
+EObkKvbdkDMLRHUg
+DncKjvbdIxTbILpp
+EPCkKvbdePFTKssr
+DnbjjvbddeOrCWcK
+DnbkKvbdatbGxLTh
+EObkKvbdqlzKZLgi
+EPCjjvbdOTUVgFUp
+EOcLKvbdpfEFTvAh
+DncLKvbdZnnIdeZj
+EObkKvbdZxdKODLr
+DoDKjvbdjggLfGNk
+EPCjjvbdRDcAopdS
+DncKjvbdlZTRryHU
+DncKjvbdZshiYdSn
+EPDKjvbdatbHYLTh
+EPDKjvbdLAjfmCXq
+EPDKjvbdOFEUIiLE
+DncKjvbdxVNFQxlO
+DoCjjvbdrafNLfkZ
+DoCjjvbdGFiqnJTq
+EPCkKvbdUsmUFlWK
+EObkKvbdLBLHMbXq
+EPCkKvbdtlYWaUBX
+EPCjjvbdSPsfjGEX
+EObjjvbdIjEAJogE
+DoDLKvbdNHCpNQUk
+DncLKvbdYkqdUNkm
+DoCjjvbdqquKmkBN
+DnbjjvbdEuyQQMjF
+EOcKjvbdURRPUthN
+EObjjvbdmoyxvLYb
+EObkKvbdGYtuAdYC
+DnbjjvbdZeYGzhJC
+DoDLKvbdCgLfHAzc
+DoDLKvbdhuZeXSUb
+DoCkKvbdjlbMZdgP
+DoCkKvbdemGWgMjL
+EPCkKvbdxxJJaoyk
+EPDLKvbdqGEEsuaI
+EObkKvbdEKHjVwjA
+EOcKjvbdiBoDFWpq
+EPCkKvbdffLzNfgA
+EObjjvbdDoCjkXDE
+EPDKjvbdhficZWJu
+DoCjjvbdWWiYVdFH
+EPCkKvbdKQzFOenF
+DoCkKvbdmbJvxPOV
+DnbkKvbdtAHQhAAr
+EPDLKvbdmSYtzSci
+EPDLKvbddeOqavcK
+DoCjjvbdCEQBVjMf
+EPDLKvbdlYrqsYft
+DnbkKvbdJSyBTNXl
+EPCjjvbdcbSmSATm
+DoDKjvbdfNFwGmJk
+DoCkKvbdGLErbhNV
+EObkKvbdiZuFlQnG
+DnbjjvbdxUmEpxlO
+EPDKjvbdUWMPitBR
+EPDKjvbdrafNLfjy
+EPDLKvbdrWolDJZR
+EObjjvbdhbPDFXQq
+DncLKvbdqrUkNjaN
+DnbkKvbdBiLCKhej
+DoDKjvbdSCEFMIxk
+DoDLKvbdffLzNgHA
+EPCkKvbdZLqcsmkm
+DnbkKvbdZMSEUOMN
+DnbjjvbdzaAPHHCM
+DnbjjvbdCIkBjhfK
+DoCkKvbdZirgpHBf
+DnbjjvbdIwtBhLpp
+EObkKvbdeOeTLUTr
+EObkKvbdUxgszLPO
+EObkKvbdhzVGLqOG
+DnbjjvbdOTTufdtp
+EOcKjvbdZRNEhleR
+EPCjjvbdKyRKSzuG
+DoCkKvbdZtJJYcsO
+EOcLKvbdemGXGmKL
+EPDKjvbdJXsahMQp
+DoDLKvbdhbObeWqR
+EObjjvbdFVxpPljF
+EOcKjvbdaNLBruMg
+DoCjjvbdpyPIGpcx
+EOcLKvbdZMRcsmkm
+EOcLKvbdnGeXmNgZ
+DoDLKvbdjlalZeGo
+DoDLKvbdaSGDHtGL
+EPCkKvbdCTAbsewS
+EPCjjvbdZjSgofbG
+DnbjjvbdJutecdfi
+EPCkKvbdIryBSmYM
+DoCjjvbdfekzOHHA
+DnbkKvbdREDAoqES
+EPCjjvbdtTSTYzEc
+EPCkKvbdmoyyVkYb
+EObkKvbdmfdxMnGy
+DoCkKvbdwuNFQxkn
+DncKjvbdsBelkfjy
+EPDLKvbdQvmdDLhD
+EPDKjvbdBhkCLJFj
+DoCkKvbdeJiqutzn
+EOcLKvbdqTsfrSKt
+DoDLKvbdakLfOmcA
+DncKjvbdKaLHMawq
+EPCkKvbdznopdcMY
+DoDKjvbdZtJIyDsO
+DoDLKvbdsQVnjCvG
+DncKjvbduDDUvuno
+DoCkKvbdJYUCHlQp
+DnbkKvbdnBiwYPNu
+EObjjvbdlYrqryHU
+EPCjjvbdqcdiPnWB
+DoCjjvbdUQpoUthN
+EPDKjvbdsZlQTAhO
+EOcKjvbdtbbtwWOo
+EPDLKvbdJuuGDdgJ
+EOcKjvbdjggMGGOL
+EPDLKvbdHffyxwxH
+EOcLKvbdSCEElIxk
+EObkKvbdIwsbHkqQ
+EPDLKvbdjbkjqHUg
+DnbjjvbdnQZxujxb
+EPDKjvbddePRbWbj
+DoCkKvbdhtydwRuC
+DoDKjvbdCDoaWKMf
+EOcKjvbdRjyGVGjs
+EObjjvbddCTNSATm
+EOcKjvbdZLrETmlN
+EPDKjvbdlrZUysDi
+EOcLKvbdwtmFRZMO
+EPCjjvbdtTRrxydc
+EObjjvbdeFPSBvcK
+DoCkKvbdwuNFRZLn
+DnbjjvbdhytfLpmf
+EPCkKvbdrykpTAgn
+EObkKvbdRDcApRDr
+DoCjjvbdZnnIeFZj
+EOcLKvbdePErkUTr
+DoDLKvbdrbGNLgLZ
+EObjjvbdVZIUZjoO
+DncLKvbdzHYlAMeX
+DnbkKvbdbsDLTcia
+EPCjjvbdOSsufdtp
+DncKjvbdpstHSSLU
+DncKjvbduDDVWuoP
+EPDKjvbdiMEdNuCy
+EOcKjvbdtbcVWuno
+DoDKjvbdqUTgRqjt
+DncLKvbdZyDjNcLr
+DoDLKvbdRWmdDLgc
+DncKjvbdZLqdUOMN
+DoDKjvbdijGIJlwr
+EObjjvbduMYXBUAw
+DoCkKvbdHDkWJajK
+DoCjjvbdRpTfifEX
+DoCjjvbdUyHszKnn
+EPDKjvbdqZPIGpdY
+EPDKjvbdRWmdCkhD
+EObkKvbdsrrSyZdc
+EOcKjvbdYlSDtNlN
+DncKjvbdbKkennDA
+EPCkKvbdiZuGMQmf
+EPCkKvbdEztQeLbi
+EPCkKvbdaRebgsfL
+DoCkKvbdBcpAuilf
+EOcKjvbdyNsIYShc
+EPCjjvbdcIlijewY
+DoCjjvbdmbKXXoOV
+DncLKvbduDCtwWPP
+EPDKjvbdnCJwXoOV
+EPCjjvbdjcLkQgUg
+DnbkKvbdtcCtwVno
+DncKjvbdGFjRmiUR
+DncLKvbdrWpLcJYq
+DncLKvbdKWVGDdfi
+EPCkKvbdnUuZkJrG
+EPCjjvbdiCPCeWqR
+DncKjvbdEYYMUUTl
+EObjjvbdrpWOicWG
+DoDKjvbdFejSOIsq
+DnbjjvbdqiAJdmOe
+EOcKjvbdUyITzKnn
+DoDKjvbdfMfWgMjL
+DnbkKvbdXrkaMtOx
+DoCkKvbdKefIBaRV
+EPCjjvbdyTNhlqbH
+EPCjjvbdtlXwBUAw
+EOcKjvbdRosfjFdX
+DoCjjvbdYpldiMeR
+DnbjjvbdwzIFexFS
+DncKjvbdSCDeLhyL
+DncLKvbdrzLpSaHn
+DncKjvbduCcVWuoP
+DoDLKvbdatagXkTh
+DnbkKvbdsCGMlGkZ
+EPCkKvbdkWXNdBww
+DncKjvbdJcKCpjCx
+EOcKjvbdNxPVzdNt
+EPCkKvbdKRZeOfOF
+DncLKvbdcIljLGXY
+EPDLKvbdVhXuwfxz
+DoCjjvbdaoffckzd
+EOcKjvbdLhbLpxAS
+DnbjjvbdnHExMmgZ
+EObjjvbdbhljKfXY
+DnbjjvbdkDLkRGuH
+EPDLKvbdfHkWSORH
+EObjjvbdzoPqFClY
+DncKjvbdznopdbkx
+EObjjvbdnUtzLKRf
+EPCkKvbdZQldiMeR
+DoDKjvbdFjeScHmV
+EPDKjvbdEOcLKwCd
+EPDKjvbdyqOmJKXA
+EOcKjvbdSQTfiecw
+DoDLKvbdDoDLLXDE
+DoDKjvbdhlEcmuDZ
+EObjjvbdfHkWRmqH
+DnbkKvbdIGfzYwwg
+DncLKvbdUWMPjUAq
+EPDKjvbdkHflGGOL
+DnbkKvbdnPzZVjyC
+EPDLKvbdSBceLiYk
+DncLKvbdUtMsfLvK
+DnbkKvbdbrcLTdJa
+EObkKvbdIwtCHkqQ
+EPDKjvbdtbcVWvPP
+EObkKvbdtbcVWuoP
+DoDKjvbdKVtfEFGi
+EPCjjvbdMRvlytpz
+DoDLKvbdwuMeRYlO
+EOcKjvbdlhdTqVRa
+EPDKjvbdiGjCyVjV
+DnbjjvbdrDeJQNua
+DoDKjvbdrbFmMHKy
+EOcKjvbdfHjurNpg
+DnbkKvbdZRNFJMeR
+EOcKjvbdqFdEsvBI
+DnbjjvbdZirgogCG
+DoDLKvbdDncKjwDE
+DoCkKvbdjhGlFfOL
+EObjjvbdmaivxOnV
+EObkKvbdKkAhWAJy
+EOcKjvbdNrtWHEuQ
+DnbkKvbdFkFTChMu
+EObkKvbdeOdrjstS
+EOcKjvbdIwsbHlQp
+DoCkKvbdeATpmXif
+EOcLKvbdKaKgMaxR
+EObkKvbdUGznLvvF
+DnbkKvbdbLMGPODA
+EObjjvbdTkvOaVoJ
+EOcKjvbdsQVoKDVf
+EPDKjvbdznopdcLx
+DoDLKvbdpfDdsvAh
+DncKjvbdrDdhpNua
+EOcLKvbdhficZVjV
+DncKjvbdFxuVBEYC
+EPDKjvbdzjVQQETU
+EObkKvbdKRZePGNe
+EObjjvbdDncLLXDE
+EOcLKvbdYkqctNkm
+DoDKjvbdtvOYKRTA
+DoCkKvbdmajWxPNu
+DncKjvbdIjEAJofd
+EPCkKvbdiCPDFWqR
+EOcLKvbdIHHZxwwg
+EOcKjvbdYpmEiNFR
+EOcLKvbdQmYCZNtz
+EOcLKvbdVYhTykPO
+EPCkKvbdJKEAKPfd
+DoCjjvbdRkYfUfjs
+EPDLKvbdlZTSTZGt
+DoDLKvbdNGbpNQVL
+DoCjjvbdvAdZTOdh
+EPCjjvbdliDsqUqa
+EPDKjvbdSPsfiecw
+EOcKjvbdYlRcsmkm
+DnbkKvbdwXMAvBVu
+EPCkKvbdRjxfVGjs
+EOcLKvbdCIkCKiFj
+DoCkKvbddxZssrFz
+EOcKjvbdREDApRES
+EOcLKvbdTpqPVVIN
+EObjjvbdaaWEeoow
+EOcKjvbddeOrCXCj
+EOcLKvbdAMgySvyx
+EPDLKvbdNPwqVnHT
+EObkKvbdwuMeRYlO
+DoCkKvbdTkuoAuoJ
+EPDKjvbdmJDspuRa
+EPCjjvbdNHCpNQVL
+DncKjvbdGcjvKBij
+EOcKjvbdbQHHELzd
+EPDKjvbdPxmAGrqj
+EPCjjvbdRbDdkiYk
+EPDLKvbdTAFJHand
+DoDKjvbdqmZjZMHi
+EObjjvbdtSrTYzFD
+DncLKvbdhlEcmtby
+EObjjvbdmJEUQuSB
+DncKjvbddndsKstS
+EPDLKvbdmgFYNOGy
+DnbjjvbdSCEElIyL
+DncKjvbdmaivxOmu
+DoDKjvbdFVyPomKF
+DnbkKvbdMpXqWOHT
+EObjjvbdKefICBRV
+EObjjvbdqGDdtWBI
+DnbkKvbdCJLCLIfK
+EObkKvbdLqwNZtpz
+DoDLKvbdiifHjMwr
+DoCkKvbdddoRawDK
+DncKjvbdbrcKscjB
+DnbjjvbdrSVLNkAm
+DnbjjvbdffLynHHA
+EObkKvbdTAFJHbPE
+DncKjvbdDncKkWcE
+EOcLKvbdrouoKDVf
+EOcLKvbdZisIPfbG
+EOcLKvbdiGicYuiu
+DoDLKvbdVgxWXfxz
+DoCkKvbdffMZmgHA
+EObjjvbdWfZZtAPT
+EPDLKvbdEzsqElCi
+DoCkKvbdYSlAlsoY
+EPDLKvbdFWYpPmKF
+DoDKjvbdkNCMZdfo
+EPDLKvbdehLWSOQg
+DnbjjvbdxxJKCPyk
+EOcLKvbdMfcQMpVL
+EOcLKvbdnVVZkKRf
+EObjjvbdczYoxZQb
+EPCkKvbdSQUGiedX
+DoDKjvbdeuzwpJzs
+DoDLKvbdqZPHfqDx
+DoCjjvbdKeehCBQu
+DnbkKvbdADSYJyiQ
+DoCjjvbdFkFTDHlu
+EPDKjvbdZoOJEdzK
+EPCjjvbdZjTIQGbG
+DncKjvbdZHWdAOri
+EPCjjvbdeXystRez
+EObkKvbdIxTagkpp
+EObjjvbdxZgfFxEr
+DoDLKvbdjhHLfGNk
+EObkKvbdTfznMWue
+DoDLKvbdOSsufeVQ
+DncKjvbdVUNTelWK
+EPCjjvbdZQmFImEq
+DnbjjvbdkClLQftg
+DnbjjvbdRXNdDLhD
+DncKjvbdTqQoVUgm
+EPCjjvbdNQYRVmgT
+DoDLKvbdnUuZjiqf
+DoDKjvbdbsCjsdJa
+EOcKjvbdFkEsDINV
+DoDKjvbdyOTHxSiD
+EOcKjvbdkMbMZdgP
+DnbkKvbdeEnqavcK
+DoCkKvbdxZhFfYEr
+DncKjvbdNPxQunGs
+EOcLKvbdOYOuzdNt
+DncKjvbdJbicRKDY
+DncKjvbdjAQHAofj
+EOcKjvbdWWiYVcdg
+DnbjjvbdjFKftoAO
+EPCkKvbdTXkLmzjx
+EPCkKvbdWSNxBeMD
+DoCkKvbduMXwBTaX
+DoDLKvbdLBKfmBxR
+DoCjjvbdEObjjwDE
+EPDKjvbdTlVnaVoJ
+DoDLKvbdhgJcZViu
+EObjjvbdatbHXjtI
+EOcLKvbdZeXfzgiC
+EPCkKvbdeFPRbXCj
+EPCkKvbdZQleJMdq
+DnbjjvbdUWLojUAq
+EPCjjvbdFaOpyJzm
+DnbkKvbdANIYrwZx
+EPCkKvbdbBWEeopX
+DoDLKvbdczYpYYpb
+EPCkKvbdbVBfxLTh
+DoDKjvbdLBKflawq
+DoCkKvbdyOSgxSiD
+EPDKjvbdkDLkQgVH
+EObkKvbdjmBlZdfo
+EPDKjvbduoTzqLOt
+EOcLKvbdaRebhUFk
+EPDKjvbdatbGwjtI
+EOcLKvbdCIjbLIfK
+DncKjvbdkIGkeemk
+DncKjvbdxVMeRZMO
+EOcKjvbdRXODcMHc
+DnbjjvbdqquLOLAm
+DoDKjvbdDHLfHAzc
+DoCkKvbdnVVZkKRf
+DoDLKvbdGcjvJbKK
+DoCjjvbdzoQRFDLx
+DoDLKvbdmuUzLKRf
+EPDLKvbdtumwiqTA
+EOcKjvbdmJDsptrB
+EPCjjvbdIGgZxwwg
+EPDLKvbdxLXDgzzG
+DnbkKvbdQwNdCkhD
+DnbjjvbdcasNSAUN
+EPCkKvbdTulQKTaR
+EOcKjvbdhgJbyVjV
+DoDLKvbdKVteceHJ
+DnbjjvbdHgGzYwxH
+EPCjjvbdxnSgxTJD
+EPDKjvbdyYJKCPzL
+EOcKjvbdOFDtJJKd
+EObkKvbdRadEkhxk
+DoCkKvbdiifHjNXr
+DoCjjvbdnUtyjirG
+EObkKvbdJpydoGNe
+DoDKjvbdZLqctOLm
+DnbkKvbdsBfMkfkZ
+EOcLKvbdOStWGeVQ
+EPDLKvbdijGIJmYS
+DoDLKvbdxxJJbQZk
+DncKjvbdHbLydzAD
+EOcLKvbdyTNiMqag
+EPDKjvbdMgComQVL
+DoDLKvbdzitoocsU
+EPDKjvbdsBfMkfjy
+DoCkKvbdFyUtaEYC
+DoDLKvbdJKEAJpGd
+DoCkKvbdygZMAMeX
+EPCkKvbdJqZdoFnF
+DnbkKvbdiBnbdvqR
+EOcLKvbdSQUGjFdX
+DnbkKvbdmSYtzTEJ
+DoCjjvbdehKvSOQg
+EOcLKvbdGckVibJj
+DncKjvbdhficYvJu
+EPDKjvbdwuMeRYkn
+EOcLKvbdFejSNiUR
+EPCjjvbdOFEUJJLE
+DnbkKvbdXsLaMtOx
+EPDKjvbddZyPxYpb
+EPCkKvbdhzVFkqNf
+DoDKjvbdOEdUIiLE
+EPCkKvbdnGeXmOHZ
+EObkKvbdiMEdNuCy
+DoDLKvbddoFTLTtS
+EObkKvbdIxTbHlQp
+DncLKvbdZRMdhmEq
+DoDLKvbdZnmheEyj
+EPDKjvbdKeegbApu
+DncLKvbdNVTSLNAX
+EOcKjvbdKDJbqKCx
+EPCjjvbdFfKSOIsq
+EPCjjvbdxnShYSiD
+EOcLKvbdOStWHFVQ
+DncLKvbdsPvOicWG
+DnbjjvbdxnTHwsJD
+DoDKjvbdLAkGmBwq
+DoCkKvbdwMvAMceN
+EOcLKvbdmRyVZsDi
+EPCkKvbdmpZyWKyC
+DoDLKvbdrykpTBIO
+DoCjjvbdVgwvYHYz
+EPDLKvbdTvMPjUBR
+EOcLKvbdgFkzOGgA
+DnbkKvbdVBBpsRRy
+DnbjjvbdRzKISbvA
+EObjjvbdxnTIXsJD
+EObjjvbdZoOJEdyj
+EPCjjvbdHDjuibKK
+EPCjjvbdezuxdiUX
+EOcKjvbdYTMAmToY
+EObjjvbdJYTbILpp
+DoDKjvbdkClLRHUg
+EPDKjvbdTkvPAvPJ
+EObkKvbdeAURNXjG
+DncLKvbdTukpKUBR
+DoCjjvbdcTDKsdJa
+DoDKjvbdBsAcUGXS
+EObjjvbdDoCjjvcE
+EOcKjvbdtlYWaTaX
+DnbjjvbdRDbaPpcr
+EPCjjvbdrylPsAgn
+DoCkKvbdOhAYZAYa
+DnbjjvbdiUydwSVC
+DoCjjvbdwzIFfYFS
+DoCkKvbdZshiZDrn
+DoCkKvbdZoOIddyj
+DncKjvbdpssgSSKt
+EPCjjvbdrSUkNkBN
+EPDKjvbdjJfIJlxS
+EOcLKvbdxVNFRYkn
+DoDKjvbdWWhwvEFH
+DncLKvbdRDcBQQcr
+DnbkKvbdliETpuRa
+EPCjjvbdZRMdiMeR
+DnbkKvbdiMEdOVCy
+EPCjjvbdznpREbkx
+DoCkKvbdwzIFexFS
+DnbjjvbdmSYuZrdJ
+DoDLKvbdCWzchdov
+EPDLKvbdpfEFTvAh
+EPDLKvbdyOTIYTIc
+DncKjvbdNQXqVnHT
+DoDLKvbdCgMFgAzc
+EOcKjvbdIwtBgkpp
+EPDKjvbdRjyGUfjs
+EObjjvbdACqwjZiQ
+DoDKjvbdpstGrSKt
+DnbkKvbdnGdwmOHZ
+DncKjvbdiZtfLpnG
+DoDLKvbdaSGCgtFk
+DoCkKvbdFfJqnIsq
+EPCkKvbdkNCLzEgP
+EOcKjvbdFeirOJTq
+EOcLKvbdUtNUGMWK
+EObkKvbdSQUHJfEX
+EPCkKvbdqquKmkBN
+DnbjjvbdbhmKKfXY
+DoCkKvbdIsYaTNXl
+DoCjjvbdZoNheFZj
+EOcLKvbdBhjbLIfK
+EOcKjvbdatafwjsh
+DoCjjvbdkxrrSyHU
+EPDLKvbdSCEElIxk
+EOcKjvbdfMevfmKL
+EPCjjvbdMJBlRYAS
+DoCjjvbdSxKkmzkY
+DnbkKvbdkNCLydgP
+EObkKvbdkxsSTZHU
+DoCjjvbdRpUGiedX
+EOcKjvbdjblLRGuH
+EObkKvbdyTNiMrCH
+DnbjjvbdZeXfzhJC
+DoDKjvbdZxdJmblS
+DncKjvbdOStWHEuQ
+DoCkKvbdyNsHwsIc
+EPDKjvbdkxrqryHU
+EObjjvbdZLqctNlN
+DoDLKvbdxnSgxShc
+EPDLKvbdnBjWwoNu
+DoDKjvbdkIHMGGOL
+EObjjvbdqUUGrRkU
+DncLKvbdRjyGVHKs
+EPDKjvbdhfjCyWJu
+EPCkKvbdHELVjBjK
+DncKjvbdgQBzvcwh
+DoDLKvbdVAaqSpqy
+DoCkKvbdySnJNSBg
+DoDLKvbdpeceUWAh
+DncLKvbdaRebgsfL
+EOcKjvbdZLqctNlN
+EObjjvbdtbbtvvPP
+DoCkKvbdZMSDtNlN
+EOcKjvbdsBelkfjy
+EPDLKvbdTpqPVVIN
+DnbjjvbdBiKbKhfK
+DnbjjvbdOFEUIiKd
+EPCkKvbdSiZjRAAl
+EObkKvbdwjwDgzyf
+EPCjjvbdhlEdNtby
+EPCjjvbdhtydwSUb
+EOcKjvbdnQZyVjyC
+DoDKjvbdRzKIScWA
+EOcLKvbdLBLHNCXq
+DoDLKvbdssSTYzFD
+EObjjvbdEvYpPlie
+DncLKvbdhficYvKV
+EPCjjvbdnUuZkJqf
+DnbjjvbdXnRAXtut
+EPDKjvbddijRutzn
+EOcLKvbdEvYpPljF
+DoCjjvbdTulQKUAq
+EObkKvbdxmsIYShc
+EPDLKvbdkyTRryHU
+EObjjvbdCEQAvKNG
+EObjjvbdGYuVBEYC
+EPDKjvbdvAdYsOeI
+EObjjvbdRpUHKGEX
+EPCkKvbdKDJcQjDY
+DoDLKvbdunszqKoU
+DoCjjvbdJvUfEEfi
+DncLKvbdrpWPJcWG
+DoCkKvbdajkfPNcA
+DnbjjvbdFpATXHFy
+EObkKvbdFfJrOJTq
+DncLKvbdZnnJFEyj
+DoCjjvbdOEctIiKd
+EPDLKvbdVhXuxGxz
+EPDKjvbdySmhlrCH
+EOcKjvbdiGjDZWJu
+DncKjvbddZyQYZRC
+DncLKvbdziuPpETU
+DncLKvbdJTYaTNXl
+EPCjjvbdNddThiKd
+DnbkKvbdbAudepPw
+EOcKjvbdMowpunHT
+DoDLKvbdmbKXYPNu
+DoDLKvbdezvZEiTw
+DnbjjvbdrMyixkgi
+DnbkKvbdKWVGEFGi
+DoCjjvbdkDLjpftg
+DnbjjvbdJqZePFme
+EObkKvbdDwxLsssl
+EPCjjvbdmoyyWLYb
+EPCkKvbdFjdrcHmV
+DoCkKvbdDwxLtTsl
+EOcLKvbdoAKztHdO
+EPDLKvbdTkuoAuoJ
+DncLKvbdURRPVVHm
+EPCkKvbdKCicRJcY
+DoCkKvbduDCuXWOo
+DoCjjvbdRXNdDMID
+DoDKjvbdBcpBWJlf
+DoCjjvbdTqROttgm
+DncKjvbdRadFMIxk
+DoDLKvbdCSaDTewS
+EOcKjvbdQlxCYmtz
+DncLKvbdeOeSkUTr
+DnbkKvbdTqQntthN
+DnbjjvbdhbObdvpq
+EPDLKvbdMowqVmgT
+DncKjvbdANIZTWzY
+EPDLKvbdiVZeXRtb
+DncLKvbdYNqAXtvU
+EOcKjvbdfIKurNpg
+DoCkKvbdFpATWfey
+EPCjjvbdHkazmwRL
+DoDKjvbdJvUfDdgJ
+EPCkKvbdSBdElIxk
+DoCkKvbdbsCjtEJa
+DoDLKvbdvBEYsOdh
+EOcLKvbdGGJqmhsq
+EOcLKvbdJSyBSlxM
+DncLKvbdnQZxukZC
+EOcLKvbdySnIlrCH
+DoCjjvbdIjEAKPgE
+DoDLKvbdhlEcnVDZ
+EPDKjvbdZeYGzghb
+EPDKjvbdbKlGOnDA
+EPDKjvbdkMbMZdgP
+EOcLKvbdDoCkKwCd
+DnbjjvbdLBLGlbXq
+EPDLKvbdZxcinCkr
+DoCkKvbdqTsfrRjt
+DoCkKvbdADSYJzIp
+DoDKjvbdbUagYKsh
+EObjjvbdjAQHAofj
+EOcKjvbdDoDKkXDE
+EPDKjvbdSZigsCvA
+EPCkKvbdKRZePGOF
+EPCjjvbdKaKgNCXq
+EObkKvbdxxJKBoyk
+EOcKjvbdxmrgwsIc
+DnbkKvbdmozYvKyC
+DoCkKvbdqquLOLAm
+EObkKvbdDncLLXCd
+EPDLKvbdjcMKpftg
+EPCjjvbdwkXDgzzG
+DoDLKvbdHffyxwwg
+DoCkKvbdvAdZSneI
+EOcLKvbdrovOjDVf
+EOcLKvbdsPuoJbuf
+DoDLKvbdySnJNSBg
+EObkKvbdXsMAltOx
+DncLKvbdFfKSOJTq
+EPCkKvbdddnrCWcK
+DoCjjvbdySmhlrBg
+DnbjjvbdNxPVzcnU
+DncKjvbdhtzEvrVC
+DoCjjvbdQwODblHc
+DoDLKvbdjcLjpgVH
+EOcLKvbdbKlGOmcA
+EPDKjvbdfMfWflik
+DncKjvbdmbJwXnmu
+EOcLKvbdTkuoAvOi
+DnbjjvbdsZkoraIO
+DoDKjvbdZMSEUOLm
+EOcLKvbdsCFmLfkZ
+DncKjvbdUxhTyjnn
+EPDKjvbdRosfjGEX
+EOcLKvbdmuUzKirG
+EPCkKvbdGGJrOItR
+EObjjvbdEXwktUUM
+DnbkKvbdiifHimXr
+EPDKjvbdmJDspuSB
+EObjjvbdwyhGFwdr
+DncKjvbdatafwkUI
+EPDLKvbdYNqAXtut
+DoDLKvbdEPCkLWcE
+EOcLKvbdqceJQOWB
+EPDKjvbdySnJNSBg
+DnbjjvbdyzdnSIIh
+DoDKjvbdrDdiQNvB
+DoCkKvbdYkqdTnLm
+DoCkKvbdlZTSTYgU
+EPDKjvbdMpXqWNfs
+EObkKvbdJbicQjDY
+DoDLKvbdGAoRYizm
+DncKjvbdmgExNOHZ
+DoCjjvbdznoqFDLx
+EOcKjvbdieLGtoAO
+DoCjjvbdMfbpMotk
+EObkKvbdyzdnSHiI
+EObkKvbdcSbjscia
+DoDKjvbdNGcQNQUk
+EPDKjvbdNGbpMpVL
+DoDLKvbdUQqPVUgm
+DnbjjvbdVvhwuceH
+EPDKjvbdDxXkstTl
+EPCjjvbdPyNAHTRj
+EPDLKvbdeOdsLTtS
+DoDKjvbdTAEiICPE
+DoDKjvbdZisIQGaf
+EObkKvbdxVMdpxkn
+EPCkKvbdnUtzKjRf
+EOcKjvbdhtydvrVC
+DoDKjvbdbrcLTcia
+EPDLKvbdbhlikFvx
+EPDKjvbdANIZSwZx
+EPDKjvbdtbbuXWOo
+EObjjvbdliDtQtqa
+DncLKvbdGLFScIMu
+DnbkKvbdfMfXGljL
+EObkKvbdCTBDTewS
+EPDKjvbdSiZiqAAl
+EOcKjvbdFfKSNhsq
+EPCjjvbdyYJKBpZk
+DncKjvbdAMgyTWyx
+DnbkKvbdpaJFAXIE
+EOcKjvbdEYYMUUTl
+EPCjjvbdeFOrBvcK
+DoDLKvbdptUHSRkU
+DoCkKvbdOYPVzcnU
+DnbjjvbdijFhKMxS
+DnbkKvbdEKHivXjA
+DncLKvbdsPvOicVf
+DoCjjvbdmbJvxOmu
+EOcKjvbdDxYMUUTl
+DoDKjvbdZtIhxdTO
+DncKjvbdTlVoAuoJ
+DoDKjvbdFyUuBDwb
+EObkKvbdQYmAGsSK
+DnbkKvbduLwwAsaX
+EPDKjvbdegkWRmpg
+EPDLKvbdRDcAoqDr
+DoCjjvbdFWZPolie
+DoCkKvbdbhmJkGWx
+DncLKvbdrWpMDJYq
+DnbjjvbdaaWEeoow
+DoDLKvbdzHYlANFX
+DoCkKvbdjFLHUoAO
+DnbjjvbdZyEKNbkr
+DoDKjvbdLrXMyuQz
+EPDLKvbdwNWAMdFN
+DoCkKvbdkWXODaxX
+EOcKjvbdraelkgKy
+EOcLKvbdmSZVZsDi
+EPCjjvbdkMbLzEfo
+EObjjvbdaSFbgtFk
+EObkKvbdmIctRUqa
+DncKjvbdhtydvquC
+EPDKjvbdZoOJEeZj
+DoDLKvbdyXiJaozL
+EOcLKvbdVwIxWEFH
+DnbkKvbdYpmFJMdq
+EPDLKvbdjKGIKMwr
+EPCkKvbdFpASwHGZ
+DncKjvbdKQzEnfNe
+DoDLKvbdkVwODaxX
+EPCjjvbdzaAOffal
+EObjjvbdnHEwlnGy
+DncLKvbdLqwMyuQz
+EPCkKvbdWRnXaeMD
+DoCkKvbdcbSlrAUN
+EPDKjvbdMJBlRYAS
+EOcLKvbdZxcimbkr
+DncLKvbdCDpBVimG
+DoDKjvbdGdKvKBjK
+EPDLKvbdziuPodSt
+DnbkKvbdbrbjtEKB
+EOcLKvbdmIcsptqa
+EPDKjvbdMRwMyuQz
+DoDLKvbdfHkVrNqH
+DnbkKvbdLZRKSzuG
+EPDKjvbdTfzmkwWF
+EOcLKvbdSKxeuHLT
+EPDLKvbdkHgLfGNk
+DoDLKvbdVhXuxHYz
+EOcKjvbdkHgMGGOL
+DoDKjvbdEARhmZvw
+EPDLKvbdjKFgimXr
+EObkKvbdSQUGiecw
+EPCjjvbdjKFhJlxS
+DoDKjvbdDxXlTtUM
+EPDLKvbdelfWgMik
+EOcKjvbdtcDVXWOo
+DoDKjvbdiZuFlRNf
+DoCkKvbdsBellHKy
+EPCkKvbdjlbLyeGo
+EOcKjvbdhfibxujV
+EObjjvbdhyuGMROG
+DoDLKvbdgQBzvdYI
+DoDKjvbdeATpmXjG
+EPDLKvbdjKFgilxS
+DoDKjvbdrpWPJbuf
+DncLKvbdDncLKvcE
+DoCkKvbdkVvmdCXw
+DncLKvbdGcjujCJj
+DncLKvbdpxngfpcx
+DnbjjvbdiCPCdwQq
+EPDLKvbdijFhJlwr
+DncKjvbdhgJbxvKV
+EPCjjvbdZxcjNbkr
+DncKjvbdZQleJMdq
+DncLKvbdyfxlAMeX
+EPCjjvbdFfJrNiUR
+EPDLKvbdzjVQPdSt
+DoDLKvbdjAQHBPfj
+EObjjvbdZoOJFEzK
+EObkKvbdFpATWgGZ
+EPDKjvbdvAcxrneI
+DoDLKvbdxrnJMrCH
+DoCkKvbdjmCLydfo
+EPCkKvbdegjuqmqH
+DoCkKvbdSBdFLiZL
+EObkKvbdbAvFFopX
+DncLKvbdGQASwGey
+DnbkKvbdQccAopdS
+EPCkKvbdZshiYdSn
+EPCjjvbdHDjujCKK
+EObjjvbduDDVWuno
+DoCjjvbdzjVQQDsU
+EOcLKvbdeFOqavcK
+DoDLKvbdyXhibPzL
+DoDLKvbdrzMPsAgn
+EObkKvbdUtNTfMWK
+EOcLKvbdLqwNZuQz
+EPDKjvbdqBJFAXHd
+DoCkKvbdnUuZkKSG
+DoCjjvbdZHXEAOsJ
+DncKjvbdQdDBPpcr
+DnbkKvbdCIkBkIej
+DnbkKvbdMgDPmQUk
+DnbkKvbdxxIjCPyk
+DnbjjvbdZsiIxdSn
+DoCkKvbdADRxJzJQ
+EObjjvbdkxsSTZHU
+DncKjvbdWXIxVdEg
+DnbjjvbdLrWmZtpz
+EPDKjvbdhzUelQnG
+DoDLKvbdSBceLhxk
+EObjjvbdWIXvYGxz
+EPDKjvbdEYXktUUM
+EObkKvbdhlFENtby
+EPDLKvbdNwnuzcmt
+EOcKjvbdaaWEfPpX
+DncLKvbdddoSCWcK
+EPDKjvbdmaiwXnnV
+DoDLKvbdMgDQMpUk
+DoDLKvbdjFKfuPAO
+DncLKvbdnGeYMmfy
+DncLKvbdrSUjmkAm
+EOcLKvbdfHkWRnQg
+DnbjjvbdnCKWxPNu
+DnbjjvbdraemLgKy
+EObkKvbdWWiYWDdg
+DoCkKvbdKfFgaaQu
+EPCkKvbdaSFcIUGL
+EOcKjvbdkxrqryHU
+DncKjvbdRDbaQQcr
+DncLKvbdbVBgXjtI
+DoCjjvbdqZPHfqDx
+DnbkKvbdcyxowxpb
+EPCkKvbdWXIxWDeH
+DoCkKvbdyXiKBozL
+DnbkKvbdlZSrTYft
+EObjjvbdGdKujBij
+DnbjjvbdtcDVXWPP
+DoDKjvbdZnmhddyj
+EObkKvbdTukoisaR
+EObkKvbdzoPqFCkx
+DncLKvbdLhalQxAS
+EPCkKvbdVwIwudFH
+DoDKjvbdjKGIKNYS
+DoDLKvbdjhHLeenL
+EPDKjvbdJTZBSlxM
+DoCjjvbdFaOqZJzm
+DoDLKvbdnBjXXnnV
+DoCjjvbdeFPSCXDK
+EPCjjvbdbAvFGPow
+DnbkKvbdVwIwvEFH
+EObjjvbdqUTfrSLU
+DncKjvbdqlyixkhJ
+DoDKjvbdSLZFuGjs
+DncLKvbdsCGNLfkZ
+EPDLKvbdaofgDkzd
+DoCkKvbddiirWUzn
+EOcKjvbduCcVWuno
+DnbkKvbdSPsfjGDw
+DoCkKvbdFWYpQMie
+DoDLKvbdRECaQRES
+EPDLKvbdhfibyVjV
+DnbjjvbdqTsgSSLU
+EObkKvbdrXQMChyR
+DncLKvbdNrtVfduQ
+EObjjvbdiUzEvqtb
+DncKjvbdUaCQsRRy
+EPCjjvbdRbEEkiYk
+DncKjvbdUtNUGMVj
+EPCjjvbdzHYlAMeX
+EPCkKvbdeEoRbXCj
+DoDLKvbdcScLUDia
+DoDLKvbdtbbuWuno
+EOcKjvbdbUafwkTh
+DoCjjvbdtcDVXWOo
+EOcKjvbdHgGyxxYH
+EOcLKvbdWSOXbEkc
+DoCkKvbdKeehCBRV
+DncLKvbdMgComQVL
+DoDKjvbdUMVoBVoJ
+DoCjjvbdzoQRFCkx
+DoCkKvbdUWMQJsaR
+DnbjjvbdkNCLydgP
+EOcKjvbdmozYvKyC
+DnbkKvbdmgExMnGy
+DncKjvbdznpQeDMY
+DoDKjvbdZxcjNbkr
+EOcKjvbdqdEiQNua
+EPDLKvbdfHkVrNpg
+DnbkKvbdXsMBMsoY
+EObkKvbdcJNKLGXY
+EPDLKvbdVqmwbEkc
+EPCkKvbdJcJbpibx
+EObjjvbdYNqAXtvU
+EObkKvbdjAQHApGj
+EPDKjvbdrbFmMHLZ
+DnbkKvbdPIAXyAYa
+DoDKjvbdSLZGVHLT
+DoCkKvbdDnbkLWcE
+DncKjvbdzoPpeDMY
+EPDKjvbdQwNdDLhD
+EPDKjvbdhfjCxuiu
+DoCjjvbdajkenmcA
+EPDKjvbdtTSTYyeD
+DoCjjvbdijFhKMwr
+DoDLKvbdpfDeTuaI
+EPCjjvbdJXtCHlQp
+EOcKjvbdjbkkRGuH
+EObkKvbdVTlselWK
+DoCkKvbdauCHXkTh
+DnbjjvbdSLZGVGjs
+DoDLKvbdehLWRmqH
+DncKjvbdSBdFLhyL
+DoDLKvbdmajXYPOV
+EOcKjvbdpeceTvAh
+EPCjjvbdNdctIhkE
+EOcLKvbduWNwjQsA
+DoCjjvbdtvOYKRTA
+DncKjvbdqiAJeNOe
+DnbjjvbdUtNUGLvK
+EPDKjvbdMgColotk
+EOcKjvbdQlxCZNtz
+DoDKjvbdmfdwmNfy
+EPDKjvbdrovPKDVf
+DnbjjvbdDjIJuwjA
+EPCjjvbdsBfNMHLZ
+DoCjjvbdJbjDRJcY
+EPDLKvbdZRMeJNEq
+EPCkKvbdRkYfVGkT
+DncLKvbdRbDeLiYk
+EPCjjvbdqiAJdloF
+DoCjjvbdFyVUaDwb
+DoCjjvbdMRvmZtpz
+DoDLKvbdGQATWffZ
+EPCjjvbdwtmFQyMO
+EOcKjvbdTIzKRAAl
+DoCkKvbdsQVnicVf
+DoDLKvbdFfKRmhtR
+EOcKjvbdsCFmLfjy
+DoDKjvbdddnqbXDK
+DoDKjvbdYgWdAOri
+DoCkKvbdmuUyjjSG
+EObkKvbdhficYvJu
+DoCkKvbdQlxCZNtz
+EPCkKvbdGZVUaEXb
+DncLKvbdEXxMTtTl
+DoDKjvbdGFirNiUR
+EPCjjvbdpssgRrLU
+EObkKvbdVZHsykOn
+DncKjvbdyTOJMrBg
+EOcKjvbdRacdlIyL
+EObkKvbdiCOcFWqR
+DoDLKvbdRjxfVGkT
+EOcLKvbdiBncFXQq
+DncLKvbdnQZxukYb
+DoDKjvbdpaIeAWgd
+DncKjvbdVqnYCEkc
+DnbjjvbdZRMdhmEq
+EPCjjvbdhgKDYuiu
+EOcLKvbdCIkBjhfK
+EPCkKvbdZnmhdeZj
+EOcKjvbdTppnuUhN
+EOcLKvbdbVBfxKsh
+EPDKjvbdFVxpQNKF
+DnbjjvbdjvWnDaxX
+EObjjvbdANIYrwZx
+EObjjvbdauCHXjtI
+EObkKvbdZirgpGaf
+EObjjvbduoTzqLPU
+DoDLKvbdxZhFeweS
+DoCjjvbdILaznWqL
+DncLKvbdaMkBrtlg
+EObjjvbdNrtVgFUp
+DnbkKvbdRzKHsCvA
+DoCkKvbdiZuFkpnG
+DnbkKvbdEztRElDJ
+EPCjjvbdRECaQQdS
+EPCjjvbdqqtkNkAm
+EObkKvbdyNrhXriD
+DoDLKvbdegkWRmqH
+DncKjvbdNQXqWNfs
+DoDLKvbdRadFLhxk
+EPDKjvbdxUmFQyLn
+EPCjjvbdxxJKBoyk
+EObkKvbdnVUzLJqf
+DnbjjvbdSQUGiedX
+DncLKvbdrpVnjCvG
+DoDKjvbdZirgpGbG
+DncKjvbdOAJTUJrA
+DnbjjvbdUyHsyjoO
+EPDKjvbdfpBzvdXh
+EPCjjvbdyTNhlqag
+DncKjvbdLBKflaxR
+DoCjjvbdVwJXvEEg
+EOcKjvbdVqnXadlD
+DoDKjvbdyNrgxSiD
+EObjjvbdnVVZjjRf
+DnbjjvbdFeiqmiTq
+EObkKvbdFVxpQMie
+DnbkKvbdIBkydzAD
+EPCkKvbdZjTHofaf
+DncLKvbdnPzYukZC
+EObkKvbdLYqKSzuG
+Dnbjjvbdxmrgwrhc
+EObkKvbdTkuoBWOi
+EObkKvbdIrxaSlxM
+EOcLKvbdJqZeOfOF
+DoCjjvbdBhjbKiFj
+EPCkKvbdrDeJPnVa
+EPCkKvbdNwoVzcnU
+EOcLKvbdXmqAYVWU
+EPCkKvbdZeYGzhJC
+EOcKjvbdNddUIhjd
+DoDKjvbdjggLeemk
+EObkKvbdxZgefXeS
+EOcKjvbdgFkzOGgA
+EObkKvbdNdcsiIkE
+EPDKjvbdbiMikFwY
+EPDKjvbdelfWfmJk
+EOcKjvbdHELWJajK
+DoDLKvbdZRMeIldq
+EOcLKvbdRXNccMHc
+EPCkKvbdQlxCZNtz
+DoCkKvbdyTOJMqag
+EPDLKvbdCTAcTevr
+EOcKjvbdrpVnicWG
+DnbkKvbdZLrETmkm
+EOcLKvbdRpTfifEX
+DnbjjvbdQcbaPqDr
+DoCkKvbdEuxpQNKF
+EPCjjvbdNeEThiKd
+EPDKjvbdVYgtZjoO
+DoCjjvbdZRMdhleR
+DoCjjvbdZsiIyDrn
+EPDLKvbdaSGCgtGL
+EPDLKvbdqTtGqrKt
+DoCkKvbdnVUzKjSG
+EPCjjvbdzQoMiJwA
+EPDKjvbdXrlBMtOx
+DoCjjvbdNHColpVL
+EObkKvbdXnRAXuVt
+EObjjvbdMJCMQxAS
+EObkKvbdIrxaTMxM
+DnbjjvbdbAudfQQX
+DnbkKvbdnCKXYOmu
+DoDKjvbdEXxMUUTl
+EObkKvbdyXhiaozL
+EObjjvbdEJhKVwjA
+EOcKjvbdpfEFTuaI
+EOcKjvbdbVCHYLTh
+DncLKvbdyqOliJwA
+EOcKjvbdkxrqsZHU
+DncKjvbdDjHjVwjA
+EPCkKvbdkDMLQfuH
+EPCjjvbdUVlPjUBR
+DoDLKvbdjJfHimXr
+DoCkKvbdEuxooljF
+DoDLKvbdYzcGRjWZ
+DoDKjvbdwyhGGYFS
+DnbkKvbdsrrSxyeD
+EPCkKvbdxmrhXrhc
+EPDKjvbdDjHivXjA
+EObkKvbdfMfXGlik
+EPDLKvbdGdKvKBij
+DoCkKvbdbLMGOmcA
+EPCkKvbdRXNdDLgc
+EPCjjvbdZsiIxcrn
+DoDKjvbdpyPIGqEY
+EPDKjvbdlZTRryHU
+DoDKjvbdUslsekvK
+DncKjvbdKfFhCBQu
+DncLKvbdSCDeMIyL
+EPDKjvbdJcJcRJcY
+DoDLKvbdraellHLZ
+EPCjjvbduDCtwWPP
+DnbkKvbdBdPaWJlf
+EPCkKvbdqFceUVaI
+DnbkKvbdcyxoxYqC
+DnbkKvbdlYsSTYft
+EObjjvbdZHXEAOsJ
+EObjjvbdURROtuHm
+EPCjjvbdZLrDsnMN
+EPCjjvbdfIKvRmpg
+EPDLKvbdwWlBVaVu
+EObkKvbdZMSDsmkm
+EPDKjvbdKNAEZfuB
+DnbjjvbdhyuGMROG
+EObjjvbdJuuGDdgJ
+EPDLKvbdgQBzwDxI
+EObjjvbdjvXNdCXw
+EPCjjvbdlZSrSyGt
+DoDKjvbdXsLaMsnx
+DoDLKvbdTlVoAuoJ
+DnbkKvbdptUGrSLU
+EObkKvbdEztRFMCi
+EOcLKvbdTkvOaVoJ
+EObkKvbdDoCjjwCd
+EPCkKvbdTfznLwVe
+EObkKvbdRjyGUfjs
+EPDKjvbdVviXvEFH
+DnbjjvbdKkBIWAKZ
+EOcLKvbdqFdFUVaI
+EOcLKvbdBhjakJFj
+DncKjvbdauBgYKsh
+DnbjjvbdxKvdHzyf
+DoCjjvbdxVMdqYlO
+EPCjjvbdEPDLLXDE
+EPDLKvbdVvhwucdg
+DncKjvbdaRfDITfL
+EPDKjvbdfpBzvcxI
+DoCkKvbdGLFTDHmV
+DoDLKvbdcTDKtDjB
+DnbkKvbdZRMeIldq
+EObjjvbdRjyGVGkT
+EPCjjvbdlhctRVRa
+DnbjjvbdyXhibPzL
+DnbjjvbdFpASvgFy
+DnbjjvbdKCicRJcY
+DnbkKvbdPxmAGrrK
+EPCjjvbdpstHSSKt
+EObkKvbdiZtelQnG
+DoDLKvbdKkAgvAJy
+EObjjvbdsPvPKCuf
+EOcLKvbdhyuGLqOG
+EPDLKvbdyOSgxShc
+EObkKvbdmJDsptqa
+EPCjjvbdbVCHYKtI
+DoCkKvbdCJLBkIfK
+EPDKjvbdTqQnuUgm
+EOcLKvbdypnmIjXA
+DoDLKvbdiLddOUby
+DoCkKvbdaSFbgtGL
+EPDLKvbdraellGjy
+EObkKvbdWRmwbEkc
+EPCjjvbdDoDLKvcE
+DnbjjvbdjEjfuPAO
+DnbjjvbdqvokbiYq
+DnbkKvbdVZITzLOn
+EPDKjvbdUWLpJtAq
+EObkKvbdwtmFQyMO
+DoDLKvbdFWZQPmKF
+EPDKjvbdLBKgMawq
+DncLKvbdANIYsWyx
+EObkKvbdqvolDJYq
+EOcKjvbdQlwbZOUz
+EPCkKvbdlqyUzTEJ
+EPCkKvbdSLYfUgKs
+DoCjjvbdRotHJfEX
+EOcKjvbdrXQMCiZR
+DncLKvbdaofgELzd
+DoDKjvbdehKvSNqH
+EPCkKvbdzaAOfgBl
+DoCkKvbdVUMsfMVj
+DoDLKvbdUGznLwVe
+EPDLKvbdDoDKjwDE
+DoCjjvbdANHxsXZx
+EPCkKvbdJpydnenF
+EPCjjvbdtTRsZZeD
+DoDLKvbdnQZyWLZC
+EPCkKvbdKNADyfta
+EPCkKvbdUVlPjTaR
+DncLKvbdeOeSjstS
+DncKjvbdXrlAmUOx
+DoCkKvbdxnTIXrhc
+EPDLKvbdZjTIQGaf
+DoCjjvbdPxmAGrrK
+EPDKjvbdLZQirztf
+DoDLKvbdkHflGFnL
+DoCjjvbdiMFEOUby
+DnbjjvbdhaoDFXQq
+EPCkKvbdyzeNqhIh
+EPDKjvbdbUbGwkUI
+DoCkKvbdEXxLsstM
+DoDLKvbdaRebhUGL
+EObjjvbdMfbpNQUk
+DoDLKvbdCEQAuilf
+EObjjvbdMowpunHT
+DoDLKvbdzHYlAMeX
+DoCkKvbdegkVqnQg
+DnbkKvbdwWlAuaVu
+DncKjvbdFfJqnItR
+EObjjvbdZjTHpHBf
+EPCkKvbdbsDKtEJa
+EOcLKvbdZtIiZESn
+DoDLKvbdpxoIHRDx
+EPDLKvbdTpqOtuIN
+DnbjjvbdmoyxvKxb
+DncKjvbdqGEEtWBI
+EPCkKvbdQwNdClHc
+DoCkKvbdHELViajK
+EPDLKvbdCJLBkIfK
+EPDLKvbdvwMBWBVu
+EPDKjvbdxrmiNRag
+EOcKjvbdxVMeQyLn
+DoCkKvbdraelkgLZ
+EPCjjvbddndsLUUS
+DoCjjvbdhgKDYvKV
+EPDKjvbdBiKbKiFj
+DncKjvbdKkBIWAKZ
+DnbjjvbdjlakzEgP
+EObjjvbdNrtWGeUp
+EPDKjvbdidkGuPAO
+DnbkKvbdjAQHBPgK
+DoCkKvbdUxgtZkPO
+DoDLKvbdDoCkLXDE
+DoDLKvbdkVvmcaxX
+EPCkKvbdmfeXmOHZ
+DoCjjvbdHDkWJajK
+DoDLKvbdkHgMGFnL
+EObjjvbdBdQAuilf
+EPDKjvbdxUleQxlO
+DoDKjvbdJbjDRJcY
+EPDKjvbdXsMAltOx
+EOcKjvbdIrxaSmXl
+DoDLKvbdyYJJbQZk
+DoDLKvbdQlwaxnUz
+EObkKvbdqvpMDIyR
+DoCkKvbdhzVGLpnG
+DncKjvbdJKEAJofd
+EOcLKvbdZLrETnLm
+DncKjvbdQvnDcMID
+EPDLKvbdiLddOUby
+EOcKjvbdeJiqvUzn
+DnbjjvbdsBemMGkZ
+EPCkKvbddtAUASmW
+EPCjjvbdiLeEOVCy
+EPDKjvbdkxrrSyHU
+DoCjjvbdURQoVUhN
+EOcKjvbdtkwwBUBX
+EOcKjvbddeOqawCj
+EOcKjvbdbAvEfPow
+EPCkKvbdzROmIjXA
+EObjjvbdKDKCpibx
+EPDKjvbdIGfyyYXg
+EOcLKvbdeOdsKssr
+EOcKjvbdsBelkgKy
+DoDKjvbdJYUCIMRQ
+EOcLKvbdjcMLQgVH
+EOcLKvbdJTYaSmXl
+DoDLKvbdNddUJIkE
+DoDLKvbdFjdsChNV
+DnbjjvbdmttyjjSG
+EPDLKvbdVgwuxHYz
+EOcLKvbdsCGMkfjy
+EOcKjvbdKWVGDeHJ
+EPDLKvbdjJegjMwr
+DoCkKvbdNHDQMotk
+DoDLKvbdjmBkydgP
+DnbkKvbdSLZFtfjs
+EPDKjvbdjbkjpfuH
+EObjjvbdkVwNdBww
+DncKjvbdFxtuBEYC
+EPCkKvbdrMzJxkhJ
+DoDLKvbdptUGrSKt
+EOcKjvbdhzUelQnG
+EObkKvbdsQVoKCuf
+DoCkKvbdzitpPcsU
+DoCkKvbdySnJMqag
+DncKjvbdZRMeImFR
+EObkKvbdYzcFrKVy
+DoDKjvbdrNZjZMIJ
+EPCkKvbdEvYoolie
+EOcLKvbdLBKgNCXq
+DnbkKvbdrpVnjDWG
+EObkKvbdLLBHvAJy
+DoCkKvbdqmZixkgi
+DoCjjvbdhytfLpmf
+DnbkKvbdVZHsyjoO
+EObkKvbdWWhxWEEg
+EObkKvbdhfjDZWJu
+DoCjjvbdZoOIddzK
+DoCjjvbdCDoaWJmG
+DoCkKvbdzitoocrt
+EOcLKvbdOSsvGduQ
+EOcLKvbdVqnXbElD
+EPDKjvbdgFlZnHHA
+EOcKjvbdUsltFkvK
+EPCkKvbdePFSkTsr
+EPCkKvbdssSTYzFD
+EOcLKvbdVTlselWK
+DncKjvbdZRMeJMdq
+EOcKjvbdYSlAlsnx
+DncLKvbdSZihTDWA
+DnbjjvbdvvlBWAuu
+EOcLKvbdEvZPoljF
+EPDKjvbdHELWJbJj
+DoDKjvbdDjHiuxKA
+DncLKvbdrMyjYkgi
+EOcLKvbdRbDdlIxk
+DoDLKvbdFVyQQMie
+EOcLKvbdZxdJmcMS
+EPDKjvbdFejRmiUR
+EPCjjvbdnPyxujxb
+DoCkKvbdjKGIKNXr
+DoCjjvbdYSlBNUPY
+DoDLKvbdZshiZDsO
+EPDLKvbdkyTRsYft
+DncKjvbdJbicQicY
+DoCkKvbdXGZZtAOs
+DnbkKvbdZjSgpGbG
+DncKjvbdWSOYBeMD
+DoDLKvbdKNADyfta
+DoDLKvbdLBKgMbYR
+EObjjvbdNddThhkE
+EPCjjvbdQdCaPqES
+DnbkKvbdvBDySoFI
+EPCkKvbdDoDLLWcE
+DncLKvbdaSGDHtGL
+EObkKvbdKNADzGta
+DncLKvbdTAFJHaoE
+EOcLKvbdTAFJIBoE
+DoDLKvbdUtNTelWK
+EPCkKvbdKefICApu
+EObkKvbdySmhlqbH
+EPDLKvbduaEYroFI
+DnbjjvbdSKxfVHLT
+EObkKvbdhkdcnVDZ
+DnbkKvbdCSaDTevr
+DoCkKvbdiBoCeXQq
+DncLKvbdZjShQGaf
+EPCkKvbdIwsagkqQ
+DnbkKvbdnCKWwoNu
+DncKjvbdelfWgNJk
+EOcLKvbdSPtHKFcw
+EObjjvbdZRNEhleR
+DoCkKvbdbLMGPNcA
+DoCkKvbdRkZFtfjs
+EOcLKvbdySmhmSBg
+DoCkKvbdWHxVwgYz
+EObjjvbdURQntuHm
+EPDKjvbdySnJMqbH
+EOcLKvbdOStWHEtp
+EPCjjvbdeOeTKstS
+DncLKvbdssRsZZdc
+EObjjvbdrovPKCuf
+EPDKjvbdiZuFkqOG
+DncLKvbdsBfNLfjy
+EOcLKvbdCDpAujNG
+EPDKjvbdOSsugFUp
+DoDLKvbdNQYRVmfs
+EOcLKvbdTAEiHaoE
+DoCjjvbdEPDKjwDE
+EPCkKvbdqUUGqqkU
+EPDKjvbdtbcVXVoP
+DnbjjvbdhbOcEvqR
+EOcKjvbdCTAcUGWr
+EPCkKvbdQdDApQcr
+DnbjjvbdTfznLwWF
+DnbkKvbdCDoaVjMf
+EPCjjvbdBsBDUFvr
+EPCkKvbdWWiXuceH
+DoCjjvbdJcJcRJbx
+DoDLKvbdsCGMlHKy
+EPCjjvbdSBceLhyL
+DoDKjvbdHffzZYYH
+EPCkKvbdvAdZTOeI
+DnbkKvbdxwhjBpZk
+DncKjvbdOFDtIhjd
+DoCjjvbdmpZxujxb
+EOcKjvbdIryAsMwl
+EPCkKvbdTqQnuUhN
+DncKjvbdOSsvHEtp
+EPDLKvbdZoOIdeZj
+DnbkKvbdKeegbAqV
+EPCjjvbdqFceUWAh
+DnbkKvbdCWzchdpW
+EPCkKvbdzQnlhiwA
+DoDLKvbdqdEiQNua
+DncKjvbdddoRawCj
+EPDLKvbdlYrrSxft
+DnbkKvbdRWnECkgc
+DncKjvbdGYuUaEYC
+EPDLKvbdZsiIxcrn
+DoCjjvbdJbibqJbx
+EPDKjvbdGYtuBDxC
+DnbjjvbdCEQAvKMf
+EObjjvbdvAcyTPEh
+DoCkKvbdxwhjBozL
+DoDKjvbdNsTugFVQ
+DoDKjvbdkHgLeemk
+EOcLKvbdwWlBVaWV
+EOcLKvbdrNZjYkgi
+DnbkKvbdJYUBglRQ
+DnbkKvbdjvWmdCXw
+EObjjvbdmajXYPOV
+DncKjvbdDihJuxKA
+EPCjjvbdwzIGGYFS
+DoDKjvbdMpYQvOHT
+DncLKvbdbhljLFwY
+EObjjvbdelevgMik
+DnbjjvbddePSCWbj
+DnbjjvbdKQydnenF
+DnbkKvbdZQmEhmFR
+DoDKjvbdjKFgimYS
+EObjjvbdANIZSvyx
+DoCjjvbdfHkWRnRH
+EObkKvbddiiqutzn
+EOcKjvbdqYnhHQdY
+DoDKjvbdKCjDQjCx
+DoDLKvbdjgflFfNk
+EOcLKvbdtTRrxzEc
+DnbkKvbduLwwBUAw
+DncLKvbdkWXOEBxX
+EPDKjvbdNxPVzcnU
+EPCjjvbdUMVnaWOi
+EObkKvbdZQmFImEq
+DncLKvbdQvmdDMID
+EObjjvbdGFjSNhsq
+EOcLKvbdbAvFFpQX
+DoCjjvbdkCkjqGuH
+EPCkKvbdbLLeoNcA
+DoDLKvbdemFwGmJk
+EOcKjvbdVUMtFlWK
+EPDLKvbdWXJXucdg
+DncLKvbdqcdhpNua
+DncLKvbdGYuUaDxC
+EPCkKvbdGZUtaDwb
+EOcLKvbdjuwODaxX
+EOcKjvbdSKyFuHKs
+EOcLKvbdNQYQvOHT
+EPCkKvbdNGcQNPuL
+EOcLKvbdPIAYZAZB
+EObjjvbdMfcPlpVL
+EPCjjvbdLAjflbXq
+EPCjjvbdySmhmRbH
+EPDKjvbdxsNhmSBg
+EOcKjvbdZMSDsmkm
+DoCjjvbdbAudfQQX
+DoCjjvbdePErjtTr
+DncKjvbdtkxXBUBX
+DoCkKvbdqvokbiYq
+DnbjjvbdMfbpMouL
+DnbjjvbdijFhKNXr
+DoDKjvbdhgJcZVjV
+EPDKjvbdIHGzZYYH
+DnbjjvbdNsTufeVQ
+DnbjjvbdqlyixlIJ
+EPDLKvbdmaivxPOV
+DnbkKvbdmJDsptrB
+DnbjjvbdQYmAGsSK
+EOcKjvbdZjTIQHCG
+EPDKjvbdqGDeTuaI
+EOcLKvbdADSYJzIp
+DncLKvbdeuzwoizs
+EObjjvbdFyUuBEXb
+DncLKvbdnUtykJqf
+EPCjjvbdelfXGmKL
+EOcKjvbdKCjDQjDY
+DncKjvbdaaVeGPow
+DncKjvbdqvolDJYq
+DoCjjvbdDnbjkWbd
+DoCjjvbdjlakyeHP
+DoCkKvbdLZRJrztf
+DncKjvbdZisIQHCG
+EPDLKvbdZyDjNbkr
+DnbkKvbdLAjfmBwq
+EOcKjvbdtSqryZeD
+EOcLKvbdIMBzmvqL
+EObjjvbdiVZdvqtb
+DoDLKvbdMgDPmQVL
+EPDLKvbdMgCpNPtk
+EObjjvbdKVuGDeHJ
+EOcLKvbdjJehJlxS
+EPCkKvbdhlEcmuDZ
+DoDKjvbdHfgZyXwg
+EPCjjvbdShyiqABM
+EPDLKvbdMgColouL
+EPDLKvbdVqmwadkc
+EPCjjvbdnCKWwnmu
+DncKjvbdRpUGjGEX
+DoDKjvbdkWWnECYX
+DnbjjvbdkMalZeGo
+EOcKjvbdxUleRYkn
+EObkKvbdFxtuBDxC
+EObjjvbdnGdwlnGy
+EObkKvbduaEYsOeI
+EPCkKvbdyTOJMrBg
+EObjjvbdDHMFgAzc
+DnbjjvbdEOcKkXCd
+EPDLKvbdBhjbLIfK
+EPCkKvbdZtJJZETO
+EOcLKvbdIwsagkqQ
+DoCkKvbdZyDjNbkr
+DnbjjvbdBsAbsfWr
+DoCjjvbdeOeSjssr
+EObkKvbdVUNUGMWK
+DncLKvbdfMfWfmKL
+DoCjjvbduaEZTOdh
+DoCkKvbdZisIPgBf
+DnbjjvbdVZHtZjoO
+DoCjjvbdCWzchePv
+EObjjvbdJmAEZfuB
+EObjjvbdvvkaVaWV
+DoCjjvbdiiegjNXr
+DnbjjvbdcScLUEJa
+DncLKvbdJXsbHlQp
+EPCjjvbdrpWOjDVf
+DoDLKvbdDnbjjwDE
+DnbjjvbdxnShYSiD
+DoCjjvbdqGEFUWBI
+DoDKjvbdtSrTYzEc
+EObkKvbdEPDLLWcE
+DoDKjvbdKQzEnfOF
+EPDLKvbdIwtBhMRQ
+DoCjjvbdTvLojUBR
+EPDLKvbdZyDimbkr
+EPDLKvbdptTfrSKt
+DncLKvbdkMbLyeHP
+EOcKjvbdKfFhBaQu
+EObjjvbdeEoRbXDK
+EOcKjvbdHDjvJbJj
+EObkKvbdEztQeLcJ
+DncKjvbdUtMsfLuj
+DnbjjvbdRXOECkgc
+DncKjvbdLAjfmBxR
+EOcLKvbdsPvPJcVf
+EPCjjvbdygYlAMdw
+DnbjjvbdmuVZkKRf
+EPCkKvbdSZigrcWA
+DncLKvbdcJMikGWx
+EOcKjvbdGLErcHlu
+DoDKjvbdKNADygUa
+EPDLKvbdMfbolpUk
+DoDLKvbdUxhTyjoO
+EPCkKvbdMtrqjmAX
+EPDLKvbdLBLGmBxR
+DoCjjvbdrzMQTAgn
+EPDLKvbdUxhTykPO
+DnbkKvbdnVUzLJqf
+DoCkKvbdLYpirztf
+EPDLKvbdFejSOItR
+DncLKvbdvlvANDeN
+DncLKvbdwtleRYkn
+EObkKvbdcJNKLFvx
+EPCjjvbdYSkaNTnx
+EOcLKvbdSxKlNzjx
+DnbjjvbdHbMZdzAD
+EPCjjvbdXnRAXuVt
+DoDKjvbdQmYBxnUz
+DoCkKvbdWSOYCEkc
+DnbkKvbdemGXGlik
+EObjjvbdNeDsiJLE
+DoCkKvbdbiMijfXY
+EPCjjvbdmIdTptrB
+DoCjjvbdEztQeMDJ
+DncLKvbdCIjbLIfK
+EPCjjvbdhkeENuDZ
+DoCkKvbdAMgxsWzY
+DoCjjvbdiZtelQnG
+EOcKjvbdWXJXuceH
+EOcLKvbdZRMeJMeR
+EPCkKvbdiVZdvquC
+DoDLKvbdkVvmdCXw
+EObjjvbdnHExMmgZ
+EPDKjvbdHgHZyYYH
+EPDKjvbdRbEFMJYk
+EPCkKvbdvBEZSndh
+DnbkKvbdcScLTdJa
+DoDLKvbdcJMijfXY
+DnbjjvbddndrjstS
+EPDLKvbdbiNJjevx
+DnbkKvbdOSsvGduQ
+DoDKjvbdMowpvNfs
+DoCkKvbdZjSgpGaf
+DnbkKvbdddnqawDK
+DoDLKvbdKaLGmCYR
+DoCjjvbdmuVZkKSG
+EOcKjvbdZQldiMdq
+EObjjvbdRNXayOUz
+DncLKvbdeuzxQJzs
+DncLKvbdEOcKkXCd
+DncKjvbdhtyeXSUb
+DnbjjvbdEObjkXDE
+DncLKvbdKQyePGNe
+EOcLKvbdHgGzZXwg
+EObkKvbdrMzJxlIJ
+EObkKvbdRXNdClHc
+DoDLKvbdwzIFexEr
+EPDKjvbdJYUCIMQp
+DnbkKvbdhbOcFWqR
+EOcKjvbdnGdxMmgZ
+EObjjvbddeOqawCj
+EPCjjvbdqTsgSSKt
+DncKjvbdJXtBhLqQ
+DoDLKvbdatagYKsh
+EOcKjvbdjEkHUoAO
+DncKjvbdLFfICBRV
+DnbkKvbdKQydoFme
+EPDKjvbdhlFEOVCy
+EPCkKvbdZxdJmblS
+EPDKjvbdJbjCqKCx
+DncKjvbdwNWANDdm
+EPDLKvbdpyPHfqDx
+EPCjjvbdOTTufeVQ
+EPCkKvbdtbbtvvOo
+DoCjjvbdbBWEfQQX
+EObjjvbdKNAEZgVB
+DnbjjvbdJXtBgkqQ
+EPCjjvbdGYtuBEXb
+DoDLKvbdZjShQGaf
+DoDLKvbdQmYCYnUz
+EOcLKvbdpedFTvAh
+EObjjvbdKQydoGNe
+EPCkKvbdKDJcRKDY
+EObkKvbdrafMkfkZ
+EObkKvbdiCObdwRR
+EPCjjvbddBsMrAUN
+DoDKjvbdWIXvXgYz
+DoDKjvbdkClKpftg
+EOcKjvbdkCkjpftg
+EOcLKvbdVrOYBeLc
+EObkKvbdmoyxukZC
+EPCjjvbddZyQXyRC
+DoCkKvbdhbPCdvqR
+DoCkKvbdJvUeceGi
+EOcLKvbdVqnXaeMD
+DoCkKvbdWWhxVceH
+EPDKjvbdiGjDZVjV
+EObjjvbdGAnpxizm
+DoCjjvbdiZuFlQnG
+EOcKjvbdTqRPVVIN
+EPCjjvbdqdEhomvB
+DoCkKvbdLAkHMaxR
+EPDLKvbdOEdThiKd
+DnbkKvbdkxrrTZGt
+EOcLKvbdEPDLLXCd
+DoDLKvbdTIzKRAAl
+EPDLKvbdSCDeLiZL
+EPCkKvbdpyOgfpdY
+EPCjjvbdtkwwBTaX
+EPDKjvbdiBoCeWqR
+DoCjjvbdhgJbxujV
+DoDLKvbdqdEhpNvB
+EOcKjvbdkCkjqGuH
+EPCjjvbdhbObeXQq
+EOcKjvbdxsOImRbH
+DoCjjvbdKWVFceHJ
+DoDKjvbdBiKbKiGK
+EPDKjvbdnGeXmNgZ
+EPDKjvbdiifHjNYS
+EOcKjvbdauBgXjsh
+DnbkKvbdUtMsfLvK
+DncKjvbdNrtVgEuQ
+EPDLKvbdUsmUGLvK
+EOcLKvbdNGcQMpVL
+EPCkKvbdqmZjZLhJ
+EObkKvbdFfKSOJUR
+DncKjvbdhaoCeXRR
+DoCkKvbdmfdwlnGy
+EPCjjvbdjbkjqGuH
+DoDKjvbdlqyVZsEJ
+DnbjjvbdWWiYVcdg
+EOcKjvbdeATqMwjG
+EOcKjvbdqUTgSSKt
+DncKjvbdqwQMDJZR
+EPCkKvbdsQVoJbuf
+DoCjjvbdVTmUFlVj
+DoDKjvbdmajWxPOV
+EOcKjvbdUQpoUthN
+DoDKjvbdwMvAMdEm
+EPDLKvbdDnbkLXDE
+DncLKvbdFfKSNiTq
+DncKjvbdIryBSlwl
+DoDKjvbdmgEwlmfy
+DncKjvbdqwPkbhyR
+DncLKvbdNeETiJKd
+EObjjvbdDoCjkXCd
+EObkKvbdjgflFfNk
+DncLKvbdxsNhlrCH
+DoCjjvbdeFOrCWbj
+EObjjvbdkNBkzFHP
+DoCjjvbdxrmiNSCH
+EOcLKvbdVwJXvDeH
+EPCkKvbdZRMdhmEq
+EObjjvbdjSzhsKiz
+DoCkKvbdqdEiQOVa
+EOcLKvbdpaJFAWhE
+EPDLKvbdRkYfVGjs
+DncKjvbdMpXqWNgT
+EOcLKvbdVYhUZkPO
+DoCjjvbdUxhTyjnn
+DoCkKvbdOYOuzcmt
+DoDKjvbdZLqdUNlN
+DoDLKvbdJSyBTMxM
+DoDLKvbdYORAXtut
+DncKjvbdHffzYxXg
+DncLKvbdmpZyVjyC
+EOcKjvbdmfeXlnGy
+DoDLKvbdkHfkeenL
+DoDLKvbdJTZBSmYM
+EObkKvbdrMzKZMHi
+DncLKvbdiLeDmuCy
+DoDKjvbdjvXNcbYX
+DnbkKvbdrJAJeMne
+DoDLKvbdvlvAMdFN
+EPCjjvbdZLrDsmlN
+DnbjjvbdaaVdfPpX
+EObkKvbdrbFlkfjy
+DoDKjvbdGLErbhNV
+DoCjjvbdCIkCKhfK
+DnbjjvbdeEoSBwDK
+DncLKvbdirziSjiz
+EPDKjvbdwzIGGYEr
+DncKjvbdbVCGwkTh
+EObkKvbdakMFnmcA
+DnbkKvbdRpUHKFdX
+DoDLKvbdMSWlytpz
+DncLKvbdpssgRrKt
+EPCjjvbdZRMeImEq
+DoCjjvbdqrVKmjaN
+EObjjvbdjAQGaPfj
+DoDLKvbdyqOmJJwA
+DnbjjvbdQccApRES
+DoDLKvbdIsYaSmXl
+EPCjjvbdrovPKDWG
+EPDLKvbdqdEhpOVa
+DoCkKvbdVviYVdEg
+DoCjjvbdqZPIGqEY
+EPCkKvbdOTTvGeVQ
+DoCkKvbdDncLLXCd
+EObkKvbdvBEYsOeI
+DoCjjvbdYORAYVVt
+EOcLKvbdhgKCxuiu
+DoDKjvbdddoRbWcK
+EObkKvbdmoyyWKyC
+EOcLKvbdyYJJbQZk
+DnbjjvbdUyIUZkPO
+DncKjvbdFyUuBDxC
+DoCjjvbdnQZyVjyC
+DoDLKvbdatbHYKsh
+DoCjjvbdczYowxpb
+DncLKvbdIsZAsMxM
+EPDKjvbdGKeTChMu
+DoCkKvbdptTgSRjt
+EPDKjvbdMtrqjmAX
+DncLKvbdKQzEoFme
+EObjjvbdFxtuAcxC
+DncKjvbdkDLkRHVH
+EPCkKvbdunszqKnt
+DoCkKvbdezuxeJTw
+EObkKvbdzjVQQDsU
+EPDLKvbdjKGIKMxS
+DoCjjvbdcyyQXxqC
+EObkKvbdhtydwRtb
+DnbjjvbdfNGXHNKL
+DoDKjvbdmoyxujxb
+DncLKvbdmuVZkJqf
+EObkKvbdZyDjNbkr
+DnbkKvbdyXhiaozL
+EObkKvbdKWUfDeHJ
+DoCkKvbddoFTLUUS
+DnbjjvbdJvUfEFHJ
+EObjjvbdsrqrxzFD
+EObjjvbdmgFYMmfy
+DnbjjvbdbrcLTcjB
+EPDKjvbdZtIiZETO
+DncKjvbdSLZGVHLT
+EObjjvbdhtzFXSVC
+EOcKjvbdvAcxsPEh
+EOcKjvbdbrbjsdKB
+DoDKjvbdezuxdiTw
+DoDKjvbdhkdcnVDZ
+DoCkKvbdNddUJIkE
+DnbjjvbdsCGMlGjy
+EOcKjvbdssSSxydc
+DoCjjvbdSPtHJfDw
+DoDLKvbdmRyVZrdJ
+EOcLKvbdBdQBVjNG
+EPCjjvbdtvOXipsA
+EOcLKvbdDwwlUUUM
+EObkKvbdhkeENuDZ
+EOcKjvbdwygfGYEr
+DncKjvbdbsCkUEJa
+DnbkKvbdvlvAMceN
+EPDKjvbdTvMPitAq
+EPDLKvbdMowpvOHT
+EOcKjvbdNQXpvNgT
+DncKjvbdYzcFqiuy
+EObjjvbdqUUGrRjt
+EOcKjvbdUaBqTRSZ
+DnbjjvbdrafMkfjy
+DncLKvbdmgFXmNfy
+DncKjvbdNrtVfdtp
+EOcKjvbdVZITyjoO
+EPDKjvbdTukpJtBR
+DoDLKvbdyOTHxTIc
+DnbjjvbdsBfNLfkZ
+EPCjjvbdmJDtRVSB
+EObjjvbdmJDtRUrB
+DnbjjvbdiVZeWrVC
+DncKjvbdBiKajhfK
+DnbkKvbdziuQPcsU
+EOcKjvbdGFiqnJTq
+DoCjjvbdAMhZTXZx
+DncLKvbdDjHiuwjA
+DnbkKvbdBdQBVjNG
+EPCjjvbdqlzKYkgi
+DncLKvbdLLBIWAJy
+DncLKvbdbhljKfXY
+DncKjvbdaogHELzd
+DnbkKvbdjEkGtoAO
+DnbjjvbdGdKvJbKK
+EPDLKvbdqrUjnKaN
+EObjjvbdnVUykKSG
+EPDKjvbdVrNwbFMD
+DoDKjvbdvlvAMdEm
+EPCjjvbdaaWEeopX
+EPDLKvbdULuoBVoJ
+EPDLKvbdzjUpPcsU
+EPDKjvbdZnnJEdyj
+EPDKjvbdtlXwAsaX
+EPCjjvbdjJfHimXr
+EPCkKvbdxwiKBpZk
+DoCkKvbdLiBlQxAS
+EObkKvbdXFxytAOs
+EObjjvbdnQZxukYb
+DncKjvbdZxcjNcMS
+DnbkKvbdQcbaQQcr
+EObkKvbdVgxVwgYz
+DoDLKvbddoEsLUUS
+EOcKjvbdTppnttgm
+DoDKjvbdBhkBjhej
+EPCkKvbdlhcsqVRa
+DoDKjvbdZshiYcsO
+DoDKjvbdtcDUvvPP
+DnbkKvbdRkZFuGjs
+DoCkKvbdaaVeFopX
+EObkKvbdYORAXtut
+DncLKvbdqwPlDJYq
+DoDLKvbdbBWEepPw
+DnbkKvbdVvhxWDdg
+EObkKvbdfHkVqmpg
+DncKjvbdaMjartmH
+EPCkKvbdBhjbLIej
+DoCjjvbdCIjbKiFj
+DoDKjvbdkIHLefOL
+EOcKjvbdrbGMlGkZ
+DncLKvbdPxmAGsRj
+EOcKjvbdZxdKODMS
+DncKjvbdkDLjqHUg
+EOcLKvbdjEkHUoAO
+DoDLKvbdrovOjDVf
+DncLKvbdZshiZESn
+DncKjvbdUyIUZjnn
+EPDLKvbdxmrhYSiD
+DoCjjvbdaNKasUlg
+DnbkKvbdYqMeJMdq
+DncKjvbdZoOIeEyj
+EOcKjvbdemGXGlik
+EObjjvbdyzdnRhIh
+DncKjvbdHEKvJbJj
+EObkKvbdSCDdlIxk
+EPCjjvbdGAoQxizm
+DoCjjvbdaNKasVMg
+EObkKvbdePErkTtS
+EPCjjvbdlhdUQuSB
+EPDKjvbdNQXpvOGs
+DoCkKvbdXnRAYUut
+EObkKvbdcTCkUEKB
+DncLKvbdmRyUzSdJ
+EPDLKvbdrSVLNkAm
+DoCkKvbdJvUecdgJ
+DoDLKvbdRDbaQRDr
+EPDKjvbdYlSETmlN
+EPCkKvbdbUagYKtI
+EPCjjvbdssRrxzFD
+EPCjjvbdRMwbYmtz
+DnbjjvbdxrmhmRag
+DoDKjvbdTvLpJtAq
+EPDKjvbdVBBprprZ
+DnbkKvbdRkYeuGkT
+EOcKjvbdmbKWwoOV
+EOcKjvbdZeYGzghb
+EPCjjvbdFeirOJUR
+DoCkKvbdZsiIxcrn
+EPDKjvbdDnbkKvcE
+DoDLKvbdsrrTZZeD
+DncKjvbdJbjCpicY
+DnbjjvbdcyxpXxpb
+EPCjjvbdrXQLbhxq
+DncKjvbdzROmJJwA
+DoDKjvbdqdFIpNvB
+EPDKjvbdkHfkfGNk
+DoDKjvbdFjdsDINV
+DoDKjvbdUyITyjoO
+EOcLKvbdiUzEwRtb
+EPCkKvbdmfeYMmgZ
+DncLKvbdHgGyyXxH
+EObkKvbdMuTSLNAX
+DncKjvbdtbcUwWOo
+DoCjjvbdVwIxWEFH
+EOcKjvbdhgJcZWKV
+DoCjjvbdsCFllHLZ
+EPDKjvbdGcjvJbKK
+EOcLKvbdnGeYNNfy
+DncKjvbdZnnIeFZj
+DoDKjvbdxUldqZLn
+EOcKjvbdrovOibvG
+DoDKjvbdUWLpKTaR
+DncKjvbdePFTKtTr
+EPDLKvbdFxtuAdYC
+DoDLKvbdfIKvRnQg
+EPDLKvbdypnmIjXA
+DncKjvbdbUagYLUI
+EPDKjvbdnVUyjiqf
+EObkKvbdKWVGDeGi
+EObkKvbdaNKbSuMg
+DoDKjvbdNVSqkNAX
+EObkKvbdhbPDFWqR
+DoDLKvbdLGFhBaRV
+EOcKjvbdbrcLUDjB
+EObjjvbdZHXEAPTJ
+EPCjjvbdCSaDTevr
+DncLKvbdgQBzvcxI
+EObjjvbdidjfuPAO
+DoDLKvbdzjUoodTU
+DncKjvbdGLEsChNV
+EPCjjvbdNeDshiLE
+EObjjvbdGGKRnIsq
+EObkKvbdeYZtTqez
+EOcKjvbdQwODblHc
+DoCkKvbdkClLRHVH
+EPCkKvbdxUldqYkn
+EPCkKvbdvBDxsPFI
+DnbkKvbdqvpLcIyR
+DncKjvbdqmZixkhJ
+DoDLKvbdkVwNdCYX
+EObkKvbdUxgsykPO
+EPCkKvbdjcLjpgUg
+DnbjjvbdbUagYKtI
+EObjjvbdDjHjWXjA
+EObjjvbdrykpSaIO
+EObjjvbdrbGMlGjy
+DncLKvbdVYhUZjnn
+DoDLKvbdjlakydfo
+DnbkKvbdVTmUGMVj
+EObjjvbdZjTIQHCG
+EOcLKvbdZxcjNcLr
+DoCkKvbdqTsgSRjt
+DnbjjvbdCIkBkJFj
+EPCkKvbdaogHELzd
+EPCjjvbdNPxQunGs
+EObjjvbdxZhFfXeS
+DoDKjvbdjblKqHUg
+EObkKvbdNPxRWNgT
+DoDKjvbdkaNOmALA
+EPDLKvbdxsOImSCH
+EOcLKvbdZshhyETO
+EPDLKvbdIHHZyYYH
+DoDKjvbdliEURVRa
+EObjjvbdiVZeXRtb
+EOcKjvbdiHJcYvJu
+EOcKjvbdIsYaTNXl
+DoCkKvbdtlXvaTaX
+EOcKjvbdNQYRVnHT
+DoDKjvbddjJqvUzn
+DoDKjvbdULuoBVoJ
+DoDLKvbdUslselVj
+EPCkKvbddePSCWbj
+EPDKjvbdNeDtIiKd
+EOcKjvbdiUzFXSUb
+DoCkKvbdmRyVZsEJ
+EPCjjvbduLwwAtBX
+EPDLKvbdxZgfGXdr
+DnbkKvbdBcpAujNG
+DnbjjvbdZtJIyDrn
+EObjjvbdmbJvwnmu
+EPCjjvbdXnRAYVWU
+EOcLKvbdyOShXsJD
+DoCjjvbdptUGqqkU
+DnbkKvbdFpASwHGZ
+DnbkKvbdwtleRYlO
+EPCkKvbdnHFYMmfy
+EPDKjvbdKCjDQjDY
+EObkKvbdeqaWzlDP
+DoCkKvbdbLMGPODA
+DoCjjvbdpyPIGqDx
+EOcKjvbdbhmKLFwY
+DoDLKvbdEOcKjwCd
+EPCkKvbdePFTKtUS
+EPCkKvbdtvNwipsA
+EPCkKvbdzoQQdblY
+EOcLKvbdKjaHvAJy
+EPDKjvbdvPTzpkOt
+EPDKjvbdMJCLpxAS
+EObkKvbdWWhwvEEg
+DnbkKvbdcJNJjevx
+DoCkKvbdNQXpunGs
+EPDKjvbdWSNxBdlD
+EPDKjvbdwyhFeweS
+DncKjvbdddnrCWcK
+EObjjvbdeKJrVtzn
+EObjjvbdrykosBIO
+EPDKjvbdiiehKMxS
+DncKjvbdrWpMCiZR
+DoCjjvbddoFSjssr
+DoCjjvbdbhmKKfWx
+EObjjvbdmajWwoNu
+EOcLKvbdDxYLstUM
+EPCjjvbdddoRawDK
+DncKjvbdmuUzKjSG
+DoDKjvbdLFegbBRV
+EPCkKvbdySnJMqbH
+DnbjjvbdLLAgvAKZ
+EPCjjvbdraemMHLZ
+EObjjvbdnUtzLKSG
+EPDKjvbdkDMLQgVH
+DoDKjvbdkHgMGGOL
+DoCjjvbdxsNiNSCH
+EObkKvbdNQXpvOHT
+EObkKvbdQwNdDLgc
+DnbjjvbdegkWRnRH
+DnbkKvbdGZUuAcwb
+DncLKvbdiMEcmuCy
+DoDLKvbdFfJqnJTq
+DoDKjvbdZnnJFEzK
+EOcLKvbdTqRPUtgm
+EOcLKvbdRjyFuHLT
+EOcKjvbdhtzEwRtb
+EObjjvbdTXjkmzjx
+DoDKjvbdqdFJQOVa
+DoCkKvbdGckViajK
+DncLKvbdDxXlUTsl
+EOcLKvbdeUAUASlv
+DnbkKvbdzjUpQETU
+DnbkKvbdtcCuWuoP
+DncLKvbdauBgXkUI
+DoCjjvbdUVlPitBR
+DnbkKvbdFfJrOItR
+DoDLKvbdxnSgwsJD
+EPCkKvbdXsMBNToY
+DncLKvbdCTAcUFwS
+DoDKjvbdhgJbxvJu
+DoDLKvbdhkeDnUby
+EObkKvbdEvZPpNKF
+EPCjjvbdiHJcZWJu
+EObjjvbdIHHZyYXg
+DoCkKvbdegkVqmqH
+DoCjjvbdxVNFRZMO
+DoDLKvbdUQpntuIN
+DoDKjvbdEJhJuwjA
+DoDKjvbdkHflGGNk
+DnbkKvbdmttykKRf
+DncLKvbdZxdJmblS
+DnbjjvbdZQmEhmEq
+DoCjjvbdJcJcQjDY
+DoDKjvbdBhkCLIej
+DoDLKvbdmIcspuRa
+DnbjjvbdqiAKElne
+DoCjjvbdJpzEoFnF
+EOcKjvbdyOShYTJD
+DoCkKvbdmuVZjiqf
+DoDLKvbdSCDeLhyL
+EOcKjvbdJvUedFGi
+EObkKvbdehLWRnRH
+EPDKjvbdxmrhXriD
+DoDLKvbdOTUWGeVQ
+EPCjjvbdzRPMhiwA
+EPDKjvbdKRZePGOF
+DoCkKvbdrDeIomvB
+EPDKjvbdkVvmdBww
+DoDKjvbdIGfzYwwg
+EPDLKvbdFVyPpNKF
+DoDKjvbdhytfLqNf
+DnbjjvbdMfbomQUk
+EOcLKvbdtcDVXWOo
+DoDKjvbdqwPlDJYq
+EOcLKvbdZshiZETO
+EOcLKvbdeEnrCXCj
+EOcKjvbdZLrDsnLm
+EPCjjvbdLYqKSzuG
+DncLKvbdMtsRjmAX
+DoCjjvbdJTZArlxM
+EPCkKvbdlZSrTZGt
+DncKjvbdRyjITCvA
+DoCjjvbdEuxpPmKF
+DnbkKvbdTYKkmzjx
+DoDLKvbduDDVXWPP
+DncLKvbdjAPfaPgK
+DncLKvbdrEFJPnVa
+EPCjjvbdrXQMChyR
+DnbkKvbdznpQeDLx
+DoCkKvbdjgflFfOL
+EObjjvbdjlalZdgP
+DoCjjvbdtbcUvvOo
+DoCkKvbdrEFIonWB
+EObjjvbdwXMAvAuu
+DncLKvbdePFSkUTr
+EPCkKvbdTppoUuIN
+EPDKjvbdIxUCHlQp
+DnbkKvbdBiLBjiGK
+DoDKjvbdliDspuRa
+EObjjvbdFkFTDIMu
+EPCjjvbdsQVnjDVf
+EPCjjvbdKefIBaRV
+DoDKjvbdIryAsNYM
+DoCkKvbdsrqrxzEc
+EPCjjvbdLqwNZuQz
+EOcLKvbdcIlikGXY
+DoCjjvbdADSXizIp
+DoCkKvbduaEZTOeI
+DncKjvbdvBDyTPEh
+EPCkKvbdRkZFuHKs
+DoDLKvbdSLZFuGkT
+EOcLKvbdfekzOHHA
+EOcLKvbdkaMoNALA
+DncLKvbdkNCMZeGo
+EObjjvbdNsUVfduQ
+EPCjjvbdZoNiEeZj
+DoDLKvbdLYpirzuG
+EPDKjvbdmoyxujyC
+DoCkKvbdaMjbSuNH
+EPDLKvbdxxIjCPzL
+DnbkKvbdVAaqSprZ
+DoCjjvbduVmxJqTA
+DoCkKvbdRkZGVHLT
+DoDKjvbdEuyQPljF
+DnbkKvbdptUHSRkU
+DncLKvbduLxWaUAw
+EObjjvbdaaVdfQQX
+EPDLKvbdWWiYVdFH
+EOcLKvbdfelZmgHA
+DoCjjvbdADRxKZiQ
+EOcKjvbdfHkWSORH
+EObkKvbdTAEiIBoE
+DncKjvbdEKIKVxKA
+DoCkKvbdkDMKpgVH
+DnbkKvbdCWzciEpW
+EObjjvbdxZgefXeS
+EOcLKvbdsZkpTBIO
+DoDLKvbdrJAKFMne
+EPDKjvbdkWXNdBww
+DnbkKvbdRbEFLhyL
+DncLKvbdWXJYWDeH
+EOcLKvbdijFgjMwr
+DoDLKvbdnHExMnGy
+EObkKvbdZeYGzhJC
+DnbjjvbdEvZPpMie
+EObjjvbdYpldiMdq
+DoCjjvbdfRaWzlCo
+EPCjjvbdGYtuBDxC
+EOcLKvbdQYmAGrrK
+EPCkKvbdlhcspuSB
+DoDLKvbdezvZFIsw
+EOcKjvbdlYsSTZHU
+DnbkKvbdmfeXmOGy
+DncLKvbdKDKDQicY
+DncKjvbdZjTIQHCG
+DnbkKvbdgFkzOHHA
+DnbkKvbdaNLBsVNH
+DoCjjvbdBsBCtGWr
+DncKjvbdqdFIomvB
+DnbkKvbdkNBlZdfo
+DnbkKvbdSQTgKGDw
+DoCkKvbddoFTLTsr
+DoDKjvbdEYYLtTtM
+EOcKjvbdVwJYWEEg
+DoDLKvbdyOSgwrhc
+DoCkKvbdZMRdUOLm
+DoDLKvbdYSlBMtOx
+EPCkKvbdkxsRsYft
+DnbkKvbdrzLpTAgn
+DncKjvbdRjxfUgKs
+DnbkKvbdqquLNkAm
+DoDLKvbdRMxCYnUz
+EPCjjvbdZoOIdeZj
+EObkKvbdrpWOicVf
+EPDLKvbdkCkjqHVH
+EOcKjvbdmSZUzSci
+EObjjvbdRjxfUgLT
+EObjjvbdNddThhjd
+DoCjjvbdKVuFcdfi
+EPDKjvbdzjVPodTU
+DncKjvbdJTYaSmXl
+DncKjvbddZyQXyQb
+EPCjjvbdCIkCKiFj
+EPDKjvbdTkunaWOi
+EObjjvbdfIKuqnRH
+DoCjjvbdZRMdiMeR
+DnbjjvbdMpXpunHT
+DoDLKvbdZRNEhmFR
+EObjjvbdaoffdLzd
+DoDLKvbdvAdYsOdh
+DnbjjvbdSLZGUgLT
+DoCjjvbdSCDdkiZL
+DoDLKvbdelewHNKL
+DoCjjvbdRXNdDMHc
+EObjjvbdkWWnDaww
+EObjjvbdcyxoxZRC
+DncKjvbdelfWfljL
+EObjjvbdZnnJEdzK
+EOcKjvbdkHflGFnL
+DoCkKvbdhbPCdwRR
+EPDLKvbdHDkWKCKK
+DnbkKvbdRadEkiYk
+EOcLKvbdFWYopNJe
+DoDLKvbdqTsfrSKt
+EObjjvbdxnSgxTJD
+EPDLKvbdxZhFewdr
+EPCkKvbdTvLojTaR
+EObjjvbdfIKuqnQg
+EPCjjvbdDxXlTssl
+EObjjvbdQvmccLhD
+EObkKvbdRNXayOUz
+EPCjjvbdatbGxLTh
+EOcKjvbdOSsvGeVQ
+EPDKjvbdePFTKstS
+DnbjjvbdlYsRsZHU
+DnbjjvbdZisIQGaf
+DoCkKvbdsrqsYzEc
+EObjjvbdfILVqnRH
+DnbkKvbdZHWdAPTJ
+DoDLKvbdEPCkLXCd
+EObjjvbdEXwktTsl
+DncLKvbdFVyQPlie
+DncKjvbdNsUWHEtp
+EOcKjvbdyqOmJKXA
+EOcKjvbdADSYJyhp
+EPDKjvbdUyIUZjoO
+EOcKjvbdmJEURVSB
+DnbjjvbdIwtBgkpp
+EPCjjvbdZQmEhldq
+EPCkKvbdDjHiuxKA
+DoDKjvbdrEEiQOVa
+DncKjvbdKDKDQjCx
+DncKjvbdZRNFJMeR
+DncLKvbdwygeeweS
+DncLKvbdnUuZkKSG
+DoDKjvbdvwMAvBWV
+DoCjjvbdBhkCLIfK
+DnbjjvbdoznDkXoA
+EOcKjvbdjgflFemk
+EObkKvbdKVtfDdgJ
+DnbjjvbdXrkaNUPY
+DncKjvbdhlEdNtby
+EPDKjvbdemGWfmJk
+DoDLKvbdlhctQtrB
+EObjjvbdnVVZkJqf
+EObjjvbdwuNEpyMO
+DoCjjvbdTpqOuVHm
+EObjjvbdbLLennDA
+DoDLKvbdiGjDZWKV
+EPDLKvbdFjeTDHlu
+DoDLKvbdDxYLstUM
+EPDLKvbdiUzFXSVC
+DncKjvbdJYTbHkpp
+DoCkKvbdZshhxdSn
+EPDKjvbdxrnIlqag
+EOcLKvbdiHJcYvJu
+DnbjjvbdkVwNcaxX
+EObjjvbdpyPIGpcx
+EPCkKvbdauCGxLUI
+EObkKvbdWRnXadkc
+DnbkKvbdVUNUGLvK
+EObkKvbdDxYLsssl
+DnbkKvbdCJKbKhfK
+DncLKvbdbhmKKfXY
+EOcLKvbdZoOIeFZj
+DoDLKvbdkNCLzFHP
+EObkKvbdpxnggQdY
+EObkKvbdYqNFJNEq
+EPCjjvbdyzdnSHhh
+EOcKjvbdczZQYZQb
+DncKjvbdZyDimblS
+DncLKvbdyOTIXrhc
+EObjjvbdhzUelQnG
+EObjjvbdFjeTChNV
+DoCjjvbdwMvANEEm
+DoDLKvbdRXOEDMID
+DncKjvbdiHJcYvJu
+EOcLKvbdhtzFWrVC
+DncKjvbdVYgsykPO
+DoCjjvbdGGKRmiUR
+EPDLKvbdQmXbYnUz
+DnbkKvbdkIGlFemk
+DoCjjvbdSPsgJfDw
+DncKjvbdzjVQPcrt
+EPDKjvbdmfdxNNfy
+EPDKjvbdZyDimblS
+DoDKjvbdANIZSvzY
+DoCkKvbdJqZdoGOF
+EOcKjvbdcJMijewY
+DncLKvbdNQXqWNfs
+DncLKvbdkNBlZeGo
+DoCjjvbdHffzZYXg
+DoDKjvbdjhHMGGOL
+DnbkKvbdiCObdvpq
+DoDLKvbdYlRctNkm
+EObkKvbdiUzEwRuC
+DncLKvbdMfbomPuL
+EPCkKvbdlZSrSyGt
+DncLKvbdvAcxroFI
+DoCjjvbdNGcQNQUk
+DncKjvbdWSNxBeLc
+EPCkKvbdqvokcIyR
+DncLKvbddZyQXxqC
+DoCkKvbdvPTzqLPU
+DncLKvbdZxcjNblS
+EPCjjvbdkMbLzFHP
+EPCkKvbdlYrqsYgU
+DnbjjvbdWSOXbFMD
+DnbkKvbdWeyZtAPT
+EPCkKvbdEKHivYKA
+DoCkKvbdkNBkyeGo
+DoDLKvbdiBoDEvqR
+DoDLKvbdRkYfVGjs
+EOcKjvbddneSkUTr
+EObjjvbdFejRnItR
+DncLKvbdLAjgMbXq
+DnbkKvbdUGznLwVe
+DoDKjvbdLqwNZtpz
+EPDKjvbdUxhTyjnn
+EPDLKvbdkNBkyeHP
+DoCjjvbdgFkzNgHA
+EObjjvbdunszpjnt
+EPCkKvbdtAHQhABS
+DnbjjvbdbKkfOnDA
+DoCjjvbdVviYWEFH
+DoCjjvbdGZUuAdXb
+EObjjvbdhlFDmuCy
+DncLKvbdyfyMAMdw
+EObjjvbdFyUtaDxC
+DnbkKvbdeEoSCXDK
+EOcKjvbdbVCGwjtI
+EOcLKvbdTAEhgand
+EObkKvbdRpUHJecw
+DnbjjvbdZsiJZDrn
+DncLKvbdtSqrxyeD
+DoDKjvbdJSxaSmYM
+EPCkKvbdjuvnECYX
+DoDLKvbdrMyjYkgi
+DnbkKvbdjJegjNXr
+DoDLKvbduaDxsOdh
+DoDLKvbdmIcsptrB
+EObkKvbdFkFTDHmV
+DnbjjvbdYORAYVVt
+DncLKvbdddoRbWcK
+EPDLKvbdLrWmZuQz
+DoDLKvbdliETpuRa
+DoCjjvbdbrcKsdKB
+DoCkKvbdHkazmvpk
+EPCjjvbdUaBpsRRy
+EObkKvbdKfFhBaQu
+DoCkKvbdKQydnfNe
+EOcLKvbdDjIKVxKA
+DncKjvbdpeceUWBI
+DncLKvbdKaLHNBxR
+EPDLKvbdptTfrRkU
+EPDKjvbddndsLTtS
+EObjjvbdMpXpvOHT
+DnbkKvbdaMjaruNH
+DoCkKvbdpecdtVaI
+DncLKvbdRpTfjGEX
+EObkKvbdCSaCsevr
+DoCkKvbdnHEwmNgZ
+EObjjvbdfHjuqmqH
+DoDKjvbdKWVGDeGi
+DoDLKvbdWHxVxHYz
+DnbjjvbdXsLaMsnx
+EPDLKvbdDjHiuwjA
+DnbjjvbdaaWFGQQX
+DnbjjvbdsrrTZZdc
+DoCjjvbddneTKtUS
+DoDKjvbdcJMjLFvx
+DoDKjvbdaNKbTUlg
+DnbjjvbdkHflFfOL
+EObjjvbdJpzFOeme
+DoCjjvbdrounibuf
+DoCjjvbdHgHZxwxH
+EOcLKvbdSKxeuGkT
+EOcLKvbdzQoNJJwA
+EObjjvbdZnnJEdzK
+DoDLKvbdJuuFcdfi
+DncKjvbdIryBSmYM
+EObkKvbdyYJJaozL
+EObjjvbdFkEsDHmV
+DnbkKvbdfMfXHMjL
+DnbkKvbdLGGIBaRV
+EOcLKvbdRXNdDMHc
+DoDKjvbdegjvRnRH
+DnbkKvbdKeegaaQu
+DnbjjvbdkMakzEgP
+DoDKjvbdcTDKtEKB
+DncLKvbdhaoDEvqR
+DncLKvbdmgEwmNfy
+EPDKjvbdCIjbLIfK
+DncLKvbdJvUedEgJ
+DoCjjvbdFVxpPljF
+EOcLKvbdJYUCIMRQ
+EPDKjvbddwyssrFz
+DoDKjvbdiMEdOUcZ
+DoDKjvbdZQleIldq
+EPCkKvbdnQZyVkYb
+DoCjjvbdNGbpNPuL
+DoCkKvbdOStVgFVQ
+EOcKjvbdGBPQxizm
+DnbjjvbdOXoVzcnU
+DncKjvbdyqPNIiwA
+DoDLKvbdkIGlGGNk
+EPDKjvbdbiNKLFvx
+DoCkKvbdCTBCsfWr
+DoDKjvbdShyjRABM
+EPCjjvbdxwhjBozL
+DoCkKvbdqUUHSSLU
+DoDKjvbdbBVdfPow
+DoCkKvbdqYnggRDx
+DoCkKvbdtkwwAsaX
+EPDLKvbdZMSDsnMN
+EPDLKvbdZjTIQGbG
+EPCjjvbdzoPpdblY
+EPDKjvbdVviYWEFH
+DnbjjvbdUsltGLuj
+DoCkKvbdQdDAopcr
+EPDKjvbdZxcjNbkr
+EPCjjvbdZisHpGbG
+EPDKjvbdEuxpPmKF
+EOcKjvbdQwNccLgc
+EPCjjvbdEYYLstUM
+EObkKvbdZRNEhmEq
+DoDKjvbdaRfDIUGL
+DncKjvbduaDxsOeI
+EObkKvbdmaiwYPOV
+EOcKjvbdKDJbqJbx
+DoDKjvbdQvnEDLgc
+DnbkKvbdtlXvaTaX
+EPDKjvbdzQoNIiwA
+EOcLKvbdNeDsiIjd
+DnbkKvbdBdQAvJlf
+DoCkKvbdhzVGMROG
+EPDLKvbdUaCQsRRy
+EOcLKvbdZisHogCG
+DoCkKvbdlqxtzTDi
+DoCjjvbdRkZGUgKs
+EObkKvbdZnmhdeZj
+EOcLKvbdZjTHogBf
+DncLKvbdhytfLqNf
+EPCkKvbdnPyxvKxb
+DncLKvbdjcMKqHVH
+EPCkKvbduWNwjRTA
+DnbkKvbdwygfGXeS
+EObjjvbdTlWOaVoJ
+EPCjjvbdUtNUGLvK
+EObkKvbdKkAgvAKZ
+EObkKvbdaMkCTUmH
+EPDKjvbdOFDshhjd
+EPDLKvbdhzUfLpmf
+EPCkKvbdkySrTYgU
+EOcLKvbdFfKSNhsq
+DncKjvbdOAJTUKSA
+EPDLKvbdrDeJPmvB
+EPCkKvbdKRZdnfNe
+EPCjjvbdRDcAoqDr
+EOcKjvbdNHDQNPtk
+EOcLKvbdVTmTfMVj
+EOcKjvbdrXQMChyR
+DoCjjvbdZQmFJNEq
+EPCkKvbdWRmwadkc
+EObkKvbdSCDeLhyL
+DncKjvbdyNsHxTJD
+EPDKjvbdtSrTYydc
+DoDLKvbdiGjCxuiu
+DoCkKvbdrNZjZLgi
+EPDLKvbdJmADzGuB
+DncLKvbdtcCuWuno
+DnbjjvbdDxXktTtM
+EPCjjvbddZyPxZQb
+EPDLKvbdlqxtysDi
+DoDLKvbdbAueGPpX
+EObjjvbdVviXvDdg
+EPDKjvbdBdQAvKMf
+DnbkKvbdPxmAHSqj
+DoDLKvbdUsltFlWK
+DncKjvbdVhYWYHYz
+DoDKjvbddwzTtSFz
+DncLKvbdIGfzYwwg
+EPCjjvbdmJDsqUrB
+EPCkKvbdGQASwGey
+EOcLKvbdTlWOaVoJ
+DncLKvbdLFehCBRV
+DnbjjvbdTkvOaVoJ
+EPCkKvbdwXMAvBWV
+EObjjvbdpxnhGqDx
+EOcLKvbdsrqryZeD
+DoDLKvbduVnXjQsA
+DncLKvbdRotHKFdX
+EOcKjvbdnUtyjirG
+EOcKjvbdCJLCLJFj
+EOcLKvbdSCEFLiYk
+DoDLKvbdjcMLQgVH
+DoCkKvbdLBLGlaxR
+EObkKvbdZQldiNFR
+EOcLKvbduMXwAsaX
+DncKjvbdxrnIlrBg
+EObkKvbdehKvRnRH
+DoDLKvbdRosfiecw
+DoCkKvbdFjdrcINV
+EPCjjvbdkWWmdBxX
+DnbjjvbdFkFTDHlu
+DoCjjvbdTAEhgaoE
+DoDKjvbdANIZTWyx
+EObkKvbdJSyAsNYM
+EPDLKvbdqTtHRqkU
+EPDKjvbdbBVeFoow
+EPCkKvbdYSkaMsoY
+DncLKvbdDnbkKwDE
+DncKjvbdMSWlzUpz
+DncKjvbdauCHXjsh
+DoCjjvbdTvMQKUBR
+DoDLKvbdrRuLOLAm
+EOcKjvbdatbGxKtI
+DncLKvbdNGcQMotk
+EPDKjvbdiCObeWqR
+DoDKjvbduDDUwVno
+DncLKvbdYlRcsmkm
+DncKjvbdbAueFoow
+EObkKvbdYTMBNToY
+DncKjvbdvAdYsPEh
+EObjjvbdBdQBWKMf
+DnbkKvbduCbuWuno
+EOcLKvbdKWVGEFHJ
+EObkKvbdcyyQXxqC
+DnbkKvbdaMjasUmH
+EPCkKvbdmgEwlmfy
+DoDLKvbdrDdiQOVa
+DoDKjvbdUyIUZjnn
+DnbkKvbdnBjXYOnV
+EOcKjvbdRpTgJfDw
+DncKjvbdjcLjqGuH
+DnbkKvbdZjTIQHCG
+EOcKjvbduVnYKRTA
+DnbkKvbdGckWJbKK
+EObjjvbdZyEJnDMS
+DncKjvbdNsUWGduQ
+EObjjvbdKQzEoFme
+EOcKjvbdVUMtGLvK
+EPDKjvbdrJAKFMoF
+DoCkKvbdNrsvHFVQ
+DncLKvbdSKyGUfjs
+DoCkKvbdVvhxWEFH
+DncLKvbdFejRnIsq
+EObjjvbdVYhUZkOn
+DoCjjvbdxUmEpxkn
+DoDLKvbdBiLCKhej
+DoDKjvbdIjEAJofd
+EOcKjvbdwzHfFwdr
+DncKjvbdFjeTDHlu
+DnbjjvbdbiMjKewY
+DnbjjvbdaNLCTUlg
+EObjjvbdDwxMUUTl
+DoCkKvbdmttykKSG
+EPDKjvbdiUyeXSVC
+EPDLKvbdWIYVwfxz
+EPDLKvbdemFvgMik
+DoCkKvbdUyHszKoO
+EObkKvbdTXkMNzjx
+DoDKjvbdSQTgKFdX
+DnbjjvbdLiBkpxAS
+EPCkKvbdRosgKGEX
+DoCkKvbdmfdwmNgZ
+DncLKvbdiHJbyViu
+DncLKvbdxrnJMqbH
+EOcKjvbdhlFENtcZ
+DoCjjvbdbKkennDA
+DnbkKvbdGckWKBjK
+DnbjjvbdUyIUZkOn
+EPDKjvbdeEnrCXDK
+EOcKjvbdsBfMkgKy
+DncKjvbdxsNiNSBg
+EPDKjvbdkNCLzEgP
+EPDKjvbdSKyGVGjs
+DoDKjvbdrWolChyR
+DncLKvbdWSNwaeLc
+EOcKjvbdJYTbHkqQ
+DnbjjvbdZshiZDsO
+DoDKjvbdSKxfUfjs
+EPCkKvbdptTgRrKt
+EPCjjvbdREDApQdS
+DncLKvbdtvOXjRTA
+EPDKjvbdemGXGljL
+EObjjvbdBdQAvJmG
+EPDLKvbdhuZdwRuC
+DncLKvbdjvWnDaxX
+EPDLKvbdFVxopMie
+EPCkKvbdajkeoNcA
+EPCjjvbdSPsfifEX
+DnbkKvbdBsAcTfWr
+EPCjjvbdEOcLLWcE
+DoCjjvbdZLrDsmlN
+EPCkKvbdxnSgxTIc
+EObjjvbdGQATXGey
+EObkKvbdbsDLUEKB
+DoCjjvbdrSVKmjaN
+EPCkKvbddneTLUUS
+DoCkKvbdxmrgwsJD
+EPDKjvbdGYuVAdXb
+DncLKvbdauBfxLTh
+EPDLKvbdrMzKZLgi
+EObkKvbdUsltGLvK
+DnbjjvbdDxXlTstM
+EObkKvbdsBfNLgLZ
+DncKjvbdidjgUoAO
+EPDLKvbdJJdAKQHE
+EOcKjvbdbBWFFpQX
+EPCjjvbdSZihTDWA
+EPCkKvbdhgKCxuiu
+DncKjvbddneTLUTr
+DoDKjvbdczZPxZRC
+DnbjjvbdlYrrTYft
+DoDKjvbdWXJXvEEg
+EPDLKvbdbhmJkFvx
+EPCjjvbdDxYLtTsl
+EPDKjvbdqdFIonVa
+EObjjvbdCIjbLIej
+DnbjjvbdmbKXXnmu
+EPDKjvbdlZTSTYft
+EPDKjvbdwXMBVaWV
+DnbjjvbdSPtGjGEX
+DoDKjvbdrMzKYlHi
+EPCkKvbdiVZdwSVC
+DnbjjvbdptUHSSKt
+DncLKvbdcSbjscjB
+DoDKjvbdSPsfiecw
+EOcKjvbdegkVqnQg
+EObkKvbdjuvmcbXw
+DncKjvbdCJLCKhfK
+EObjjvbdVqnYBeMD
+DoCjjvbdKCjCqJcY
+DncLKvbdZRMdhmEq
+EOcKjvbdrRtkOKaN
+DoDLKvbdRpTfiedX
+DoCjjvbdRMwbZOUz
+DoCjjvbdrXQMDIxq
+EObjjvbdsrqsZZdc
+DnbjjvbdfjfzbfAE
+DoCkKvbdJSyBTMxM
+EPDKjvbdnCJvwoNu
+DoCjjvbdmbJvwoNu
+DnbkKvbdFWZQPljF
+DncLKvbdxnSgwriD
+DnbjjvbdVvhwucdg
+DoCjjvbdjgfkfFnL
+DncLKvbdzRPMiKXA
+EOcLKvbdqZPHgREY
+EPCkKvbdrylPsAgn
+EPCkKvbdVZITykPO
+DoCjjvbdhkeEOVDZ
+EOcKjvbdUVkpJtAq
+EOcKjvbddCTMrAUN
+EPDKjvbdZeXfzghb
+EPCjjvbdiMFDmuDZ
+EPCjjvbdJKEAJpHE
+EOcLKvbdajkeoODA
+DnbjjvbdZRNEhmFR
+EOcLKvbdNHCpNQVL
+EObjjvbdmRxtzSci
+DoCjjvbdzRPMhjXA
+DnbkKvbdnGdwmNfy
+EObkKvbdvAcxsOeI
+DoDLKvbdBsAcTevr
+DoCkKvbdozmdKxPA
+DnbkKvbdTlVoBVoJ
+EPCkKvbdqwQLcIxq
+DncLKvbdbiMjLGWx
+DoDLKvbdfHkWRnRH
+EOcKjvbdbVCGxKsh
+DoCjjvbdTqRPUthN
+DoCkKvbdbQGgELzd
+EOcLKvbdQZNAHSrK
+DoDLKvbdZyDjNbkr
+EPCjjvbdqiAJdmOe
+EObkKvbdKaLHNBxR
+DncKjvbdyXhjBozL
+EObjjvbdDjIKWYKA
+EOcKjvbdLFegaaQu
+EPDKjvbdZjTIPgCG
+EOcLKvbdfHjuqnQg
+DnbjjvbdlhcsqVRa
+DoCjjvbdMuSqkNAX
+DncLKvbdCIkBkIej
+DncKjvbdUaCQsQqy
+EObjjvbdRbDdkhyL
+EOcKjvbdpssfrRkU
+EOcKjvbdLGFhBaQu
+EPCkKvbdqqtjnLBN
+EOcLKvbdWRmwbEkc
+EObjjvbdpedFTuaI
+DoCkKvbdJJdAJofd
+DoDLKvbdwNWANEEm
+EPCkKvbdYgWdAOri
+DoDLKvbdvAcyTOeI
+DnbkKvbdbhmJjfWx
+EOcLKvbdypnliKXA
+EOcKjvbdZyEJnClS
+DoCjjvbdZoNhdeZj
+EPCkKvbdkDLkRGtg
+EObjjvbdNsUWGdtp
+DnbjjvbdZQldhmFR
+EOcKjvbdYpmEhldq
+EPCkKvbdZQmEiMeR
+DnbjjvbdhytfLpnG
+EObjjvbdmtuZkJrG
+EObjjvbdGLEsDINV
+EPCjjvbdVhXvYHYz
+DoDLKvbdKefICAqV
+DncKjvbdUtMsfLvK
+EOcLKvbduaEZTOeI
+EPDKjvbdddoSBwDK
+DoCkKvbdffLymgHA
+DnbkKvbdbAueGQQX
+DnbkKvbdbrcLTcia
+EPCjjvbdRbEElJYk
+DoCkKvbdGFirNiTq
+DoDKjvbdNdctIhkE
+EPDLKvbdQccAoqES
+DnbkKvbdFfKRnJUR
+DnbjjvbdFfJrNiUR
+EPDLKvbdCfkegAzc
+EPCjjvbdRXNccMHc
+DoCkKvbdZjShPgBf
+EOcKjvbdSLZGUfkT
+DoDLKvbdBcpAujMf
+EOcLKvbduWNwiqTA
+DoDLKvbdpyOgfqEY
+EOcKjvbdcScKtEJa
+EObjjvbdnCJwXoNu
+DnbkKvbdjFLGtoAO
+DoCjjvbdXrlBMsnx
+EPDKjvbdhgJcZWJu
+DoCjjvbdiBoDEvpq
+EPDKjvbdczYoxYqC
+DoDLKvbdjFLHVPAO
+DnbjjvbdbPgGdLzd
+DoDKjvbdWIYWYGxz
+DncKjvbdhytfLpnG
+EObjjvbdfHjuqnQg
+DnbjjvbdmgExMmgZ
+EOcLKvbdhgKDYuiu
+EPDKjvbdmJEURVRa
+DoDLKvbdJpyePGNe
+DoDLKvbdlhdUQuRa
+EObkKvbdmuUzLKSG
+DnbjjvbdxwhjBozL
+EPDLKvbdVZIUZjnn
+EPDLKvbdJpydnfOF
+EPCkKvbdqqtjmjaN
+EPCkKvbdZoOJFFZj
+DnbjjvbdmttzKjRf
+EPDLKvbduWOXjQsA
+EOcLKvbdwtleRYkn
+DoCjjvbdLYpjSzuG
+EObjjvbdIsYaSmYM
+DnbjjvbdyzeORhJI
+EOcLKvbdkWWnECXw
+EPDKjvbdVviYVcdg
+DoDKjvbdBcoaVjMf
+DoCkKvbdiMEcmuDZ
+EObjjvbdLKaHvAKZ
+DncLKvbdJTZArlwl
+EOcLKvbdhaoCeWpq
+DncLKvbdrWpLcJZR
+EObkKvbdHkaznWpk
+DnbjjvbdzjVPocrt
+EOcKjvbdyqPMhiwA
+DoCkKvbdpstHRqkU
+DnbkKvbdRkYfVHKs
+DoDLKvbdVgwvYGxz
+EOcKjvbdFfKSNiUR
+DnbkKvbdqquLOLBN
+DncKjvbdOAJTTjSA
+DoDKjvbddneSkUTr
+EObkKvbdlqyUysEJ
+DoDKjvbdbhmKKevx
+EOcLKvbdiCObdwQq
+EPCkKvbdFejSNiTq
+EObkKvbdwygfGYEr
+EPDLKvbdsQWPKDVf
+DncKjvbdjbkjpfuH
+EPDKjvbdRkZFuGjs
+EPDKjvbdwyhFfXdr
+DncKjvbdcIlikFvx
+DoCkKvbdiUydwSVC
+DncKjvbdiUzFXSVC
+EOcKjvbdjKFgimYS
+EPDKjvbdjvXODaww
+EPCkKvbdRbDdlJZL
+EObkKvbdrEEhpNvB
+EObjjvbdrpVoKDWG
+DoCjjvbdNxPVzcnU
+EPDKjvbdVgwvYHYz
+DnbjjvbdmuUyjirG
+EObjjvbdrSVLNkBN
+DncKjvbdUWLojUBR
+EOcLKvbdwygefXeS
+EObkKvbdhaoDEvqR
+EOcLKvbdGGKRmiUR
+EOcKjvbdeEnqawDK
+EPDLKvbdGGJqnItR
+DoDLKvbddeOrBvbj
+DnbkKvbdiVZeWquC
+DncLKvbdJcJcQjDY
+EPDLKvbdkDMLQgUg
+EObjjvbdemFvflik
+EObkKvbdwzHeewdr
+DoCjjvbdHDjuiajK
+DoCkKvbdrEEiPnVa
+EOcLKvbdypnmJKXA
+DoDLKvbdmgFXmOHZ
+EObkKvbdUsmUFkuj
+EPDLKvbdcScKtDjB
+EPCkKvbdUyITzLOn
+DncKjvbdZnnIddyj
+EPCkKvbdaaVeGPow
+DoCjjvbdSQTfifDw
+DoDKjvbdDoDKkXCd
+DncLKvbdhtzEwRuC
+EObkKvbdMpXqVnGs
+DoDKjvbdDncLLXCd
+DoCkKvbdtcDUwVoP
+DoDKjvbdtSqryZdc
+EPDKjvbdbBWFGPpX
+EPCjjvbdmRxtyrdJ
+DoDLKvbdGckVjCJj
+EObjjvbdzoPpeCkx
+DnbjjvbdKWVFceHJ
+EPCjjvbdSKyGVHLT
+DoDLKvbdelevgNKL
+DoCjjvbdTXjlNzkY
+DoDLKvbdpstHSSLU
+EPDKjvbdhgKCxuiu
+EObkKvbdZQleJMeR
+EPCjjvbdKVuGDdfi
+DncKjvbdUGzmkvvF
+DncKjvbdxrnJMqbH
+EPCjjvbdKVuGDdgJ
+EObjjvbdptTgRqjt
+EObjjvbdCDpAujMf
+EPDKjvbdczZQXyRC
+DncLKvbdqYngfpdY
+EOcLKvbdqBIeAXIE
+EPDLKvbdZLrETmlN
+EPDKjvbdNeEThhjd
+EOcLKvbdmbKWxOnV
+DoCkKvbdCDoaWKNG
+EOcLKvbdEOcKkWbd
+EPCkKvbdNQXpvOGs
+EPDLKvbdFyUtaDxC
+EPDKjvbdbLMGOnDA
+DoDLKvbdJcJcQjDY
+EPDLKvbdOTUWHFUp
+DoCjjvbdmgFXlnGy
+EOcLKvbdRDbaQRES
+DoDLKvbdcyxowxpb
+EPDLKvbdliEURVSB
+EOcKjvbdXnRAXuWU
+DoCkKvbdDnbjjwDE
+DoCkKvbdKVuGEEfi
+EObkKvbdyOTHxShc
+EPDKjvbdySnIlqbH
+DoDLKvbdHELWJbJj
+DnbjjvbdyOTHxShc
+DnbjjvbdczZQXxpb
+EPDLKvbdZLrDsmkm
+EPCjjvbdfNGWflik
+EPDKjvbdmbKWwnmu
+DncKjvbdrDdiPnWB
+EObjjvbdHDjvKCKK
+DnbkKvbdUVkojTaR
+EObjjvbdptTfrSKt
+EPDKjvbdFxttaEXb
+DoCkKvbdjvXNcbYX
+DoCkKvbdSLYfUgKs
+EOcKjvbdHakzEzAD
+DncLKvbdiCObdwQq
+EPDLKvbdZLqdUNlN
+DoDLKvbdhkeDnVCy
+EPCkKvbdemFvgNKL
+EObjjvbdliDtQuRa
+EObkKvbdwuMdpxkn
+EObkKvbdirzhrkJz
+EPCjjvbdJYTahLqQ
+DncLKvbdIHGyxwwg
+EPCjjvbdSQUHKGEX
+DoCjjvbdZshiYcsO
+EOcLKvbdPyNAHSrK
+EPCjjvbdbsCjscia
+EObjjvbdUWLojUBR
+DoDLKvbdKeehBaQu
+EObjjvbdjuwODaww
+DoDLKvbdtkxXAsaX
+DncLKvbddneSkTtS
+DnbjjvbdZtJIxcsO
+DnbjjvbdJTYaTNXl
+EPCjjvbdGKeTDHlu
+DoDLKvbdKQydoGNe
+DoDKjvbdVrOXaeLc
+EPCkKvbdzHYlAMeX
+DoDLKvbdBvzchdov
+EObkKvbdapGgELzd
+DoDKjvbdaMkBsUlg
+DnbjjvbdVUNTelWK
+EObjjvbdiHJcZWKV
+DncLKvbdZoNheEyj
+DncKjvbdDHMFgAzc
+DnbkKvbdFpATXGey
+EPDKjvbdMpXqWOHT
+EPCjjvbdmSZVZrdJ
+EPDKjvbdcIljKfXY
+DoCkKvbdjcLkRGuH
+DoDLKvbdGYuVBEXb
+EObkKvbdWXIxWDeH
+DncKjvbdQlxCZOUz
+DnbjjvbdYNqAXtut
+EPDLKvbdGdKvJbJj
+DoDLKvbdGLFSbglu
+EPCkKvbdRjxfVGkT
+DoCkKvbduCbuXWOo
+DoCjjvbduCbtvuno
+EObkKvbdjAQGaQGj
+DoDLKvbdqBJFAXHd
+EOcKjvbdkClKpgVH
+EOcLKvbdiMFDmtby
+EPDLKvbdjvXNcbXw
+EPCkKvbdxUmFRYkn
+DoDKjvbdHgGyyYXg
+DoCjjvbdRzJhScWA
+DnbkKvbdlZTRsYgU
+DnbkKvbdFVxpQNJe
+EPCkKvbdZyEJmcMS
+EObjjvbdZQldhmFR
+EObjjvbdYSlBMtPY
+DncLKvbdvBDxsOdh
+DoDLKvbdvAdYrndh
+DoCjjvbdZyEJmcLr
+DnbkKvbdKaLGmCXq
+DnbkKvbdZQmFImEq
+EOcKjvbdqvolDIxq
+DnbkKvbdVqnYBdkc
+DoCkKvbdnPyxvLZC
+EOcLKvbdmJEURUqa
+DoDLKvbdfHkVrNpg
+DoCjjvbdznopdblY
+DoCkKvbdjvWmdCXw
+EOcKjvbdunszpjnt
+EObkKvbdzoPqFDMY
+EObjjvbdDxXktTtM
+EObjjvbdBcoaVjMf
+DncKjvbdtcDVWuno
+EObjjvbdpyOggQdY
+DnbkKvbdwWkaWAuu
+EPCjjvbdajkeoODA
+EOcKjvbdKNAEZfta
+EOcKjvbdZisIQHCG
+DncLKvbdEXwksstM
+DoDKjvbdtbbuXVoP
+DncLKvbdDxYMTstM
+DoCkKvbdcyyPwxpb
+EPCkKvbdxmrgwsJD
+DoDKjvbdYSkaNUOx
+EOcLKvbdxwhjCPyk
+DncKjvbdUsmTekuj
+DnbkKvbdkVwOECXw
+EObkKvbdnBjXYOnV
+DncKjvbdcasNSATm
+EPDKjvbdTAFIhCOd
+DnbkKvbdkWWnECYX
+DnbkKvbdFjeSbgmV
+DoCjjvbdJzoewdAN
+DnbkKvbdZeXfzhIb
+DncKjvbdMJCLqYAS
+DoCkKvbdGLFTCglu
+DoDLKvbdMuSrLNAX
+EOcKjvbdqceIomvB
+DoDLKvbdegkVqnRH
+DoDKjvbdKfGICBQu
+EOcKjvbdEvYopNKF
+DnbjjvbdlrZVZsEJ
+DoDLKvbdqqtjmjaN
+DncLKvbdQmXaxmtz
+EPDKjvbdCDoaVjNG
+EPCkKvbdqquLNjaN
+DnbjjvbdKRZdoFnF
+DoCkKvbdkVwOECYX
+DncKjvbdGQATXGfZ
+DncLKvbdCDpAujMf
+EOcKjvbdDxXlUUTl
+EPCjjvbdYkrEUNlN
+DnbjjvbdZtJIyETO
+DoCjjvbdXsMAltPY
+EOcLKvbdxxIjCPzL
+DoDLKvbdSLZFuHLT
+DncKjvbdFVyQQMjF
+DoCjjvbdFaOpyJzm
+EPCjjvbdrJAJdmPF
+EOcLKvbdMuSqjmAX
+DncLKvbdEJgiuxKA
+EPDKjvbdBdQAuimG
+DnbjjvbdWXIxVdFH
+DnbkKvbdHDkVjBjK
+EPDKjvbdnHEwlmgZ
+EPCkKvbdBiKbKhfK
+EPDKjvbdhyuGLpnG
+DoCkKvbdZsiJZDsO
+DnbjjvbddBrlrAUN
+DoCkKvbdYqMeIldq
+DncLKvbdZLqdUNkm
+EOcLKvbdMuSrKmAX
+DoCkKvbdDxXksstM
+EOcKjvbdqdEiPmua
+DoCjjvbdOEdUJIjd
+DoCkKvbdEObkLWbd
+EObkKvbdfekynHHA
+EPCkKvbdrEFIpNvB
+DnbkKvbdnBjXXoOV
+EPCjjvbdmgEwmOGy
+DncKjvbdKCjDQjCx
+EPDKjvbdJqZdoGOF
+DncKjvbdUsmTfLuj
+DoDLKvbdjcMKpgUg
+EPDLKvbdSQUGjGDw
+DnbjjvbdRacdlJYk
+DncKjvbdYgXEAOsJ
+EPCjjvbdhficZWKV
+DoDKjvbdGAnpxizm
+EPCkKvbdRbDeLhyL
+DoDKjvbdiBncEwQq
+DoCkKvbdxZgfFxFS
+DoCjjvbdqvpMChyR
+EObjjvbdbUbGxKtI
+DoCkKvbdEObkKvcE
+DnbjjvbdKQzEnfNe
+DoCjjvbdRWnDblID
+DnbkKvbdkxrqsYgU
+DncLKvbdqwPlCiYq
+EPDKjvbdSZjHsDWA
+DncLKvbdEPCjjvbd
+EOcLKvbdpyPIGpcx
+DncLKvbdbVCGwkTh
+DnbkKvbdnPzZWKxb
+EObkKvbdGKeTDIMu
+EOcKjvbdiifIKNYS
+DncLKvbdnQZxvKxb
+EPDLKvbdGFjSNiUR
+DnbjjvbdRNXaxnUz
+EPCjjvbdOTTvGduQ
+EObkKvbdUtMselVj
+DoCjjvbdnUuZkKSG
+EPDKjvbdQmXaxnUz
+EPCkKvbdNeDtIhjd
+DncLKvbdNxOuzdOU
+DncKjvbdJJdAJpGd
+DoDKjvbdwuNEqYkn
+DncKjvbdZMSDtOLm
+DnbjjvbdNeDsiJLE
+EPCjjvbdJpzEoGOF
+EPCjjvbdkDLkRGtg
+DoCjjvbdUWLpJtAq
+EPDKjvbdfMfWfljL
+EPCkKvbdrMzJyMIJ
+DoCjjvbdJKEAJofd
+DnbjjvbdnBiwXoNu
+DoCjjvbdDihJvYKA
+DnbkKvbdSZigsDWA
+DoCjjvbdFejRmhsq
+DnbkKvbdaMkCTVNH
+EObkKvbdczZPxZRC
+EPDKjvbdVZIUZjnn
+DoDKjvbdkySrTZGt
+DoDLKvbdsPvPKDVf
+DoCkKvbdwWlBVaVu
+EPDKjvbdANIZSvyx
+EPCkKvbdnHFYNNgZ
+DnbkKvbdNdcsiIkE
+EPDLKvbdDoCkLWbd
+EPDKjvbdQccBPqDr
+EObkKvbdSPsfifEX
+EOcKjvbdelfXHNJk
+EObkKvbdFfKRmiUR
+EOcLKvbdKCibqKDY
+EPDLKvbdUWLpJsaR
+EPCkKvbdKfFhCBQu
+EOcKjvbdmuUzLJrG
+EOcLKvbdBdQBVjMf
+EOcKjvbdfpBzvcwh
+EOcKjvbdmRyUzSci
+EOcKjvbdFVxpPlie
+DnbjjvbdDwwlUUUM
+DncKjvbdUyHsyjoO
+DoCkKvbdUslselVj
+DncLKvbdmuUykJqf
+DncLKvbdLFfHbApu
+DncLKvbdhyuFlROG
+EPDKjvbdxnTIYTJD
+EPDKjvbdTulPjUAq
+DoCjjvbdCDoaWJlf
+DoCkKvbdbLMGOnDA
+EPDKjvbdOStVfdtp
+EPCkKvbdZRMeImFR
+DoDLKvbdiVZeXRuC
+EPDKjvbdRosfiedX
+DoCjjvbdnGeYMnGy
+DoCjjvbdiiehKNYS
+DncKjvbdbhmKKfXY
+EOcLKvbdnBjXXoNu
+EPDKjvbduLwwAtAw
+EOcLKvbdygYlAMeX
+DoCkKvbdNsTvHEtp
+EPCjjvbdsrrTYzFD
+EPCkKvbdBdQAuimG
+DncKjvbdmfeYMnHZ
+EOcKjvbdxZhFexEr
+DncLKvbdZshhyETO
+EObkKvbdOFEUJJLE
+DoDLKvbduDCtvuoP
+EOcKjvbdGZVVBEYC
+EObjjvbdZRMeJNEq
+DnbkKvbdkxsRsYft
+DnbkKvbdsBfNLfjy
+EOcLKvbdNPxQvOHT
+DnbjjvbdpstHRqkU
+EOcLKvbdZQleJNFR
+EPCjjvbdxVNEpxkn
+DoCkKvbdwtmEqZLn
+DoCkKvbdGAoQxizm
+DoDLKvbdVqmwaeLc
+DoDKjvbdKfGHaaQu
+DoCjjvbdcJNKLGWx
+EPDLKvbdrzMPsBHn
+DncKjvbdfoazwDxI
+EPDKjvbdZyEJnClS
+DnbjjvbdwMvANDeN
+EObjjvbdZshiZETO
+EPDKjvbdUslselVj
+DoDKjvbdwtmEpyLn
+DncLKvbdJTYaTMxM
+EPDKjvbdvBDxsOeI
+DoDKjvbdxrmhmSCH
+EPDLKvbdjJegjNYS
+EOcKjvbdJvUedEgJ
+DnbkKvbdVZITyjoO
+DoDKjvbddePSCWbj
+DncKjvbdWIXvXgYz
+EPDKjvbdZQmFJMeR
+DnbjjvbdqdEiPnWB
+DoDLKvbdUVkojTaR
+DoDLKvbdFVxpPmJe
+EPCjjvbdxmsHwsIc
+EPDLKvbdiiehJlxS
+EPDLKvbdCTAbsewS
+EPCjjvbdzoPpdbkx
+DnbkKvbdijGHilxS
+EPDLKvbdOYOuzdNt
+EOcLKvbdTppoUuIN
+DnbkKvbdcScLUDia
+EOcLKvbdePFTLUTr
+EOcLKvbdhgKCxvKV
+EPCkKvbdrJAKFNOe
+EOcKjvbdVwJXucdg
+EPCkKvbdNddUJJKd
+DncLKvbdJYUCHlQp
+EObjjvbdkVvnDaxX
+EPCjjvbdNeDsiJLE
+EPDKjvbdyzeNqhJI
+EPCjjvbdmIdTqUrB
+EPDKjvbdZoOJFEyj
+DoDKjvbduaDxsOeI
+EPCkKvbdKjaIWAKZ
+DncLKvbdKaLHMbYR
+EOcKjvbdrafMlHKy
+EPCjjvbdhtzEvqtb
+EPCkKvbdddoSCXDK
+EOcKjvbdzjUpPdTU
+EPCjjvbdLZRJrzuG
+EOcKjvbdaMjaruMg
+DoCkKvbdyOSgwsJD
+EPCjjvbdKDKCqJcY
+EObkKvbdvAcxrneI
+EObjjvbdwuMeQxkn
+DncLKvbdmSZUysDi
+DnbkKvbdcIlijfWx
+DoDKjvbddndrjtTr
+EOcKjvbdwtmEqYlO
+EOcKjvbdYzcFqivZ
+DnbkKvbdCDpBWJmG
+EOcKjvbdaSGCgsfL
+EObjjvbdIwtBhLqQ
+DnbkKvbdyzdmrIIh
+EPDLKvbdWexzUAOs
+DncLKvbdRXNdCkgc
+EOcKjvbdkVwNdBww
+DncLKvbdIGfzYxYH
+DoCkKvbdbAvFGPow
+DoCkKvbdQlxBxnUz
+DncKjvbdqrUkOKaN
+EPDLKvbdZisIQGaf
+DoDKjvbdsQWPJbvG
+DncLKvbdjhHMFfNk
+EObkKvbdwNWAMdFN
+DoCkKvbdeKKRutzn
+EObkKvbdJpyeOfNe
+EOcKjvbdQmXayNtz
+DncKjvbdnHExNNgZ
+EPCjjvbdULuoBVni
+DoCjjvbdqquLNjaN
+EPDKjvbdyzdnSIJI
+DnbkKvbdQvnDcLgc
+DoCkKvbdtcDUvvOo
+DnbjjvbdnGeXmNfy
+DoDKjvbdxsNhmRbH
+DoDKjvbdtTSSyZeD
+DoDKjvbdRadFMJZL
+EOcKjvbdUaCQrpqy
+DoDLKvbdEJgivXjA
+EOcLKvbdGFjSOItR
+EPDLKvbdaSGDIUGL
+DnbjjvbdJYTagkqQ
+EOcLKvbdZLrDsmlN
+EOcLKvbdEJgiuwjA
+DoDKjvbdxUleRYlO
+DnbjjvbdQwODcLhD
+EObkKvbdOTUVgEtp
+EObkKvbdRMwaxnUz
+EObjjvbdrEFJPmua
+EOcLKvbdiUzEvquC
+DoDKjvbdMpYQumfs
+EPCkKvbdhancEvqR
+DncKjvbdkNCMZdfo
+DncLKvbdZHWdAOri
+EObjjvbdlrYuZrci
+EObjjvbdgLGzbfAE
+EObjjvbdcTCkUEJa
+EPDLKvbdVAbRTRRy
+DoCjjvbdYqNEiMeR
+DncKjvbdBvzchdpW
+DnbkKvbdtSqryZdc
+EPCjjvbdwygeeweS
+DoCkKvbdqlzJyLhJ
+EOcLKvbdtbbtvvOo
+DoDKjvbdrSVKnLAm
+DnbkKvbdfMevgNKL
+EObjjvbdRacdkhyL
+EPCkKvbdFpASvgGZ
+EPDLKvbdZoOJFEyj
+EPCjjvbdzjUpPcrt
+EOcKjvbdcbSlrATm
+EOcKjvbdqwPkbhxq
+DnbjjvbdHELVibKK
+EPDKjvbdZQldiMeR
+DnbjjvbdpstGqrKt
+DoDKjvbdGFjRmiUR
+EPCkKvbdssRsZZdc
+DnbkKvbdlqxuZsDi
+DncKjvbdEXwlUTtM
+DnbjjvbdyzdnRhIh
+EPCjjvbdkCkkRGtg
+EOcLKvbdLrWlytpz
+EPCkKvbdCEQAvKNG
+DncLKvbdVwIxWDeH
+EObkKvbduMYXBTaX
+DoCkKvbdRyihTDWA
+DnbjjvbdkaMoNALA
+DnbjjvbdaMjartlg
+DoCkKvbdNVTSKmAX
+DoDLKvbddwystRez
+EPCjjvbdcImJjevx
+DoCkKvbdeAUQlwjG
+DoDKjvbdZxcjNblS
+DncLKvbdkIGlFenL
+DoCjjvbdfHjurNqH
+DoCkKvbdiBoDFXRR
+EPDLKvbdvBDyTPFI
+DnbkKvbdUxhUZkPO
+EObjjvbdqZOhHQdY
+EOcKjvbdSCDeLiZL
+DncKjvbdozmckYPA
+DncKjvbdgGLymgHA
+DncKjvbdILaznWpk
+EPCjjvbdqUTgSSKt
+DoCkKvbdrovOjCuf
+EOcLKvbdKfGIBaQu
+EPDKjvbdCIjajiFj
+EPCkKvbdmoyxujyC
+EObkKvbdySnJMrCH
+EOcLKvbdHDjujBij
+EObjjvbdrMyiyMHi
+DoCkKvbdiifHimXr
+DnbkKvbdbsCkTcia
+DnbkKvbdMfbpNPtk
+EOcLKvbddoErkUTr
+DncLKvbdqZOhGqDx
+DnbjjvbdDncKkXCd
+DoCjjvbdSCEElIxk
+EPCkKvbdbUbHXjsh
+DnbkKvbdCTAcUGWr
+EPDLKvbdZtIiZESn
+DnbjjvbdrDeJPnVa
+DoCkKvbdZisIQHCG
+DncLKvbdgFkzOHHA
+EPCkKvbdmfdxMmfy
+DncLKvbdMIbMRYAS
+EOcKjvbdaogGckzd
+EOcLKvbdLAkHMawq
+DncLKvbdxwiJbQZk
+DncLKvbdauBgYLUI
+DnbkKvbdnQZxvKyC
+EOcKjvbdFkEsChNV
+DoDLKvbdpstGrRjt
+EPDLKvbdlYrrSxgU
+DnbjjvbdZQmFIldq
+DoCjjvbdbhmKLFvx
+EObkKvbdsBellGjy
+DncLKvbduCcUwWOo
+EObkKvbdJuuGEEfi
+DoCkKvbdIwtCHkqQ
+EPCkKvbdaMkBruMg
+DncLKvbdEARiMyvw
+EObjjvbdmgExNOGy
+DoCjjvbdpfDdsuaI
+EPDLKvbdEzspdlCi
+EPDKjvbdqdFJQNua
+DnbkKvbdnBjWxOnV
+EPDLKvbdZisHogBf
+EPCkKvbdjcMKpftg
+DnbkKvbdauCGwjsh
+DoDKjvbdlYrrTZHU
+EOcLKvbdzjVPpDrt
+DoCkKvbdQdDApQdS
+DoDKjvbdehLWRmpg
+EPDLKvbduoTzpkPU
+DoCkKvbdliDspuRa
+DoDKjvbdEXxLsssl
+EObjjvbdZsiJYcrn
+DoCkKvbdaaWFGPpX
+DoCkKvbdrafNMHLZ
+DoCjjvbdmgEwlnHZ
+EPCkKvbdFkEsCgmV
+DncKjvbdqmZjYlHi
+DoCkKvbdfILWSORH
+DoDLKvbdnCKXYOnV
+DnbkKvbdHgGyyYYH
+DoDLKvbdEKHjVxKA
+EPDKjvbdbAueGPow
+DnbkKvbdFyUuBDwb
+EPDKjvbduCcUvvOo
+EObkKvbdauBfxKsh
+EObjjvbdZjTIPgBf
+EObkKvbdNGbolpVL
+EOcKjvbdeFOqbWbj
+DoCjjvbdvwMAvBVu
+DnbkKvbdzRPMhjXA
+DncKjvbdFkErcIMu
+EPCjjvbdhlFEOUcZ
+DoCkKvbdJbjCpicY
+EPCkKvbdZGwEAOri
+DnbkKvbdNQYQunHT
+DoCkKvbdkIHMFfOL
+EObkKvbdHELVjBij
+DoDLKvbdZQldhleR
+DoDLKvbdVTmTelVj
+DnbjjvbdJTZArlwl
+DnbkKvbdCDpAvKMf
+DoCjjvbdDxYLtUTl
+DoDLKvbdwkWcgzyf
+EPDLKvbdLBKgNCYR
+DoDLKvbdZMSEUNkm
+EOcLKvbdxUmEpxkn
+EOcKjvbdGLFTDHlu
+EOcLKvbdyYJKCPyk
+DoCjjvbdDnbjjvcE
+DoDLKvbdatbHXjtI
+EObjjvbdbiMjLGWx
+EPDKjvbdTYKlNzjx
+EOcKjvbduDDUvvPP
+EObkKvbdliETpuSB
+DnbjjvbdrWolDIxq
+EObjjvbdqZOggQcx
+EOcLKvbdyXiKBoyk
+DnbjjvbdqmZiyMIJ
+EPCjjvbdULuoAuoJ
+DoDLKvbdYzcGRivZ
+DnbjjvbdtkwwBTaX
+DnbjjvbdJbicQicY
+DoCkKvbdTukojTaR
+EPCkKvbdHbLydzAD
+EObjjvbdVTltGLvK
+EPCjjvbdUsmUFkuj
+EPDLKvbdTqROuVIN
+DncLKvbdYkrETnLm
+DoCkKvbdeFPSBwDK
+DnbjjvbdNGcPmPtk
+DnbjjvbdWHwuxHYz
+DoDLKvbdNUsRjmAX
+EOcKjvbdZjTHpHBf
+DncKjvbdWXIwvDeH
+EOcLKvbdrJAKEloF
+DoCjjvbdFeirOJUR
+EOcKjvbdWWhwvEEg
+DncKjvbdKeehBaQu
+DnbjjvbdZLrDsmlN
+EOcLKvbdZnnIeFZj
+DoCkKvbdjKGHjMwr
+EObkKvbdmIctQtqa
+DoCjjvbdkClKpfuH
+DnbjjvbdcTDKscia
+DnbjjvbdADSYKZiQ
+EObkKvbdygZMANFX
+EPCjjvbdaMkCTUlg
+DoDKjvbdzjVPodTU
+EPCkKvbdIxTagkpp
+EPCjjvbdZjSgpHBf
+EOcLKvbdiCOcEvpq
+EOcLKvbdsQWOibvG
+DoDKjvbdEuxoomJe
+DoDKjvbdmuVZkKSG
+DoCjjvbdSZjITDWA
+DoCkKvbdCJLBkJGK
+EPCkKvbdliDsqVSB
+DoCjjvbduaDxrneI
+EOcLKvbdtvNxJpsA
+EOcKjvbdEuyPoljF
+DnbjjvbdwWlAuaWV
+DncLKvbduMXvaTaX
+EObjjvbddxZstSFz
+EPDLKvbdmttykKSG
+EPCjjvbdfIKvRnRH
+DoDLKvbdjgfkeemk
+DoCkKvbdHELVjBjK
+EObjjvbdaRecIUGL
+DnbkKvbdmSYuZrci
+DoDLKvbdKfGHaaQu
+EOcLKvbdIwsahLpp
+EOcLKvbdEuyPomKF
+DoCkKvbdsQWPJcVf
+DnbjjvbdbPgHDkzd
+DoDKjvbdZMSETnMN
+DoDKjvbdJSyBTMwl
+EPCkKvbdSCDeMIxk
+DoDLKvbdtkwwBTaX
+DoCjjvbdtbcVWuoP
+EPCjjvbdozmdKxPA
+DoCjjvbdtkwwBUBX
+DoDLKvbdQdDBPpcr
+DoCjjvbdJbjCpjDY
+EPCjjvbdCTBDTfWr
+EPDKjvbdYNqAYUut
+DoDKjvbdURRPVUgm
+EOcLKvbdNPwqVmfs
+DoDKjvbdsCGMkgLZ
+DoDLKvbdZtIiYcsO
+EObjjvbdhficZWJu
+EPCjjvbdTqRPUuIN
+EPCjjvbdyOShXsIc
+EOcLKvbdliETqVRa
+DncKjvbdYqMdhmEq
+DoCkKvbdKfGHbBQu
+DnbkKvbdqBIeAXIE
+EPDLKvbdQZNAHTRj
+EObkKvbdRosgJecw
+EPCjjvbdKQzEnfOF
+DoDKjvbdzRPMiKXA
+DnbkKvbdGcjvJbJj
+DoCjjvbdbAvEeoow
+DncKjvbdFVyQPmKF
+EPDLKvbdRzKIScWA
+EPCkKvbdKkAhWAJy
+EPCkKvbdJqZdnenF
+DoCkKvbdVUMtGMWK
+DncKjvbdBiLBjiGK
+DnbkKvbdjvWnDbYX
+DnbkKvbdwuNEqYkn
+DoDKjvbdegjurORH
+EObjjvbdpeceTvAh
+DoCkKvbdAMgySwZx
+EPCkKvbdlZSqsZGt
+EPDLKvbdbrbkTdKB
+EPDKjvbdhzUekpnG
+DncLKvbddeOqbWbj
+EPCjjvbdsPunibvG
+EOcLKvbdVwIxVdEg
+DoCjjvbdkIHLefNk
+DnbkKvbdxmrhXrhc
+EPCkKvbdziuPocrt
+EOcLKvbdNUsSLNAX
+DncKjvbdhkddNtcZ
+DoCjjvbdMpYRWNgT
+EObjjvbddZxoxYqC
+EOcLKvbdNVTRjmAX
+EPDKjvbdZjTIQHCG
+DnbkKvbdHEKvJbKK
+EOcKjvbdiGibxvJu
+DnbjjvbdsCGNMGjy
+DoCjjvbdBhkBjhfK
+EPCkKvbdSCDdkhyL
+DnbjjvbdNPwpvNfs
+EOcLKvbdJTZBTNYM
+DncKjvbdqGEFTvBI
+EObkKvbddneSjtTr
+DncLKvbdqdFJPmua
+EPDKjvbdrbFmMGkZ
+DoCjjvbdhXZAzzAJ
+EOcKjvbdkxsSSxgU
+EPDKjvbdrEEhonVa
+DnbkKvbdYzcGSKVy
+DoCjjvbdzROmJJwA
+EPDLKvbdOEdUJJKd
+EPCjjvbdqquKmkAm
+EOcLKvbdZyEKODLr
+DnbkKvbdIsZAsMxM
+DnbjjvbdZjTHofaf
+DoCjjvbdrSUkOLAm
+EPCjjvbdBsAbsewS
+EObkKvbdUsltGLuj
+EPCkKvbdANHyTWyx
+EObkKvbdsBemMGjy
+EObjjvbdMoxRVmfs
+EPCkKvbdNGbolouL
+EPDLKvbdjKGHimXr
+DncKjvbdUMWPAuni
+EOcLKvbdOEdUIhkE
+EPCkKvbdjKGHimXr
+EPCkKvbdhuZdwSVC
+DoCjjvbdCIkBjiFj
+EPCkKvbdxZhGFxFS
+EObjjvbdOFDtJJKd
+DoCkKvbdfNGWgNKL
+EPDLKvbdcarmSATm
+DoDKjvbdkNCMZeHP
+DoDLKvbdkMakyeGo
+DnbjjvbdiHJcYvKV
+DnbjjvbdWWhxVcdg
+EPDKjvbdVUNTelVj
+DoDKjvbdZGvdAPTJ
+DoCjjvbdDncLLXCd
+EPDKjvbduDCuWuno
+DoCkKvbdPyNAHTSK
+DncKjvbdqwPlDIyR
+EOcKjvbdYzbfSJvZ
+DnbkKvbdRotGifDw
+DoDLKvbdRDcBQRDr
+DoDKjvbdEARiNZvw
+DncKjvbdJSxaTNYM
+EPDKjvbdVwJXvDeH
+EOcKjvbdQwOECkhD
+DoCjjvbdEPCkLWbd
+EPDKjvbdVBBpsRSZ
+EOcKjvbdddoSBwCj
+EOcKjvbdFkFScINV
+EObjjvbdpstGrSLU
+EPDLKvbdhaoDFXRR
+EPDKjvbdKfGICApu
+EObkKvbdBsAcTevr
+EObkKvbdhkeDmtby
+DoCkKvbdqYngfpdY
+EOcKjvbdsPvPKCvG
+DoDLKvbduVmwiqTA
+EOcKjvbdidkGtoAO
+EPCkKvbdyzeORgiI
+DoCkKvbdmJDsqUqa
+DncLKvbdiGibyVjV
+DncKjvbdhtzEwSVC
+EOcLKvbdZRMdiNFR
+EOcKjvbdrafMkgKy
+DoDKjvbdZGwEAOsJ
+EOcLKvbdjmCMZeHP
+DncLKvbdjKFgimYS
+EPCjjvbddZxpYZRC
+DncKjvbdjmBkzEgP
+EObkKvbdkIHLeemk
+EPDKjvbdjAQGaQGj
+DncLKvbdSPtHJfDw
+DoCkKvbdGKdsChNV
+EPCjjvbdrouoJbuf
+EPDKjvbdlhcsqUqa
+DoCjjvbdwXMBWAvV
+DnbkKvbdhkdcmtby
+EOcLKvbdFkEsDHmV
+EOcLKvbdCIkBjhej
+DoCkKvbdiLeDnVDZ
+DoDLKvbdDxXlTssl
+DnbjjvbdNrtVfduQ
+EPCkKvbdHDkWJajK
+EPCjjvbdTulQKUBR
+DoDKjvbdJYUBhLpp
+DncKjvbdiCOcFXRR
+DoCkKvbdxsNiMrBg
+EObkKvbdQlxByNtz
+EPCjjvbdBhkBjiFj
+EPCjjvbdNeDsiIjd
+DncLKvbdBsAcTfXS
+DncLKvbdDwwlUTsl
+EOcKjvbdUQqPVUgm
+DncKjvbdmttzKirG
+EPCjjvbdKWUfEFHJ
+EPCjjvbdGKdrcINV
+EPDLKvbdkxrrTYgU
+DoCkKvbdQdCaQQcr
+DnbkKvbdvAdYroFI
+EObkKvbdFxttaDwb
+DnbkKvbdQdDBPqES
+DncKjvbdkVwODbXw
+DoCkKvbdrounicVf
+EPCjjvbdBcoaVjMf
+DncKjvbdcImKKevx
+DoCjjvbdxLWdHzyf
+EOcLKvbdcbTNSATm
+EPDKjvbdRacdlJZL
+EPDLKvbdZQleIleR
+EPCkKvbdTfznLwWF
+EObkKvbdsCFmLgKy
+DoDKjvbdyqOlhiwA
+EOcKjvbdtcCtwVoP
+DnbjjvbdRWmdCkgc
+EOcKjvbdqUTfqrKt
+DnbkKvbdRyjHsDWA
+DoDLKvbdYqMdiNEq
+EOcKjvbdhbPCeXRR
+EOcKjvbdVrNwbFLc
+EObkKvbdZLqcsmkm
+DoDKjvbdRWmdDMID
+EPCjjvbdkWXNcbYX
+DncLKvbdZyDinClS
+EOcLKvbdqUTfqqjt
+DncLKvbdUtNTelWK
+EPDKjvbdkWWmdCXw
+DoDKjvbdezuxdhtX
+DoCkKvbdaSGCgtGL
+EPDKjvbdVwJYWDdg
+DoDLKvbdWSOYCFMD
+EObkKvbdxwiJaozL
+DoCjjvbdTpqOuVIN
+DoCkKvbdrzLpSaHn
+DnbkKvbdJutecdfi
+DnbkKvbdhgKDZVjV
+DncKjvbdCJKajiGK
+EPCkKvbdbrcLTcia
+DncKjvbdxxIibPzL
+DoDLKvbdNUsRkNAX
+DoCkKvbdZRMeJMdq
+DnbjjvbdxsOJMqbH
+DncKjvbdqAheAWhE
+DoCkKvbdZnnIddyj
+DoCjjvbdrpWOibuf
+DoCjjvbdDxXlUUTl
+EPDKjvbdZirgofbG
+DnbjjvbdDnbkKvbd
+EOcLKvbdoznDkXoA
+DnbjjvbdozmdKxPA
+DnbkKvbdfHkVqmqH
+DoDLKvbdkDMLRGtg
+EPDKjvbdDxXlUTtM
+DoDLKvbdZLrETmkm
+DoCjjvbdLAkGlbYR
+DncLKvbddndsLUUS
+DoCjjvbdaRfDIUFk
+DnbjjvbdjJfHjNXr
+DncLKvbdeFPRbXDK
+DoCkKvbdJYTbIMRQ
+DnbkKvbdptUGrRjt
+EOcKjvbdkMbLzEfo
+DoCjjvbdezuxeJUX
+DoCjjvbdZMRctOLm
+DoDLKvbdWWiXudEg
+DnbkKvbdiiehKNXr
+DoCkKvbdXrkaNUOx
+EPDLKvbdZjTIQGbG
+EObjjvbdeOeTLTtS
+EPDKjvbdBraCsewS
+EPDLKvbdLBKflaxR
+DncKjvbdRzJhScWA
+EPDLKvbdGKdrbhMu
+DoDKjvbdFeiqmiUR
+DnbjjvbdFWYooljF
+DnbkKvbdUWLoisaR
+EPDKjvbdfRaWzkbo
+EPDLKvbdKQzEnfNe
+DoDLKvbdnUtyjiqf
+DnbjjvbdyNrgxSiD
+EOcKjvbdjlakzFHP
+DoCkKvbdjvXODaxX
+DnbkKvbdLFfHaaRV
+EPCkKvbdwuMeRYlO
+EPDLKvbdtSqrxzEc
+DncKjvbddwytTqez
+EOcKjvbdZLqcsnMN
+DoCjjvbdkxsSTZHU
+EPDKjvbdiZtekqNf
+EObkKvbdnCKWwnmu
+EObjjvbdauBgYKsh
+EPDKjvbdrSVKmkBN
+EObkKvbdxrnImSBg
+DncKjvbdZnnJEeZj
+DoDKjvbdZjTIQHBf
+DncLKvbdmIctRVRa
+DoCjjvbdziuQQDsU
+EPDKjvbdZRNFJNEq
+EOcKjvbdTqRPUthN
+EPCkKvbdePFSjssr
+EPDLKvbdfIKuqmqH
+DoDKjvbddZyQYYpb
+DoDLKvbdWRmwaeMD
+DoDLKvbdOYOuzcmt
+DoDLKvbdxsNiNRbH
+EPCkKvbdNeEThiLE
+EPCkKvbdNPxQunHT
+EPCjjvbduCbtvuoP
+EOcLKvbdjgfkeemk
+EObjjvbdjlbLydfo
+DoDLKvbdxmsIXrhc
+DoCkKvbdlrZVZsDi
+DoDKjvbdEztRElCi
+EObjjvbdBsAbsfWr
+DoDLKvbdZHWdAOsJ
+DnbjjvbdSCDdkhxk
+EObjjvbdeFOqbWcK
+EPDLKvbdZtJJZESn
+EPCkKvbdKfFhBaQu
+DoCkKvbdMpYQvNfs
+EObjjvbdrpWOjCvG
+EPDLKvbdJSxaTMxM
+EPCjjvbdOSsvGduQ
+DoDLKvbdtumxKRTA
+EPDKjvbdBcpBWKMf
+DnbkKvbdtbbuWvPP
+DoDLKvbdKWUfDdfi
+EPDKjvbdOStVgFVQ
+EObkKvbdZnmheFZj
+DoDLKvbdQwODcMID
+DoDKjvbdVrNxBeMD
+DoCkKvbdaSFbgsek
+DoCjjvbdTvMQKTaR
+DoCkKvbdZsiIxdSn
+EObkKvbdakMFnnDA
+DoDLKvbdJutedFHJ
+EOcLKvbdhzVFlQnG
+EObjjvbdzjUpQDsU
+EPCkKvbdzoQQeCkx
+DncKjvbdZjShPgCG
+DnbjjvbdMgCpMpVL
+DnbkKvbdNGbpNPuL
+EObkKvbdKfFhBaRV
+DnbjjvbdKQzFPFnF
+EPDKjvbdCIkBkJGK
+EObkKvbdmajXXnnV
+DoCkKvbdNwnuzcnU
+EObjjvbdauCGwkTh
+DnbkKvbdbiNKKfXY
+DnbjjvbdQmYCYnUz
+DoDKjvbdiLddNtcZ
+EOcKjvbdeEoSBwDK
+DoDKjvbdcTCkUDia
+DnbkKvbdZRNEhmEq
+EPCkKvbdHfgZxxXg
+EObjjvbdbsDLUDjB
+EPDKjvbdhbPDFWqR
+DncLKvbdKNADyfuB
+EObkKvbdEztREkcJ
+DncLKvbdbLMFnnDA
+EObkKvbdZjShPgBf
+DncLKvbdbVCHXkTh
+DnbkKvbdqTtHSRkU
+EObkKvbdfSBWzlDP
+DnbkKvbdGKeTDIMu
+EOcLKvbdGcjvJbJj
+EPCkKvbdMowqWOHT
+DncKjvbdYpmFIleR
+EPDKjvbdZxcjNblS
+DncLKvbdNrtVgEuQ
+EOcKjvbdqrVKnLBN
+DnbkKvbdatbHXkUI
+DoCkKvbdEPDKkWbd
+EPDLKvbdmIdURVRa
+DoCkKvbdMoxRWNgT
+EObjjvbdLBKflbXq
+DoCkKvbdSwjkmzkY
+DoDKjvbdJbicQicY
+EObkKvbdNQYQumgT
+DoDKjvbdxxJKCPzL
+DncLKvbdnGdxNNgZ
+DoCkKvbddijSVtzn
+EPDKjvbdrJAJdmOe
+DnbjjvbdzoQQeDLx
+DoCjjvbdZRMeIldq
+DnbjjvbdkHgMGGOL
+DoCjjvbdaSGChTfL
+EOcLKvbdCJLCKiFj
+DoCkKvbdVhXvYHYz
+EPCjjvbdcSbjscia
+EOcKjvbdxZgeewdr
+EPDLKvbdYkqdUNlN
+DnbkKvbdREDApQdS
+DnbjjvbdmozZVkYb
+EPDKjvbdaRecITfL
+DncLKvbdZyEJmbkr
+EOcKjvbdZnnIdeZj
+DncLKvbdeXzTsrFz
+DoCjjvbdZRMdhmEq
+EOcLKvbdGGJqmhtR
+EPDKjvbdIidAJpHE
+DncKjvbdMRwNZtpz
+DncLKvbdnBiwXoOV
+DoDLKvbdqYnhGqEY
+EOcKjvbdWexytAOs
+EOcKjvbdiZuFlQnG
+EObkKvbdVAaqTRRy
+EPCkKvbdTAEhgaoE
+DoDKjvbdMoxQvNfs
+EPDKjvbddjJqvUzn
+EObkKvbdBiKajhfK
+EPDLKvbdZLqcsmlN
+DoCjjvbdgPazwDwh
+EPCkKvbdwkWcgzzG
+EPDKjvbdlYsSSyGt
+EObjjvbdZLrDsmkm
+DncLKvbdbsCkUDia
+EObkKvbdkxrrSyGt
+DnbkKvbdnBivxOnV
+DoDLKvbdZirhPgCG
+EObjjvbdfMevfmKL
+EPDKjvbdSQTgJecw
+DoDLKvbdUWMPitAq
+DoDKjvbdwtleRZMO
+EObjjvbdKRZdoGNe
+DoCjjvbdauBgYKsh
+DoDKjvbdXrlAlsnx
+DncKjvbdUMVnaVni
+DncKjvbdiHKDYvKV
+DnbkKvbdySnJNSCH
+EPCjjvbdfNGWgNKL
+EOcLKvbdnQZxujxb
+EObjjvbdVgwvXgYz
+EOcLKvbdjKGHimYS
+DnbkKvbdhanbeXQq
+DncLKvbdhzUfLpmf
+DoDLKvbdczZPxZRC
+EPDKjvbdRNYBxnUz
+EOcLKvbdlrZVZrdJ
+DncKjvbdtcDUwWOo
+EPCkKvbdQvmdDLhD
+EPCjjvbdfMfWfljL
+DoCjjvbdZyEKNbkr
+EOcKjvbdgPazvcxI
+DncKjvbdfNGXHMjL
+DncLKvbdEKHjWXjA
+EObkKvbdZjSgogCG
+EPCjjvbdxnSgxShc
+EPCjjvbdqrVKmkBN
+EPCjjvbdbBVdepQX
+DoCkKvbdrXQLbhxq
+DoCjjvbdbVBfxLTh
+EPCkKvbdHlBznWqL
+EPDKjvbdTAEhgaoE
+DnbjjvbdCfkfHAzc
+DnbkKvbdptTfqqjt
+EPDLKvbdWIXuwgYz
+EObjjvbdrJAJeNPF
+DncLKvbdKDKDRJcY
+DnbkKvbdrDeIpNvB
+DncLKvbdVwIwudFH
+DncKjvbdICMZdzAD
+EPCkKvbdsQVnjDVf
+EPDKjvbdiZuGMRNf
+DoDLKvbdIGfyyXwg
+EPDLKvbdYORAXtut
+DoCjjvbdhzVGMQnG
+EPDLKvbdQwNcbkgc
+EObjjvbdsBemLgLZ
+DoDLKvbdZtIiYdSn
+DoCjjvbdelevfljL
+DoCkKvbdcyxowxqC
+EPDLKvbdZMRdUNlN
+EOcLKvbddZyPwyRC
+EPCjjvbdZLrDsnLm
+EPCkKvbdgPazwEYI
+DoDKjvbdqFdEsvBI
+EOcKjvbdVviXvDdg
+EPCjjvbdCWzdIdov
+DncKjvbdrSVKnLBN
+EObkKvbdiLddNtcZ
+EPDLKvbdrDdiPmvB
+EPDKjvbdKDKDRKCx
+DoDKjvbdtSqsZZeD
+DoDLKvbdwuNFRYlO
+DoCjjvbduLwvaTaX
+EObjjvbdtkxXBUBX
+EOcLKvbdSQTgJfEX
+EObjjvbddneTKtUS
+DoDLKvbdAMhYsXZx
+EOcLKvbdczZPwxqC
+EPDLKvbdjbkjqGtg
+EOcLKvbdFkEsChMu
+EObjjvbdbsCkUDia
+EObkKvbdEzsqElDJ
+EPDLKvbdGZUuBEYC
+DoCkKvbdzROmJJwA
+EPDKjvbduMXwAsaX
+EPCjjvbdqwQMDJZR
+DoDKjvbdqUUHSRkU
+DoCkKvbdwtleQxkn
+DnbkKvbdQvnEClHc
+EPDKjvbdjvXNcaww
+DoCjjvbdjggMFenL
+EPDLKvbdJYUBhLpp
+DnbkKvbdkNCLyeGo
+DoCjjvbdDoCkLWcE
+EOcKjvbdYqMeJNFR
+EPCjjvbdRDcApQdS
+EObjjvbdjblKpgVH
+EPDKjvbdqqtjnKaN
+DoDLKvbdwtmFRYlO
+DoCjjvbdnHEwmNgZ
+DncLKvbdaMjasVNH
+DncKjvbdnUtzLKSG
+DoDLKvbdkySrSyGt
+EPCjjvbdyNsIXriD
+DoCkKvbdRadFMIyL
+EOcKjvbdqvokbhxq
+EPCjjvbdYkrEUOLm
+EPDKjvbdrpWPKCvG
+DncKjvbdxUldpyLn
+EObjjvbdrbFmMHKy
+DoCjjvbdZHWdAPTJ
+DncKjvbdEPDLKwDE
+DnbjjvbdZHWdAPTJ
+DoDLKvbdNrsvHFUp
+DncLKvbdCTBDUFvr
+EPDLKvbduDDUvuno
+DoDLKvbddwystSFz
+DnbkKvbdmbJvwoNu
+EPCjjvbdcbTNSAUN
+DnbjjvbdnVUzKjRf
+EOcLKvbdYlRdUOMN
+DoCjjvbdTAFIgand
+DnbkKvbdpeceUVaI
+DoDLKvbdlZSrTYft
+EPCjjvbddePRbXDK
+EOcLKvbdJqZdnfNe
+EPCkKvbdRaceLhyL
+EPDKjvbdLAkGlaxR
+EPCjjvbdqGDdsvAh
+DnbjjvbdxZgefYEr
+EObkKvbdKWVGEFGi
+EPCjjvbdSQUHKFdX
+EPDKjvbdDxYLsssl
+EPCjjvbdfHjvSNqH
+EPCkKvbdQwODbkhD
+EOcKjvbdZnmiFEyj
+EPCkKvbdqwQMChyR
+EOcLKvbdZyDimcLr
+EObjjvbdjAQGaQGj
+EPCkKvbdZtJJYdTO
+EObjjvbdjFKgUoAO
+DnbkKvbdcScLUEKB
+EPDKjvbdjcMLRGuH
+EObjjvbdqlzKZLgi
+EOcKjvbdFfJrNiUR
+EObkKvbdKaKgNBxR
+EOcKjvbdHDjujBij
+EObkKvbdFejSOJUR
+DncLKvbdMIalRYAS
+EOcKjvbdVTlsekvK
+DoCjjvbdUQqOtthN
+DnbjjvbdVYgtZkOn
+DnbkKvbdrovOicVf
+DncKjvbdKfGIBaQu
+DnbjjvbdjuvnDaxX
+EPDLKvbdHakzEzAD
+EPDLKvbdyzdnRhIh
+DoCjjvbdZGvdAPTJ
+DoDLKvbdqvolChyR
+DncLKvbdjlbLyeHP
+EPCkKvbdmIdTptrB
+EPCkKvbdQcbaPqES
+DoDLKvbdddoSBwCj
+DnbjjvbdjvWnECXw
+DnbjjvbdZisHofbG
+EOcKjvbdZQldhldq
+DnbkKvbdfekymfgA
+DnbjjvbdLBKgMbYR
+EPCjjvbdEARiMzWw
+EObjjvbdtSrTYzEc
+EPDKjvbdZoOIddyj
+DnbkKvbdcSbjtEKB
+EObjjvbddndsKssr
+DoCjjvbdxnSgxShc
+EPCjjvbdOTUVfdtp
+DoCkKvbdUtMselWK
+DnbjjvbdJpydoGNe
+DoCkKvbdGQASwGey
+DnbjjvbdnGdxMnGy
+EPDKjvbdHDkVibKK
+DoCjjvbdtbbuXWOo
+EPDKjvbdKWVGEEgJ
+EObkKvbdGLEsCgmV
+DoCkKvbdbrbjtEKB
+EPDLKvbdRzJgrcWA
+EPCkKvbdaRecITfL
+EObjjvbdrbGMlHKy
+DnbkKvbdZdwfzgiC
+EPDKjvbdVwJXudFH
+DoCjjvbdiZtekqOG
+EObkKvbdqrUkOKaN
+EObkKvbdySnImRbH
+EObjjvbddoFTKstS
+EOcKjvbdyOTHxTJD
+DncKjvbdFVxoolie
+DoCkKvbdFejRnIsq
+EPDLKvbdptUGrRkU
+EOcKjvbdajlGOnDA
+EPDKjvbdrRtkOKaN
+EOcKjvbdzoQQeDLx
+EPCjjvbdrafMlGkZ
+EPCjjvbdmpZyWKyC
+DoCkKvbddBrlrAUN
+DnbkKvbdMgDPlpVL
+DnbjjvbdUxhTzKoO
+DoCkKvbdSCDdlIyL
+EPDKjvbdmbJvxPOV
+EPCkKvbdNGcQMpUk
+EPCjjvbdVqmxCFLc
+DoDKjvbdrDdhonWB
+EOcLKvbdYTLaNToY
+DoCkKvbdkIGlFemk
+EPDKjvbdNrsvHFVQ
+EPDLKvbdrzLoraHn
+EObkKvbdraelkgLZ
+DoDLKvbdBdQAujMf
+DncKjvbdwzIGGYFS
+EOcKjvbdZeXfzhIb
+DoDKjvbdbAueGPpX
+DoCjjvbdZtJJYcrn
+DoDKjvbdyqPNJKXA
+DoCkKvbdTAFIhCPE
+DoDLKvbdjblLQgVH
+DoCjjvbdZtJJZDsO
+EOcLKvbdrNZixkhJ
+DoCjjvbdzoPpdblY
+DnbkKvbdqcdhpNvB
+DncKjvbdYpldhleR
+DoCjjvbdmRyUysEJ
+DoCjjvbdJXtBgkqQ
+EOcKjvbdVwJYWDeH
+DoDLKvbdZLqdUOLm
+EPDKjvbdEXwlUUTl
+EObkKvbdoznDkYPA
+EPCkKvbdEASJNZvw
+EPCjjvbdFjdsCglu
+DoCkKvbdTlWPBWOi
+DnbjjvbdcTCjsdKB
+EObkKvbdkySrTYft
+EPCkKvbdLrXMytpz
+DncKjvbdZQmEhleR
+EOcLKvbdHkaznWpk
+DnbkKvbdHfgZyXxH
+EObkKvbdpecdtWAh
+DnbkKvbdRadElJYk
+EPCjjvbdTXkMNzjx
+DoCjjvbdmSYtzTEJ
+EPCkKvbdZsiJZDsO
+DncKjvbddoErkTtS
+DoCkKvbdZRMdiMeR
+EObkKvbdTfzmkvvF
+DncKjvbdpxnhHQcx
+EPDLKvbdaMjbStlg
+DoCjjvbdkHfkefOL
+DoCjjvbdqqtkOLAm
+DnbjjvbdyzeNqgiI
+EOcKjvbdiLeDnUby
+DncKjvbdyYIjCPyk
+EOcKjvbdpfEFUVaI
+EPCjjvbdZirgpHBf
+DnbkKvbdKWUecdgJ
+EOcLKvbdiHKCxvJu
+EPDKjvbdcTCkUEKB
+EOcLKvbdaMkBsVNH
+EPDLKvbdJutfEFGi
+EPCkKvbdFaOqZJzm
+EObjjvbdhaoCdvqR
+EPCkKvbddZxpXxqC
+DnbjjvbdZxcinDLr
+DoDLKvbdpssfqrKt
+DoCjjvbdqTsgRrLU
+EPDLKvbdEYXlUTtM
+EObjjvbduVmwjQsA
+EOcLKvbdNPxQunHT
+DnbjjvbdBhjajiGK
+DoCkKvbdUGznMXVe
+EPDKjvbdVwIwvEFH
+EObkKvbdRMwayNtz
+DoDLKvbdQZNAGrrK
+EObjjvbdKWUedFGi
+DoDLKvbdaNKartlg
+DncKjvbduWOXipsA
+EObjjvbduVmxKRTA
+DoDKjvbdygZMAMdw
+DoDLKvbdqTsfrRkU
+DoCjjvbdEvYpQMjF
+EObkKvbdNPxQunGs
+EObkKvbdsZlPsAgn
+DnbkKvbdZnnIddzK
+EPCkKvbdNQXqWOHT
+DnbkKvbdGLFSbhMu
+DoDKjvbdrzMPraIO
+DnbkKvbdZirgofaf
+EPDKjvbdijFhJlxS
+DncKjvbdWRmxBeLc
+DnbkKvbduDDUvuoP
+DoDKjvbdiZuGMQmf
+EObkKvbdelfXGljL
+EPDLKvbdfNFvfljL
+DncKjvbdGKdrcINV
+EObjjvbdFfJqnIsq
+EOcLKvbdILaznWqL
+DncLKvbdJutedFHJ
+EOcLKvbdIwtBhLpp
+EPDLKvbdsrrSyZdc
+EPDKjvbdczZQXxpb
+DncLKvbdDoCjjvcE
+EPCjjvbdpxoIHREY
+DoCkKvbdxxJJbPzL
+EPCkKvbdVZIUZkPO
+EPDLKvbdULuoBWPJ
+EPCkKvbdfMfWfmJk
+DnbjjvbdZtIiZETO
+DoCjjvbdiMEcnUby
+DoCkKvbdcyyPxZQb
+DoCkKvbdZirgofaf
+EObkKvbdozmdLYPA
+DoDKjvbdYkrEUNkm
+DoCkKvbdLqwMzVQz
+EObjjvbdLFfICBRV
+EObjjvbdjJehKNYS
+DoCjjvbdEJgiuwjA
+EPCkKvbdyqPNIiwA
+EPDKjvbdNdcsiIjd
+EPCjjvbdauBgXjsh
+DnbkKvbdyzeORgiI
+EPCkKvbdsCGNLgLZ
+EObkKvbdtbbtwVno
+EObjjvbdwuMdqZLn
+EObjjvbdSQTfiedX
+EPCjjvbdmttyjjSG
+DncLKvbdnHFYMnGy
+DncKjvbdxmsIXrhc
+EPDKjvbdQYmAGsRj
+EObjjvbdfoazvdYI
+DoDLKvbdhaoDEvpq
+EObjjvbdDihKVwjA
+DoCjjvbdZMSDtNlN
+DnbjjvbdhlFDnVDZ
+EPCjjvbdiCPCdwRR
+DncLKvbdULuoBVoJ
+DoDLKvbdyYJKBpZk
+DoDLKvbdRbDdlIyL
+EOcKjvbdYSlAlsoY
+DoCkKvbdySmhlqbH
+EOcKjvbduWNxKRTA
+DnbkKvbdFjeTDIMu
+DoDLKvbdzaAPGgCM
+EPCkKvbdBhkCLJGK
+DnbkKvbdYpmFJNFR
+EPCjjvbdQccBQQdS
+EOcKjvbdqGDdtVaI
+EOcLKvbdILazmvqL
+EPDLKvbdajkennDA
+DoDKjvbdxVMdqZLn
+EPDKjvbdNPxQunGs
+EObjjvbdhytfMROG
+EPDKjvbdEXxLtTtM
+EPDKjvbdZnnIdeZj
+DoDKjvbdGKeTChNV
+DncLKvbdjmCMZeGo
+DnbkKvbdQwNdClHc
+DncKjvbdXrlBMtOx
+DoCkKvbdzaAOgHBl
+DncLKvbdcIlijewY
+EObjjvbdrbFllHKy
+EOcKjvbdmbJwXnmu
+EObkKvbdssSSxydc
+DoDKjvbdSQTgKGEX
+DnbjjvbdUyHtZkPO
+EPCjjvbdFyUuAdYC
+DoCkKvbdqFcdsvBI
+EOcLKvbdqwQLbhyR
+DoCkKvbdbsCkUEKB
+EPCjjvbdIjEAKQHE
+DnbkKvbdaNKbTUmH
+EObkKvbdnCKWxPOV
+EOcLKvbdZxcinClS
+EObjjvbdhlFDnVDZ
+DncLKvbdpyPHfpdY
+EOcKjvbdTlVoAuoJ
+EOcKjvbdmbKXXoOV
+DoCkKvbdxsOImSBg
+DncKjvbdZHXEAPTJ
+DoDLKvbdDjIKVwjA
+DoDLKvbdnCJvwoNu
+EPCjjvbdZeYGzghb
+EPDKjvbdHffzYxXg
+EObjjvbdirzhrkJz
+DoCjjvbdZnnJFFZj
+EPDKjvbdeATqMwif
+DoDKjvbdbVCHXjsh
+DoCjjvbdGckVjCKK
+EOcLKvbdyYJJbPzL
+DoCjjvbdiCPDFWpq
+EOcLKvbdIwtCILqQ
+DoDLKvbdKQzFOfOF
+EOcKjvbdNPwqWNgT
+EObjjvbdZLqcsmkm
+EPDLKvbdnPyxvKxb
+DoDLKvbdKjaHvAKZ
+EObjjvbdjKFgjNYS
+DnbkKvbdLAkGmCXq
+DoDLKvbdeEoSBwCj
+DnbjjvbdHlBznXRL
+DnbjjvbdKfGHbBRV
+DnbkKvbdZQldiMdq
+EOcLKvbdnBivwnnV
+DncKjvbdsQVoKDWG
+EObkKvbdypnlhiwA
+EObkKvbdrykpTAgn
+DoCjjvbdaMkBsUmH
+EPDLKvbdRDcBPqES
+DoCjjvbdpxngfpdY
+EOcKjvbdEztRFLbi
+EOcLKvbdcbTNSAUN
+DoCkKvbdjcLjpfuH
+EPCkKvbdjSzhsKiz
+EPCkKvbdoAKztIDn
+EPCjjvbdMgDQNPuL
+DoDLKvbdKNAEZgVB
+EPCjjvbdZsiJZDsO
+EOcLKvbdkCkkQfuH
+DoCjjvbdnGeXmNfy
+DnbjjvbdrpVoJbuf
+DoCkKvbduCbuWuoP
+EObjjvbdSwkMNzkY
+DoCkKvbdrNZiyMHi
+DnbjjvbduDCtvuoP
+DoDLKvbdMuSqjmAX
+EObkKvbdsQVnicVf
+EPCjjvbdmfeYNNgZ
+DncLKvbdmIdURUqa
+EPCkKvbdGBPQyJzm
+EPCjjvbdZRNFImEq
+DncKjvbdNddUJJLE
+EObkKvbdaSFbgsek
+DncKjvbdDoCkKwDE
+DoCjjvbdtkxWaUBX
+DncLKvbdfNGXHMjL
+EPCkKvbdqTtHSSKt
+DnbkKvbdxmrhXsJD
+DnbjjvbdmttykKSG
+EObjjvbdqcdhomua
+DoCkKvbdVTlsfMVj
+DnbkKvbdRECaPpcr
+DnbkKvbdijFhKNYS
+EObkKvbdIwsbIMRQ
+EPDLKvbdJbibqJbx
+EPDKjvbdxxJKCPyk
+EOcKjvbdjuvnECYX
+DnbkKvbdKRZePFme
+DnbkKvbdMpYRVnGs
+EOcKjvbdfMevgNKL
+DoCkKvbdmfeXmOHZ
+DncLKvbdFpATXGey
+DoDKjvbdJXtCIMQp
+EObjjvbdZshiZDsO
+EPDLKvbdaRfDHsfL
+DncKjvbdMIakqYAS
+EObjjvbdSLZGUfjs
+DoDKjvbdBcoaWJmG
+DoDKjvbdEuxpPlie
+EObjjvbdJcJbqKCx
+DoCjjvbdxwhiapZk
+DnbkKvbdsBemLfkZ
+DoDLKvbdHgGyxwxH
+EOcKjvbdQdDApRDr
+EPDLKvbdKWUfDeHJ
+DnbjjvbdjvXODbYX
+DoDLKvbdHELWJbKK
+DncLKvbdgFkynHHA
+EPCkKvbdPxmAHSqj
+DoDLKvbdYkqdTnLm
+EPCkKvbdJYUCILpp
+EOcKjvbdxwhjBpZk
+DoCjjvbdiMFENtcZ
+DoCjjvbdnCJvwoOV
+DoDKjvbdSKxetgKs
+EOcKjvbdWRmxCFMD
+EOcLKvbdpedFTvBI
+EObkKvbdbAvEfPow
+EObkKvbdZnmiEeZj
+DnbkKvbdtTSSyZeD
+EPCkKvbdPxmAGsRj
+EPCkKvbdVTmUGLvK
+EObkKvbdJmADyfta
+EOcKjvbdwWlBVaWV
+DoDLKvbdjcMKqGtg
+EOcLKvbdGGJrNiTq
+DnbkKvbdgPazvdYI
+EPCkKvbdGLEsDHmV
+DnbjjvbdqceIomua
+DncLKvbdjbkjpgUg
+DoCjjvbdSxLLmzkY
+EPDLKvbdjKGHilxS
+EPDKjvbdmbJvwoNu
+EPDKjvbdjmBkyeHP
+EPDLKvbdzROliJwA
+DnbjjvbdUaBprprZ
+DoDKjvbdtbbtwWPP
+DnbjjvbdURQoVVHm
+DoCjjvbdjbkjqGuH
+DoCjjvbdRbEFLhyL
+DncKjvbdBcpAujMf
+DoCkKvbdPxmAGrqj
+EPDLKvbdZRMeImFR
+EOcLKvbdcScKscia
+EObjjvbdeXytTrFz
+EPCjjvbdKfGICBQu
+DncKjvbdijGIKMwr
+EObjjvbdZLqctOLm
+EObkKvbdSLZFuGjs
+DnbjjvbdZMRcsnMN
+EPCkKvbdWSOYBeMD
+EObjjvbdRacdlJYk
+DnbjjvbdFyVUaEXb
+EObjjvbdRbEFLiYk
+EObjjvbdZjTIQGaf
+EPCkKvbdNsTugEtp
+DoCkKvbdEASIlyvw
+DoCjjvbdsrrSxzFD
+DoDLKvbdQwOEDMID
+EPDKjvbdaaVeGQPw
+DoCjjvbdFejRnItR
+EObkKvbdRacdlIyL
+DnbjjvbdGGJqnIsq
+DoDLKvbdGYtuBDxC
+DncKjvbdbLMGPODA
+EObjjvbdqYoIGpcx
+DncKjvbdrykosAgn
+EPCjjvbdJbjDQjCx
+EObjjvbdkySqsYft
+EPDKjvbdxwhjBpZk
+DncKjvbdauBfwkTh
+EPCkKvbdtSrSxydc
+DoDKjvbdMRvmZuQz
+DncLKvbdnUtyjiqf
+DoDKjvbdSLYetgKs
+DoDLKvbdJbjCqJcY
+EPDLKvbdShyiqAAl
+EPDLKvbdSQUHJfDw
+EOcLKvbdijFhJmYS
+EPDLKvbdvwMBWAvV
+EObjjvbdeXytUSFz
+EObjjvbdWXJXuceH
+EPCkKvbdrDeIomvB
+DncKjvbdczZQXyRC
+DnbjjvbdQlxCZOUz
+EPCjjvbdQccApRDr
+DoCkKvbdqiAJdloF
+DoCjjvbdDwwktTtM
+EPCjjvbdRpUGjGEX
+DnbkKvbdWfYytAPT
+EPCjjvbdUMVoBVni
+EObkKvbdxnShYTIc
+EObjjvbdVAaqSprZ
+DncLKvbdKVtfDdgJ
+DoCjjvbdliEUQtqa
+DnbjjvbdiGjCyWKV
+DnbjjvbdqrVLOLBN
+EObkKvbdUaCRSqSZ
+EObkKvbdTkvPAuni
+DoCjjvbdIGgZyXwg
+DoDLKvbdssRsYzEc
+DnbjjvbdZLqdTmkm
+EPCjjvbdUtNTfLvK
+DncKjvbdfMewGmJk
+EOcLKvbdCTBDTfWr
+EPDKjvbdFpASwGey
+EPCjjvbdZLrETmkm
+EPDLKvbdyXhjCQZk
+DnbkKvbdeATqMxJf
+DoCjjvbdjJfHilwr
+EPDKjvbdzitopESt
+EPDKjvbdEuxopMjF
+DoCkKvbdvBEYroFI
+DnbkKvbdrNZiyMIJ
+EPCjjvbdxVMdpyMO
+DnbkKvbdQlxCZOUz
+DnbkKvbdqmZiyLhJ
+DncLKvbdXnRAXuWU
+EObkKvbdRadElJYk
+DncKjvbdLiBkqYAS
+DnbjjvbdmRyUysDi
+DoDKjvbdKCicQjDY
+EOcLKvbdRkZGVGjs
+DoDKjvbdtSrSyZdc
+EOcKjvbdRyjISbvA
+EPCjjvbdHffyyYYH
+EOcKjvbdaogHDkzd
+EPCjjvbdidkGuPAO
+EOcKjvbdCDpAujMf
+DoCkKvbduVnXjQsA
+DnbjjvbdTulQJtAq
+DncKjvbdqTsgRrLU
+DoCkKvbdzdynzdyp
+EObkKvbdemGXHNKL
+EOcKjvbdJXtCHlRQ
+EPDKjvbdegkWRnQg
+DoCjjvbdyXiKCPyk
+EPDLKvbdlZTRsZHU
+DoCjjvbdfNFvgNKL
+DnbjjvbdbVBgYLTh
+DncKjvbdcJMikFvx
+EPDLKvbdUMVnaVoJ
+DoCkKvbdgQBzvcxI
+DoCjjvbdZtIhxdSn
+EPCjjvbdRWnEDMID
+EObkKvbdjlakydfo
+DncLKvbdrpWOicVf
+EOcKjvbdhgKDYuiu
+DoDKjvbdmIdTqUqa
+EPCjjvbdwtleQxkn
+EObkKvbdcJNKKfWx
+DncLKvbdNsUWGdtp
+DoDKjvbdWSOXbEkc
+EPCkKvbdpyOhHREY
+DoDKjvbdkyTSTYft
+EPCjjvbdFjdrbgmV
+DncLKvbdrounjDWG
+DoDKjvbdVTmTfLvK
+EPDLKvbdSCDeLiYk
+DoCkKvbdrXPlDIxq
+DncLKvbdKVuGDeHJ
+DnbjjvbdrWokcIxq
+EObjjvbdKVuGEEfi
+EPDLKvbdrbGMlGjy
+EPDKjvbdlqxtzSci
+EOcLKvbdwygeeweS
+EObjjvbdjKGIKNYS
+EObkKvbdVrOXbElD
+DnbjjvbdrMzKZLgi
+EPCkKvbdMpXqWNfs
+EPDLKvbdrSUkOLAm
+EPDKjvbdZisIPfbG
+EPDLKvbdRDbaQRES
+DncKjvbdVTmUGLvK
+EOcKjvbdYzcGRjWZ
+EObjjvbdMuSrLNAX
+DncKjvbdjgflGFnL
+DncLKvbdWIXvXfxz
+DoDLKvbdNHComPtk
+EOcLKvbdSBceLhyL
+DoCkKvbdZRMeImFR
+EPDLKvbdiifIKMwr
+DoCkKvbdvBDxsOeI
+EPDLKvbdxmsHxShc
+EOcKjvbdcyyPxZRC
+DoCkKvbdsBfNMHKy
+DoDLKvbdaRebhTfL
+DncLKvbdypoNJKXA
+EObkKvbdzRPNJKXA
+DnbkKvbdTvLoitBR
+EOcKjvbdWHwuxGxz
+EObjjvbdZHWdAPTJ
+DnbjjvbdySnJMqag
+EPCkKvbdtTRsYzFD
+EPDLKvbdhytelQnG
+EPCkKvbdTppntuHm
+DnbjjvbdZeYGzhIb
+EPCjjvbdIwsaglQp
+DoCkKvbdpstGrRkU
+EObjjvbdCJLBjiFj
+EOcLKvbdePErjstS
+EPDKjvbdpxnhGqDx
+DnbjjvbdZyEKOClS
+DoCjjvbdpyOhHREY
+DncLKvbdNGcPmPuL
+DoDLKvbdQwNccLgc
+EPDKjvbdmbJvxPNu
+DnbkKvbdQwOEDMHc
+DoDKjvbdXrlAltOx
+EPCkKvbdGQASvgGZ
+EOcLKvbdmttykKSG
+EOcLKvbdGLFSbgmV
+DncLKvbduCbuWvOo
+EPDKjvbdSQTfiecw
+DoCkKvbdYkqctNkm
+DoDLKvbdlZSqsZHU
+DoDLKvbdqGEEtVaI
+EObjjvbdhytekpmf
+DoDKjvbdmuUzKiqf
+EObjjvbdrMyiyLhJ
+DoDLKvbdEARhlzWw
+EObjjvbdaRfCgsek
+EPDKjvbdaNKaruNH
+EOcLKvbdJqZeOenF
+DnbjjvbdTfzmlXVe
+DoCjjvbdzQoNIjXA
+EObkKvbdMpYQvNfs
+DncLKvbdVrOYCElD
+DoCjjvbdijGIJlwr
+DoDLKvbdrXQMDIyR
+EPDLKvbdEYYMUTtM
+DncKjvbdkHgMFenL
+DnbjjvbdqdFIpOWB
+EObkKvbdqFceTvAh
+EObjjvbdyOSgxSiD
+EOcKjvbdDnbkKvcE
+DoDLKvbdYqMeImFR
+EObkKvbdwtleRZMO
+EPCkKvbdrWolCiYq
+EObjjvbdrXPkcJYq
+DoCkKvbdtlXvaUBX
+EOcLKvbdeYZssrFz
+DoDLKvbdnGeYMnHZ
+EObkKvbdYTLaMtOx
+DoDLKvbdJcJcRKDY
+EPDKjvbdeKJrVtzn
+DoCkKvbdrSUkNjaN
+DncKjvbdeATqNXjG
+EObkKvbdqlzJyLhJ
+EObjjvbdDjIJvXjA
+EObjjvbdzGyMAMdw
+DoDLKvbdFfJrNiTq
+EOcLKvbdBhkCKiGK
+EObjjvbdpssgSRjt
+DncKjvbdKaLGlbXq
+EOcLKvbdlYrqrxgU
+EPCjjvbdVqmxBeLc
+EPDLKvbdZQmFJNFR
+DoCkKvbdkCkkQfuH
+DncKjvbdauCGwjsh
+DoCjjvbdEASIlywX
+DncKjvbdLAjgNBxR
+DncKjvbdCDpBVimG
+EOcLKvbdqlzJxkhJ
+EPDLKvbdtvNxKRTA
+DnbkKvbdGLFScINV
+DoCkKvbdQvmdCkhD
+EPDKjvbdFjdrbhNV
+EPCkKvbdZLrETnLm
+EPDLKvbdTvLoisaR
+EPDLKvbdsrrTZZdc
+EPCkKvbdZMRcsmlN
+DncLKvbdxnTHxTIc
+EOcKjvbdzROliJwA
+EOcKjvbdsQVnjDVf
+EObkKvbdqGDdsvBI
+DncKjvbdwtleQxkn
+EObjjvbdTqRPUuHm
+DnbjjvbdVwIwvEFH
+EPCjjvbdZshhxcsO
+DoCkKvbdKCibqJbx
+EOcKjvbdUVlQKTaR
+EObkKvbdVTmUFlWK
+EOcLKvbdmIctRVRa
+DoDKjvbdPIAYZAYa
+DoCkKvbdjvWnDbXw
+DnbjjvbdtvNwjRTA
+EObjjvbdNHComQUk
+EOcKjvbdySnImRbH
+DoCjjvbdDjIKVxKA
+DncLKvbdKefHbApu
+EObjjvbdehLWRmpg
+EOcLKvbdJTZAsMwl
+DoDKjvbdZirgpHCG
+EObkKvbdozmcjxPA
+EObkKvbdsZkosAgn
+EPCjjvbdSxKlNzjx
+DoCjjvbdfILVrNpg
+EPCjjvbdGGKRnJTq
+DnbjjvbdpssgSSLU
+DoDKjvbdrDdiPmvB
+EPCkKvbdZtJJYcsO
+DoDLKvbdNdctIhkE
+EPCjjvbdcImJkFvx
+EOcLKvbdGLErbhNV
+DoCkKvbdnQZxukYb
+EPCkKvbdWSNxBeLc
+EPCkKvbdsPvOjDWG
+EOcLKvbdeFOqavbj
+EPCjjvbdjAQHApHK
+EPDKjvbdwXMBVaVu
+DncLKvbdMowqWNfs
+DoCkKvbdRbEFMJYk
+DoCkKvbdrNZjZLhJ
+DoCjjvbduDCtwWPP
+EObjjvbdNeEUJIjd
+DnbkKvbdlYsRsYgU
+DoCjjvbdUxgsyjnn
+EObkKvbdbLMGPODA
+DoCkKvbddneTKtUS
+EOcKjvbdvvkaWAuu
+EPDKjvbdVUNUFkuj
+EObjjvbdKDKDQjCx
+EPDKjvbdnUuZjiqf
+DoCkKvbdsCFmMGkZ
+DncKjvbdrpVnjDWG
+DnbjjvbdiZtfMQmf
+DoCkKvbdwWkaVaVu
+DoCjjvbdSCDeLiZL
+DncKjvbdEYYLtTsl
+EPDLKvbdOSsufeVQ
+EOcLKvbdWSOXadlD
+EPDLKvbdpaJFAXHd
+DncKjvbdSCDdkhyL
+DoCjjvbdIMBzmvqL
+DnbkKvbdVUMsfLvK
+DoCkKvbdlhctQuSB
+DncKjvbdJuuGEFGi
+EPCjjvbdJSyAsMwl
+EOcKjvbdUtMtGMVj
+EPCkKvbdHDkWKCKK
+DncLKvbdySnImRag
+EPCjjvbdwMvAMcdm
+DnbkKvbdelevfmJk
+EPDKjvbdYORAYUvU
+EPCkKvbdVwIxWDeH
+EObjjvbdtvOXipsA
+DncLKvbdhlEdOUcZ
+EOcLKvbdTlVoAuoJ
+EPCkKvbdNQXpunHT
+EOcLKvbdWXJXvDdg
+DnbkKvbdZoOJFEzK
+EObkKvbdmbKWwoOV
+DnbjjvbdiHKDYvKV
+DncKjvbdfSBWzlDP
+DoCkKvbdLBKflawq
+EObkKvbdUsmUFkvK
+EObjjvbdLqwNZtpz
+DoCkKvbdsBfNLfjy
+DncLKvbdjvWmcbYX
+EObkKvbdaMkBruMg
+EPCkKvbdHkazmvqL
+DnbjjvbdRyjHrbvA
+EPCkKvbdNQXpvOHT
+EObjjvbdOYPVzcnU
+DoCjjvbdaSGCgtFk
+DoDKjvbdxmsHxSiD
+EObjjvbdZirgogCG
+EOcLKvbdmuVZkKSG
+DncLKvbdUyHszKnn
+DnbkKvbdxmsHxTJD
+EPCkKvbdVrOYBdkc
+EOcLKvbdhkdcmuDZ
+DncKjvbdwuMdpyLn
+EObkKvbdxVMdpxlO
+EPDKjvbdmbKWwoOV
+DoCjjvbdhkeDmtby
+DncLKvbdLFehCBQu
+DoCkKvbdYSkaNUOx
+DnbkKvbdmaivxPNu
+EPDKjvbdfNFvgNKL
+EPDKjvbdhlEdOUcZ
+EPDLKvbdTukpKUAq
+DncKjvbdUVlQKTaR
+DnbkKvbdYgWdAPSi
+DoDKjvbdIwsbHkpp
+EOcKjvbdlZTSTYgU
+DoCkKvbdNHColpVL
+EPCjjvbdxrmhmRag
+EObkKvbdUxgsyjnn
+DoCjjvbdsQVoJbvG
+DoCkKvbdBdQBVjMf
+EObkKvbdIHHZxxXg
+EOcKjvbdJuuFdEgJ
+DoDLKvbdwyhGGXeS
+DnbkKvbdSKyFuGkT
+DoDKjvbdiGibxvKV
+DncKjvbdnBjXXoNu
+DnbkKvbdFpATWffZ
+EPCjjvbduDCtvvOo
+EObjjvbdIsZArlxM
+DncKjvbdEvYopMjF
+EObjjvbdwuMdqYkn
+DoCjjvbdwyhFfYEr
+EPCjjvbdqUTfrSLU
+EOcLKvbdzGxlANEw
+EPCjjvbdEOcKjwCd
+EPCkKvbdOSsvGeUp
+DncKjvbdhlEcnUcZ
+EPCkKvbdUVkoitAq
+DnbjjvbdOAJTTjSA
+DncKjvbdqmZiyLhJ
+EObjjvbdpstGqrLU
+EPDLKvbdFxuVAcwb
+DoCkKvbdauBgYKsh
+DnbjjvbdZMRcsmkm
+EOcLKvbdqrVLNkBN
+DoDKjvbdNQYRWNgT
+DoCjjvbdCTBCtFvr
+DncKjvbdZyEKNcMS
+EPCkKvbdVviYVdFH
+DoDKjvbdePErjtUS
+EObkKvbdwtmFRZLn
+DncKjvbdpedEsvAh
+EPCkKvbdzoQRFClY
+DoDKjvbdIxTbIMQp
+DoDLKvbdxsOImSCH
+EPCjjvbdYfwEAOri
+EOcKjvbdnPyyWLZC
+EOcKjvbdhlFEOVCy
+DoCjjvbdwyhFfXdr
+DnbkKvbdZQmEhleR
+DnbjjvbdbAudepPw
+DnbjjvbdMpXqVmgT
+DncLKvbdNeEUIhjd
+EObkKvbdMfbomQUk
+DoCkKvbdqvpMDJYq
+DoDLKvbdfekzNfgA
+EOcLKvbderAvzlCo
+EOcLKvbdiZtelQnG
+EPDLKvbdRXNdClHc
+EPDKjvbdNrsufeUp
+DncKjvbdZQldiMeR
+EObkKvbdiLdcmtby
+DncLKvbdZQmEhleR
+DncLKvbdZRNEiMdq
+DncLKvbdWRmwadlD
+EPDLKvbdGLEsDHlu
+DncLKvbdZjTIPgCG
+EObjjvbdxnTIXsIc
+EPCjjvbdliETptqa
+EOcKjvbdlrZUyrci
+DoDKjvbdbKlFnnDA
+DnbjjvbdwXLaWBWV
+DoCkKvbduaEZSoFI
+EPCjjvbdRyjHrbvA
+EPCjjvbdLhakpxAS
+DoCkKvbdmaiwXoNu
+EOcKjvbdyNrhYShc
+EObjjvbdsCFllGjy
+DnbkKvbdZshhxdTO
+DoDKjvbdZjShPfaf
+EOcKjvbdmajWwnmu
+EObjjvbdJvUfEFHJ
+EPCkKvbdOEcsiIkE
+EPCkKvbdkNBlZeGo
+DoCjjvbdVviXudFH
+DnbkKvbdjJfHjMxS
+DoDLKvbdGBPRZJzm
+EOcKjvbdiCObdvqR
+DnbjjvbdVwJYWDeH
+DncKjvbdGAoQxizm
+EObjjvbdxmsIYSiD
+DncLKvbdqqtkOLAm
+EObjjvbdvvlAvBWV
+DncKjvbdvAdZTPFI
+EOcKjvbdjAQHAogK
+EObkKvbdpxoIHRDx
+EPCkKvbdffLynGgA
+EPDLKvbdTvLpKUAq
+EOcKjvbdmttzKjSG
+DoCkKvbdqwQMChyR
+DoDKjvbdrzMPsAgn
+DoDLKvbdyYJKCPyk
+DoCkKvbdRbEEkhxk
+EPCkKvbdBdQAuilf
+EPDLKvbdRaceMIyL
+EOcKjvbdraelkfjy
+EOcLKvbdEASIlzWw
+DnbkKvbdOSsvGeUp
+DnbjjvbdmuVZkJrG
+DnbkKvbdVwIwvDeH
+DoDKjvbdwWlAvBVu
+DncKjvbdSKyFuGjs
+DoCkKvbdOXnuzcmt
+DncKjvbdrXPlDJZR
+EPDLKvbdsBfNMGjy
+EPDLKvbdiifHilwr
+DnbkKvbdjvWmcbYX
+DoDLKvbdZnmhddyj
+EPCkKvbdemFvfmKL
+EPDLKvbdNxPVzcnU
+DnbjjvbdRkYfUgLT
+EPCkKvbdZRMdhldq
+EObjjvbdYqMdhmFR
+DncLKvbdJvVGDeGi
+EPDKjvbdUtMsfLuj
+DoDLKvbdZyEJnClS
+DnbkKvbdjcMKqGtg
+EPCjjvbdDnbjkXDE
+DnbjjvbdLGGICAqV
+EPDKjvbdWIXvYGxz
+EOcLKvbdBiLCKhfK
+DnbkKvbddwzUURez
+EOcLKvbdZQldiMdq
+DncLKvbdKVtfEFGi
+DoCkKvbdvAcxsPEh
+DncLKvbdjvWmcbXw
+EObkKvbdqiAJeNOe
+EOcLKvbdUMWPBWPJ
+EPCjjvbdOFDshhjd
+EOcLKvbdVrNxBeMD
+EPDKjvbdiGicZWKV
+EObkKvbdtTRrxzFD
+DoCjjvbdjJfHilxS
+DoCjjvbdelfXGmKL
+EPCjjvbdIrxaTMwl
+EOcLKvbdRECaPpcr
+DnbkKvbdiLeDmtby
+EPDLKvbdGcjvKCJj
+EOcKjvbdWWiXuceH
+DoCkKvbdpstHRrLU
+EPDLKvbdkHgLeemk
+EPCkKvbdzGxlANEw
+EObkKvbdjKGHjMwr
+EPCkKvbdiUzEvquC
+EOcLKvbdwXMBWBVu
+EObkKvbdeKKRvUzn
+DncLKvbdSBceLhxk
+DoDLKvbdJbibqJbx
+DncKjvbdeAUQlxJf
+EPDKjvbdbUafwkUI
+DoCkKvbdxnTIXriD
+EPDLKvbdRacdlJYk
+EOcLKvbdmgFXlnGy
+EOcKjvbdHELWJaij
+EPDLKvbdLhbMQxAS
+DnbkKvbdhbPDFXRR
+EOcKjvbdqwQMDIxq
+DncKjvbdeOdrkTsr
+EObjjvbdyOSgwriD
+EPCkKvbdjmCLyeHP
+DnbjjvbdZisHpGbG
+EOcKjvbdIHGzZXwg
+DncLKvbdwWkaWAvV
+DoDKjvbdffLzOHHA
+EPCjjvbdqZPIHREY
+DoCkKvbdDjHivYKA
+DoDLKvbdYNqAYVWU
+EPCkKvbdzjUpPcrt
+DncLKvbdlqyVZrdJ
+DncLKvbdDoDLLXDE
+DoCjjvbdcSbjtDia
+DoDKjvbdDxXlUTsl
+DncLKvbdJYTahLpp
+EObkKvbdNQXqVnHT
+EObjjvbdijGIJlxS
+EObjjvbdOStVfdtp
+EPCkKvbderBWzlCo
+EObjjvbdKQzEnenF
+EPCjjvbdmtuZkKRf
+EPCkKvbdEJhJuxKA
+EPCjjvbdgGLymfgA
+EObjjvbdRbDeLhxk
+EOcKjvbdrSUkNkAm
+DoDLKvbdEOcLLXDE
+EObjjvbdBhjbKiFj
+DoDLKvbdBdQAuimG
+DnbjjvbdDwwkstTl
+DoDLKvbdVwJYVdEg
+EOcKjvbdACqwizJQ
+EObjjvbdZsiIyETO
+EObkKvbdGLFSbhMu
+EOcLKvbdFkFTChNV
+DnbjjvbdVBCRSprZ
+DoCjjvbdssRsYydc
+DoCkKvbdUMWOaWOi
+DoDKjvbdYSlBMsnx
+EObkKvbdNsTvHFVQ
+EPDKjvbdZisIPfaf
+EOcLKvbdpssfqqjt
+EPCkKvbdNHCpMpVL
+EPDKjvbdczZPwxpb
+EPCjjvbdnBivxPOV
+DoDKjvbdUtNTelVj
+EPDKjvbdjhHMFfNk
+EObjjvbdEuyPolie
+EPDLKvbdKQydneme
+EPCkKvbdQvnECkgc
+EPDLKvbdatbGxLTh
+DoDLKvbdNPxQvOGs
+DoDLKvbdySnImSCH
+EObkKvbdvBEZTOeI
+DoCjjvbdatagXkUI
+DnbjjvbdmbKXXnnV
+EOcLKvbdmbKXXoNu
+EPCkKvbdNsUWGduQ
+DncLKvbdpssgSRjt
+EPDLKvbdiUzFXSUb
+EObkKvbdyzeORgiI
+EOcLKvbdKDKDQibx
+DoCjjvbdmJDtQuSB
+DncLKvbdaNKaruMg
+DnbkKvbdOEctJJKd
+EObjjvbdkVvnECXw
+EObkKvbdKaLHMbXq
+DoCjjvbdYzcFqiuy
+DoCkKvbdvwLaWAvV
+EPDLKvbdnBiwXoNu
+EOcLKvbdLBKgNBwq
+EPCkKvbdCJLBjiFj
+EObjjvbdptUGqrLU
+DoCkKvbdWXJYWEFH
+EOcLKvbdNeEThiLE
+EPCjjvbdtAHQhAAr
+EOcKjvbdUGzmlXVe
+DnbkKvbdrylPsBIO
+EPCjjvbdICLzEzAD
+EPDKjvbdrpVoKCuf
+EPCjjvbdRkZFuGjs
+Dnbjjvbdznopdbkx
+DoDLKvbdmgFYNNfy
+EObjjvbdptUHRrKt
+DoCkKvbdhfjDZWJu
+DncLKvbdLGFgbBRV
+EPCjjvbdZnnIeEyj
+DoDKjvbdmtuZjirG
+EPCkKvbdmbJvwoOV
+DncLKvbdJpydoFme
+EPDKjvbdFyUtaEXb
+DnbkKvbdqFcdtWAh
+DnbjjvbdWRnXaeMD
+EOcKjvbdCIkBkJGK
+EOcKjvbdJTZBSlxM
+DnbjjvbdziuPocsU
+DnbjjvbdhzUelQmf
+EPCjjvbdUaBqSprZ
+DncLKvbdxZgefXdr
+EObjjvbdKVuFdEgJ
+EPCjjvbdAMgyTWzY
+DnbjjvbdiHJbxuiu
+DoDLKvbdUtNTekuj
+EPCjjvbdUQpnttgm
+DoDLKvbdVAbRTRSZ
+DncKjvbdkxsSTYgU
+DnbkKvbdMfbomQUk
+DoCjjvbdTAEiHbOd
+DoCjjvbdczZPxYpb
+DnbkKvbdUVkojUBR
+DncKjvbdddnqavbj
+DoDLKvbdxwhiapZk
+DoDKjvbdZirhPfaf
+DoDKjvbdTukoitAq
+DoCjjvbdrJAKFMne
+EObkKvbdZQmEhmFR
+DoCjjvbdHgHZyXxH
+DncLKvbdNHCpNPuL
+DoCkKvbdfIKvRmpg
+DoCjjvbdNsUWHEtp
+DoCjjvbdpfDdtWAh
+DoDLKvbdBhkCKiGK
+EObjjvbdtSqsYydc
+EPDLKvbdQccBPqES
+EOcLKvbduMXvaUAw
+EOcLKvbdZMRctNkm
+EObjjvbdRadFMIxk
+DncLKvbdjhGlFfOL
+DoCjjvbdhtzEvqtb
+DnbjjvbdUtNUGMWK
+EPCjjvbdaaWEfQQX
+DncKjvbdunszpkOt
+DoDKjvbdEJgjWYKA
+DoCkKvbdQYmAGsRj
+DoCjjvbdmozYujyC
+DnbkKvbduVnYKRTA
+DnbkKvbdZxcjNblS
+EPDKjvbdzRPNIiwA
+EObkKvbdzitopESt
+EObjjvbdfILVrNpg
+DoCjjvbdNGcPmPuL
+DnbjjvbdEYXlUUTl
+DnbjjvbdraellHKy
+DoDKjvbdZQmEhmFR
+DoCkKvbdZnnIdeZj
+DnbjjvbdjcMKpgVH
+EObkKvbdTfznLvue
+EOcKjvbdFkErcIMu
+DncKjvbdGdKvKBjK
+DoCjjvbdVvhwvEFH
+EPCkKvbdmJEUQuSB
+DncKjvbdIsZBSlxM
+DnbkKvbdmbJvxPNu
+DoDKjvbdTqRPVUhN
+DoDLKvbdwygefXdr
+DnbjjvbdLGGHbBRV
+DncLKvbddijSVtzn
+EObkKvbdZnnJFFZj
+EOcKjvbdCTBCsfXS
+DoDLKvbdmttzKjSG
+EOcKjvbdyNsIXsIc
+EOcKjvbdbVBgXjtI
+EOcLKvbdGFjRnJUR
+DnbkKvbdYTMBMtOx
+EPCkKvbdNGcQMouL
+DoDKjvbdJcKDQibx
+DoDLKvbdrpWOicWG
+EOcKjvbdRaceMIyL
+EPDLKvbdWWiYWDeH
+EPDLKvbdczZQXxqC
+DoDKjvbdLBKgMaxR
+DnbjjvbdZjShQHBf
+DoCkKvbdKaLGlbXq
+DnbkKvbdGdKujCJj
+EObkKvbdIBkydzAD
+DnbkKvbdqUTgSRkU
+EOcLKvbdBiKbKhfK
+DoDKjvbdVwIwvEEg
+EPDKjvbdIjEAKQHE
+DoCkKvbdEPCkLWcE
+DoDLKvbdrDeJQNua
+EOcLKvbdNddUIhjd
+EPCkKvbdYNqAXtvU
+EObkKvbdUaCRSqRy
+EPCjjvbdqqtjmjaN
+EPDLKvbdhbOcFWpq
+DoDKjvbdULvPBVni
+DoDKjvbdGGJrOJTq
+DoCkKvbdqceIpNvB
+EOcKjvbddePSCXCj
+EPCjjvbdVUNTekuj
+DnbjjvbdLGGHbApu
+DoCkKvbdcTDLTcia
+DnbkKvbdNsUWGeVQ
+EObjjvbdZLqcsmlN
+EObkKvbdxrnJMrCH
+DnbjjvbdqvolChxq
+EPCjjvbdaNKbSuNH
+DnbkKvbdlYrrTYft
+EPCjjvbdwtldpyMO
+DnbkKvbdNddThiKd
+EPCkKvbdjJfIJlwr
+EPCjjvbdJpzEoFme
+DnbkKvbdiMEcmuDZ
+EOcKjvbdkVvmdBww
+EOcLKvbdAMgxrwZx
+EObjjvbdatbGwjtI
+EOcKjvbdTAEhhCOd
+DnbjjvbdfNFwHNJk
+EObjjvbdVBBqSpqy
+EPCjjvbduaEZSndh
+EPDLKvbdpstGqqkU
+DnbkKvbdIwtCHlQp
+DncKjvbdrbGNMGkZ
+EOcKjvbdILaznWqL
+DoCjjvbdTXjkmzkY
+DoCjjvbdIGfyyXxH
+EOcKjvbdjKFhKNXr
+EPDKjvbdRDcApRES
+EObjjvbdmfdxNNfy
+EObjjvbdDihKWYKA
+DoCjjvbdzaAOffal
+EPDLKvbdQccBQQcr
+EPCjjvbdTlWPAvOi
+DnbjjvbdqUTfrSLU
+EObjjvbdVAbRTRRy
+DoCkKvbdnCKWxPOV
+EOcKjvbdFjdrbhNV
+DnbjjvbdrzLpTAhO
+DoCjjvbdDxYMUUUM
+DnbjjvbdmoyxujyC
+DnbjjvbdUVkoitAq
+EObjjvbdrEEhpOWB
+DncKjvbdRjyGVGjs
+DoCkKvbdJJdAKPgE
+DoDKjvbdKDJbqKCx
+EPDLKvbdcTDLUDia
+DoCkKvbdePEsKssr
+EPCjjvbdJbjCqJbx
+DoDLKvbddBrmSATm
+EOcLKvbdlhcsqVRa
+EOcLKvbdKfGICBRV
+EPDLKvbdrovPJbvG
+DoCjjvbdbAvFGQQX
+EPDLKvbdlZTSSxft
+DnbjjvbdLqvmZuQz
+DncLKvbdZshiYdSn
+EOcLKvbduMXvaTaX
+EObjjvbdZtJJYcrn
+EOcLKvbdczZPwxpb
+EPDKjvbdatafwjtI
+EObkKvbdsQVnicWG
+DnbjjvbdrWokcIyR
+DncLKvbdJuteceGi
+EOcLKvbdADRwiyiQ
+EPDKjvbdCIkBjiFj
+EPDKjvbdrNZjYkgi
+DnbkKvbdSLYeuHLT
+DoDKjvbdkNBkzEfo
+DnbkKvbdcyxowyQb
+EPDKjvbdYkrETnMN
+DoDKjvbdwWlAvAvV
+EPCkKvbdczZPxZQb
+EPCkKvbdKCibpjCx
+EOcKjvbdhytfLqOG
+DnbjjvbdxmsHwriD
+EPDKjvbdmfeYMmgZ
+DoCkKvbdNQXpvNfs
+DncLKvbdirziSkJz
+EOcKjvbdHffzYxYH
+EOcKjvbdWXIxWDdg
+DncLKvbdVvhwuceH
+DoDLKvbdFxtuBDxC
+DncLKvbdJcKCqJbx
+DoCkKvbdxLWcgzyf
+DnbjjvbdCJLBjiGK
+EPCjjvbdcasMrATm
+DoDLKvbdLFfICAqV
+EPDKjvbdqmZjZMHi
+DncKjvbdczZPwxqC
+EObkKvbdrWpMDJYq
+EPCjjvbdLFehCBQu
+EPCkKvbdRzJgsDWA
+DoDKjvbdIsZArlxM
+DncLKvbdqFcdsuaI
+DncLKvbdULvPBVni
+EOcLKvbdWXJXuceH
+EPDLKvbdaNLCTVMg
+EObkKvbdUxhUZjnn
+DncLKvbdeATplxKG
+DoCjjvbdmSYtzSci
+EOcLKvbdkMbLzEfo
+EPCjjvbdrpVoJcWG
+EPCjjvbdXrlAlsoY
+DoDLKvbdUxhTzKnn
+EPCjjvbdOEdUJJLE
+EObjjvbdKDJcRKCx
+EPDKjvbdcyxpXxqC
+DnbkKvbdZxdKODMS
+DncLKvbdcImJjfWx
+DnbjjvbdpfEFTuaI
+DnbkKvbdZoNheEyj
+EOcKjvbdjFKfuPAO
+DnbkKvbdFVyQQNKF
+DnbkKvbdDjHiuwjA
+EPCkKvbdMgDPlotk
+EPDKjvbdxnShXsIc
+DoDLKvbdOTUVfduQ
+DncKjvbdFejRnIsq
+DncKjvbdSQUHJfEX
+DncLKvbdRXOEDMHc
+DoCkKvbdsZkosAgn
+DoDKjvbdUsmUGLuj
+EPDKjvbdiifIJmYS
+DoDLKvbdZQmEhmFR
+EObjjvbdeUAUASlv
+DoDLKvbdUsltFlVj
+DoCjjvbdSiZjRABM
+EOcLKvbdegkVrORH
+DoDKjvbdYlRdTnLm
+DncKjvbdzitopESt
+DnbkKvbdhbPDEwQq
+DncKjvbdSKxetgLT
+DncKjvbdZQmEiNFR
+EPDLKvbdUyITzLPO
+DnbjjvbdznpQdblY
+EObkKvbdbLMFoODA
+EPDLKvbdBhjbLJFj
+DoDKjvbdNwoVzdOU
+DncKjvbdvBDxsPEh
+DnbkKvbdSBceLiZL
+EPCkKvbdOhAXyAZB
+EObjjvbdZisIQGbG
+EOcLKvbdAMgxrvyx
+EPDKjvbdCDpAvKMf
+DoDKjvbdxVMdpxlO
+EOcKjvbdJbicRJbx
+DoCkKvbdTppnuVIN
+EObjjvbdZjTIPfbG
+DoCkKvbdpyOhHQcx
+DoCjjvbdfHjvSOQg
+DoCjjvbdzoPpdcMY
+EPDKjvbdmfeYNNfy
+EPCjjvbdXGYzUAPT
+DoDLKvbdypnmJKXA
+DnbkKvbdBsAcUFwS
+DoDLKvbdQYmAGsRj
+EObjjvbdUxhTyjnn
+DoCkKvbdrouoKCvG
+DoDLKvbdhtydwSUb
+EPCkKvbddwytUSFz
+EOcKjvbdrbFmLgLZ
+EObkKvbdbPffckzd
+EObjjvbdDxXlTtUM
+DnbkKvbdqGEFTvAh
+EPCjjvbdDoCkKwDE
+EOcLKvbdVviYWDeH
+EPCjjvbdWSOYCFLc
+DncKjvbdmbKWxPNu
+DoCkKvbdZshhxdTO
+DoDKjvbdwtldqYkn
+DoDLKvbdYSlBMsoY
+EPDKjvbdRkZFuHKs
+DnbkKvbdeYZstRez
+DoCjjvbdrNZixlIJ
+DoCjjvbdmgFXlmgZ
+EPCkKvbdYlRcsmlN
+DoCjjvbdOFETiJKd
+EPDLKvbdBhkCLJFj
+EPCjjvbdmuVZkJrG
+DnbkKvbdFjeTChMu
+DoCjjvbdJTZBSlwl
+DnbkKvbdozmdLYPA
+EObjjvbdtbbtvuoP
+DncKjvbdqUTfrSKt
+DncKjvbdyTOImSBg
+DnbjjvbdcTCkTdKB
+EOcKjvbdKaKgNCXq
+EPDKjvbdZoOIeEyj
+DoDKjvbdYqMeIleR
+DncKjvbdnPzZWLZC
+EPDLKvbdZirhPfbG
+DnbkKvbdGQATXGey
+EOcKjvbdZsiJYcsO
+DnbkKvbdrWpMDJYq
+DoCkKvbdMuTSLNAX
+EObjjvbdpxnhHRDx
+EOcKjvbdzitpQESt
+EPCjjvbdhuZeXSUb
+DoCjjvbdNeDtJIkE
+DoCkKvbdCEQBWKMf
+EPCkKvbdHEKvKCJj
+EPCjjvbdatbHYLTh
+EObkKvbdLGGICBRV
+DncKjvbdRjxeuGjs
+DoDKjvbdnHFYNOHZ
+EObkKvbdIryAsNYM
+EObjjvbdmfdwlnGy
+EOcLKvbdNeDsiIkE
+DnbjjvbdJTYaSlxM
+DoCkKvbdRadEkiYk
+DncLKvbdjKFgjNYS
+EObkKvbdZjShQGaf
+EOcKjvbdKfFgaaQu
+DoDKjvbdhgJbyVjV
+DoCkKvbdwuNFRZMO
+DncLKvbdfekzNfgA
+DncKjvbduCcVWuno
+EPDLKvbdVrNxBdkc
+DnbkKvbdRkYeuHLT
+DoDLKvbdwuNEpxlO
+DoCjjvbdQccAoqDr
+EOcKjvbdUGzmkvvF
+DncKjvbdEJhKWYKA
+EOcLKvbdssSSxyeD
+DoCjjvbdVviXvEEg
+DnbjjvbdEuxopNKF
+EObkKvbdLAkGlbXq
+DoCkKvbdZsiJZESn
+DoCkKvbdhkeEOUby
+DnbkKvbdbhlikGXY
+EObkKvbdLBLGmCYR
+EPCjjvbdxUleQyLn
+DncLKvbdrbGNMGjy
+DoCkKvbdddoSBwDK
+EPDLKvbdkyTRsYgU
+EPDKjvbdehLVqmqH
+EPDLKvbdrbFmMHKy
+DncLKvbdmbJvwoOV
+EOcLKvbdVUNUFkvK
+EPDLKvbdrpWPJbvG
+DncKjvbdGAnpxizm
+EOcKjvbdyzeNqghh
+DoDLKvbdhbPDFWpq
+DoDLKvbdfVzxQJzs
+DoDLKvbdUMWPBVoJ
+EOcLKvbdRpTfjFdX
+EPCkKvbdpfDeUWBI
+EObjjvbdmuUyjirG
+EObjjvbdtbbtwWOo
+EObkKvbdrylPsAgn
+EOcLKvbdmSYtysEJ
+DncKjvbdSCDeMJYk
+DoCjjvbdTppoUthN
+EPDKjvbdVTmUFkuj
+EObjjvbdIsZAsNXl
+EOcKjvbdSBcdlJYk
+DnbkKvbdZQleIleR
+DnbjjvbdddoSBvcK
+EOcLKvbdNHComPuL
+DncKjvbdiCPCdvqR
+EOcKjvbdliDspuSB
+EObkKvbdzoPpeCkx
+DnbjjvbdcJMijevx
+DoDKjvbddZxpYZQb
+DoDKjvbdkySrSxft
+DoDKjvbdyXhiapZk
+EPCkKvbdOAIrsirA
+EObkKvbdUaBqSqSZ
+EPCkKvbdZtJIyESn
+DnbkKvbdTvLoitAq
+EPCjjvbdyzeNrIJI
+EOcKjvbdiCPDEwRR
+EPCkKvbdnCJvwoNu
+EPCkKvbdIGfzZYXg
+DoCkKvbdkySqrxft
+DoCjjvbdZdxGzgiC
+DncKjvbdzitpPcsU
+DncLKvbdbVCHXjsh
+EPCkKvbdlhcsqVSB
+EPCjjvbdGYtuAcxC
+EOcLKvbdjAQGaQHK
+EObjjvbdjlakzFGo
+EOcLKvbdvwMAvAuu
+EPCjjvbdTqQoVUhN
+EPCkKvbdeEnrBwCj
+DoCkKvbdsCGMkgKy
+DnbjjvbdhkeDnVDZ
+EPCjjvbdOFDshiLE
+DnbjjvbdDwwlUTsl
+EPCkKvbdKWUedEgJ
+EPDLKvbdsQVnicWG
+EPCkKvbdjgflFfOL
+EObkKvbdQYmAHTSK
+EObkKvbdSPsgJecw
+EObjjvbdjAQGaPgK
+DoDLKvbdDxXlUUUM
+DoCjjvbdegjuqnQg
+DnbkKvbddwzTsqez
+DncKjvbdxxJJbPyk
+EOcKjvbdGKeTChMu
+DoCkKvbdeFPSCWcK
+EObkKvbddeOrBwDK
+EPCkKvbdaNLBsUmH
+DoDLKvbdRpTgJedX
+EPCkKvbdkySrSxgU
+EPCkKvbdVYhTzKoO
+EPCjjvbdxxIjCPyk
+EPDLKvbdVrOXadkc
+EOcLKvbdEOcKjwDE
+DncLKvbdmfeYMnGy
+EPCkKvbdVAaprprZ
+EPCjjvbdFWYpQMjF
+DoCkKvbdqrUjmkAm
+DoCjjvbdQvmdDLhD
+EPDLKvbdeATqNYKG
+DnbkKvbdLGGHaaQu
+EObjjvbdezvZEhtX
+DnbkKvbdjuwNdBww
+DncKjvbdJTZAsMwl
+EPDKjvbdkxrrTYgU
+EPDKjvbdbAudfQQX
+DoCkKvbdVUNUGMVj
+EPDLKvbdaNLBsUlg
+EPDLKvbdDwxLtUUM
+EPCjjvbdMgColpUk
+EPDLKvbdaogGdLzd
+EPDKjvbdzGxlANFX
+EPCkKvbdUQqOuUgm
+DoDKjvbdEPDKkXCd
+EPDKjvbdbsCkTcia
+EObjjvbdTAEhhBnd
+EPCkKvbdhzVFkpmf
+DnbkKvbdaSFcHtGL
+DoCjjvbdGBOpxizm
+DncLKvbdGYttaEYC
+DoDKjvbdqYoHfpdY
+EOcKjvbdrouoKCuf
+EOcKjvbdiCPDFWqR
+DnbjjvbdVAaprqRy
+EPCjjvbdePFSjtUS
+DnbkKvbdLGGICBRV
+EPDLKvbdkMalZeHP
+DoDLKvbdJutfEFHJ
+DoDKjvbdVBCRSqSZ
+EObjjvbdvvlBWBWV
+EOcLKvbdFVxpPmJe
+DoDLKvbdKfGHaaRV
+DnbjjvbdBvzdIdpW
+DncKjvbdNsUWHFUp
+EPDLKvbdrSVLNjaN
+EPDKjvbdgGMZnGgA
+DnbkKvbdSBceMIyL
+EOcLKvbdSBdFLiYk
+EOcLKvbdRyigrcWA
+EPDKjvbdaMkBruNH
+DncKjvbdUaCRSpqy
+DnbjjvbdIMBzmvpk
+DnbkKvbdbVCGxKtI
+DncLKvbdliDtQuSB
+EObkKvbdHDkVjBjK
+DncKjvbdmSYtyrci
+DnbkKvbdxVMdpxlO
+EPCjjvbdRpTfjGDw
+EPCkKvbdhancEvpq
+EPDLKvbdNsTvHEuQ
+DoDKjvbdfekymfgA
+EObkKvbdUWLojUBR
+EPCjjvbdJXtBgkpp
+DoCjjvbdEPCkLXCd
+EPCjjvbdZxcjNcLr
+DoCjjvbdZsiJYcrn
+EPCkKvbdZtIiZDrn
+EObkKvbduLxWaUBX
+EObkKvbdZdxGzghb
+EOcKjvbdkClLRHVH
+EOcLKvbdFjdsDINV
+DncKjvbdNeEUIiKd
+EPCkKvbdYpmFJNFR
+EPDKjvbdlhcsptqa
+DoDLKvbdnCKWwoOV
+EObkKvbdDnbkLXCd
+EObkKvbdQwOECkhD
+EOcKjvbdUaCRSpqy
+EPCjjvbdBcoaVjNG
+DnbjjvbdxmrhXsJD
+EObjjvbdcImKKewY
+DnbkKvbdpyOgfpdY
+DnbjjvbdpyOggRDx
+EObjjvbdEOcKjwDE
+DnbkKvbduCcUwVoP
+EOcKjvbdhgKCxuiu
+DoDKjvbdiZtelQmf
+DoDKjvbdnBjXYOnV
+EPDLKvbdczZPwxpb
+EPCjjvbdADRwizJQ
+EObjjvbdfVzwpJzs
+DnbjjvbdxxIiapZk
+EPCjjvbdjcLkQfuH
+EPCjjvbdcyyQYYqC
+DoCkKvbdEuyPpNJe
+DncLKvbdcJNJkGWx
+DoDKjvbdZoOIdeZj
+DoCjjvbdWHxVwgYz
+DnbjjvbdeEoRbWbj
+DncKjvbdZMSDsnLm
+EOcLKvbdbiNKLFvx
+DnbkKvbdjcLjqHVH
+DnbjjvbdEYXktTtM
+EPCjjvbdCSaCsfWr
+EOcLKvbdBdQAuimG
+EObkKvbdqdFIpOWB
+DncLKvbdelevgNKL
+EObkKvbdZMRdUNkm
+EPCkKvbdrDdiQOVa
+DoDLKvbdCWzdJFQW
+EObjjvbdxUleQyMO
+DncKjvbdBsAcTfXS
+EOcKjvbdRMxBxmtz
+EOcKjvbdSKyFuGkT
+EPCkKvbdEuxooljF
+DncLKvbdYgWdAPSi
+DoCkKvbdiHJcYvKV
+EPCkKvbdZQldiNFR
+DncKjvbdjAPgAofj
+EObjjvbdkVvmdBxX
+DoDLKvbdsBfMlHLZ
+DoDLKvbduWNxKQsA
+EObjjvbdOTTugEtp
+DoCjjvbdIxUBgkqQ
+EOcKjvbdqFceUWAh
+DnbjjvbdTkunaVoJ
+EPDKjvbdiZtfLqOG
+DoCjjvbdcImJkGXY
+DncLKvbdpstGrSLU
+DncLKvbdRpTfjGDw
+DnbkKvbdznpREblY
+DnbjjvbdqdEhomvB
+DncLKvbdIwtBhMRQ
+DoDKjvbdhtzFWqtb
+EOcKjvbdiBncEwQq
+EPDKjvbdZQleJMdq
+EOcLKvbdLAkGlaxR
+DoCkKvbdZsiIyDsO
+EObkKvbdeOdsKssr
+DnbjjvbdJcKCpjDY
+EPDLKvbdSBdElIyL
+EPCkKvbdyOTHwrhc
+EPDLKvbdGLEsDIMu
+EPCjjvbdmJETqVRa
+DncKjvbdKDJbqJbx
+EOcKjvbdbsCkTdKB
+EOcKjvbduDCuXVno
+EOcKjvbdrXPlDIxq
+EOcKjvbdqlyixkhJ
+EObjjvbdRkYfUgLT
+EPDLKvbdLAkGmCXq
+DnbjjvbdHgGzYxXg
+DncKjvbdpstHSSKt
+DoCkKvbdqvolCiYq
+DoCkKvbdmgFYNOHZ
+DnbkKvbdqGDeTvBI
+DoDLKvbdyzeNrHhh
+DnbkKvbdwzHefXeS
+DoDKjvbdbiMjLGXY
+DnbkKvbdTulQKTaR
+DnbjjvbdsPunicVf
+DncKjvbdqvpLcIyR
+DncLKvbdOFEThhkE
+EOcKjvbdZshhxdSn
+DncKjvbdpyPHfpdY
+DoDLKvbdNGcPmQUk
+DoCkKvbdVgwvXfxz
+DoCjjvbdCgLegAzc
+DnbjjvbdauCGxLTh
+DoDKjvbdqFceTvBI
+DoCjjvbduMYXAsaX
+EPCkKvbdrSVKmkAm
+EObkKvbdOYOuzcnU
+DncKjvbdYkqctNlN
+DncKjvbdSZjHrcWA
+DoCjjvbdrEFJQNua
+EPCjjvbdRosfjFcw
+EObkKvbdZoNiFEyj
+EPDKjvbdVgwvXfxz
+DoDLKvbdhbPCdvqR
+DncKjvbdqvokcIyR
+DnbjjvbdpssfqqkU
+DncLKvbdzoPpdbkx
+DnbjjvbduaDySoFI
+EOcKjvbdEASImZwX
+DncKjvbdbrcKtDjB
+DoCjjvbdQccBQQdS
+DoCkKvbdDigjVwjA
+DnbkKvbdbVBfwkUI
+EOcKjvbdIsYaSlxM
+DoDLKvbdKVtedEgJ
+EPCjjvbdIryArlxM
+DncKjvbdpeceTuaI
+EObkKvbdZshiYdSn
+DncLKvbdZtIhyESn
+DnbjjvbdOYOuzcnU
+DoDKjvbdUxhTyjoO
+EObjjvbdTppoVVHm
+DncKjvbdrWolCiYq
+DoDLKvbdNVSrKmAX
+EObkKvbdiGicZWKV
+DoDKjvbduVmwipsA
+EPCjjvbdNPwqVnHT
+EObjjvbdelewGmJk
+EOcLKvbdgGLzNgHA
+DoDKjvbdcJNJjfWx
+DoCkKvbdyOTHwriD
+EObjjvbdEzspeLcJ
+DnbjjvbdjhHLeenL
+DncKjvbdOStWHFVQ
+EOcLKvbdsZlPsBHn
+EPDLKvbdtcCuWuno
+DnbkKvbdULunaVni
+EPDKjvbdJqZdnfNe
+EOcKjvbdqwPkcIxq
+EObjjvbdrJAJeNOe
+DnbjjvbdRECaPpdS
+EPCjjvbdpfEEsvBI
+EPDLKvbdIsZArmYM
+EPDLKvbdJYUCILpp
+EOcLKvbdYlSDtNlN
+EPCjjvbdJYTbHkpp
+EPDKjvbdYzbfSJvZ
+EPCjjvbdRaceMJYk
+EObjjvbdZisHofaf
+DnbkKvbdRbEElIyL
+EOcLKvbdijFhKNXr
+EOcKjvbdRXNdDMID
+DncLKvbdbiNKLGXY
+DoDLKvbdlZSrSyHU
+EObkKvbdqZPIHRDx
+DoDKjvbdnPzYujxb
+EObkKvbdnHEwlmfy
+EObkKvbdCWzdIePv
+EObkKvbdqlyiyLgi
+EPCjjvbdkySqryHU
+EObkKvbdcImKKevx
+DncKjvbdEASJMzWw
+DncKjvbdRkYfUfkT
+EPCjjvbdqYoIGpcx
+DncKjvbdGckWKBjK
+EPCjjvbdYTLaNUOx
+EPDKjvbdwtleRZMO
+EObkKvbdGFiqnJUR
+DncLKvbdlhdURVRa
+EObjjvbdqlzJxkhJ
+DncLKvbdFaPQyJzm
+EPCkKvbdpssgRrLU
+EObjjvbdiCOcFXRR
+DncKjvbdqTtGqrLU
+EPCjjvbdsCFlkgLZ
+EOcKjvbduWOXiqTA
+EOcKjvbdkClKqGuH
+EPCjjvbdMowpvOGs
+EPCkKvbdxrmhmRag
+DoCjjvbdiUzFXRuC
+EOcLKvbdUMWPAvOi
+DoDLKvbdmfdwlmgZ
+EPCjjvbdehKurNpg
+EOcLKvbdBsAcTevr
+EPCjjvbdZjTIPgBf
+EObjjvbdPIAXyAZB
+EPCjjvbdCDoaVjNG
+DncKjvbdrpVnicVf
+DoDKjvbdlZTSSxgU
+DncKjvbdGZVVAdYC
+EPDLKvbdsCGMkfjy
+EPCjjvbdSPsfjFdX
+DoCjjvbdJXsbIMQp
+DncKjvbdzeZnzdyp
+DnbkKvbdlYsRsYft
+DncKjvbdbiMjLFwY
+EPDKjvbdyOShYSiD
+DoCkKvbdOTTufduQ
+EPDLKvbdVwJYVcdg
+DoCkKvbdGFiqnJTq
+EOcLKvbdUslselWK
+EObjjvbdkxsSSyHU
+EOcLKvbdxsNhmSBg
+DnbjjvbdqqtkOLAm
+DnbjjvbdeFPRawDK
+DnbkKvbdLZQirzuG
+EPCkKvbdFWYpPlie
+EObkKvbdrWpMCiYq
+EOcKjvbdiiehKNXr
+EPDKjvbdEvYopNJe
+EPCkKvbdxrmhmSCH
+DoCkKvbdptUHSRkU
+EOcKjvbdKCjDRJcY
+DoDLKvbdrMzKYkgi
+DoCjjvbdZLrDtNkm
+DoCkKvbdqYnggQcx
+DnbkKvbdrovOibvG
+DncKjvbdADRwizIp
+EOcLKvbdZisHpHCG
+EPCjjvbdZRNFImFR
+EPDKjvbdVwIxVceH
+EOcKjvbdrDeJQNua
+EPCkKvbdIxTaglQp
+DncKjvbdGFiqmiUR
+EPCjjvbdVwJXvEEg
+DnbkKvbdwuMeRZMO
+EPCkKvbdZRNFImFR
+EPCkKvbdnHEwlmgZ
+EPDKjvbdLYqKSzuG
+DoDKjvbdZsiJYdTO
+DoDLKvbdShyjRAAl
+DoDKjvbdRadFLiYk
+DnbkKvbdjbkjpgUg
+EObkKvbdUaBpsRRy
+EOcKjvbdehKuqnRH
+EObkKvbdDwxMUTsl
+EOcKjvbdptUHSSKt
+EPDKjvbdHEKuibJj
+EOcKjvbdxxIjBpZk
+EObkKvbdelewGmJk
+DncLKvbdTvLpKUAq
+EPCjjvbdGLErbhNV
+DncLKvbdfHjvRmqH
+DnbjjvbdkMakyeHP
+EPDKjvbdJcKCpjDY
+DoCkKvbdRECaPpcr
+EOcLKvbdmgFYMmgZ
+EObjjvbdZRMdiMeR
+DoCjjvbdYzcFqivZ
+DoCkKvbdeOeTKtTr
+EPCkKvbdXFxytAPT
+DncLKvbdZnnJEdzK
+DncLKvbdhtyeWrUb
+EOcKjvbdEJgivXjA
+EPDLKvbdssSTYyeD
+EPDLKvbdLBLGmCXq
+DnbkKvbdKeegbApu
+DoDLKvbdJYUBhLqQ
+EPDKjvbdwNWANDdm
+DoCjjvbdKfGIBaRV
+DoCjjvbdbhljLFwY
+DncLKvbdmgFXmNgZ
+DoDKjvbdZRMeJNFR
+DoCkKvbdWeyZtAOs
+DoCkKvbdbiNKLFvx
+EPDKjvbdUsmTfMVj
+EPCkKvbdijFgjMwr
+DnbkKvbdbsCjtDia
+DnbjjvbdZQleJNFR
+DoDLKvbdNQXqWNfs
+EOcLKvbdULunaVoJ
+DncLKvbdrEEhpOVa
+DncLKvbdRyigsCvA
+DoCkKvbdVwJYWEEg
+DncLKvbdjKGIKMwr
+EObkKvbdrEFIpNvB
+DoCjjvbdGLEsDINV
+EOcLKvbdJSyArlxM
+EPCjjvbdTJZiqABM
+DncLKvbdCTAbsewS
+DnbjjvbdZjTIPfaf
+EPCjjvbdbPfgELzd
+DnbjjvbdLBLHMbXq
+EPCjjvbdqiAKFMoF
+DnbkKvbdIBlZdzAD
+EPDLKvbdyTNiNRag
+DoDLKvbdZjSgogCG
+EPCjjvbdjAPgAofj
+EPCjjvbdxmrgxTJD
+EObjjvbdSPsgKGEX
+EObkKvbdRWnDblHc
+DnbjjvbdZQmFImFR
+DoCjjvbdjuwODaww
+EOcLKvbdVviXvEFH
+EPCjjvbdcImJkGXY
+EPDKjvbdVAbQrqSZ
+DoCjjvbdWWiXudFH
+EPDKjvbdapGfdLzd
+EObkKvbdQwOEDMID
+EPCjjvbdKDKCqKCx
+DncKjvbdJvUfEEgJ
+EObkKvbdDoDLKvcE
+EOcKjvbdqwPkbhyR
+EObjjvbdyTOJNSCH
+EObkKvbdZsiIxdTO
+DoCjjvbdaSFbhTfL
+EOcKjvbdUslsekvK
+DoDKjvbdehLWSORH
+EPCkKvbdBsBDTfWr
+DoCkKvbdMfbpNQVL
+DoCkKvbdezvZFJUX
+EObjjvbdJYUBhMRQ
+DncKjvbdlhcsptqa
+DoCkKvbdiZtfMQnG
+EObkKvbdZRMdhleR
+EPDLKvbdkySrSxgU
+DoCkKvbdYlSDsmkm
+DnbkKvbdkNBkzEfo
+EPDLKvbdyYJKCPzL
+EOcKjvbdqwPkbiZR
+DncLKvbdqdFJQOWB
+DoDKjvbdFyUtaDxC
+DnbjjvbdZyDinDMS
+EOcKjvbdqrVKnKaN
+DoCjjvbdMgDPlotk
+EPCjjvbdUVlPitBR
+DoDLKvbdbsCkTcjB
+EPCjjvbdnGdwlnGy
+DnbkKvbdapGfdLzd
+EPDKjvbddndsKtTr
+DncLKvbdsrrTZZeD
+EObkKvbdqdFJQOWB
+DncKjvbdRadFLhxk
+DnbkKvbdfILWSORH
+DnbkKvbdqZOggQcx
+EPDKjvbdCDpAujMf
+EObjjvbdxsOImSBg
+DoDKjvbdrSUjmjaN
+EObkKvbdrMyjYkhJ
+EObkKvbdANHySvzY
+EObkKvbdgGLynGgA
+DoDLKvbdNdcshiKd
+EObjjvbdePErkTtS
+EPCkKvbdSCEFLhxk
+DoDKjvbdIxUBhLqQ
+EPCkKvbdVvhxWDdg
+EOcLKvbdKfGHbBQu
+DoCjjvbdajlFoNcA
+DoCkKvbdQdDAopdS
+DoDKjvbdSBceMJZL
+DoDKjvbdOStWGdtp
+DoCjjvbdGdLWKBij
+DnbkKvbdvOszpjnt
+DncLKvbdUVlPjTaR
+DoDLKvbdliDsptrB
+EOcKjvbdZisHpHCG
+DoDKjvbdkVwODaxX
+DoDLKvbdfVzwpJzs
+DnbkKvbdDjIKWYKA
+EObkKvbdrJAJdmPF
+EObjjvbdeATpmYJf
+DnbkKvbdQmYByOUz
+EPDLKvbdxmrhXsJD
+EPDLKvbdCJLBjiGK
+DoCkKvbdYpmFJMeR
+DoDKjvbdXnRAXuWU
+DoDKjvbdiMFDmtby
+DnbkKvbddZyQYZQb
+DncLKvbdZtIiYdSn
+EObjjvbdwMvANDdm
+EPDLKvbdIwsbHkqQ
+DncKjvbdURQntthN
+EObkKvbdTqROttgm
+EPCjjvbdTkvOaVni
+EOcLKvbdfNFwHNKL
+EObkKvbdjgflFfOL
+EObjjvbdUQqOuUhN
+DncLKvbdegjurNqH
+EPDLKvbdxUmEqZMO
+DoDKjvbdGcjvKBjK
+DoDKjvbdVTltFkuj
+DnbkKvbdLYqKSztf
+DoDKjvbdUyHtZkOn
+EPDLKvbdvAcyTOdh
+DncKjvbdqFcdsvAh
+DncLKvbdrbFmMHKy
+EOcKjvbdYlRdTnLm
+DoCjjvbdEASJMzXX
+EObkKvbdMoxQvNfs
+EOcKjvbdiHJcYujV
+DnbjjvbdvAcyTPEh
+DoDLKvbdGQASwGfZ
+EObkKvbdMoxRVnHT
+EObkKvbdhgJcYvJu
+DnbjjvbduWOXipsA
+DoDLKvbdQcbaQQdS
+EObkKvbdUsltFkvK
+EPDKjvbdKyQirzuG
+EPCjjvbdmJDtQuSB
+EObkKvbdXrkaMsoY
+EOcKjvbdrEFIpOVa
+EPDKjvbdVqmwadkc
+EOcKjvbdqYoIGqDx
+EObkKvbdtbbtwWOo
+EPCkKvbdSKxfUfkT
+EPCkKvbdmJDsqUrB
+DncKjvbdhaoCeWpq
+EObjjvbdFxuVAdYC
+EPCkKvbdqFcdsvBI
+EPDLKvbdOTUWGeVQ
+EPCkKvbdlhdUQtrB
+DoDKjvbdCJLCLJGK
+EPDKjvbdMgCpMotk
+DnbjjvbdrbFlkgLZ
+DoDKjvbdqBJFAWhE
+EPCjjvbdpyPHfqDx
+EOcKjvbdTlVoBVni
+EPCjjvbdrRtkNkBN
+EPCkKvbdWWhwuceH
+EPDKjvbdcImKKewY
+EOcKjvbdYSlBNToY
+EObkKvbdZRMeIldq
+EPDLKvbdMoxRWNgT
+EObjjvbdMIbMQxAS
+EPCjjvbdQdDBQQdS
+EObkKvbddZyPwxqC
+EOcLKvbdACrXiyiQ
+EPDLKvbdcSbkUEJa
+DncLKvbdTkunaWPJ
+DnbjjvbdvBEYrndh
+EObjjvbdmIctQuRa
+DncKjvbdiUydvqtb
+DoCjjvbdhkdcnUby
+EOcKjvbdePFTLTsr
+EOcLKvbdiHJbxujV
+EObjjvbdZsiJZESn
+EOcKjvbdpxoHfqEY
+EPDKjvbdFyUuBDwb
+DoDLKvbdBiLBkJGK
+EPCkKvbdliDtQuRa
+DoDKjvbdhbOcEwQq
+DncLKvbdRosgJfDw
+EObjjvbdrzMQSaIO
+EObkKvbdUsmTfMVj
+EOcKjvbdWXIxWEFH
+EPCjjvbdcTCjtDjB
+EObkKvbdbBVeGQPw
+EOcLKvbdaSGDHtFk
+DoDLKvbdqFdFUVaI
+EPCkKvbdxxIjBozL
+DncLKvbdNddUIiLE
+EObjjvbduMYWaUAw
+EPCkKvbdWWiXvDdg
+EObjjvbdJXsbILqQ
+DnbkKvbdDnbjjwCd
+DnbkKvbdxUldqZMO
+DoCjjvbdKyRKSztf
+DncLKvbdLFehBaQu
+EPDLKvbdjvXNdBww
+EOcLKvbduaEZTPFI
+DoCkKvbdfMevfmKL
+EPCkKvbdpxoIGqEY
+EPCkKvbdKWUecdgJ
+EObkKvbdmbJwYOmu
+EPCkKvbdIsZArmYM
+DnbjjvbdxLXDgzyf
+DncLKvbdEvYopMjF
+DncLKvbdmJETqVRa
+DnbkKvbdrouoKDWG
+EPDLKvbdbVCGwkTh
+DoDKjvbdZirhPgCG
+EPDKjvbdTvMQKUAq
+DnbkKvbdLrWlzVQz
+EOcLKvbdrEEiPmua
+DnbjjvbdczZQXyRC
+DncKjvbdnUtzKjSG
+EPCjjvbdkNCLzFHP
+DncKjvbdZyEKNbkr
+EObkKvbdJuuFdEgJ
+DncLKvbduCbuXWPP
+EPCjjvbdyNrhXriD
+DnbkKvbdIxTaglQp
+EPCjjvbdJvVFceHJ
+EPCkKvbdVBBprqSZ
+EOcKjvbdkxrqsYgU
+EPCjjvbdGLFSbhMu
+EObjjvbdnPzZWLYb
+EObkKvbdjblLRGuH
+DoDLKvbduaDyTPFI
+EPCjjvbdiifIJmXr
+EObkKvbdYkqctOMN
+EPCkKvbdelfXHMjL
+EPDLKvbdeFOrCWbj
+EObjjvbdeUAUATNW
+EPCjjvbdWRmxBeMD
+DoCjjvbdZxcinDMS
+EOcLKvbdWRmwbElD
+DoDLKvbdpssfrSLU
+DncLKvbdQccApRES
+DoDKjvbdGdKujBij
+DoDKjvbdZLqdTmlN
+DoCjjvbdbiNKLGXY
+DoCjjvbdVZITzKoO
+DoCkKvbdsPuoKCvG
+EPDKjvbdNGbomQVL
+DnbkKvbdkIHMGFnL
+EPDKjvbdvPTzpjoU
+EOcKjvbdczZPxZQb
+DncKjvbdliEURUrB
+DnbkKvbdGZUtaDxC
+EPCjjvbdrMyjZLhJ
+EPCjjvbdTulPjTaR
+DoCkKvbdZeYGzhJC
+DncLKvbdwygefYEr
+DnbjjvbdehLVrOQg
+DnbjjvbdZxcjNblS
+DoCjjvbdSLYetgKs
+EPCkKvbdVAbQrpqy
+EPCjjvbdtTSTZZdc
+DnbkKvbdSCEFMIyL
+DoDKjvbdrDeJPmvB
+EOcLKvbduDDVXVno
+DoDLKvbdZdxGzhIb
+EObkKvbdhgJbxujV
+DncLKvbdlYsRsZHU
+DoDLKvbdhzUelQmf
+EObkKvbdWWhwvDeH
+EPCjjvbdjgfkfFmk
+EObkKvbdzaAPHGal
+DoDLKvbdEPDLLXDE
+DoCjjvbdTukpKTaR
+EOcKjvbdhaoCeWpq
+EPDKjvbdwjvdHzzG
+EPDLKvbdJTZBTNYM
+DoDLKvbdRECaPqDr
+DncKjvbdjhGkfGNk
+EObkKvbdjhGkfFmk
+DncLKvbdqlyixkhJ
+EObkKvbdjEkHUoAO
+EPCkKvbdcasMrAUN
+EObjjvbdhzUfLqOG
+DoCkKvbdEvYopNKF
+EPCjjvbdjuwODaxX
+DncLKvbddiirWUzn
+EObkKvbdOStVfduQ
+DnbjjvbdypnmIjXA
+DnbjjvbdRWnEClHc
+EOcLKvbdbhljLFvx
+EPDLKvbdJXsaglRQ
+EObkKvbdhzUfLqOG
+EObkKvbdnPyxujyC
+DoDKjvbdBiKajiFj
+DoDKjvbdZjTHpHBf
+EPCjjvbdaSFcITek
+EObjjvbdYzcFqiuy
+DncLKvbdqdFIpNvB
+DoDKjvbdLYqJrzuG
+DoDLKvbdVwJXucdg
+DnbjjvbdhbObdvqR
+DoCkKvbdCEQBWJlf
+DoDLKvbdSCDdlJYk
+EPDLKvbdZyEJnCkr
+DoDKjvbdvAcyTOeI
+DoDKjvbdkIHLfFmk
+EPCjjvbduaEYroFI
+DnbkKvbdjblKpgUg
+EOcKjvbdwygefYFS
+EOcKjvbdliDsqUqa
+DnbjjvbdjcMLRGtg
+EObkKvbdRbEElJYk
+EPCkKvbdqrUkNjaN
+EOcLKvbdRotGifDw
+DnbkKvbdUsmUGLuj
+DoCjjvbdeKJqvUzn
+EPDKjvbdQwNdClHc
+EOcLKvbdcScLTcjB
+DoCjjvbdvBDxroEh
+DoDLKvbdIxUBglQp
+EPDLKvbdfVzxQJzs
+DncLKvbdqlzKYlIJ
+DoDKjvbdaNLCSuMg
+EOcKjvbdwjwDgzyf
+EPDKjvbdIxTaglRQ
+DoDKjvbdVTltGLuj
+DoCkKvbdiMFENuDZ
+EOcLKvbdZyEJnDMS
+DnbkKvbdiBoCeXRR
+EPCkKvbdbiMijewY
+EOcKjvbdmttzLJqf
+DncKjvbdYTLaMtOx
+EPCjjvbdfIKuqmqH
+DoCjjvbdBdQBVjNG
+EObkKvbdieLGuPAO
+EPDLKvbdsZlQSaIO
+DnbkKvbdEztQeMDJ
+EPCjjvbdIjEAJpHE
+EOcLKvbdfILWRmpg
+EPCjjvbdZyDinDLr
+DncKjvbdLGGIBaRV
+DncLKvbdmozZWLZC
+DoCkKvbdlZSrSxft
+EOcLKvbdFjdrcINV
+EOcKjvbdQvnDblHc
+DoCkKvbdqUUHRqkU
+EPDKjvbdnBjWwnmu
+DoCjjvbdZxcjNbkr
+DncKjvbdZisIQHCG
+DoCkKvbdJcJcRJbx
+EPDLKvbdlhdUQtqa
+DnbkKvbdrzLpSaHn
+DoDKjvbdziuPpDrt
+EPDKjvbdEYXlTtUM
+EObkKvbdqdFIpOVa
+DncKjvbdpxnhHQdY
+DnbkKvbdLhakqYAS
+EPCkKvbdrRtkNkBN
+EObkKvbdqrVKmjaN
+EOcKjvbdxUldqZMO
+EOcKjvbdrbFllHKy
+DoCkKvbdySmhlrBg
+EPCkKvbdkxrqsYgU
+EPCkKvbdZLqcsnMN
+DncKjvbdFpATXHFy
+EPDLKvbdZRMdiMeR
+EPDLKvbdRNXbYmtz
+DoCkKvbdpyPIGqEY
+DoDLKvbdKaKfmCYR
+EPDLKvbdrylPsBIO
+EObjjvbdUQqOuVHm
+EPCkKvbdezvZFItX
+EOcKjvbdZirhQHCG
+DoDKjvbdePFSjssr
+EOcKjvbdCTAcTfXS
+EOcKjvbdkxsRsYft
+EPDLKvbdQwODcMHc
+DoDKjvbdwuNFRZMO
+EPCjjvbdEuyPomKF
+DoCkKvbdpxnhGpcx
+DncKjvbdiVZeWrUb
+EOcKjvbdrEEiPmvB
+EOcLKvbdZxdJnDLr
+EObjjvbdUtNUFkvK
+DoDLKvbdZQmFIldq
+EObjjvbdnCJvwnmu
+EPCkKvbdRWmccLgc
+DnbkKvbdnUtykJqf
+DnbkKvbdVBBqSpqy
+EPCkKvbdZoOIddyj
+DnbkKvbdZQldiNFR
+DncLKvbdmRyVZsDi
+DoCjjvbdcasMrATm
+EOcLKvbdtbbtvuno
+DoDLKvbdZtJJYdSn
+DnbkKvbdGKeTDHlu
+DoCkKvbdZjTHpGbG
+EOcKjvbdHDjvKCKK
+EObjjvbdddnqbXCj
+EObkKvbdlZTSTYgU
+EPCjjvbdqqtjmkBN
+EObjjvbdtAGqIAAr
+EObkKvbdrRtjmjaN
+DnbjjvbdMRwMytpz
+EPCkKvbdsQWPJbuf
+DoDKjvbdqFceUWBI
+DoCkKvbdnBjWxPNu
+DoDLKvbdiUzFXRuC
+EObkKvbdQccBPqES
+DnbjjvbdOFDtIiLE
+EPDKjvbdYlRcsnMN
+DncKjvbdFfJrNhsq
+DoCkKvbdsCFmMHKy
+EPDLKvbdYkrETnMN
+DoCjjvbdYNqAXuWU
+EPDKjvbdrovPKDWG
+DoDLKvbdbKlGOmcA
+DoCkKvbdOStWHFVQ
+EObjjvbdhbObeXQq
+EPCjjvbdeEnrBwDK
+DoDLKvbdrbFmMGkZ
+DncKjvbdxZhGGYFS
+EPDKjvbdbrbkTdKB
+EPDKjvbdraellGkZ
+EPCkKvbdssSTZZeD
+EPDKjvbdDjHiuxKA
+DoCjjvbdzoPqFDMY
+EPCjjvbdlAlnmALA
+DoDKjvbdmtuZjjRf
+DoDKjvbdFpASvfey
+DoCkKvbdjlakyeGo
+DoDKjvbdxnSgxTIc
+EPCjjvbdxZhFfXeS
+EPCkKvbdqcdiPnVa
+EOcLKvbdmfeYMnHZ
+DoDLKvbduCbuWvOo
+DoDKjvbdmIcsqUqa
+EPDKjvbdzoQQdblY
+DoDLKvbdRNXayOUz
+DnbjjvbdrJAKFNOe
+DnbjjvbdZLrEUOMN
+EOcKjvbdwygeexEr
+EPCkKvbdbVBfwjtI
+EObkKvbdKDKDRJbx
+DoCkKvbdGckWKBij
+EOcKjvbdzjVQPdSt
+EPDLKvbdqlzKYkhJ
+DnbjjvbdajkennDA
+DoDLKvbdRzJgsCvA
+EObjjvbdehKuqmqH
+DncKjvbdajlFnnDA
+DnbjjvbdjEkHUoAO
+DoCjjvbdFVyPomKF
+DoCkKvbdJcJbpjCx
+DnbkKvbdRaceLiZL
+EPDKjvbdeEnrBwDK
+DoDLKvbdxKvdHzyf
+DoCkKvbdSPtHKFcw
+EObkKvbdjhHMGGOL
+EOcLKvbdGGJqnItR
+DoCjjvbdnGdxNNgZ
+DoDKjvbdbKkfOmcA
+DnbjjvbdelewHNKL
+EPCkKvbdcSbjsdJa
+EPCkKvbdTAEhgbOd
+DncLKvbdUslselVj
+DnbjjvbdVrOYBeMD
+EObjjvbdEzspeMDJ
+EPCjjvbdcTDLTcjB
+EPDLKvbdsPvPJbuf
+EOcKjvbdqGEFUWBI
+EPDKjvbdVgxWYGxz
+EOcLKvbdSPtGjGDw
+EObkKvbdGckVibJj
+DoDLKvbdeEoSCWcK
+EPCkKvbdQvmdClID
+DncLKvbdhytelROG
+EPCkKvbdeXzTtSFz
+EPCkKvbdrXQMDIxq
+EObkKvbdtlXvaUAw
+DnbkKvbdiMFDmtcZ
+EPDLKvbdJqZeOfNe
+EPDLKvbdmIdUQtrB
+DoDKjvbdVTltGLvK
+DncLKvbdZRNEhleR
+EPDKjvbdjlakydfo
+DnbjjvbdFpASvfey
+EPCkKvbdkySrTYft
+EOcLKvbdVUMtGMVj
+EPDLKvbdmRyUysDi
+EPCkKvbdGKeScHlu
+EObjjvbdczZPwyRC
+EPDLKvbdVYhUZkOn
+DncLKvbdJbibqKDY
+EPDLKvbdfekzNfgA
+EObkKvbdKQydoGOF
+EObkKvbdVgwvXfxz
+DncLKvbdQdDApQcr
+DncLKvbdGFjRnJUR
+DncKjvbdjgflFemk
+DoDKjvbdlhctRVSB
+DncLKvbdZLqctOLm
+DncKjvbdfSAvzlCo
+EPDKjvbdZRMeIleR
+EObjjvbdZRMeJMdq
+EOcKjvbdMuTSKmAX
+DncKjvbdqYngfpdY
+DnbkKvbdxrmiMqbH
+EObjjvbdbPgGckzd
+DoCkKvbdpstGqqkU
+DncLKvbdmJDsqVSB
+EPDLKvbdtunYKQsA
+EObkKvbdDnbkKwCd
+EPDLKvbdEXwkstUM
+DoDKjvbdrRtkNkBN
+DncLKvbdIwtCIMQp
+EPDLKvbdZQmEhmEq
+DnbkKvbdxmrhYTIc
+DoCjjvbdCSaDUGWr
+EPCkKvbdatagXkUI
+DncLKvbdEPDKkWcE
+DncKjvbdZjShPgBf
+EPDKjvbdHDkVjCJj
+DoCjjvbdsrrTYzEc
+EObjjvbdhlEcnUby
+DnbjjvbdemFvfmKL
+EObkKvbdlhcsqUqa
+DoCkKvbdZtIiYdTO
+EObkKvbdEXwlTssl
+DoDKjvbdhaoCdvqR
+EObkKvbdliEURUrB
+DoDLKvbdEYXkstTl
+DncKjvbdFkEsDINV
+DoDKjvbdFkErcHmV
+DoDLKvbdKCjCpjDY
+EPCjjvbdjJegjMxS
+DnbkKvbdnCKWwnmu
+DnbjjvbdqwQLbiYq
+DoDLKvbdSZigsDWA
+EObjjvbduVnYKRTA
+EOcKjvbdTlWOaVoJ
+DnbjjvbdSCDeMJYk
+DnbkKvbdQvmdClID
+EPCkKvbdziuQPdTU
+EOcLKvbdhficZWJu
+EOcKjvbdZLqdTmkm
+DoDKjvbdcImKKevx
+EOcLKvbdGFirOJUR
+EObkKvbdREDApRES
+DoDKjvbdHELWKBij
+EOcKjvbdrSVLNkBN
+EOcKjvbdBdQBWJlf
+DoCjjvbdFpATXHGZ
+DnbjjvbdqZOhGpdY
+EPDLKvbdCSaDUGWr
+DoDLKvbdrpWPJcWG
+DnbjjvbdZsiJYdTO
+EPDKjvbdJvVGEFGi
+EPCkKvbdmIctRVSB
+DncKjvbdBiLCKhfK
+DoCkKvbdZisIQGbG
+DoCjjvbduWNwjQsA
+EOcLKvbdiHKCyVjV
+EPCjjvbdlZSrTZGt
+EObjjvbdNPxRWNgT
+DncKjvbdeAURNXif
+DncLKvbdOStWGeVQ
+DoCjjvbdJvUeceGi
+DoDKjvbdXsMBMsnx
+EPDKjvbdGLFSbhMu
+EPDLKvbdEvZPolie
+EOcKjvbdrRtjnLBN
+EPDKjvbdyOTHxTJD
+EPDKjvbdmajWwnmu
+EPCjjvbdrNZjZLhJ
+DncKjvbdajlFoODA
+DoDKjvbdrEFIpOVa
+DnbkKvbdpedEtWBI
+DncKjvbdqwQMChyR
+DnbjjvbdnCKWwnnV
+DoCjjvbdNUsRkNAX
+EOcLKvbdULvPBWPJ
+DncLKvbdjlalZdfo
+EPDKjvbdjJfHjNYS
+DoDKjvbdPxmAHTSK
+DnbkKvbdmIctQtqa
+EObjjvbdnHFXmNfy
+EPCkKvbdqlzJyLhJ
+DnbjjvbdVqnYCElD
+EPDKjvbdqTsgRqkU
+EPCjjvbdADSYKZhp
+EPDLKvbdEvZPoljF
+DoCkKvbdLFfICBRV
+EOcLKvbdZRNFJNFR
+EPDKjvbdpedFUWBI
+EPDKjvbdVwJYVceH
+DoCjjvbdGYtuBDwb
+DoCjjvbdVYgtZjoO
+DncKjvbdQccApQcr
+EOcLKvbdWWiYWDdg
+DncKjvbdyTOJNSBg
+DnbjjvbdbAueFpQX
+DnbkKvbdiUydwSUb
+DoDKjvbdKVtfDeHJ
+DoDKjvbdEObjkXCd
+EOcKjvbdqlyjYlHi
+EOcKjvbdfRaWzlCo
+EObjjvbdRWmcblID
+DoDLKvbdCDpAvKMf
+DncLKvbdmuVZjjSG
+EPDLKvbdkaMnmALA
+EPCkKvbdcSbkTdKB
+DnbjjvbdZtJIyESn
+EPCkKvbdQvmccMHc
+DncLKvbdfHjvRmpg
+DoCjjvbdVvhwvEEg
+EPCjjvbdXrkaNTnx
+DnbkKvbdGFirNiUR
+EObkKvbdZLrDsnLm
+EObkKvbdySnJNRbH
+DncKjvbdaMkBsUmH
+EPCkKvbdqGEFUWBI
+EObjjvbdmajXYOnV
+DnbkKvbdHELWKBjK
+EPDKjvbdWSOYCFLc
+DncLKvbdehKurNqH
+EPDLKvbdSZjIScWA
+DncKjvbdZQldiNEq
+DncLKvbdVwIwvEEg
+DnbjjvbdauCGxKsh
+DnbkKvbdKefHbApu
+DoCkKvbdssSTYyeD
+DnbjjvbdSPsgJfEX
+DoCkKvbdeKKRvUzn
+DoDLKvbdiMEcnVCy
+DoDLKvbdoAKzsgcn
+DoDKjvbdDoDKjvbd
+DncKjvbdFWYopMie
+EPDLKvbdRNXaxmtz
+EOcLKvbdKefHaaRV
+EPDKjvbderAvzkbo
+EObjjvbdzoQREcMY
+DnbkKvbdijFgjMwr
+EObjjvbdhbObdvqR
+EPCkKvbdySmiMqbH
+EObkKvbdyzeOSIIh
+DnbkKvbdjcLkRHUg
+DoDLKvbdJpydoGNe
+DoDKjvbdwXMBWBWV
+EObkKvbdsBfMkgKy
+DnbkKvbdYkqdTnMN
+EPCjjvbdEPDLLWbd
+EObkKvbdDwxLtUUM
+DncKjvbdNrtVgFUp
+EPDKjvbdZQleJNFR
+EPDKjvbdJKEAKPfd
+DnbjjvbdhgKCxvJu
+EObkKvbdLAkHMbXq
+EPDKjvbdhancEvqR
+DoCjjvbdNsUWHEuQ
+DnbkKvbdZjTHofaf
+EPCjjvbdrDdiQOVa
+EPDKjvbdkMbLzEgP
+EPCkKvbdZoOJFEyj
+EPCkKvbdADRxJyhp
+EObjjvbdaSGCgsfL
+DnbjjvbdJbjDQibx
+EPCjjvbdpfEEtWBI
+EOcLKvbdZxdJmblS
+EPCkKvbdRpTgKGEX
+DoCjjvbdzRPNIiwA
+EObkKvbdzoPpeClY
+EObjjvbdeFOrBwDK
+DoCkKvbdOTTvHEtp
+DnbjjvbdGQATWgFy
+EPCjjvbdEvZQQNJe
+EObkKvbdjvWnECYX
+DoDLKvbdyTOIlqag
+DnbkKvbdEASJNZvw
+EOcKjvbdsZkosBHn
+DoDLKvbdtSqsYyeD
+DncKjvbdqlyixkgi
+EPCjjvbdTppnuVHm
+DncKjvbdatbHYKsh
+DoCkKvbduVmwjQsA
+EPCkKvbdvAcxsOeI
+EObkKvbdRjyFuHLT
+EObjjvbdTukoitAq
+EOcLKvbdkySqrxft
+EObjjvbdQccBPpdS
+DoDKjvbdffLzNfgA
+DoDKjvbdiCOcEvqR
+DncKjvbdIBkzEzAD
+EObjjvbdVZHsyjoO
+EOcLKvbdZoNheEzK
+DnbkKvbdsZkpTAhO
+DnbjjvbdqFdEtVaI
+DnbkKvbdIGfzZXwg
+EPDLKvbdlrZVZsEJ
+EObjjvbdBcpAvJmG
+DnbjjvbdtSqsYzFD
+EPDLKvbdJJdAJogE
+DncKjvbdxVMdpyMO
+EPCjjvbdQwOEDLhD
+DoCjjvbdmgFXmNgZ
+DoDLKvbdjEkGuPAO
+EPCjjvbdACrXjZiQ
+DoCjjvbdZMRdTmlN
+DncLKvbdiLeDnVDZ
+EObjjvbdVAaprpqy
+DoDLKvbdRjyFuGjs
+DnbjjvbdVAbQrprZ
+EObkKvbdSZjHrcWA
+EPDKjvbdVrOYBeMD
+EPDLKvbdDwxMUTsl
+EPDKjvbdRadElIxk
+DnbjjvbdmozZWKyC
+DoDLKvbdptTgRrKt
+EPCjjvbdatagXkUI
+DncLKvbdZLqcsnMN
+DoDLKvbdfNFwGmJk
+EObkKvbdqTsfrSKt
+DncLKvbdZjTHpGbG
+DoCjjvbduWNwipsA
+EPDKjvbdauCGwkTh
+DncLKvbdKVuGEFGi
+EObjjvbdZirhPfaf
+DoDKjvbdxKvcgzyf
+DnbkKvbdxsNhlrCH
+DoCkKvbdBsBDUGWr
+DncKjvbdfMfXHNJk
+DnbjjvbdOSsugFVQ
+DncKjvbdZisIPfaf
+DnbjjvbdZHXEAOsJ
+DnbjjvbdLZRJrzuG
+EObkKvbdwuNFQxlO
+DncKjvbddxZtURez
+EPCkKvbdxrmiNSCH
+DoDKjvbdiUydwSVC
+EObjjvbdiifIJlwr
+DncLKvbdssSSxyeD
+EPDKjvbdOEcsiJLE
+EOcKjvbdySnIlrBg
+EPCkKvbddZyQYZRC
+DnbjjvbdWXJXudEg
+DoDLKvbdKaLHNCXq
+DoDKjvbdGGKRmiTq
+DnbkKvbdlrYtyrdJ
+EPDKjvbdhtzEvrVC
+EObkKvbddZyQYYqC
+DoDLKvbdhaoCdwRR
+EPCkKvbdxLWdHzyf
+DoDKjvbdySmhmRbH
+DnbkKvbdZLqcsmlN
+EObjjvbdZtJIxdTO
+DoDKjvbdDwwksssl
+EPDKjvbdFyVVAdXb
+DoCkKvbdUtNUFkvK
+EPDLKvbdxmsIXsIc
+EPDLKvbdUsmUFkuj
+EOcKjvbdGKdsDHlu
+EOcKjvbdACqwjZiQ
+EPDKjvbdFpASwHGZ
+DoCkKvbdGZUtaDxC
+DncKjvbdmSZVZsEJ
+DoCjjvbdJbicRKCx
+DncLKvbdTvMQJsaR
+DoCjjvbdNeDtJJKd
+EPCjjvbdnPzYvKxb
+DoDLKvbdyTNhlrCH
+EPDKjvbdRosgJecw
+EObkKvbdTAEiICOd
+EOcKjvbdapHHDkzd
+DoCkKvbdjlakzFGo
+DncLKvbdrpWPJbuf
+DnbjjvbdNQXqVnHT
+EOcLKvbdkNCLzFHP
+EObjjvbdTukpKTaR
+EOcLKvbdEuxpPlie
+EPCkKvbdJuuFdFHJ
+EPDKjvbdGGJqmiTq
+DnbjjvbdOAIrtJrA
+DnbjjvbdelfWgNKL
+EObkKvbdhbOcEwRR
+DncLKvbdqiAKFNPF
+DncKjvbdVqnYCFMD
+DoDLKvbdWHxWXgYz
+EOcLKvbdNVTSKmAX
+EPDKjvbduaDySndh
+DnbkKvbdiifIJlxS
+EPDKjvbdeATpmYJf
+DncLKvbduCcVWuoP
+EPCjjvbdhficYvJu
+DncKjvbdehLVqnQg
+EPCkKvbdrDeJPmua
+DoCjjvbdTfzmlWue
+DncKjvbdZoNiFEyj
+DoDLKvbdxmsHxSiD
+EObkKvbdVwJYVdFH
+EPCjjvbduMXwBUBX
+DnbkKvbdTqROuVIN
+EPCjjvbdGKeTCglu
+EPDLKvbdcyyPwxpb
+EPDLKvbdQmXayOUz
+EPDLKvbdZyDinCkr
+EPDLKvbdZoNheEyj
+DncLKvbdmfdxMnGy
+DnbkKvbdkClLRGuH
+DncLKvbdJXsbIMQp
+DnbjjvbdjJegilxS
+DoCkKvbdnPyxukZC
+EPDKjvbdZMRcsnLm
+DoCkKvbdHffzYxYH
+DnbkKvbdbsDLTcjB
+DoDLKvbdSwjlNzjx
+DncKjvbdkaMnmALA
+DncLKvbdqmZjZLhJ
+DoDKjvbdqrUkNkBN
+DncLKvbdmfeXmOGy
+EPCjjvbdZMRdTmlN
+DnbkKvbdypnlhjXA
+EPDLKvbdyOTHxTJD
+EObjjvbdMRwMzVQz
+EPCjjvbdSCDeMIxk
+EObjjvbdOXnuzdOU
+EPDKjvbdOStWHFVQ
+DoDLKvbdrzLpTAgn
+DnbkKvbdULuoAvPJ
+EPDKjvbdZxdKODMS
+EOcKjvbdbAvEfPpX
+DncKjvbdyOSgwriD
+EPDLKvbdrJAJdmPF
+EPDLKvbdauCGxKtI
+DncLKvbdqrVLOLAm
+EPDKjvbdkHgLfFmk
+DncKjvbdUaCRSqSZ
+DnbkKvbdbQGgELzd
+EOcKjvbdcJMijfXY
+EPCkKvbdeOeTLUTr
+EOcKjvbdQmYByNtz
+EPDLKvbdFxuVBDwb
+EOcKjvbdGGJrNiUR
+DoDKjvbddndsLTtS
+EOcLKvbddZyPxYqC
+EPCkKvbdSKxfVHLT
+EOcKjvbdSCDdkiYk
+DnbjjvbdtvNwjQsA
+EOcKjvbdJXsbILqQ
+EObjjvbdjcLkRHVH
+EObjjvbdkCkkQgUg
+DoCjjvbdTqQnttgm
+EPCkKvbdEuyPoljF
+DoCkKvbdTqQnuUgm
+DoDLKvbdLrWlzVQz
+EPCjjvbdRjyGVGkT
+DoDLKvbdHEKvKBjK
+DoCjjvbdnCJvxOnV
+EObkKvbdptUGrRkU
+EPDKjvbdQwNcblID
+DoCjjvbdIidAKPgE
+DoCjjvbdTYLMNzkY
+DnbjjvbdEztRFMCi
+EObkKvbdBhkCLJGK
+EPDLKvbdZisHpGbG
+EPDLKvbddePRbXDK
+EObkKvbdUQpntuIN
+EObjjvbdEPCjjvcE
+DncKjvbdbiNJjewY
+EPDLKvbdVrOYCElD
+EPCkKvbdSBdElIyL
+DoDLKvbdzjVQQETU
+DoCjjvbdCDpAvKNG
+EObkKvbdNHComPuL
+EOcKjvbdGdKvJaij
+DnbkKvbdqmZjYkgi
+DncKjvbdQvnEClID
+DncLKvbdWWiXudFH
+DoDLKvbdCEQBWJlf
+DncKjvbdMpXqWOGs
+EPDKjvbdVBCRSqRy
+EPDLKvbdqUTgSRjt
+EOcLKvbdJXtCHkqQ
+EObkKvbdBiLBkJFj
+EOcLKvbdVvhwvEEg
+EOcKjvbdCTBCsewS
+EOcKjvbdyNsHwriD
+DoDKjvbdwzHfFxEr
+DnbjjvbdypoMiJwA
+DoCjjvbdJbicQjCx
+EOcLKvbdVUMsekuj
+EOcKjvbdCEQBWJlf
+EObjjvbdIjEAKQGd
+DoCjjvbdDjIJvXjA
+DoDLKvbdFyUuAdYC
+DncLKvbdRotGiedX
+DoCjjvbdBhkBjhej
+EOcKjvbdBhkCKhfK
+EPCkKvbdLFfHbBRV
+DoCkKvbdNUrrLNAX
+EOcKjvbdZoOIeEzK
+EPCjjvbdkMbMZeHP
+DoCjjvbdkVwNdBxX
+EPCkKvbdNddThiKd
+DnbjjvbdjcLkQftg
+DnbkKvbdFkErcHmV
+DnbjjvbdqGEEtWAh
+DncKjvbdmSYuZsEJ
+DoCjjvbdUsmTfMWK
+DoCkKvbdVUMtFkvK
+EOcKjvbdKfGICBRV
+DnbkKvbdMSWlzUpz
+EOcLKvbdVBBprpqy
+EPCjjvbdnHEwmNgZ
+DoCkKvbdeEoRawDK
+DnbkKvbdpssgSSLU
+DncKjvbdOSsugFUp
+DnbkKvbdwzHfGYFS
+DoCjjvbdTAEiHbPE
+EObkKvbdKaLGmCXq
+DnbkKvbdCWzciFQW
+DncLKvbdnVVZjiqf
+EPCjjvbdOStWHEtp
+DoDKjvbdkIGkfFmk
+DoDKjvbdZjTIPfbG
+EOcKjvbdXsMAlsnx
+DnbjjvbdILazmwRL
+EOcKjvbdrDdiPmvB
+EPDKjvbdiUzEwRuC
+EOcKjvbdqAheAXHd
+EPCjjvbdRyigsCvA
+DoCjjvbdpyOggQcx
+EPCkKvbdZyDjNblS
+DncLKvbdFejSNiTq
+EPDKjvbdzRPNIjXA
+DncLKvbdaMkBsVMg
+EObkKvbdLYqJrzuG
+DncKjvbdsBfNMHLZ
+EPDKjvbdjgflFfOL
+DoDKjvbdCTAcUGWr
+DnbjjvbdSLZGVGkT
+DoCkKvbdZQmEhldq
+EPDKjvbdUsmTfMWK
+DoCjjvbdKefICBRV
+EPCjjvbdZMSDsnMN
+EObkKvbdwzIGGXdr
+EObjjvbdrRtjnLAm
+EPDKjvbdXrlAmTnx
+EPCjjvbdZtJJZETO
+DnbjjvbdieLGtoAO
+DnbkKvbdnCJvxPOV
+EPDKjvbdjKFgjNYS
+DoCkKvbdlhcspuRa
+EPDKjvbdbAvEfQPw
+EOcLKvbdiGjDYuiu
+DncKjvbdnQZxvLZC
+DoDLKvbdaogHDkzd
+DnbjjvbdMfcQMouL
+DncKjvbdKaKgMbYR
+DncKjvbdrbGNMHKy
+DoCkKvbddoFSjtUS
+EPDLKvbdNddTiIjd
+EPDKjvbdhgKDZViu
+EPDLKvbdkMbLzEfo
+DoDKjvbdjmCMZdfo
+DoDKjvbdSCDeLhyL
+DoCkKvbdQwODcMID
+DnbkKvbdgGLymgHA
+EPDKjvbdWIYVwfxz
+DnbkKvbdZLqdUNkm
+DoCkKvbdYlSETmkm
+DnbkKvbdLqvlyuQz
+DnbkKvbdZRMdiMdq
+EOcLKvbddePSCXCj
+EPDLKvbdRacdkiYk
+DnbjjvbdZisIQGbG
+EObjjvbdrpVnibvG
+DncLKvbdIxUCHlRQ
+EPCkKvbdhuZeXRtb
+DnbjjvbdQwODblID
+DoDKjvbdezuyEhsw
+DncKjvbdiLddNtcZ
+EPCkKvbdiLeENtby
+DnbjjvbdxKvcgzzG
+EPDLKvbdRXNdClID
+DncLKvbdEKHjVwjA
+EOcLKvbdzoPqFCkx
+DoDLKvbdliEURUqa
+DoCjjvbdyOTIYTJD
+DncLKvbdIHGyyXwg
+EPCjjvbdShyjRABM
+DoCkKvbdnPyyWLYb
+EObjjvbdsPvPJcVf
+EPDKjvbdTXjlNzjx
+DoDKjvbddneTLUUS
+EOcKjvbdmuUyjiqf
+DncKjvbdZoOIddzK
+DoCjjvbdpyOhGqEY
+DoCkKvbdwjwDgzyf
+DnbkKvbdxZgeexEr
+EOcLKvbdHDjvKCKK
+DoCkKvbdpxnhHQdY
+DoDLKvbdLrWlzUpz
+EPDKjvbdatbHXkTh
+DoDLKvbdZyDinDLr
+EPCjjvbdGGJqnJTq
+DoDKjvbddneTLTsr
+DncLKvbdyzdmqhJI
+EObkKvbdRjxfVGkT
+EPDKjvbdOAJTTirA
+EPCjjvbdZoNiFEzK
+DnbjjvbdOhAXyAYa
+DnbjjvbdACqwizIp
+DoDLKvbdcImJjevx
+EPDLKvbdxmrhYTIc
+DoDLKvbdjcLkRGuH
+EPCkKvbdxVNEpxlO
+EPCkKvbdKCibqJbx
+DoCkKvbdjJfIKMxS
+DoDLKvbdVYhUZjoO
+EPDLKvbdrJAKEmPF
+EOcLKvbdRDbaQRDr
+DoCkKvbduWOXiqTA
+DoCjjvbdZyDjNcLr
+EObjjvbdbBWEeoow
+EPDLKvbdUQpnttgm
+EOcKjvbdlBNOmALA
+DnbjjvbdSPsfiecw
+DnbjjvbdwzIGGYFS
+EOcKjvbdLGFgaaRV
+EOcKjvbdrXQLcJYq
+DnbkKvbdmbKXYPOV
+DoCkKvbdZisHogCG
+EPCkKvbdFVyPpMjF
+EOcKjvbdYkrDsmkm
+DoDKjvbdxUmEqYlO
+EPDKjvbdKNAEZgUa
+DoDLKvbdqZPIGpcx
+DoCjjvbdMgComPtk
+EObjjvbdUyHszKoO
+DoCkKvbdeEnqavcK
+EPDKjvbdqYoIGqEY
+DoDLKvbdCDoaWJmG
+EPDLKvbdlZSrTZHU
+EPCkKvbdZxcinDMS
+DoCkKvbdgFkzNfgA
+EOcKjvbdYNqAXtvU
+EObjjvbdwygefYEr
+EPCkKvbdbBVdfQQX
+DnbkKvbdqrVLOLAm
+EOcKjvbdFjeTDINV
+DnbjjvbdnHFYMnGy
+EPCjjvbdrbFllHKy
+EPCjjvbdZLrDtOMN
+EPDLKvbdcJNKKfWx
+DoCjjvbdraemMHLZ
+DoDKjvbdeJjSWUzn
+EPCkKvbdZnmiEdyj
+DnbjjvbdwtleQxlO
+DnbkKvbdDwwlUTtM
+DoDKjvbdrWpMDJZR
+EOcKjvbdegkVrORH
+EPCkKvbdiCOcFWqR
+DnbkKvbdBsBDTevr
+DoCjjvbdjcLjpfuH
+DnbjjvbdZxdKODLr
+DoCjjvbdqceIpOVa
+DoDLKvbdVvhxVceH
+EObkKvbdsrqryZdc
+DnbkKvbdMSWlytpz
+DoDLKvbdqTsfqrKt
+EPCjjvbdjKGIKNYS
+EOcLKvbdiGibxvKV
+EPCjjvbdKDKCpibx
+EPDKjvbdQdDBPqDr
+DncKjvbdozmdLYPA
+DoCkKvbdTvLojUAq
+DnbkKvbdbhmKLFwY
+EPDKjvbdCIjbLIej
+DncKjvbdkHfkeenL
+DoDKjvbdtAGqIABS
+EPCjjvbdRosfjFdX
+EOcKjvbdraemLgLZ
+DnbkKvbdxmrgxTIc
+DoCkKvbdOAJStJrA
+EPCjjvbdqYngfpdY
+EPDLKvbdBvzdJEov
+DoDKjvbdrDeIpOWB
+EObjjvbdqUTfrSKt
+EOcKjvbdxnShXsIc
+DoDKjvbdEzsqFLcJ
+EObjjvbdDxYMUUUM
+EOcKjvbdjKFhKNYS
+EOcKjvbdjgflGFmk
+DoCkKvbdGGKRnItR
+EPCkKvbdREDApRDr
+EOcLKvbdNQYRWOHT
+EPCjjvbdxmrgwriD
+DncLKvbdbsCjsdJa
+EOcKjvbdypoNIiwA
+DncKjvbdZoOJFEyj
+DoCjjvbdrbGMkgKy
+EPDKjvbdyTNiNSBg
+DoCjjvbdczZPwyQb
+DoDKjvbdWfZZtAOs
+EPDKjvbdznoqFClY
+DncKjvbdTlVoBVoJ
+EPCkKvbdIxUBhMRQ
+DoCkKvbdZQmEiNEq
+DoDKjvbdnVUykKRf
+DnbjjvbdUtMtFlWK
+EObjjvbdOTUVfeUp
+DoCjjvbdZMSEUOMN
+DoCjjvbdwjwDgzzG
+DoDKjvbdYqNEiNFR
+DoDLKvbdqiAKEmOe
+EPDLKvbdfNGXHNJk
+DnbjjvbdCEQBVjMf
+EObkKvbdqUUGrRjt
+DnbkKvbdjmCLyeHP
+DnbjjvbdcJMikFwY
+EPCjjvbdjuwNdBxX
+DoCkKvbdeqaWzkbo
+DncKjvbdTkvOaVoJ
+DoDKjvbdZoOIeEzK
+DoDLKvbdKDKDRKDY
+DncLKvbdqwQMDJYq
+EObkKvbdKeegbBRV
+EPDKjvbdegjuqnRH
+DoDKjvbdxwhjBpZk
+EObjjvbdziuQPdSt
+EPCjjvbdZyEKOCkr
+EPCjjvbdRWmdCkhD
+EOcLKvbdQcbaQRES
+DncLKvbdIrxaTNYM
+DnbjjvbdGFiqmiTq
+DoCjjvbdZeXfzghb
+DoCjjvbdSLZFuGkT
+EPDKjvbdIryBSmYM
+EOcLKvbdRyjHsCvA
+EPDKjvbdzoPqFCkx
+EPDLKvbdFeirOIsq
+EObkKvbdLiBkpxAS
+DoCjjvbdmuUyjirG
+EOcKjvbdpfDeTuaI
+DncLKvbdtSqsYyeD
+EOcLKvbdAMhYrwZx
+EOcKjvbdJSyAsNYM
+DncLKvbddneTLTsr
+EPDLKvbdANIYsWyx
+EObkKvbdRXODblHc
+DoCkKvbdYzcGRjWZ
+DoDLKvbdkHgLfFnL
+DoCkKvbdpyPIGqDx
+EObkKvbdwuNEpxkn
+DoDLKvbdJSxaTNYM
+DoDLKvbdRNXbZOUz
+DnbjjvbdNHDPlpUk
+EObjjvbdKQzFPFnF
+EOcKjvbdwkWdHzzG
+EObkKvbdiCPCdvpq
+EPCkKvbdwzHfFwdr
+DoDLKvbdwuMeQxkn
+DoDLKvbdmoyxujyC
+DncLKvbdyYJKBoyk
+EOcKjvbdhgJbxujV
+EOcKjvbdvAcySndh
+EPCjjvbdOYPVzcmt
+DncKjvbderBWzlCo
+DncLKvbdEuxoolie
+DoDLKvbdUsmTelVj
+DoCkKvbdcImKKfXY
+EPCkKvbdKDJcRJcY
+DoDLKvbdfILWSOQg
+DoDLKvbdtcDVWuno
+DoDKjvbdegjvSNpg
+DncKjvbdjvXOEBxX
+DncKjvbdvOszpjoU
+EOcLKvbdkIGkfFnL
+EPDKjvbdZxcinCkr
+EOcKjvbdNxPVzcnU
+DnbkKvbdNrsvHEtp
+DnbjjvbdwygefXeS
+EObkKvbdnHEwmOGy
+EObkKvbdZRNFIleR
+DoCjjvbdNHColotk
+EPDKjvbdTkuoBVni
+EObkKvbdkHgLfGNk
+DoCkKvbdVvhxWEEg
+EOcLKvbdtbcVWvOo
+DoDKjvbdULvOaWOi
+EObkKvbdNdcsiJLE
+DoDLKvbdOYPVzdNt
+DoCkKvbdNeDsiJLE
+EOcLKvbdXGYytAOs
+EOcKjvbdcIljLGWx
+DoDKjvbdIMBzmwQk
+EPDKjvbdbrcKscjB
+DoCjjvbdqdEhpOWB
+DnbjjvbdzoPqFClY
+DnbjjvbdKDKCqJcY
+EPDLKvbdZRNEhldq
+DncLKvbddZyQXyRC
+DncLKvbdRzKHrcWA
+EObkKvbdTAFIgbPE
+EObjjvbdwtmFRYkn
+DoDLKvbdCTAbtFwS
+EObjjvbdJzpFwdAN
+DoCjjvbdCTAbsevr
+EObjjvbdyzdmrIIh
+DnbkKvbdANIZTXZx
+EPCkKvbdVwJXvDeH
+DncKjvbdmfdwlnHZ
+DoCjjvbdZirhPfaf
+EPCkKvbdiHJcYvJu
+DnbjjvbdRMxCYmtz
+EPDLKvbdZHWdAPSi
+DnbjjvbdWSNxBdkc
+DoDKjvbdNxPVzdNt
+EObjjvbddePRawDK
+DncKjvbdaSGCgtGL
+DncKjvbddoFSjstS
+DnbjjvbdOFETiJLE
+DoDLKvbdeAUQmYJf
+EObjjvbdZshiZESn
+EPCjjvbdVwIwvEFH
+DnbkKvbdKDKDQjDY
+EPDLKvbdRbEFMJZL
+DoDKjvbdiZuGLpnG
+DoCjjvbdqGEEtWAh
+DnbjjvbdnBiwYPNu
+DnbjjvbdtlXwBTaX
+DoCjjvbdqYoHfqEY
+EPCkKvbdIsZArmXl
+DoDLKvbdmfeYNNgZ
+DoCkKvbdrafNLgKy
+DnbkKvbdYfwEAOsJ
+DoDLKvbdrEFIonWB
+EPCjjvbdRXODcMID
+EPCjjvbdZisIPfbG
+DncKjvbdoAKzshEO
+EOcLKvbdNQXqVmfs
+DnbkKvbddoEsKssr
+EPDKjvbdNeETiJLE
+EPCkKvbdVgwvXfxz
+EOcKjvbdIsZBTNXl
+EObkKvbdFeirOJUR
+EPCjjvbdVAbRSpqy
+DnbjjvbdeXyssqez
+EPDLKvbdZGwEAOri
+DoCkKvbdVAaqSqRy
+DoDLKvbdiVZeWrVC
+EPDKjvbdGYuUaDwb
+DncLKvbdLrXMyuQz
+EPDKjvbdGZUtaEXb
+EOcLKvbdzoQRFDLx
+EPCkKvbdTAFJICOd
+EPDKjvbdNPxRVmfs
+DoCjjvbdauBfxKsh
+DncLKvbdMIbLpxAS
+DoCkKvbdmgEwmNfy
+DoDLKvbdhanbdvqR
+DoCkKvbdSLYfUfjs
+DoCjjvbdTvMQJsaR
+DnbkKvbdlhcspuRa
+DnbjjvbdJSyBSlxM
+EPCjjvbdSLZFuHLT
+DoCkKvbdYTLaNUPY
+EObjjvbdFeiqnJUR
+EPDKjvbdYlRctNkm
+EOcKjvbdHDjvJaij
+DnbkKvbdnCJvwnnV
+DoCjjvbdNHDPlouL
+DncLKvbdWXIxWDdg
+DoCkKvbdJSyAsMwl
+EObkKvbdxmrhXriD
+DnbkKvbdJzpGYEAN
+EOcLKvbdddnqawDK
+EOcLKvbdhyuFkpnG
+DnbkKvbdtAHQhABS
+DoCjjvbdjhGlFemk
+DncLKvbdjJehJmXr
+EPDLKvbdHffyyXwg
+DoCkKvbdRbEFLiZL
+DoCjjvbddePSBwCj
+EPDKjvbdeOeTKtUS
+DnbjjvbdrDeIomvB
+DnbjjvbdVZIUZjoO
+EPDKjvbdxmsIYTIc
+EPCjjvbdDnbkLXDE
+DnbkKvbdYlSDtNlN
+EObkKvbdeFPSBvbj
+EPCkKvbdkDMKpgUg
+DoCkKvbdbKlGPODA
+EObjjvbdGdLVjCKK
+EPCkKvbdkCkjqGuH
+EOcLKvbdqYngfpcx
+EPDLKvbdeKJqvUzn
+DoCkKvbdkIHMGGOL
+DncKjvbdDoDKkXDE
+EPCkKvbdsCGNMHLZ
+EOcKjvbdyzeNqhJI
+DnbjjvbdqwQLbhxq
+EObjjvbdaaWEepPw
+EObjjvbdDxXktUTl
+DnbjjvbddwzTtRez
+DnbjjvbdKQyeOfNe
+EPDKjvbdbBVdepPw
+DncLKvbdfSAvzkbo
+DoDKjvbdqYoIHQcx
+DoCkKvbdeEnrBwCj
+DncKjvbdehLVqnRH
+EPDLKvbdhfjDYuiu
+EPCkKvbdvmWANEEm
+EPCkKvbdZRNEiNFR
+EOcLKvbdCSaCtGXS
+DoDKjvbdbhljKevx
+DoDKjvbdbBVdepQX
+DncLKvbdqTsfrSKt
+EPDKjvbdjEjgVPAO
+DoCjjvbdFeiqmiTq
+EObjjvbdcImJkGXY
+EObjjvbdJbjCqJcY
+DnbkKvbdjcLjpftg
+EPDLKvbdWXJYWEEg
+DoDKjvbdznpREbkx
+EObjjvbdfILVqmqH
+DnbkKvbdxwiKCQZk
+EPDLKvbdOEdUJIjd
+DnbkKvbdsCFmLgKy
+DncKjvbdijFhKMxS
+EPCjjvbdzitpQDrt
+EPCkKvbdZQleImEq
+DoDKjvbdZxdKNcLr
+DncKjvbdGdLVjCKK
+EOcKjvbdhzUfLpnG
+DncLKvbdwzHfGYEr
+EObjjvbdEObjjvcE
+EOcLKvbdfHkVqmpg
+DnbjjvbdXnRAXuVt
+EOcLKvbdeFOrBwDK
+EPCjjvbdzitoocsU
+EPDKjvbdZxdJmblS
+EObjjvbdFjeScHlu
+DoDKjvbdjhGkfFmk
+EOcLKvbduDDVXWPP
+EPDLKvbdJYUCHkpp
+EPCkKvbdkClKpgVH
+EObkKvbdJcKCqJbx
+DncKjvbdEXwlUTsl
+EObkKvbdxwiJbPzL
+DncLKvbdHDjujCKK
+DnbkKvbdEuyQQMie
+EPCkKvbdUaBpsRSZ
+EPCkKvbddoFTKstS
+EPCjjvbduaEYsOeI
+DoDLKvbdcTDKscjB
+DncLKvbdNdcshiKd
+DnbjjvbdWSOYCEkc
+EOcKjvbdZnmiEdzK
+EPDKjvbdUQpnttgm
+DoCjjvbdnGdwmOGy
+DoCkKvbdZyDjNblS
+EOcKjvbdShyjRAAl
+DncKjvbdTkvOaWPJ
+DoDKjvbdOEcsiJKd
+DncKjvbdbVBfxKtI
+EPCkKvbdrafNLfjy
+DoDKjvbduaEZTOeI
+DncLKvbdGGKSNhtR
+EPCjjvbdnBjWxOmu
+EObkKvbdKefICBRV
+DncKjvbdZoNheFZj
+DnbkKvbdEOcKkWbd
+EPDKjvbdNGcPmQUk
+EObkKvbdaMjbStlg
+DnbkKvbdJYTbIMRQ
+DncLKvbdJXsahLpp
+DncKjvbddeOrBvbj
+DoDLKvbdJSyAsMwl
+EPCkKvbdZdwfzhJC
+DoCjjvbduDDVWuno
+DnbjjvbdEztQdkbi
+EOcLKvbdUyHsykOn
+EObjjvbdDjHivYKA
+DoDLKvbdnUtzLKSG
+DncLKvbdSLZFuGkT
+DoDKjvbdlYrrTZGt
+EOcLKvbdqUUGqrKt
+EPDLKvbdEPCjjvcE
+EPDKjvbddxZtTrFz
+EObkKvbdlYrqrxgU
+DoCjjvbdauCGwjtI
+DnbjjvbdQZNAHTRj
+DoDKjvbdMoxRVmfs
+DncLKvbdOTTvGeUp
+DncKjvbdcJNKKewY
+DoDKjvbdmuVZjjSG
+EPDKjvbdUWLpKUAq
+EOcLKvbdSLZGVGjs
+EObjjvbdCIjakJGK
+EPDLKvbdZnmhddyj
+EOcKjvbdLBKgMaxR
+EOcLKvbdDjHjVwjA
+DnbkKvbdYlRcsnLm
+DoCjjvbdrRuKnKaN
+EPCkKvbdptUHSSLU
+DncLKvbdYpmEiNFR
+EObkKvbdMIalQxAS
+DnbjjvbdJuteceHJ
+DncLKvbdFWYpPlie
+EPCkKvbdmgFYMmgZ
+DoCjjvbdmbJvxOnV
+DncKjvbdIGfzZYXg
+EPDLKvbdqTtGqrLU
+EPCjjvbdWRmwbElD
+EPDLKvbdGLErcIMu
+EPDLKvbdwygefYEr
+EPDKjvbdrSUkOLBN
+DoCkKvbdNQYQumfs
+DoCkKvbdRjyGVGjs
+EPDKjvbdmajXXoOV
+DncKjvbdIGgZxwwg
+DnbkKvbdxwiJapZk
+DoDKjvbdYqMdhleR
+EOcLKvbdZtJIxdSn
+EPDLKvbdTIzKRABM
+EPDKjvbdCEPaWJlf
+EOcLKvbdjgflFfOL
+EPCjjvbdZjShQGbG
+DoDLKvbdHDjvJbKK
+EOcLKvbdBiKbLIfK
+DncLKvbdiHJbxujV
+EObkKvbdKeehBaQu
+EPDLKvbdYSlBMsnx
+EObkKvbdmJDsptrB
+DoDKjvbdTkuoAvPJ
+EPDKjvbdZyEJnDLr
+EPCkKvbdZoNhddyj
+EPDKjvbdVZHsykOn
+DnbkKvbdjJegjNYS
+DoDLKvbdtcCtwVno
+EOcKjvbdkIHLefOL
+EOcKjvbdYkqdTnLm
+DnbkKvbdiZuGMQmf
+DoCjjvbdZLrDsnLm
+DoCjjvbdDwwktTsl
+EObjjvbdRzKHrbvA
+DoDKjvbdQlwaxnUz
+EObkKvbdyTOImRag
+EPCjjvbdQmYByOUz
+EObjjvbdbrbkUDjB
+DoDLKvbdGYtuAcwb
+DncLKvbdePFSjssr
+DoDKjvbdRbDdlIxk
+DoDKjvbdwzIGGXeS
+EPCjjvbdOTUVgEuQ
+EPCkKvbdemGWfmJk
+EOcLKvbdZQmEhmEq
+DoCjjvbdZRMeJNFR
+DoCjjvbdvBEZSoEh
+DncLKvbdhlFDnVDZ
+DoCjjvbdJJdAKPfd
+EObjjvbdyYJKCQZk
+EObjjvbdRzKITCvA
+EPCjjvbdUMVnaWPJ
+DoCjjvbdNddThhjd
+EOcKjvbdNPwpvOHT
+DnbjjvbdZisHpHCG
+EObkKvbdGLFScINV
+EOcLKvbdbsDLTdJa
+EObjjvbdbhlijfWx
+DoDLKvbdVZHszLPO
+EObjjvbdZnnJFEyj
+DoDKjvbdeOeSkTtS
+DoDLKvbdkCkjpgUg
+EPCjjvbdFejRnJUR
+DoCjjvbdZsiIyDrn
+DoDLKvbdtunYJqTA
+DnbkKvbdoznELXoA
+DoCjjvbdZtIiYcsO
+EOcLKvbdGGKSOJUR
+DoCjjvbdUMWPAuni
+DnbkKvbdEPDKkWbd
+EPCkKvbdUxhTzLPO
+DoDKjvbdGdKvKBij
+DncKjvbdmSZUzSci
+EPCjjvbdZjShQGaf
+DncLKvbdWRmxCElD
+EPDLKvbdqvpMDIyR
+DncKjvbdCJKakIfK
+EPDKjvbdHELWJbKK
+DoDKjvbdjlbLzFGo
+EPCjjvbdTkvPBWOi
+DoCkKvbdJvVGEFGi
+EOcLKvbdUyHszLPO
+EObjjvbdVBBpsQqy
+DnbkKvbdZdxGzhIb
+DnbjjvbdsPvOicVf
+DoDKjvbdtcCtwWPP
+EOcLKvbdwtmFRYkn
+EPDKjvbdegjvSNqH
+DoDKjvbdIxUBglQp
+EOcLKvbdBcpAvKNG
+DnbjjvbdwXMAvAvV
+DnbkKvbddoEsLUUS
+DncKjvbdCIkCKiGK
+DoDKjvbdlZTSTYft
+EPCjjvbddoEsKtTr
+EObjjvbdFfJrOJTq
+EPDLKvbdliDsqVSB
+DncLKvbdbUagXjtI
+EObkKvbdIsYaSlxM
+EPCjjvbdHkaznXRL
+DnbkKvbdxUmFQyMO
+DoCjjvbdWWiXvDdg
+EPCjjvbdSQUHKFcw
+EPDLKvbdjKGIJlwr
+EOcKjvbdXFxytAOs
+DncKjvbdmbKWwoNu
+EObjjvbdiZuFkpmf
+DoCjjvbdFyVVBDwb
+DnbjjvbdeqaWzlDP
+EPCjjvbdRyjHsDWA
+DnbkKvbdqlzJyMHi
+DnbkKvbdZRNFImFR
+DoCkKvbdYfwEAPSi
+DoCjjvbdOAIrsjSA
+EPCkKvbdaNLCTVMg
+DnbjjvbdqceIomvB
+DnbjjvbdsCFlkgLZ
+DoDLKvbdmIdURUqa
+EOcKjvbdZshhxcrn
+DoDKjvbdZjTIPgCG
+DncKjvbdemGWfmJk
+DnbjjvbdACqxKZiQ
+EObkKvbdkVvnEBxX
+DncLKvbdUtNTfMWK
+EPDLKvbduaDxsPFI
+EObkKvbdgQBzvcxI
+EObkKvbdSZihTDWA
+EOcLKvbdqYnggREY
+EPDKjvbdqiAJdmPF
+EOcLKvbdiGjDZVjV
+EOcLKvbdGZVVAdXb
+DoDKjvbdhfjCxuiu
+DnbkKvbduMYXBTaX
+DoCkKvbdjSziTKiz
+DoDKjvbdqlzKZMIJ
+DnbjjvbdkVwOEBxX
+DoCjjvbddtAUASmW
+DoDLKvbdzjVQQESt
+EOcLKvbdkySrSyHU
+DncLKvbdNGbolotk
+DnbjjvbddeOrBwCj
+DoDLKvbdiLdcmuDZ
+DoDKjvbdSPsfjFdX
+DoCkKvbdbUafxKtI
+DnbkKvbdcJNJkFvx
+EObjjvbdFejSNiUR
+EPDKjvbdQmYCYmtz
+DncKjvbdfVzwpJzs
+EPDKjvbdWRmwbEkc
+DncLKvbdFkEsDIMu
+DoCjjvbdQccBPqES
+EObkKvbdKCibpjCx
+EOcKjvbdLBLHNBwq
+DoCkKvbdUMWOaVoJ
+DoCjjvbdrbFmMGjy
+EOcLKvbdJvVFdEgJ
+EPCkKvbdjhHMGFnL
+DncKjvbdNxOuzcmt
+EPDKjvbdEXxLstUM
+DoDKjvbdwygfGXeS
+EObkKvbdyTNiMrBg
+DncKjvbdlZSrSxgU
+EPDKjvbdJXtCHlQp
+EPCkKvbddndsLTsr
+EObjjvbdNdcshhkE
+DncLKvbdSCDeLhyL
+DncLKvbdNsTvHEuQ
+EOcKjvbdACqxKZiQ
+DoCjjvbdptTgRqjt
+EPDKjvbdOEdTiJLE
+DoDKjvbdrpVoKCvG
+DnbjjvbdFjeSbhNV
+EPCjjvbdNGbolouL
+EPDLKvbdrEFIonVa
+DnbkKvbdOFDsiIjd
+DoCkKvbdTqQoUuIN
+EPDKjvbdeOdsKtTr
+DncKjvbdyNrhXsIc
+EPDKjvbdnQZxujyC
+EPCkKvbdYqMdhmFR
+DncLKvbddeOrBvbj
+DoCjjvbdLGFgbApu
+DoCjjvbdemFwHMik
+DoCkKvbdRXOEClHc
+DoCkKvbdZQmEiNFR
+EPCjjvbdEASIlzXX
+DnbkKvbdrWokbiZR
+EObkKvbdHELWKBij
+DnbkKvbdbUagXkUI
+EOcKjvbdbsDLUDia
+EOcLKvbdUWLojUAq
+DnbjjvbdQvmccMID
+DoDKjvbdZxcjODMS
+EPDKjvbdTulPjUBR
+DncLKvbdjSzhsKiz
+EOcKjvbdTAFJICOd
+DnbkKvbdKNADzHVB
+DoCjjvbdliDtRVSB
+EObjjvbdWXIxVceH
+EPCjjvbdfHkWRnQg
+EObkKvbdjAQGaPgK
+EObkKvbdkClLRGuH
+DncLKvbdZnnIdeZj
+EObjjvbdlYsRsYgU
+DoDLKvbdpyPHgQcx
+DnbjjvbdnPyyWKyC
+EObjjvbdQwNcblID
+DnbjjvbdCJKajhfK
+EPDKjvbdiHKCyWKV
+EObjjvbdeEoRavbj
+EOcKjvbdmaivwnnV
+EOcKjvbdwNWANDeN
+EPDKjvbdTAFIhCPE
+DoCjjvbdZQleJMeR
+EPDKjvbdmtuZjiqf
+DnbkKvbdEPCkLXCd
+EObkKvbdqGEEsvBI
+EOcKjvbdmIdTqVSB
+EObjjvbdJTZBSlwl
+EPCjjvbdqlzKZMIJ
+EPDKjvbduCbtwWOo
+EPDLKvbdnPzYukYb
+EPDKjvbdeFPSBvbj
+EPDLKvbdHEKvKCJj
+EPDKjvbdVUNUGLuj
+EOcLKvbdJuuGEEgJ
+EOcKjvbdzQnmJKXA
+EOcLKvbdrbGMkfjy
+DnbjjvbdUsltFkuj
+DnbkKvbdDxYMUUUM
+DnbjjvbdUQpoUuHm
+EPDKjvbdRbDdlJZL
+DncLKvbdmgFXlmfy
+EPCjjvbdJbibqJcY
+DoCjjvbdEPDLLWcE
+DoDLKvbdMJCMRYAS
+DoCkKvbdQZNAGsSK
+EObjjvbdiCPDFXQq
+EOcLKvbdVwJXvEEg
+DoDLKvbdsrqsYzFD
+DncLKvbdjuvnDbXw
+EPDKjvbdhgKCyWKV
+DoDLKvbdNdctIiKd
+EObkKvbduaEYrneI
+DoCkKvbdNVSrKmAX
+DncKjvbdXnRAXtvU
+DoDKjvbdhkddNtcZ
+DoCkKvbdiBnbdwQq
+DnbkKvbdLBLGlawq
+DoDKjvbdygZMANEw
+DnbkKvbdZsiIxcsO
+EObjjvbdiBoDEwRR
+DoCjjvbdHbLzEzAD
+EPCkKvbdjbkkQgVH
+EOcLKvbdsBemLgLZ
+EOcLKvbdptUGrRkU
+EPCjjvbdznpQdbkx
+DoDKjvbdGYtuAdXb
+EOcKjvbdzjUpQETU
+EOcLKvbdypoNIjXA
+DnbkKvbdSQUHJfDw
+EPCkKvbdbsCjtEKB
+DoDLKvbdajlFoODA
+DoDKjvbdelevfmKL
+DnbkKvbdCTAbsfWr
+DoDKjvbdjhGlGGNk
+DoCkKvbddCTMrATm
+EPDLKvbdaMjbSuMg
+DoCkKvbdKaLHNCYR
+DncLKvbdGGKSNiTq
+DoCjjvbdLZRJrztf
+EPDLKvbdjlakyeGo
+EObkKvbdwuMdpyLn
+DnbkKvbdegjuqnQg
+EPDKjvbdtTSTYydc
+EObkKvbdZyDjOClS
+DnbkKvbdqGEEtWAh
+EOcLKvbdKQydoFnF
+EPDLKvbdqUTgSSKt
+DnbjjvbdMJCMQxAS
+EPCkKvbdiMFDnUby
+EOcKjvbdfpBzwEXh
+DoCkKvbdSBceMIxk
+EObjjvbdfMevgMik
+EPCjjvbdjAQHAofj
+EPCjjvbdZLrETnMN
+EObkKvbdDoDLLXCd
+DncLKvbdSZjHsDWA
+DnbjjvbdOStVgFVQ
+EObkKvbdbhlijfXY
+DnbkKvbdjEjftoAO
+DoCjjvbdeEnrCXDK
+EOcLKvbdZyEKNcMS
+EPDKjvbdWSNwadkc
+EPCjjvbdkDLjqHUg
+DoCkKvbdSCEFLiYk
+DncKjvbdtkwwBTaX
+EPDKjvbdCTAbsevr
+DncLKvbdmfdwlnGy
+DncLKvbdTukpJtBR
+DoCjjvbdlYrrTZGt
+EOcKjvbdnCKWwoOV
+DncKjvbdMgColpVL
+EPDLKvbddwytURez
+DoCkKvbdakLenmcA
+EPCkKvbdQvmdCkhD
+DncLKvbdEARhlzWw
+EOcLKvbdrXQMDJYq
+EObkKvbdmJETptrB
+EOcKjvbdAMgxsXZx
+EPDKjvbdULvPBVni
+DoDKjvbdqGEFTvAh
+DoDKjvbdGLFTChMu
+DoCjjvbdLBKgNCXq
+DoCjjvbdOEcsiJLE
+EObjjvbdSLZFuHKs
+DoCjjvbdtkxXAsaX
+DnbjjvbdNGbpNQVL
+EOcLKvbdiLeEOUby
+EObjjvbdDoCjjwDE
+EPCkKvbdxrnJMrCH
+EPDKjvbdJTZBTMwl
+DncKjvbdBcpBWJlf
+DncLKvbdGKdsDHmV
+DncLKvbdDwwlUUTl
+EPDLKvbdbQHHELzd
+EPDLKvbdYlSEUOLm
+EObjjvbdhtyeXSUb
+EPCjjvbdACqxKZiQ
+EObjjvbdrDdiPmua
+EPCkKvbdcyxpYYqC
+EPDKjvbdrXQLbiZR
+DncKjvbdjmBlZeHP
+DncKjvbdlYrrTYft
+EObkKvbdaaWFFpPw
+DncKjvbdwyhGFwdr
+EPCkKvbduLxXAtBX
+EObjjvbdhancEvpq
+DncLKvbdbiMjKevx
+DncKjvbdTIyjRABM
+DoCkKvbdcImKLFvx
+DnbkKvbdZjSgpHBf
+EPCkKvbdGdKvJbJj
+EOcLKvbdSCDeMIyL
+EOcKjvbdZxdJnClS
+EOcLKvbdHDkVibJj
+DoDKjvbdezuxeJTw
+EOcKjvbdqFceUVaI
+EPDKjvbdWIYWXfxz
+DoDKjvbdNQXqWOHT
+DnbkKvbdOStWHEtp
+EPDKjvbdLAkGmBxR
+EPDKjvbdDxXksssl
+EPCkKvbdTqRPVUgm
+DoDLKvbdrDdhomvB
+DncLKvbdptUGrSKt
+EOcKjvbdiBnbeWqR
+DoDKjvbdezvYeJUX
+DnbkKvbdOAJStJrA
+DnbjjvbdtcCuWvPP
+DnbjjvbdIjEAKPgE
+EObkKvbdWWiXvEEg
+DnbkKvbdSBdFMJYk
+EOcKjvbdQdCaQQcr
+EPDLKvbdLZRKSzuG
+DoCkKvbdpfEFTuaI
+DnbkKvbdVBBqSqRy
+DncLKvbdMoxRVnGs
+EOcLKvbduoTzqKnt
+DoCjjvbdxxJKCPyk
+DncLKvbdVvhwvEFH
+EPDLKvbdOYPVzcnU
+EOcLKvbdBdPaWJlf
+DnbkKvbdJSyAsMwl
+DoCkKvbdYTLaMsnx
+EOcKjvbdUWLpJsaR
+DoCjjvbdhbOcEwRR
+DncKjvbdKfGHbAqV
+DoCjjvbdlZTSSyGt
+DncLKvbdatbGxLTh
+EPDLKvbdiGicYvKV
+EOcLKvbdTIyjRAAl
+EPDKjvbdZsiIyDsO
+DnbjjvbdZLqcsmlN
+EOcLKvbdeOeTLTtS
+DncKjvbdQdCaPqDr
+EPCjjvbdUGznLvvF
+EObkKvbdrDdhpNvB
+EPDLKvbdRadFLhxk
+DnbjjvbdhytelQmf
+EPDKjvbdFkFSbhNV
+DoDKjvbdaSGDHsek
+EObkKvbdzHYlAMdw
+DnbjjvbdliDsptrB
+EPCkKvbdYlSDtNlN
+DoDKjvbdnPyxujxb
+EObjjvbdRkYfVGjs
+EPCjjvbdRaceMJZL
+EOcLKvbdnUuZkJrG
+DncKjvbdOYOuzdNt
+DoCkKvbdJbjDQicY
+DnbjjvbdRyjHsCvA
+EOcLKvbdUGzmlXVe
+EPCjjvbdMoxRWOGs
+DncKjvbdlrZUzTEJ
+DoCjjvbdJYUBgkpp
+EOcLKvbdACrXizJQ
+EPDKjvbdsCGMkfkZ
+DncKjvbdqYnhGqEY
+DncLKvbdjgflFemk
+DncKjvbdrzMQTAgn
+DoCjjvbdlZTSSxgU
+EPDLKvbdKCibqKCx
+EOcLKvbdmJDtQuSB
+DncLKvbdQcbaPqES
+DoCjjvbdOXoVzdNt
+EObkKvbdbsCjsdKB
+EPDKjvbdySmiMqbH
+DoCjjvbdrMzKZLhJ
+DncKjvbdtAGqIAAr
+EPCjjvbdEXxMTtUM
+EOcKjvbdVrOYBdkc
+DoDKjvbdzROlhiwA
+DncKjvbdqTtHRrLU
+DnbkKvbdiUzEwSUb
+DoCkKvbdZLqcsnMN
+DnbjjvbdUaBqTRRy
+DoDKjvbdRosgKGEX
+EObkKvbdShzKRABM
+DoDLKvbdqZOhHRDx
+EPDLKvbdiUzFWqtb
+DoCkKvbdZyEJmbkr
+DncKjvbdREDBPpdS
+EPCjjvbdMSWmZtpz
+EPDLKvbdTAEiHaoE
+DoDKjvbdNeETiIjd
+EOcLKvbdqdFJPmua
+DoCkKvbdRpTfjFcw
+DncLKvbdznoqEcMY
+DoCkKvbdFfJqmiUR
+EOcLKvbdSPsfifEX
+DnbjjvbdtunYJpsA
+EPDKjvbdqcdiQOVa
+DnbkKvbdeXyssrFz
+EPDLKvbdQYmAGrqj
+EObjjvbdegjuqmpg
+EOcLKvbdbLLenmcA
+EOcLKvbdpyPHgREY
+DoDKjvbdZRMdhmEq
+DncLKvbddZxoxZRC
+EOcKjvbdKxpjSztf
+EPDKjvbdKkBHvAJy
+EObkKvbdnBiwYOnV
+EObkKvbdrWolDJYq
+DoCkKvbdZyEJmbkr
+DoDKjvbdkDMLRHUg
+EPCjjvbdQwNccMID
+DncKjvbdSZihSbvA
+DncLKvbdnHFXmNgZ
+DncKjvbdGKeSbhMu
+DncLKvbdULvPAuoJ
+EOcLKvbdYqNFJMeR
+DoDLKvbdMfcPmQVL
+EPDKjvbdFpATWgGZ
+EObjjvbdeqaWzkbo
+EOcKjvbdZoNhddzK
+EObjjvbdFeiqmiTq
+DoDKjvbdauBfwjsh
+EOcLKvbdBraDUFvr
+DoDLKvbdyYIjCPzL
+DnbjjvbdmRxuZsEJ
+EObjjvbdMfcQMpUk
+EOcKjvbdyNsIXrhc
+EPDKjvbdREDBPpcr
+EPCjjvbdRkYeuGkT
+EPCkKvbdtAHRIAAr
+DnbkKvbdxUmFQxkn
+EObkKvbdtTSTZZdc
+EOcKjvbdmIdUQtqa
+EOcKjvbdXrkaNUPY
+DoDKjvbdCWzdIePv
+DoDKjvbdbBVdfQPw
+EPCjjvbdZyEJmblS
+DncKjvbdlZTRrxft
+EPDLKvbdIxUCIMQp
+DnbjjvbdKyRKSztf
+EOcKjvbdNeEUIhjd
+EOcLKvbdjKGIJmXr
+DoDLKvbdCEPaVimG
+EPCkKvbdOFDsiIkE
+EOcLKvbdehKvSORH
+DoDKjvbdwWkaWAuu
+EPDKjvbdpxoHfpcx
+EPDKjvbdJbjCqJbx
+DncKjvbdZtJJZETO
+EPDLKvbdsZkpTBHn
+EPCkKvbdTlWPAuoJ
+DoCjjvbdjggMFfOL
+DoDKjvbdfMewGlik
+EPDLKvbdnBivwoOV
+DoCjjvbdwuNEpxkn
+DnbkKvbdiifIKNYS
+EOcKjvbdKVuFdFGi
+EPCjjvbdZdxGzgiC
+EOcLKvbduaDxsPEh
+EPCkKvbdRotHJfEX
+DncLKvbdCIjajhej
+DoCkKvbdcImJjfWx
+EOcLKvbdKVtecdgJ
+DoCjjvbdeFOrBwCj
+EPDKjvbdqvpLcIxq
+EObjjvbdEARiMyvw
+DncKjvbdbUafxLTh
+DncLKvbdLAkGmCYR
+DoDKjvbdxVMdqYkn
+EPDKjvbdWWiYWDdg
+EObkKvbdKDJbpjCx
+DoCkKvbdnPyxvKyC
+DoCkKvbdZsiJYcsO
+EObkKvbdJpzFOeme
+EOcLKvbdOSsufeUp
+DoDLKvbdTfznMWvF
+EPDLKvbdfNFwGlik
+EPDLKvbdCDpAuilf
+EPDKjvbdbiMikGWx
+DoCkKvbdrbGMkfjy
+DoCjjvbdWIXuxHYz
+EPDKjvbdGFiqnIsq
+EPDLKvbdNGbpMpVL
+EOcLKvbdtSrTYyeD
+DoDKjvbdjJfHjNXr
+EPCkKvbdzitpPcrt
+DoDLKvbdxmrgxSiD
+EPDLKvbdcJNKLFvx
+EPDLKvbdsrrSxydc
+DnbkKvbdqceIonWB
+EPCkKvbdZnnIddzK
+DoCjjvbdLYpirztf
+EPCjjvbdLrWlzUpz
+DnbjjvbdRkZGVGjs
+EObjjvbdnBivxOmu
+DoCjjvbdmIdUQuSB
+EObkKvbdtcCtvuoP
+DnbjjvbdANIYrvzY
+DncKjvbdmaivwoNu
+EOcLKvbdrouoJcWG
+DoDLKvbdTppoVVIN
+DoDLKvbdVUMtFkuj
+DncLKvbdznpQdblY
+DncKjvbdEPCkLXDE
+EOcLKvbdfHkVqmqH
+EPDKjvbdapGgDkzd
+EPCjjvbdSPsfifDw
+DoDLKvbdGKeTDINV
+EObjjvbdyqPNIjXA
+EPCjjvbdatbGwkUI
+DoCjjvbdCTAcTewS
+DnbjjvbdxnTIXsJD
+EOcKjvbdbKlFnnDA
+DncKjvbdjJegjNXr
+EObjjvbdMuTRkNAX
+EObkKvbdUxgsykOn
+DoCkKvbdRaceMIxk
+EPDLKvbdJbibpibx
+DoDKjvbdEztQdlCi
+EPDKjvbdcyyPwyRC
+DncKjvbdjlbMZdfo
+EPCkKvbdRXNdClID
+DncLKvbdtbbuXVoP
+DoDKjvbdieLHVPAO
+DoDKjvbdFVxopMie
+EObjjvbdzoPpdblY
+EPCjjvbdmIdUQuSB
+EPCkKvbdYkrEUNkm
+DoCkKvbdVwIxVdEg
+DoCjjvbdOSsvGdtp
+EPCjjvbdmSYtysDi
+EObkKvbdWWiYVceH
+DoDKjvbdrNZixkgi
+EPDKjvbdbVCHYKsh
+DnbkKvbdjKFgimXr
+EPDKjvbdNsUWHFUp
+EObkKvbdeAUQlwjG
+EOcKjvbdTAEiICPE
+DoCkKvbdZLqdUNkm
+EOcKjvbdZisHogCG
+EPCkKvbdKVtfEEgJ
+EObjjvbdaSGDIUGL
+EPDKjvbdZRNFIleR
+DoDKjvbdyXiJaoyk
+EObkKvbdRkYfVHKs
+DnbkKvbdLAkHNCXq
+DncKjvbdJpyePFnF
+EPCkKvbdkHgMFenL
+DoDLKvbdOFDtIhkE
+DoCkKvbdtTSTZZdc
+EOcLKvbdkClKpfuH
+DoCjjvbdBcpBVjNG
+DnbkKvbdfMfXHNJk
+DoDKjvbdBsBCtFvr
+DoCjjvbdHgGzYwwg
+DncLKvbdSwjkmzkY
+DoCkKvbdDihJuwjA
+EPDKjvbdQccBPpdS
+EPDKjvbdehLVqnQg
+DoCjjvbdmozZVkZC
+DoDLKvbdaNKasVNH
+EObkKvbdrRtkOLBN
+DoDKjvbdehLWRnRH
+EObkKvbdSCEEkiYk
+DoCjjvbdRXOEDMID
+EOcKjvbdFejRmiUR
+EOcLKvbdFkEsChNV
+DncKjvbdWWhwuceH
+EPCkKvbdNwoVzdOU
+EOcKjvbdePFSkUTr
+DoDKjvbdMRwMzUpz
+EObjjvbdLrXMzUpz
+EPDKjvbdZxdJnDLr
+EOcLKvbdrRtkNjaN
+EPCkKvbdTvLoitBR
+DncKjvbdKeehCApu
+EPDLKvbdemFvfljL
+DncLKvbdeFOqawCj
+DoDKjvbdZyEJnCkr
+DoCjjvbdlZTRsZHU
+DnbkKvbdRbDdlJZL
+DnbjjvbdYqMdiNFR
+EObjjvbdSQTfjFdX
+DoCjjvbdgFlZnGgA
+DoDLKvbdwtldqYkn
+EObkKvbdjggLfFmk
+DncLKvbdMgCpNPtk
+DncKjvbdmpZyWKxb
+EPDKjvbdVqnYBeMD
+DoDKjvbdULuoBWOi
+DncLKvbdezvZEiTw
+EPCkKvbdjblLRHUg
+EPCjjvbdBiKakJGK
+DncKjvbdTukpJtAq
+DoCkKvbdkWWnEBxX
+EPCjjvbdnPzYvLZC
+EOcLKvbdWHxVxGxz
+DncLKvbdNsUWHEtp
+EObkKvbdHDkWKBij
+EObkKvbdVAbQsQrZ
+DnbkKvbdKCibqKDY
+EObjjvbdLYqKSztf
+DoCkKvbdZLrDtOMN
+EOcKjvbdemFvgNJk
+DncLKvbdiCOcEvpq
+DnbkKvbdEXxLtTtM
+EObkKvbdFjdrbglu
+EObkKvbdmttykJrG
+DoCjjvbdePFTLUTr
+DoCkKvbdWRmwadlD
+DoDLKvbdVqmxCElD
+EPCkKvbdnBiwXoOV
+DnbjjvbdEvZQPmKF
+EObkKvbdSKyGVGkT
+EPCjjvbdauBgXkTh
+EPCjjvbdVrNxBeLc
+EObjjvbdOEcshiLE
+DoDLKvbdbLMGPNcA
+DnbkKvbddZxpYYqC
+DoCkKvbdlZTSTZHU
+EObkKvbdtlXwBTaX
+EObkKvbdHffyxwxH
+EPDKjvbdrpWOicVf
+DncKjvbdkVvmdBww
+EPDKjvbduaDySoFI
+EObkKvbdsZkosBHn
+DoDLKvbdTAFJICOd
+DnbjjvbdpstHRrLU
+DncKjvbdUQqOtuIN
+EPDKjvbdVUMtFlWK
+DoDLKvbdrouoKDVf
+DoCjjvbdmRyUysDi
+EPDKjvbdgFkzNgHA
+DnbjjvbdZshiZDsO
+DnbjjvbdIMBzmwRL
+EObjjvbdZshhxdTO
+EOcLKvbdZGwEAOri
+EPCkKvbdkHflFfOL
+DoCkKvbdKDJcQibx
+EOcLKvbdFkEsCgmV
+EPCjjvbdJutfEEgJ
+DoCkKvbdOXnuzdNt
+EPDLKvbduLwwAtAw
+DoDKjvbdqvpLbiZR
+EPCjjvbdGYuVBEXb
+EOcLKvbdCJKajhfK
+DnbjjvbdkMbLyeGo
+EPCkKvbdijGIKMwr
+DoDLKvbdJzpGXdAN
+DoDKjvbdNwnuzdOU
+EOcLKvbdtSqsYyeD
+EOcLKvbdmRxuZrdJ
+EPDKjvbdhlEcmtcZ
+DoCkKvbdbiNJjevx
+DoDKjvbdGckVibJj
+DoDLKvbdGLFSbhMu
+EPDKjvbdEObjkWbd
+EObkKvbdBhkBjiGK
+EPDKjvbdtAGqIAAr
+DoCkKvbdWRmwadkc
+EObjjvbdQdDAoqDr
+EOcLKvbdwNWANDeN
+EPCjjvbdMowqVmgT
+EPDLKvbdegkWSNpg
+EPDLKvbdjAQHAogK
+DoDLKvbdvwLaVaWV
+EPCjjvbdLGFgbBQu
+DoCjjvbdxsOJMrCH
+EObkKvbdFkFTChMu
+EObjjvbdbLLenmcA
+EPDLKvbdiCObeXRR
+EPCjjvbdhbObdvpq
+EObkKvbdVZIUZkOn
+EPDLKvbdfVzxPizs
+EPDKjvbdnPyyVjyC
+DncLKvbdRzKITCvA
+EOcLKvbdUtMsfLuj
+DncKjvbdVBBpsRRy
+DnbkKvbdzeZnzdzQ
+EOcLKvbdUtNTfMVj
+EObjjvbdqcdiQOWB
+DoCkKvbdNddTiIjd
+DncLKvbdrykosBHn
+EPDKjvbdWRnYBeLc
+DncLKvbdrXQLcIxq
+EPCkKvbdUWLpKTaR
+DoCkKvbdZRNFJMeR
+EPDLKvbdunszpjoU
+DoDKjvbdzitpPdSt
+EObkKvbdvBDxrneI
+DoDLKvbdVviXvDeH
+EPCkKvbdDihJuxKA
+EPCkKvbdNPxQunGs
+DoCjjvbdmuUzKjRf
+DnbkKvbdbPffdLzd
+DoDLKvbdXrlBNTnx
+DoDKjvbdZQmEhmFR
+EObjjvbdmttzLKRf
+DoCkKvbddijRvUzn
+EPDLKvbdHffyyYXg
+EPCkKvbdcTDKtEJa
+EPCkKvbdpecdtWAh
+DncKjvbdRjxeuGkT
+EPCjjvbdqdEhpOVa
+EPCjjvbdelfXGmJk
+EObkKvbdWWhwudFH
+EPDKjvbdhbObeXQq
+DoCkKvbdffLynHHA
+DnbjjvbdpaJFAXIE
+DoDKjvbdqZPIGpcx
+DoDLKvbdmaivxPOV
+DncKjvbdqFdEsvAh
+EPCjjvbdrpWOibvG
+EPCkKvbdyfyMAMdw
+DoDLKvbdhuZdvqtb
+DncLKvbdWRnYBeMD
+DncLKvbdDncLKvbd
+EObkKvbdhzUfLpnG
+EOcLKvbddoFSkTtS
+EPDKjvbdbKlFoODA
+DoCkKvbdRWmccLhD
+EObjjvbdeAUQlxJf
+DncLKvbdKVuGEEfi
+EObkKvbdVvhwvEEg
+EPDLKvbdhaoDEvqR
+EPDKjvbdpfEFTvBI
+EPCkKvbdyzeNrIJI
+DoDLKvbdGckViaij
+EObjjvbdnHExNNfy
+EObkKvbdZLqdUOLm
+DoDLKvbdDxXktTsl
+EObkKvbdFVxpPmKF
+DoDKjvbdNdctJJLE
+DnbkKvbdTXkMNzjx
+DncKjvbdbrbkUEKB
+DoCkKvbdGKeSbhNV
+EPDKjvbdYSkaMtOx
+EPCjjvbdiGicYujV
+EObjjvbdnHFXmOGy
+DoDKjvbdZyDjNblS
+EOcLKvbdGYtuBEXb
+DnbjjvbdqGDeUWAh
+DnbkKvbdTppnuVHm
+EOcLKvbdPyNAGsRj
+EPCkKvbdIrxaSlxM
+DncKjvbdCfkfHAzc
+DnbkKvbdIHHZxxXg
+EPCjjvbdjKFhKMxS
+EOcKjvbdehKvRnRH
+EObjjvbdxVMdpyMO
+DnbjjvbdSLYetgKs
+EObkKvbdRjyGUfkT
+DoCjjvbdwyhFeweS
+DncLKvbdrJAKElne
+EPCjjvbdiGjCxvKV
+EPCjjvbdCIjajiFj
+DoDLKvbdunszqLPU
+DnbjjvbdySmhlrCH
+DnbkKvbdnBjWxPNu
+DoDKjvbdlhdTqUrB
+DoCjjvbdGdKvJajK
+EObjjvbdkySqryHU
+EPCjjvbdYkqdTmkm
+EObkKvbdDnbjkXDE
+EPDKjvbdKDKCqKDY
+EOcLKvbdeYZstSFz
+EPDKjvbdZyDjNbkr
+DncLKvbdPyNAGrrK
+DoCkKvbdTlVoAuni
+DncKjvbdEPCkKvbd
+EPCkKvbdcTCkTcjB
+DnbkKvbdcJNKLGXY
+DnbjjvbdRkYfVHKs
+DoDLKvbdaaWEfQQX
+EPDKjvbdmbJvwnmu
+EOcLKvbdZyDimcMS
+DoDLKvbdYkrEUNkm
+DoDKjvbdmaivwnmu
+DoDLKvbdqYoIHQcx
+EPDKjvbdLrWlyuQz
+DncLKvbdkCkkQgVH
+EObjjvbdrXPlChyR
+DoCjjvbdJTYaTMwl
+EPCkKvbdNsTvHFVQ
+DnbjjvbdeEnqavcK
+EPCjjvbdVvhwuceH
+EPCkKvbdbLMFoODA
+EPDLKvbdCIkCLIfK
+DoDLKvbdbLLennDA
+DncLKvbdyNrhYTIc
+EPDLKvbdNHCpNQUk
+DnbkKvbddndsLUTr
+DncKjvbdaogHDkzd
+EPDLKvbdZjSgpGbG
+DnbjjvbdaSGDIUGL
+EPCkKvbdjhGlFfNk
+EPDLKvbdbKkenmcA
+EOcKjvbdIHHZyXxH
+DoCjjvbdiUydwRtb
+EPDLKvbdauBgYKtI
+EPDLKvbdZMSDsmlN
+DoDKjvbddneSjtTr
+EPCjjvbdJbibqJbx
+DnbjjvbdGYtuAcwb
+DoDLKvbdsQVoJbvG
+DoCkKvbdxmrhXsIc
+DoCjjvbdyNsHwsJD
+DoCkKvbdKWVFceGi
+DoDLKvbdsBfNMGkZ
+DnbkKvbdJzoewdAN
+EPDKjvbdwzHefYFS
+DnbjjvbdBiKbKhej
+EOcKjvbdjuvmdCXw
+EOcKjvbdbhmKKevx
+DoCjjvbdehLWRmpg
+EPCjjvbdACrYJzJQ
+EOcKjvbdhuZeXSUb
+DoCkKvbdJcJbqJcY
+EPDKjvbdYqMeJNEq
+DncLKvbdmJDtRUqa
+EPDKjvbdnBjWxOnV
+DoDLKvbdOEctJIkE
+DoCjjvbdDxYLtTtM
+EOcLKvbdZnnJFFZj
+EOcKjvbdKRZeOfNe
+DoCjjvbdTukpJtAq
+DoDKjvbdhyuGLpnG
+DoDKjvbdhtzFWrUb
+DnbkKvbdQccBQRDr
+EPCjjvbdTukojUBR
+EPDKjvbdeKKRvUzn
+EOcLKvbdeXzTtSFz
+DncKjvbdyTOJNSCH
+EObkKvbdjmBkydfo
+EPCjjvbdelevflik
+DoDKjvbdZtJIxcrn
+DoDKjvbdqiAJeNOe
+DoCjjvbdddnqavbj
+DoCjjvbdZLrDtOMN
+EPDKjvbdZyEKNcLr
+EObkKvbdMgDPmQVL
+EPCjjvbdxrmiMrBg
+EObjjvbdZGvdAPSi
+EPCkKvbdvvkaWBWV
+DncKjvbdfMewHNJk
+DoCjjvbdlrYtyrdJ
+DncLKvbdiLeDnVCy
+DnbjjvbdvwLaWBWV
+EOcLKvbdVBCRSprZ
+DoDLKvbdYzbfSKVy
+DnbkKvbdXrlBNUPY
+EObjjvbdKfFhCAqV
+DoCkKvbdVTmTekvK
+EPDLKvbdaSGChTfL
+DncLKvbdauCGwjsh
+EObjjvbdBcpBWJlf
+DnbjjvbdZjTIQHCG
+DoCkKvbdDjHiuxKA
+EObkKvbdZxdKNblS
+DoDLKvbdptTfrRjt
+DoDLKvbdJbjCqKDY
+EOcKjvbdEJhKWYKA
+DnbkKvbdssSSyZeD
+EOcLKvbdZshhyESn
+EPDKjvbdRjxfUgKs
+DncKjvbdwygefYEr
+EPCkKvbdiLeEOVCy
+DnbkKvbdTvLojTaR
+DoCkKvbdzdzOzdyp
+EPDKjvbdVUNUGMWK
+EObjjvbdqdEhonVa
+EPDKjvbdKefHbAqV
+DncKjvbdtSqsYzFD
+DoDLKvbdZjTIPgBf
+EPCkKvbdRjyFuHLT
+EOcKjvbdUtMsfLvK
+DoCjjvbdnHEwlnGy
+DnbjjvbdURQnttgm
+DoCkKvbdFfJrOIsq
+DoDLKvbdjKGIKMwr
+EOcKjvbdTAEiIBnd
+EPDLKvbdFxttaEXb
+DoDKjvbdJTZAsNYM
+EPCkKvbdFejSNhtR
+EPDKjvbdwkXEHzyf
+DnbjjvbdbUafxLTh
+DoCkKvbdZQleJNEq
+EPCjjvbdmpZyVkZC
+DnbjjvbdmJEUQuRa
+EObkKvbdrEFIpNua
+EOcLKvbdJpzEnfNe
+DnbjjvbdyTNiMqag
+EObjjvbdNQYQvOHT
+EPDKjvbdGKdrbgmV
+EOcLKvbdCJKakIej
+DncLKvbdlhcsptrB
+DnbjjvbdZirhPfaf
+DncKjvbdZoNiFFZj
+EOcLKvbdjuwNcaww
+EOcKjvbdUyITzLPO
+DnbjjvbdxVMdpyLn
+EObjjvbdnCJwXnnV
+EPCjjvbdIMBznWqL
+EObkKvbdJpzFOenF
+EObjjvbdlhdTpuRa
+DncLKvbdSCDdkiZL
+EObjjvbdZxcimcMS
+EOcKjvbdxVMdqZLn
+DoCkKvbdrJAKFMne
+EObjjvbdXsMAmUPY
+EObjjvbdeFOqbWbj
+DncKjvbdCTBCsfWr
+DoCjjvbdRyjHsCvA
+EPDKjvbdziuQQDrt
+EOcLKvbdziuPocrt
+EPCkKvbdWWhwvEEg
+EPCkKvbdeEoRavcK
+EPCjjvbdSKyFuGkT
+EPCjjvbdrEFIonWB
+EObjjvbdrEFIpOVa
+DncKjvbdzGyMANEw
+EPDKjvbdrRtjmjaN
+DoCkKvbdJbjDRKDY
+EObkKvbdfNFvgNKL
+DnbkKvbdZHWdAPTJ
+EPCjjvbdCDoaWKMf
+DncLKvbdJKEAKPgE
+DnbjjvbdssSTYydc
+EOcKjvbdIsYaTNYM
+EPCkKvbdgPazvcxI
+DoCjjvbdmozYvLYb
+DnbkKvbdeATqNYKG
+EObjjvbdIwsbIMQp
+EPDLKvbdpssfrSKt
+EPCkKvbdhzUfLpmf
+EOcKjvbdNGcPlpUk
+DncLKvbdhkeEOVDZ
+EPDKjvbdLFfIBaRV
+EPCkKvbdJuuGEFGi
+EOcKjvbdRacdlJYk
+EPCjjvbdmbKWxOmu
+EPDLKvbdwtmFQxkn
+DnbjjvbdgvyAzzAJ
+EPDKjvbdNrsugFVQ
+DncKjvbdmttzLKRf
+DnbkKvbdZyEKNcLr
+EObkKvbdxrmiNRag
+DoDLKvbdiMFDnVCy
+EObjjvbdWSNxBdlD
+DnbkKvbdCTBDUFwS
+DoDKjvbdYTLaMtPY
+EOcLKvbdZtIiZDrn
+EObjjvbdYzcGSJvZ
+EObkKvbdCSaDUFvr
+DoCjjvbdTppnuUgm
+DoCkKvbdOTUVfduQ
+EOcLKvbdfpBzwDwh
+DncKjvbdGBPQyJzm
+EPCjjvbdVZITyjnn
+EObkKvbdVhXuxGxz
+EObjjvbdiifHimXr
+EPDKjvbdvwMAvAvV
+EOcKjvbdkWXODbYX
+DoDKjvbdmbKXXnnV
+DoDLKvbdZsiJZDrn
+DoCkKvbdlrZUzTDi
+DoDKjvbdSQTfjGEX
+EOcKjvbdqcdiPnWB
+EOcLKvbdpssgSSKt
+EPDLKvbdhkeENuCy
+EPDKjvbdZQmEhmEq
+DoDKjvbdZtJIxcrn
+DncLKvbdhgJbxujV
+DoCkKvbdDoDKkXCd
+EObkKvbdZGvdAOsJ
+EObkKvbdwjvdHzyf
+EPCjjvbdUQpoUuHm
+EPDKjvbdUGznMXVe
+DnbjjvbduaEYroFI
+DoDLKvbdehLWRnRH
+DoDLKvbdgQBzwEYI
+EObkKvbdbUagYKsh
+EObjjvbdyqPMhiwA
+EPDKjvbdvvkaWBWV
+DnbkKvbdJTYaTNYM
+DoDKjvbdZtIhxdSn
+EOcLKvbduaEZTOdh
+EObjjvbdkNCMZeGo
+EPCjjvbdZLqdTnLm
+DoCkKvbdUsltFkuj
+DncKjvbdnPyyVkZC
+DoDLKvbdwjvdHzzG
+EPCkKvbdGKdsCgmV
+DnbjjvbdiMFDmtby
+EObjjvbddneSjtUS
+DncLKvbdezvZFJUX
+EPCjjvbdhbOcFWqR
+DoCkKvbdaMjbTVMg
+DoDLKvbdHDjvKCJj
+EOcLKvbdpxoIHRDx
+DoDKjvbdZshhxcrn
+EOcLKvbdcJNKKewY
+EObjjvbdTppntuHm
+EPCjjvbdemGWfmJk
+DoCkKvbdjcLkQftg
+EObkKvbdQwODbkgc
+EPDLKvbdCTAcUFwS
+DnbjjvbdvOszpkPU
+EOcKjvbdkClLRHUg
+EOcLKvbdNHCpMpVL
+EObjjvbdZMRcsnMN
+DoCjjvbdpxnggQcx
+EOcKjvbdyTOJNRbH
+EPDKjvbdeKKRutzn
+DncKjvbdrzLosAgn
+EPDKjvbdYzcGRjWZ
+EPDKjvbdQcbaPpdS
+DnbkKvbdtkxXAsaX
+DncKjvbdCDpAvKMf
+EPDKjvbdHEKvKBjK
+EOcKjvbdfpBzvdYI
+DncLKvbdiifIJmYS
+EPDLKvbddeOqbWbj
+DnbkKvbdZyDinDMS
+DoDLKvbdkNCLydgP
+EOcLKvbddePSCWbj
+DnbkKvbdZxcjNcMS
+DoCjjvbdQwNccMID
+EPDLKvbdiiehKMwr
+EOcLKvbdCTBDUFwS
+EPDLKvbdbLMGOnDA
+EOcLKvbdUMWOaVni
+DnbjjvbdyqPMhjXA
+DncKjvbdCTAbsewS
+DncKjvbdMpYQvOHT
+EPDKjvbdTqRPVVIN
+DoCjjvbdZxdJnClS
+DoCjjvbdWSNwbElD
+DnbkKvbdrWokcIxq
+EObkKvbdWIYWXgYz
+EPDKjvbdzitopDsU
+EObjjvbdUVkojUBR
+EPDLKvbdEObkLXCd
+EOcKjvbdrbFmMHKy
+DnbjjvbdehKuqmpg
+EOcLKvbdZshiYcrn
+DoCjjvbdZnnIdeZj
+EOcLKvbdmttzLKRf
+EObjjvbdGZUuBDwb
+DoCjjvbdHDjvJaij
+DnbjjvbdKQzFPGNe
+DncKjvbdRbDeMJYk
+DoCjjvbdezuyEhsw
+DoDKjvbdwkWdHzzG
+DncKjvbdEASJMyvw
+DncLKvbdyfyMANEw
+EPCjjvbdCSaDTfXS
+EOcKjvbdCJKajiGK
+EObjjvbdrJAKFNOe
+DnbjjvbdFWZPoljF
+DnbjjvbdmpZyVjyC
+EPDKjvbdiifIKNYS
+DncKjvbdGAnqYizm
+EOcKjvbdiMFEOVDZ
+DnbjjvbdJXtBglRQ
+DoCkKvbdijGHilwr
+DoCjjvbdDwxMUUUM
+DoDLKvbdUMWPBVni
+EPCjjvbdDwwksssl
+DnbkKvbdNeDshhkE
+EObkKvbdbAudfQQX
+DnbkKvbdwuMdqZLn
+DnbjjvbdijGHjNXr
+EPCjjvbdOFETiIkE
+DoCjjvbdxsOImSCH
+DoCkKvbdLiBkqYAS
+DncKjvbdFkFTDHmV
+DoCjjvbddoErjstS
+EObjjvbdyOTIXsIc
+DncKjvbdeXzTtSFz
+DoCjjvbdqdFIonWB
+EPDLKvbdMpYRWNgT
+DoDLKvbdfNGXHNJk
+EPCjjvbdePErkTsr
+DoCjjvbdNHCpNQVL
+EObjjvbdsQVnjCuf
+DnbjjvbdtcDUwWPP
+DoCjjvbduaDySndh
+EPDKjvbdqZPIGqDx
+EObjjvbdijFgimYS
+DncKjvbdZyEJmblS
+DoDKjvbdirziSkJz
+DncLKvbdeOeTKtTr
+EOcKjvbdfpBzwEYI
+DnbkKvbdezvZFItX
+EPCjjvbdrRuLOKaN
+DncLKvbdbrbjscjB
+EObkKvbddBrlrAUN
+EPDKjvbdZoOIdeZj
+EOcKjvbdGYuUaEYC
+EPCkKvbdNxPVzdNt
+EOcLKvbdhlFDmuDZ
+DncKjvbdKVtecdgJ
+EPDLKvbdqlzJxkhJ
+EOcKjvbdySmhlqbH
+EPCkKvbdxsNiNRag
+EPDKjvbdTYKkmzjx
+EObkKvbdIryBTMxM
+EPDLKvbdxnShXsIc
+EPCjjvbdaSFbhUGL
+EObjjvbdRDbaQQdS
+EObkKvbdrbFmMGkZ
+EPCkKvbdWXJXudEg
+EOcLKvbdcJNKKfXY
+DncKjvbdEuxpPljF
+DncKjvbddCTNSATm
+EOcLKvbdFVyQPmKF
+EPCkKvbdpeceUWBI
+DoDLKvbdVTmUGMWK
+DoCjjvbdFyVVBEXb
+EOcLKvbdTukpKTaR
+DncLKvbdDHLegAzc
+EPCjjvbddxZtTrFz
+DncKjvbdssRsZZeD
+DoDKjvbdeOeSjstS
+DoDKjvbdQdDApQcr
+DncLKvbdURQoUuIN
+DnbkKvbdezuxdiUX
+EPCjjvbdbPgHDkzd
+EOcKjvbdFWZQQMjF
+DoDKjvbdMfcQMotk
+EPCjjvbdrWokbiYq
+DoDKjvbdnGdwmOGy
+EOcKjvbdnBjXYOmu
+EOcLKvbdDoCjjvbd
+DoDLKvbdsQVoJbuf
+EObkKvbdZirhQHBf
+EPCkKvbdIGgZxwwg
+DncLKvbdrMzKZMIJ
+DnbkKvbdkHflFemk
+EObkKvbdfHkWSORH
+DnbkKvbdwygfGYEr
+EOcKjvbdxmrgxTJD
+DnbjjvbdGdLViaij
+DoDKjvbdmSYtysEJ
+EObkKvbdfILVqmpg
+DncLKvbdADSXizIp
+DoCjjvbdznpQdbkx
+DncLKvbdmbKWxOnV
+EPCkKvbdJvUfEEfi
+EOcLKvbdcScLTdJa
+DnbjjvbdQcbaPpdS
+EPDKjvbdDoDKjvcE
+DncKjvbdhzUfMROG
+DncKjvbdbrcKtDia
+EOcLKvbdJpydoFme
+DnbjjvbdxLWdHzyf
+EPCjjvbdwuMeQyMO
+EOcLKvbdiifHimXr
+EOcLKvbdySmiNSCH
+EPCjjvbdznopeCkx
+EPDLKvbdZshhyESn
+DoDLKvbdrDeJQNvB
+DoDLKvbdILaznXQk
+DoCjjvbdnUtzKiqf
+DnbkKvbdjJehKMwr
+EOcLKvbdDxXlUUUM
+DoCkKvbdtSqsYyeD
+DoDKjvbdxVMeQxlO
+EPDLKvbdZjTHofaf
+EObkKvbdZisHogBf
+DnbkKvbdnBiwXoOV
+DoCkKvbdYSkaMtPY
+DncLKvbdHELVibKK
+EPCkKvbdhlEcnVCy
+EPCkKvbdZLqdTnMN
+DoDKjvbdbsCkUEKB
+EPCkKvbdMpYRVnHT
+EOcLKvbdFWZQPljF
+DoDLKvbdznoqEcLx
+DnbkKvbdcImJjewY
+EPCkKvbdvvlBVaWV
+DoCkKvbdmIdTqUrB
+DncKjvbdxZgeexFS
+EOcLKvbdrouoJbvG
+DoCkKvbdWRnYBdlD
+DoCkKvbdBhjbLJFj
+DnbjjvbdrouoKDWG
+DoDKjvbdUxgsyjnn
+DoDLKvbdakMFnnDA
+EOcLKvbdZtJJYcsO
+DncLKvbdrbFllHKy
+EPCjjvbdmajXXnmu
+DncLKvbdpyPHgQdY
+EObjjvbdyNrgwsJD
+EPCjjvbdaMjaruMg
+DncLKvbdYfwEAPTJ
+DoDKjvbdbiNKLFvx
+DoCjjvbdajkfOnDA
+EObjjvbdZoOJEeZj
+EOcKjvbdqZOhGqEY
+EOcKjvbdziuPodTU
+DoDKjvbduLxWaUBX
+EObkKvbdyXhjBoyk
+DoDKjvbdTkunaWPJ
+EObkKvbdBraCsfXS
+DoDLKvbdTAEiICPE
+DnbkKvbdDjHjVwjA
+EOcKjvbdqlzKZLhJ
+EObkKvbddneTLTsr
+EObkKvbdWRmwaeMD
+DoDLKvbdLBLHNBwq
+DoDLKvbdUxhUZkPO
+DncKjvbdYlSDsmkm
+DoCkKvbdxZhGFwdr
+EObjjvbdbsDKsdJa
+EPCkKvbdGYuVAdYC
+EObkKvbdRXNccLhD
+DnbjjvbdFVxpQMjF
+DoDLKvbdMgDQNPtk
+EObkKvbdQvmccMHc
+DncKjvbdMpXqVnHT
+DoCjjvbddZxoxYqC
+DncKjvbdnVUzKjRf
+DoCjjvbdEuyQPmKF
+DoDKjvbdLYqKSzuG
+EPDLKvbdTAFJICOd
+DoCjjvbdCJLCKiFj
+EOcLKvbdFyVVAcwb
+DoCjjvbdbQHHDkzd
+DoCkKvbdNrsvGduQ
+DnbjjvbdRWmcblID
+DnbkKvbdQvnEDLgc
+DnbjjvbdVZITzKnn
+EPDLKvbdxxJJaoyk
+EObkKvbddoEsLUTr
+DncLKvbdZQldhldq
+DoDLKvbddCSmSAUN
+DoDLKvbdYpldhldq
+DoDLKvbdDxXlUTsl
+EPCkKvbdnGdxMmfy
+DncKjvbdwWlBWAuu
+EOcLKvbdkDMKpgUg
+DoDLKvbdZshiYdSn
+EPDLKvbdhfjCyWKV
+EObjjvbdKRZeOeme
+DoCkKvbdznopdcLx
+EPCkKvbdZMSDsnMN
+DnbkKvbdkWWmcbXw
+EObjjvbdpxoHfqEY
+DnbkKvbdtlYXAsaX
+EPDLKvbdjvXNcaww
+EPDLKvbduDDVXVoP
+DoDKjvbdLGFgbBQu
+EObjjvbdmuUzLKRf
+EObjjvbdRaceMIyL
+EPDLKvbdiHKCyVjV
+DoCkKvbdxnTHwriD
+EOcLKvbdZjTIPgCG
+DncLKvbdBcpBVjNG
+EPDLKvbdVwIxVceH
+DoCkKvbdkIGkeemk
+DnbkKvbdozmdKxPA
+DoDKjvbdjuwNdCXw
+DoCkKvbdeEoSCXCj
+EPCkKvbdcScKtEJa
+EPDLKvbdySnIlrBg
+EPCjjvbdnQZyVkYb
+DoDLKvbdqYnggREY
+EObkKvbdBsBDUGXS
+DnbkKvbdUWLoitAq
+DoCkKvbdIGgZxxYH
+DoDLKvbdvwLaWBVu
+EObjjvbdmfeXlnHZ
+EPDLKvbdRXNdDMID
+EPCjjvbdZLrDsmkm
+EOcKjvbdUQpoUuHm
+DnbkKvbdEzsqFMDJ
+EOcLKvbdQlwayOUz
+EPDKjvbdyzdnRhJI
+DoDLKvbdwzHfGXeS
+EOcKjvbdTvMPitBR
+EOcKjvbdJbicRJcY
+DoDLKvbdFVxpQNJe
+DoDLKvbduLxXBTaX
+DoCjjvbdLYpirzuG
+DnbjjvbdvwMAvBWV
+EPCkKvbdBiKbKiFj
+DncLKvbdIryArmYM
+DncKjvbdySmiNRag
+DncKjvbdeEoRbWbj
+DoDLKvbdjuwOECXw
+EPDLKvbdFWZPomJe
+EObkKvbdjcMLRGtg
+DncLKvbdQwNccMHc
+EPDLKvbdzQoMiJwA
+DoDKjvbdmSYtzSdJ
+EOcLKvbdelfWgMjL
+EOcLKvbdiMFENuCy
+EPCkKvbdezvZEhsw
+EPDLKvbdUVlPisaR
+EPDKjvbdbKlGOmcA
+EObkKvbdzGyMANEw
+DoDKjvbdXFxzUAPT
+EPDLKvbdqrUkNkAm
+EOcKjvbdPxmAGsSK
+EOcLKvbdyfyMAMeX
+EObjjvbduDDUwVoP
+DncLKvbdyYJJbQZk
+DoDLKvbdxVNEqYkn
+EPCjjvbdNPxRWOHT
+EObkKvbdYqNEiNEq
+EPDKjvbdXrlAlsoY
+EPDLKvbdbrcKtEJa
+EObjjvbdGdKvJbJj
+DoCjjvbdrDeJPnVa
+DoDKjvbdZLrETnMN
+DoDKjvbdKVuGDeGi
+DoCkKvbdZtJIyETO
+EObjjvbdYSlAlsoY
+DoDLKvbdCSaDUGWr
+EObjjvbdmfeYNNgZ
+DoDKjvbdtumwiqTA
+DncKjvbdqFdEtWAh
+EPCkKvbdauCHXjtI
+DnbjjvbdvOszqKoU
+EOcKjvbdxrnImSBg
+DoCkKvbdjvWmdBww
+EPCjjvbdmuUzKiqf
+EObjjvbdNdcsiIjd
+EOcLKvbdNPxRVnGs
+EObkKvbdSPsgKFdX
+EPDLKvbdVAbQsQqy
+EPDKjvbdVZHsyjoO
+DncKjvbdJzofXdAN
+EObkKvbdFjeTChNV
+DnbjjvbdjJegjNXr
+DnbkKvbdZLrDsnLm
+DnbjjvbdbAueGQQX
+DncLKvbdQcbaQQdS
+DnbjjvbdFjdrbglu
+DncLKvbdAMgxsWyx
+DnbjjvbdRpUHKGDw
+DncLKvbdMfcPlpVL
+EObjjvbdIwtBhMRQ
+EPCkKvbdelfXGmKL
+DoDLKvbdFkErbhMu
+EPCjjvbdHffyyYXg
+DoDKjvbdOEctJIkE
+DoCkKvbdKkAgvAKZ
+EObjjvbdzitopDsU
+EPCjjvbdRpUHJfEX
+DoCkKvbdZLrDtNkm
+EPCkKvbdijGIKNXr
+DoCjjvbdxUmEpxlO
+DnbjjvbdIxTbIMRQ
+EPCkKvbdMfbpMotk
+DncLKvbdjlbLzFGo
+EObkKvbdrRtkNjaN
+DnbkKvbdRosgKFcw
+EPDLKvbdpfDeUWAh
+DnbkKvbdkxsRryHU
+EPCkKvbdkVvmcbXw
+EOcKjvbdhficZWJu
+EPDKjvbdCEQBWKMf
+DoCjjvbdUyITzKoO
+DnbjjvbdaNKbStmH
+EPDLKvbdFWYpQMie
+EObjjvbdhytekqNf
+EObjjvbdeXyssqez
+DnbkKvbdLAjgNCYR
+DncKjvbdSBdFLiZL
+EPDKjvbdBhkBjiGK
+DoDKjvbdmajWxOmu
+DoCjjvbdrMzJyMHi
+DoDKjvbdZLqctOMN
+EOcKjvbdnPzYujxb
+DncKjvbddoFTKstS
+DncLKvbdjcMLRGuH
+DoCkKvbdbUagYKtI
+DncLKvbdVAaqTRSZ
+EPCjjvbdOEdTiJLE
+EPCjjvbdJvUfEFHJ
+DnbjjvbdIryBTNYM
+EPDKjvbdYpleJNEq
+DncKjvbdZGwEAOri
+DncLKvbdBdQAvJmG
+DoCkKvbdmIdTqUqa
+EPCkKvbdtcCuWuno
+EPCjjvbdmuUyjjSG
+DncLKvbdjAQHApHK
+EPCjjvbdGdKujBjK
+EPDKjvbdYkrETmlN
+DncKjvbdYORAYUut
+DnbkKvbdiHKCxvJu
+EPCjjvbdkHgLfGOL
+DoCjjvbdpssfqqkU
+EPDKjvbdZnmheEzK
+EPDLKvbdySmhlrCH
+EPCkKvbdjJegilxS
+DoCkKvbdqcdhpNua
+EPDKjvbdIHHZyXxH
+DnbjjvbdjmBkydgP
+DoCjjvbdYkqcsnLm
+EPCkKvbdZnmhdeZj
+EPDLKvbdDjIJuwjA
+EOcLKvbdnQZxvKyC
+EPCkKvbdBhkCKiGK
+DnbjjvbdYkrDsnMN
+DncLKvbdyzeNqghh
+DncLKvbdrRuKmjaN
+EPCjjvbdssRsYzEc
+DoDLKvbdZQleJNFR
+EObjjvbdZQleJMeR
+EPDKjvbdtvNxJqTA
+EObjjvbdbBWFGPpX
+EPDLKvbdajkeoODA
+EPDLKvbdSZihTCvA
+EObkKvbdZMRdTnMN
+EPCkKvbdsCFmLgKy
+EObjjvbdVvhxVceH
+EPCkKvbdaaVeFpQX
+DoCjjvbdZQmEhleR
+EOcKjvbdhzUfLpmf
+EPCkKvbdREDBQRDr
+DncLKvbdemFwHNJk
+EOcKjvbdGAnqYizm
+DncLKvbdtTRsZZdc
+DoDLKvbdGGKRmhtR
+DoDLKvbdIidAJogE
+DoCkKvbdxZhGFxEr
+DncLKvbdpxoHgREY
+DnbjjvbdQcbaQRES
+EPDKjvbdjAPfaPgK
+EPCkKvbdvwMAuaWV
+EOcKjvbdZLrDsnMN
+DncKjvbdyqOlhiwA
+EObkKvbdRacdkiYk
+DoDKjvbdUWMQJsaR
+EPDKjvbdUGzmkvvF
+DoCjjvbdhbPDFXRR
+EObjjvbdXGZZtAPT
+EPCjjvbdMoxRWNgT
+EOcKjvbdGFiqmhtR
+DoCkKvbdNPxRWNgT
+EObkKvbdyNrgxTJD
+EPDKjvbdrXPkcJYq
+EOcLKvbdFjeTChMu
+DncKjvbdjvXNcaww
+DncKjvbdkMbMZdgP
+EOcKjvbdDnbkLXDE
+EObjjvbdbBWFGPow
+DoCjjvbdAMhZSwZx
+EPDLKvbdZRNEiMeR
+DoDKjvbdqdEiQNvB
+DoCkKvbddePRavbj
+EPDKjvbdaMjbStlg
+EObkKvbdHgGyxxYH
+EOcKjvbdtkxXBUAw
+DnbjjvbdmSZUysEJ
+EObkKvbdrXQLbhxq
+EObkKvbdVTlsfMWK
+DoDKjvbdSLZGUfjs
+DoCkKvbdFVyPpMjF
+DoCjjvbdhgKCyViu
+EPCkKvbdZMSDtOLm
+EPCjjvbdySmhlqag
+EPDKjvbdWRmwadlD
+EPCjjvbdqZPHfpdY
+DoDLKvbdXsMBMsoY
+DncLKvbdelewHMjL
+EObjjvbdYpleImEq
+DoDKjvbdZirgogBf
+EOcLKvbdrXPlChxq
+EPCkKvbdFVxpQMie
+DoCkKvbdrNZjZMHi
+EOcKjvbdDjIJuxKA
+DncLKvbdeOeSkTsr
+DoCjjvbdZoNhddyj
+DoDKjvbdkWXNcaxX
+DoDLKvbdTpqOtthN
+DnbjjvbdehKuqnQg
+EPCjjvbdmgFXlmfy
+DncLKvbdShyiqAAl
+EOcKjvbdKaKgNBwq
+EPDKjvbdEztREkbi
+EOcKjvbdVviXvEFH
+EPDKjvbdcIlikGWx
+EPCkKvbdUWLojUAq
+EPDLKvbdOStWHEtp
+DoCjjvbdHlBzmwRL
+DnbjjvbdWIYVxHYz
+EPDLKvbdADSXjZhp
+EPDKjvbdRzJgrcWA
+EObkKvbdxrnIlqag
+EObjjvbdRosgKFcw
+DoDKjvbdkySrTYgU
+DncKjvbdsrqrxydc
+EPDLKvbdZyEKODLr
+EPCjjvbdEXxMUUTl
+EOcKjvbdtcCtwWOo
+DncLKvbddndrkTtS
+EPDKjvbdrafMkfjy
+EPCjjvbdJcJbpibx
+EObkKvbdFfJqnIsq
+EPCkKvbdyNsHwriD
+DoCjjvbdaRebgsfL
+DnbjjvbduoTzpjnt
+EPCjjvbdZGvdAOsJ
+DoDKjvbdmozYujyC
+EPDKjvbdZGvdAPSi
+DnbjjvbdmSYtzTDi
+DoCjjvbdRotGjFdX
+EObkKvbdSBceLhxk
+DoCjjvbddijRvUzn
+EObkKvbdMgDQNPtk
+DoCkKvbdFVxoomKF
+DncKjvbdGcjujBjK
+EPDKjvbdBcpAvJlf
+DncLKvbdLBLHNCYR
+EObkKvbdmIctQtrB
+DoDLKvbdFpATXGey
+EPCkKvbdbrbkUDjB
+DncLKvbdcTCjtEJa
+DncLKvbdBsAbsfXS
+EPDKjvbdFpATXGfZ
+DoDKjvbdwuMeQxlO
+EObkKvbdqUUGqrKt
+DncKjvbdZyEKODLr
+EPDKjvbdjhHLefNk
+EPCkKvbdrbFmMGjy
+DoCkKvbdsQWOjCvG
+DoCjjvbdLBLHMbXq
+EObjjvbdrpVnicVf
+EPCjjvbdVqmwaeMD
+DncLKvbdRNYCYnUz
+EObjjvbdRXNdCkhD
+DncKjvbdIHHZyYXg
+DnbjjvbdyTOJMrCH
+DoDLKvbdUsmUFkuj
+DncKjvbdQcbaPqES
+DnbkKvbdmgFYNNgZ
+EOcKjvbdkySrTYgU
+DoCjjvbdHlBzmwQk
+DnbjjvbdaSFcITek
+EObjjvbdQdCaPqDr
+DncKjvbdxVMdpyLn
+EOcKjvbdiMEdOVCy
+DoCjjvbdRosgJecw
+DncLKvbdkDMLQftg
+EPCkKvbdKDKCqKDY
+DoCjjvbdjvWnDaww
+EOcLKvbduVnYJpsA
+DoDLKvbdWRnYBdlD
+DoDKjvbdssSSxzFD
+EPDLKvbdJYTaglRQ
+EOcLKvbdhzUfLpmf
+DoDLKvbdJutfDdgJ
+EOcKjvbdxmrgwrhc
+EObkKvbdwWkaVaVu
+EOcKjvbdxrmiMrBg
+DoDKjvbdRDcApRES
+DoCjjvbddjJrVtzn
+EOcKjvbdxVNEqYlO
+DoCjjvbdJJdAJofd
+DoDLKvbdemGWfmJk
+EOcKjvbdnPyyWKyC
+DoCjjvbdbrcLTcia
+DoDKjvbdjuvmdCXw
+DncLKvbdtkwvaUAw
+EOcKjvbdHDkViaij
+EObkKvbdRDbaPpcr
+EOcLKvbdtSqryZeD
+EOcKjvbdrRuLOKaN
+EOcKjvbdczYowyRC
+DnbkKvbdjcMLQfuH
+DncKjvbdmbJwYOnV
+EPDLKvbdZnmiFEzK
+EPDKjvbdjbkkQgVH
+EObkKvbdJTZArmYM
+DncKjvbdSPsgJfEX
+DncLKvbduMYXBUBX
+EObkKvbdkIHMFfOL
+EOcKjvbdYORAYVWU
+DoCjjvbdyzdmqghh
+DncLKvbdtumwiqTA
+EPDKjvbdQmYCZOUz
+DoCjjvbdtcCtvvPP
+EObjjvbdVTmUGMVj
+EObkKvbdBsAcUGXS
+DoCjjvbdqYngfqDx
+EPCkKvbdtkxXBTaX
+DoDLKvbdACqwiyhp
+DncKjvbdraelkgKy
+EPDKjvbduLwvaUBX
+DncKjvbdpssgSSLU
+EPCjjvbdIxTbHlRQ
+EPDKjvbdPyNAGrqj
+DoDLKvbdnCJvxOnV
+EObkKvbdZRNFJNEq
+DoCjjvbdFxuVBEYC
+EOcKjvbdVAbRSpqy
+DnbjjvbdJbibqKDY
+DoDLKvbdKCicQjCx
+EPCjjvbdNrtVgFUp
+EOcLKvbdZQleJNEq
+DoDLKvbdaRebgsfL
+DoCkKvbdCIjakIej
+EOcLKvbdBraDUGWr
+EPDLKvbdADRxKZiQ
+DoCjjvbdHkazmvpk
+EPDKjvbdUsltGLvK
+EOcKjvbdTkvOaVoJ
+DncLKvbdZnmiEdyj
+DoDKjvbdZtJJYdSn
+DoDLKvbdbiNJjfWx
+DnbjjvbdIsZBTNYM
+EPCkKvbdhbPDEvpq
+DncKjvbdqlyjYlIJ
+DoCkKvbdbsDLTcia
+DoDKjvbdKCjCqKCx
+DoDLKvbdnBiwYOmu
+DnbkKvbdjKGIKMwr
+EPCjjvbdHgGyxxYH
+EOcLKvbdcyxpXxqC
+DncLKvbdlZSrSyGt
+EPCjjvbdTAFIhCPE
+EObkKvbdZdwfzgiC
+DoDLKvbdSLYfUgLT
+DoCjjvbdRMwayNtz
+DnbjjvbdCflGHAzc
+DoCjjvbdrJAKFNOe
+EPCjjvbdjblKpgUg
+EPDLKvbdQccAoqDr
+DnbjjvbdCJKbKhfK
+EPDLKvbdiGibyWJu
+EOcLKvbdyNsHxShc
+EPDLKvbdmIcspuSB
+DnbjjvbdnGdxNOHZ
+DoCkKvbdhzVGMRNf
+DoDLKvbdeFPRawDK
+EObjjvbdsQWOjCvG
+EObkKvbdhzUelQmf
+EObkKvbdeJirWUzn
+DncLKvbdxxIibPzL
+EObkKvbdSBceMIxk
+DoCkKvbdehKvRmqH
+EObjjvbdRbDeLiZL
+EObjjvbdGYtuAdYC
+DnbjjvbdHDkVibKK
+DoCjjvbdKQyeOfNe
+DoCkKvbdmbJvxOmu
+DoCkKvbdULvOaWPJ
+DncLKvbdrWpMCiZR
+EObjjvbdhytfLqNf
+DoCjjvbdgPazvdXh
+DoCjjvbdiHKDYuiu
+EPDKjvbdRWnDbkhD
+DncLKvbdrMzKZLhJ
+EObkKvbdyXhiaoyk
+EPCkKvbdjmCLydfo
+DnbkKvbdDxYMUTsl
+EPDKjvbdxmrgxSiD
+DnbkKvbdmSYtyrci
+EPCjjvbdqvokcIxq
+DoDLKvbdXsMAmUPY
+DncKjvbdDoDKkWcE
+EPCkKvbdMgDPmQUk
+DoDLKvbdKyQirztf
+EPCjjvbdmajWwnmu
+EOcLKvbddCSlrATm
+EPDLKvbdrJAKElne
+DoCkKvbdIsZBTMxM
+DnbkKvbdffMZnGgA
+EOcKjvbdJcKDQjDY
+EObjjvbdxsOJMrCH
+EObkKvbdEKHiuwjA
+DncKjvbdunszpjnt
+DoDLKvbdZjTIQHCG
+DnbjjvbdsQVnibvG
+DnbkKvbdGQATXHGZ
+DnbkKvbdBsBDTfXS
+DoCkKvbdBsAbsevr
+DoCkKvbdRXNdDLhD
+EPCjjvbdRadElJZL
+DnbkKvbdxwhibPzL
+EOcKjvbdCJLBjiFj
+DncLKvbdZMSDsmkm
+DoDKjvbduaEZSoFI
+EPCjjvbdhgJbxujV
+EOcLKvbdCJLBjhfK
+DoCkKvbdZisHpHBf
+DoCkKvbdqFdFUWBI
+EPCkKvbdDGlFgAzc
+DncKjvbdZxcjNblS
+EPDLKvbdLqvmZuQz
+DoDKjvbdxZhGFxFS
+EObkKvbdZdxGzhIb
+DoDLKvbdqwQMChyR
+DoCkKvbdjlalZeGo
+DncKjvbdZRNEhldq
+EPCkKvbdZHXEAPSi
+DoDKjvbdDoDLKwCd
+DnbkKvbdmbJwYPNu
+DncKjvbdMfcPlouL
+DoCkKvbdQwODblHc
+DoCjjvbdNQYQunGs
+DnbjjvbdlqxtzSci
+EOcLKvbdrDdhpNua
+DncLKvbdKefICApu
+EPDKjvbdatagXkUI
+DoCjjvbdaofgDkzd
+EObkKvbdIrxaTMwl
+DncLKvbdSLYfVGkT
+EPCkKvbdelevfmKL
+DncKjvbdFfKSOIsq
+EObjjvbdfILVqnQg
+DncLKvbdZjShPgCG
+DoCjjvbdrNZixlHi
+DnbkKvbddoFTKstS
+EOcKjvbdWSNwbFMD
+EPDLKvbdpxngfqDx
+EOcKjvbdIHGyxxYH
+EOcLKvbdvwMAuaVu
+EOcKjvbdkxrqryGt
+DncLKvbdZjShQHBf
+DnbjjvbdiUzEvquC
+EObkKvbdpxoHfpcx
+DoCkKvbdGAoRZJzm
+EOcKjvbdehLVrOQg
+EPDKjvbdkDMLRGuH
+DnbkKvbdKCjDRKDY
+EPCjjvbdLGFhBaRV
+EPDLKvbdaMjbSuNH
+DncKjvbdWfYzUAOs
+DoCjjvbdsBelkfjy
+DncLKvbdZnmheFZj
+EOcLKvbdatagYLUI
+EObkKvbdWXJXvEEg
+DoDKjvbdZMRdTmlN
+EPCjjvbdWXIwvEEg
+DoCjjvbdkCkjqHUg
+EPCjjvbdijFhJlxS
+EPDKjvbdmSZUysEJ
+DoDKjvbdMgDQMouL
+EPCkKvbdrDdhomvB
+EPCjjvbdRNXbYmtz
+EPCkKvbdUtMtFlWK
+DnbjjvbdGcjvJajK
+EPDKjvbduaDyTOeI
+DncLKvbdziuPocrt
+DoCjjvbdcScKscjB
+DncKjvbdmgExMmfy
+EObjjvbdJcJcQibx
+EPDKjvbdMpXpvNfs
+EObkKvbdyqPNIjXA
+EPCjjvbdCSaDUGWr
+EOcKjvbdZnnJFEyj
+EObkKvbdyOSgwriD
+EPCjjvbdtkwwAtBX
+DnbkKvbdDncLLXDE
+EOcKjvbdZshhxcsO
+DoCjjvbdxVMdpxlO
+DncKjvbdLGGHaaQu
+DoCkKvbdxUmFQyMO
+EPDKjvbdpfEEsvAh
+DoCkKvbdZRMdhldq
+EPDLKvbdYzberJuy
+EObjjvbdfHkWSOQg
+EPDLKvbdRMxByNtz
+DncLKvbdmoyyWLZC
+EObkKvbdhtydvrVC
+DoCkKvbdVhYWYGxz
+EPDKjvbdbVCHXjsh
+EPCkKvbdTlWPBVni
+DncLKvbdFkEsCgmV
+DnbkKvbdIsYaSlxM
+DncKjvbdzaAOffbM
+DncLKvbdaSFcHtGL
+DoDLKvbdiGjDYuiu
+EObjjvbdDigjVwjA
+DncKjvbdqmZixlIJ
+DnbkKvbdRjxfUgLT
+EObkKvbdeAURNYKG
+EPCjjvbdjvWnECXw
+EPCjjvbdNQXqVmgT
+DoDLKvbdxmsHxShc
+EPCkKvbdqwPlChxq
+DnbjjvbduLwwAsaX
+DncKjvbduCbuWuno
+DnbkKvbdJpydnenF
+EPDLKvbdRXOEClID
+DncKjvbdSKyFuGkT
+DncKjvbdczZQYZRC
+EPCkKvbdGZUtaDxC
+EPCjjvbdOAJTUKSA
+DnbkKvbdsZlQSaHn
+DncKjvbduWNwiqTA
+DoDLKvbdRNYCZOUz
+DoCkKvbdVTmTfMVj
+EOcLKvbdeATpmYJf
+DncKjvbdbUbGxKsh
+DnbkKvbdLZRKSztf
+DncKjvbdcJMjLFwY
+DnbkKvbdRadEkhyL
+EPCkKvbdauBgXkTh
+EObkKvbdrJAKFNOe
+EOcKjvbdDnbjkXDE
+DoDKjvbdrafMlGjy
+EOcLKvbdliDtRVRa
+EObjjvbdZjShQHCG
+DnbjjvbdZnmiFEyj
+EPDKjvbdbAueFpQX
+EPCjjvbdVwJYVcdg
+EObkKvbdijGIJmYS
+DoCjjvbdJpyeOenF
+DoDKjvbdYlSDsnMN
+DncLKvbdehLVqmqH
+DnbjjvbdTppnuVHm
+EOcKjvbdSLYetgLT
+EPCkKvbdZyEKOClS
+DoDKjvbdHDjujBij
+EPCkKvbdHkazmvpk
+EObkKvbdkxrrTYft
+EPCjjvbdOTUVfeVQ
+DoCjjvbdYzbfSKWZ
+DncKjvbdkxrrSxgU
+EObjjvbdEOcKkXCd
+EPDKjvbdcTCkTcia
+DoDKjvbdatagXkTh
+DoDLKvbdNHCpMpUk
+DoDKjvbdhtzEvquC
+EPCjjvbddePSBvbj
+DoDLKvbddneTLUUS
+DncLKvbdijFhKMwr
+EPDLKvbdpxoIHRDx
+DncLKvbdqquLOKaN
+EPCkKvbdSCEEkiZL
+DoDLKvbdvAdYroEh
+DncLKvbdDwwksstM
+EOcKjvbdKWVFcdgJ
+EPDKjvbdZnmhdeZj
+DoCjjvbdJSyBTMxM
+DoDLKvbdtcDVXVoP
+EOcLKvbdbAudfPow
+EPCjjvbdpfDdtWAh
+DncKjvbduCcUwWOo
+DnbjjvbdGFirOItR
+DnbjjvbdLBKgNBxR
+DnbjjvbduVnYJpsA
+DnbjjvbdjuvnDbXw
+DoDKjvbdFkFTDINV
+EOcKjvbdEvZQQMie
+DoCkKvbdMfbolpUk
+EPCjjvbdhbPCdwQq
+DoDKjvbdZyEKNblS
+EPCjjvbduCbtwWPP
+DnbjjvbdgLGzbfAE
+EObjjvbdqGDdsvAh
+EPDLKvbdNGbolotk
+DoCkKvbdSPsfifEX
+DncLKvbdbVCGwjsh
+EObkKvbdijGHjMwr
+DnbjjvbdRosfifDw
+DoCjjvbdQccApRDr
+DoDKjvbdqTtHSSKt
+EOcLKvbdsQWPJcVf
+EObkKvbdeOdsLTsr
+DncLKvbdcTDLUDjB
+DoDKjvbdVgwvXfxz
+EOcKjvbduoTzqKnt
+EPCjjvbdYNqAYVWU
+EObjjvbdemGXGmJk
+DoCkKvbdVgxWXfxz
+DoCjjvbdqlzKZLgi
+EPDLKvbdLFfHaaQu
+DnbkKvbdcSbkTcjB
+EObjjvbdgGLzNgHA
+EObjjvbdZjSgpGbG
+DnbjjvbdGckVjBij
+EOcLKvbdUMVnaWOi
+EObkKvbdrylQSaHn
+EPDLKvbdZHWdAOri
+DoDKjvbdyfxlAMdw
+DnbjjvbdZMSDsnLm
+DoDKjvbdOTUVgEtp
+DnbkKvbdJSxaSlwl
+DncKjvbdkNCLzFGo
+DoDKjvbdfMevgMik
+DnbjjvbdMgDPlpVL
+DncKjvbdqquLOLAm
+DoCkKvbdfNFwGlik
+DncLKvbdpxnhHRDx
+DoDLKvbdZMRdTmlN
+EPCkKvbdURRPVVHm
+EPCkKvbdmgEwmOHZ
+EOcLKvbdVAapsRSZ
+DoCjjvbdczZPwxpb
+EPDLKvbdWXIxWDdg
+EPCkKvbdUVlQJtBR
+EOcKjvbdelfWgNJk
+EPDKjvbdUtMtFkuj
+DnbjjvbdRkZFtfjs
+EObkKvbdCJLCLJGK
+DoDLKvbdKVuGEEgJ
+DncKjvbdIxTbHkqQ
+DncLKvbdMSWlzUpz
+EPCkKvbdKefICAqV
+EOcKjvbdtunXjRTA
+DoDLKvbdZMSETmlN
+EObkKvbdapHHELzd
+EObkKvbdmRxtyrdJ
+DoCjjvbdtTSSxzEc
+EObjjvbddeOrBvbj
+DncLKvbdJYUBgkpp
+EPCjjvbduLxXBUAw
+DnbjjvbdSLYetfjs
+DncKjvbdzQnmIiwA
+EPCjjvbdRpUGjFdX
+EOcLKvbdddnqbWcK
+EOcKjvbdWWhwucdg
+EOcLKvbdCWzdJEov
+EPDKjvbdTkuoAuni
+DncLKvbdqUTgSSLU
+DoDLKvbdNHDQMotk
+DncLKvbdWXJXvEEg
+EPCjjvbdaNKaruNH
+EPDLKvbdraelkfjy
+DncLKvbdLqvmZtpz
+DnbjjvbdNddThhkE
+DoDKjvbdzoQQdcLx
+EPDKjvbdYpldiNFR
+EObjjvbdZtJIyDsO
+DoCkKvbdWWiYWDeH
+DoCkKvbdeEoSBwDK
+DoCjjvbdBsAcTevr
+EObjjvbdqvpMChyR
+EPCjjvbdsCGMlHKy
+DnbkKvbduLwwAtAw
+EObkKvbdMRwMyuQz
+DncLKvbdwWlAuaWV
+DncLKvbdHgHZxwxH
+DncKjvbdBsAcTewS
+DoDLKvbdJpyePFme
+DncKjvbdVUNUFlWK
+DncKjvbdEYXktTtM
+DncLKvbdwMvANDeN
+DnbkKvbdtSrTZZeD
+EOcLKvbdJYUBhMRQ
+DncKjvbdlYrrTZGt
+DoDLKvbdliDsqUrB
+EObjjvbdegjuqnQg
+EObjjvbdlZSrTZHU
+DncLKvbdfNGWfljL
+DoDLKvbdLFegbBQu
+DncLKvbdemGXGmKL
+EPDKjvbdDwwksssl
+DnbjjvbdxmsIYTJD
+DoDLKvbdBsBCtGWr
+DoCjjvbdIsYaTNYM
+DncKjvbdJuuGEEgJ
+EObkKvbdkySqsYgU
+DnbkKvbdNPwqWNfs
+EPDLKvbdmIdTptrB
+DoDLKvbdyqOmIjXA
+EPCjjvbdhkeEOUcZ
+DoDKjvbdJqZePFme
+EPDLKvbdfSAvzlCo
+EObjjvbdbhljLFvx
+EOcLKvbdaMkBsUmH
+DoCjjvbdKyRKSzuG
+EObjjvbdcSbjtEJa
+EOcLKvbdkHflGFmk
+DoDLKvbdemFwHMjL
+EObjjvbdSLZGVHLT
+DoCjjvbdJXtCILpp
+EOcLKvbdaaVdfPow
+EOcLKvbdFpATWgGZ
+DoCjjvbdxZgeewdr
+EObkKvbdeEnqawCj
+EObjjvbdhytfMQmf
+DnbjjvbdoznEKxPA
+DnbjjvbdoAKzsgdO
+DoCkKvbdYzbfRivZ
+DoDLKvbdqqtkOKaN
+DncLKvbdqvokcJYq
+EPDKjvbdOStVfeUp
+DoDKjvbdZxcinDLr
+DoCkKvbdcyyQYYqC
+EObkKvbdcIlikGWx
+EOcLKvbdffLzNgHA
+EPCjjvbdMtsRkNAX
+EOcKjvbdpeceTvBI
+EOcKjvbdZsiIxcsO
+DncLKvbdJvVGDdgJ
+DnbkKvbdZMRdTmlN
+EPDLKvbdnCJwXnnV
+EObkKvbdxUldqZLn
+EPCjjvbdNddUJIkE
+DoCjjvbdyYJJapZk
+DnbjjvbdpxoHgQcx
+EObjjvbdHDjvKBij
+DncKjvbdUtNUFlWK
+EPCkKvbdkVvmdBww
+DnbjjvbdgGMZmgHA
+DoDLKvbdmIdTqVSB
+EOcLKvbdzitpPdTU
+DncLKvbdkxrqrxgU
+DoCjjvbdVBBpsRSZ
+EOcLKvbdGFiqmiTq
+EOcKjvbdxsOJMqag
+DoCkKvbdHDkVjCJj
+EPDKjvbdjSziTKiz
+EOcKjvbdCTAbsewS
+EPCkKvbdkWWnDbYX
+DoDLKvbdJSxaTMxM
+DoDLKvbdMoxRWNgT
+DoDLKvbdmuVZkJrG
+EPDKjvbdbUbHXjtI
+DnbjjvbdkWWnEBxX
+EOcLKvbdnPyxukZC
+DnbjjvbdXrlBMtOx
+DoDLKvbdJuuGEFGi
+EPDKjvbdUaBprprZ
+EObjjvbdsrqrxydc
+EObjjvbduCbtwWOo
+DoCkKvbdSLYeuHLT
+DoDKjvbdKQyePFme
+EOcKjvbdeYZssrFz
+DoDKjvbdpxoHfpdY
+EPCkKvbdcIljKfXY
+EPDKjvbdDwwksstM
+DnbkKvbdsQWOicVf
+EPDLKvbdIidAKQHE
+DoDLKvbdrDeJPnWB
+EOcLKvbdZoNiEeZj
+EObjjvbdptTgRrLU
+EPDKjvbdmRyUzTEJ
+DoDLKvbdFxtuBEYC
+DnbkKvbdehLVqmqH
+EPCjjvbdUtNUGLuj
+DoDLKvbdxVNEqZLn
+DncKjvbdySnImRbH
+DoCjjvbdbLMGPNcA
+EPCkKvbdzQoMiKXA
+DnbkKvbdbiMijevx
+EOcKjvbdSQTfiedX
+DnbjjvbdZisIQHBf
+EObkKvbdYpleIldq
+DncLKvbdjmBlZeHP
+DncKjvbdSCDdkhxk
+DnbkKvbdrykpTAgn
+EObkKvbdZQldiMeR
+DnbjjvbdeYZssqez
+EPDLKvbdlYrrSyHU
+EOcLKvbdTpqOttgm
+EOcKjvbdCJLCLIej
+EPDKjvbdUQqOttgm
+EObkKvbdGBOqZJzm
+DncKjvbdqwQMDIyR
+EPDKjvbdbBWFFoow
+EOcLKvbdZMRctOLm
+EPCkKvbdHEKuibKK
+DnbjjvbdNddThiKd
+DncKjvbdJuuFdEgJ
+DncLKvbdRzJgsDWA
+DncLKvbdRWmdCkhD
+EPCjjvbdZRNFImEq
+EOcLKvbdUaBqTRSZ
+EObkKvbdWIXvYGxz
+DoDKjvbdrRuKnKaN
+DoCjjvbdYgXEAPTJ
+DoCkKvbdwuMeQyMO
+EPDLKvbdkHfkfFmk
+DoDKjvbdTqQnuUhN
+DoCkKvbdbKlFoODA
+EObkKvbdrzLoraIO
+DncLKvbdFxuVAdYC
+DoCjjvbdZQldiMeR
+EOcKjvbdJTZBTNXl
+EPDKjvbdsQWPKCvG
+EOcLKvbdeEoRawDK
+EPDLKvbdtTSSxzEc
+DncLKvbdliDsqUqa
+DnbjjvbdZQleImEq
+EPCjjvbdaSGDITek
+DoDLKvbdRWnDbkhD
+EPDLKvbdpedEsvAh
+EPCkKvbdYpldhldq
+DoCjjvbdZoOJEdyj
+EOcLKvbdmoyxvKyC
+EObjjvbdmSZVZsEJ
+DoDLKvbdqUUGrSLU
+EPDLKvbdmpZxujyC
+EPCjjvbdCDpBVilf
+EPCjjvbdFfJrNhsq
+DoDKjvbdsZkosBIO
+DnbjjvbdiBnbdvpq
+DncKjvbdkDMKpftg
+EPCkKvbdatbGxLTh
+DoCjjvbdJTYaTNXl
+DnbjjvbdhkdcnVCy
+DncLKvbdyNrgxTIc
+EPDLKvbdyNsHwriD
+EPDLKvbdBdQBVilf
+DoDLKvbdIsYaTNXl
+DnbkKvbdkxsSTZHU
+EPCjjvbdBsBDUGWr
+EOcLKvbdgQBzwDxI
+DnbjjvbdjblLQfuH
+DnbkKvbdbVBgYKsh
+DncLKvbdMgComPuL
+EPDLKvbdqceIpOVa
+DnbjjvbdqFceTvAh
+EPCjjvbdFWYpQNJe
+DoDLKvbdHDjujBjK
+DncLKvbdIHGyyXxH
+DnbjjvbdeFOqawCj
+DoDKjvbdGQASwGfZ
+DncLKvbdrWokbhyR
+DncKjvbdSKyFtfkT
+DoCkKvbdemFvfmKL
+EPDKjvbdxsNhmRbH
+EOcKjvbdsPunicVf
+EObjjvbdrbGNMGjy
+EPDLKvbdOXoVzcnU
+EOcLKvbddZxpYYpb
+DoDKjvbdVBBpsRRy
+EPDKjvbdHDkWKCKK
+DoCkKvbdSiZjRAAl
+EPDKjvbdURQoVVHm
+DoCkKvbdpyPHgQdY
+EOcKjvbdGAoQxizm
+DnbjjvbdMpXpvNfs
+DncKjvbddndrjtUS
+DnbkKvbdlhcsptqa
+DoCkKvbdfNFvfmKL
+EPCkKvbdHffyxxXg
+DoCkKvbdYpleImFR
+DoCkKvbdbBVdfPpX
+DncLKvbdWSNxBdlD
+EPDKjvbdSQTfjFcw
+EPCjjvbdkxrqsYgU
+EPDKjvbdrovOjCvG
+DoCjjvbdaSGCgsek
+DncLKvbdZGwEAOri
+DoDLKvbdJmADzHUa
+DoCjjvbdNdcshiKd
+DoCkKvbddneTLTtS
+EObkKvbdMoxQumfs
+DncKjvbdVgxVwfxz
+DoDKjvbdGcjuibKK
+EObkKvbdTqQnuUhN
+DncKjvbdURRPUuIN
+EObkKvbdbrbjtEJa
+DnbkKvbdKQyeOenF
+EObjjvbdbKkfOnDA
+EPDLKvbdlhdTptrB
+EObjjvbdxnTHxTJD
+EObjjvbdKCjCpjDY
+DoDLKvbdMSWmZtpz
+DoCkKvbdBsBCsfXS
+DnbkKvbdfRaWzkcP
+EPDKjvbdbAvFGQQX
+DoCjjvbddoFSjtUS
+DnbjjvbdypoNJJwA
+EPDKjvbdzdzOzdyp
+EObjjvbdJpzEoFme
+DoCkKvbduCbuXWPP
+EPCkKvbdFfJrOItR
+DoDLKvbdkIGlFfOL
+DnbjjvbdbAudfPpX
+DoDLKvbdtAHRIABS
+EOcLKvbduDCuWuno
+DoDKjvbdkHgLfGNk
+EOcLKvbdxZhFeweS
+EObkKvbdUxgszKoO
+EOcKjvbdiBoCeXRR
+DnbkKvbdZeXfzhJC
+EObkKvbdtcDUvvPP
+EOcKjvbdMtrrLNAX
+DnbkKvbdWXJYVceH
+DnbkKvbdJbjCpibx
+EPCkKvbdajlFnnDA
+DnbjjvbduaEZTPEh
+EOcKjvbdGcjuibJj
+DncLKvbdKefHbAqV
+DoDKjvbdUxgtZjnn
+EPCjjvbdVZITzKnn
+EPDKjvbdHkaznXRL
+DnbkKvbdOEdTiIkE
+DnbjjvbdiGjDYvJu
+DoDKjvbdnUtykJrG
+EPCkKvbdBdQBWKNG
+EPDKjvbdsBemLfkZ
+EPCjjvbdtumwiqTA
+EOcKjvbdnCKXYPOV
+DncLKvbdVwIxVdFH
+DnbjjvbdWIYWYGxz
+EObkKvbdFpATXHFy
+DoCjjvbdauBgXjtI
+DnbkKvbdTqROuVHm
+DnbjjvbdlhcsqUqa
+EPDLKvbdxZhGGXeS
+DoDLKvbdZjTHogCG
+EOcKjvbdbKlGOnDA
+EObjjvbdLiBlRYAS
+DncKjvbdxrnJMrCH
+EOcLKvbdMJBlRYAS
+EOcKjvbdUsmTekuj
+DnbjjvbdEYYMTssl
+EObkKvbdZMSEUNkm
+DncLKvbdGGKSNhsq
+DoDKjvbdGZVVAdXb
+EPDKjvbdKRZdoFnF
+EOcLKvbdEXwlUTtM
+DoDKjvbdEztQeLcJ
+DoCkKvbdJYUBglQp
+DoCkKvbdJTZAsNXl
+EObjjvbdvmWAMdEm
+EPCjjvbdxZgefYFS
+DncKjvbdtTRrxzEc
+EOcLKvbdiGjDZWJu
+DoCkKvbdYlRctOLm
+DncKjvbdDxXlTtUM
+EPCjjvbdcyxpYYqC
+EOcLKvbdqGDeUWBI
+DnbjjvbdnPyxvLZC
+DoDLKvbdKefHbApu
+DoCkKvbdjblKqHVH
+EObkKvbdTfzmkvue
+EOcKjvbdZnmiEdzK
+EOcKjvbdDxXkstTl
+EPDLKvbdBdQAujMf
+DoDKjvbdGZVVBDwb
+DoDLKvbdEvZPpMie
+EPCjjvbdVwJXuceH
+DoDLKvbdRjyFtgLT
+DoCkKvbdXsLaNTnx
+DnbjjvbdDHLfHAzc
+DoCkKvbdVBCQrprZ
+DoCkKvbdyNsIYShc
+EPDKjvbdyXiJbPzL
+DoCjjvbdUsltFlWK
+EPCkKvbdcyyQYZRC
+DnbkKvbdddnqbWbj
+EPCkKvbdmuUyjjSG
+EObkKvbdZyDinDLr
+DnbjjvbdZtIiZESn
+EPCjjvbdVBCRTRRy
+EOcLKvbdCWzciFPv
+EObkKvbdrEFJPnWB
+DnbkKvbdqUUHSRkU
+EPDLKvbdlqyUyrci
+DoCjjvbdIMBznXQk
+DoCjjvbdUxgsykOn
+EPCjjvbdXsMBMsnx
+DncKjvbdjuvmdBxX
+EOcLKvbdkIGkeemk
+DoCjjvbdjKGIKNYS
+EPDLKvbdSLZGVGjs
+EOcKjvbdMfcPmQUk
+DoCjjvbdrNZjYlIJ
+EOcLKvbdkyTSTZHU
+EObjjvbdjAQGaQHK
+EPDKjvbdMoxRVnHT
+EObkKvbdeATpmXif
+EObkKvbdFjdsDHmV
+DncLKvbdbLLfOmcA
+EPCkKvbdunszqLOt
+DnbkKvbdnQZxvLZC
+DncLKvbdZyDjNblS
+DnbkKvbdptTfrSKt
+DoDLKvbdzaAOgHCM
+EPCjjvbdhbPCeXRR
+DnbkKvbdmuVZkKSG
+DoCkKvbdziuQQESt
+DnbkKvbdhgKDZWKV
+DnbjjvbdULuoBWPJ
+DncLKvbdWXJXucdg
+DoCjjvbdRacdlJYk
+DoDLKvbdegjvSNqH
+EOcLKvbdnUtzLKRf
+EOcKjvbdFxtuBEXb
+DoCkKvbdmIcsqUrB
+EObjjvbdULvPAvPJ
+EOcLKvbdSwkLmzkY
+EPCkKvbdSZjITCvA
+EPCkKvbdeOdrjtUS
+EPCjjvbdIxUBhLpp
+EObkKvbdqiAJeMoF
+DnbkKvbdhlEcmtcZ
+EOcLKvbdFejRnJTq
+EOcKjvbdwXMAvBWV
+DoDKjvbdmpZyWLZC
+DoCjjvbdGLErbhNV
+DoDLKvbdmaivwnmu
+EOcLKvbdOXoVzcnU
+DncLKvbdBhjbLJGK
+EPDKjvbdZjTIQGaf
+DoCkKvbdgPazwEYI
+DncLKvbdGGKRmiUR
+EObjjvbdfHkWRmpg
+DnbkKvbdXrkaNUPY
+EPCkKvbdzQoMhiwA
+EOcKjvbdrpWOjDVf
+DncKjvbdZtJJZDrn
+EPDKjvbdqZOggRDx
+DnbjjvbdhgJbyWKV
+DoDKjvbdiVZdwRuC
+DoDKjvbdIwtCHkpp
+DoDKjvbdVAapsRRy
+EPDLKvbdwjvcgzzG
+DoDLKvbdRyihScWA
+DoDLKvbdrRuKmkAm
+DnbkKvbdqGDdsuaI
+EPCkKvbdAMhYrwZx
+DncKjvbdSPsfjGEX
+DncKjvbdczYpXxpb
+DoDLKvbdkIHMGFmk
+EPCjjvbdkClKqHUg
+EObkKvbdxVMdqZMO
+DoDKjvbdBdQBVjMf
+EObkKvbdZjTHpGbG
+EPDKjvbdTfzmkvue
+EPCkKvbdLAjfmCXq
+DoCjjvbdLGGHbApu
+EPDKjvbdEzsqEkcJ
+DoDKjvbdwygfGYFS
+DoDLKvbdhgJbyWKV
+EPDLKvbdZshiZETO
+EPDLKvbdKWUfDdfi
+DnbkKvbdqYoHgQcx
+DncKjvbdnGeYMmgZ
+EPDKjvbdKCjDRKDY
+DoCkKvbdJcKDQibx
+EObkKvbdZoNiFFZj
+EPCkKvbdUyHsykPO
+EOcKjvbdtvNxKQsA
+EObjjvbdatafwjtI
+DoDLKvbdhzVFkpmf
+EObkKvbdMgComQVL
+EPCkKvbdSCEEkhxk
+DoDLKvbdgFlZnGgA
+EObjjvbdZMSETnLm
+EObkKvbdtumxKQsA
+EObjjvbdZoOIddyj
+EOcLKvbdqZOggQcx
+EOcLKvbdKfFhBaQu
+DncLKvbdzGxlANEw
+EObjjvbdehLWRnQg
+EObkKvbdEPCjkWbd
+EObkKvbdqYnhHRDx
+EObkKvbdjvXODaww
+DnbjjvbdqTsgSRkU
+EOcKjvbdTqQoVVHm
+DnbjjvbdQmYBxnUz
+DnbjjvbdpyOhGqEY
+EOcLKvbdLGGHbAqV
+EObkKvbdZirgpHCG
+EObkKvbdqYnhGpcx
+DncLKvbdrbGNLgKy
+EObkKvbdkySrSxgU
+EOcLKvbdeAUQlwjG
+DncKjvbdkVwNdCYX
+DoCjjvbdJvVGDeHJ
+EPCkKvbdEuyPpNKF
+EOcKjvbdDjHivXjA
+DnbjjvbdkNCLydfo
+EPCjjvbdZjTHogBf
+DoDKjvbdGKeTDINV
+DnbkKvbdJXtBglQp
+DnbjjvbdFejSOIsq
+EOcKjvbdhytelRNf
+DnbjjvbdbBVdeopX
+DoCkKvbdFjdsDINV
+DoDLKvbdjvXNcbXw
+DnbkKvbdZdxGzhJC
+EPDLKvbdjAPgBQGj
+EObjjvbdJXsbHkqQ
+EPDKjvbdiVZdwRtb
+EObjjvbdGFjSNiTq
+EPDKjvbdznpQdbkx
+EPCjjvbdemFvgNKL
+EPDKjvbdWXIxWEEg
+DncLKvbdEObkKvcE
+DnbjjvbdLAjfmCYR
+EPDLKvbdEXwkstTl
+EObjjvbdFfKSNhsq
+DncKjvbdygZMANFX
+EPCkKvbdYqNFIleR
+DoCkKvbdSKyGUgLT
+DncKjvbdBdQBVjNG
+DnbkKvbdbUagYLTh
+EOcKjvbdsPunjDWG
+DncLKvbdrEFIonVa
+DncKjvbdaSGChTfL
+DoCkKvbdcJNKKfXY
+EObkKvbdULuoBWOi
+DncLKvbdKWVGEEgJ
+EPCkKvbdqFdEsuaI
+EPDKjvbdAMgySvyx
+DncLKvbdiUzEwRuC
+EObjjvbdZoNheEzK
+DnbkKvbdZLrETnMN
+EObjjvbdKWVFcdfi
+DoDLKvbdcScLUEJa
+EPCkKvbdIwsbIMRQ
+EOcKjvbdsBemMHKy
+EOcLKvbdzitoodSt
+EPDKjvbdrMyjZLhJ
+DnbjjvbdaRfCgsfL
+DoCkKvbdKQzEnenF
+EOcLKvbdUGznLvue
+DncLKvbdZxcinCkr
+DnbjjvbdEuyPpNKF
+DncKjvbdGFirOIsq
+EOcLKvbdVqmxBeMD
+EOcLKvbdwuMeRZLn
+DnbkKvbdBhkBkIej
+EOcKjvbdNQXpumfs
+EObkKvbdVBCRTRSZ
+DoDLKvbdZeYGzhJC
+DncLKvbdREDBPqES
+DnbjjvbdvBEZSoFI
+EPCjjvbdakLeoNcA
+EPDLKvbdeFOqbWbj
+EPDLKvbdiGicZWJu
+EPCkKvbdEKHiuwjA
+EPCjjvbdwkWcgzyf
+DoDKjvbdmpZyVkZC
+EPCkKvbdSZihSbvA
+EPDKjvbdelevfmKL
+DnbjjvbdeATplwif
+DoCjjvbdGAnpxizm
+EPDKjvbdTlWPBWOi
+EOcKjvbdmSYtzTEJ
+DncLKvbdnGeXmNfy
+DoDKjvbdTIzJqAAl
+EOcKjvbdqdEiPnVa
+EOcKjvbdcTCkUEKB
+DoCjjvbdEvYopMjF
+DoDLKvbdwuMdpyMO
+EPDKjvbdEuyQPlie
+EOcLKvbdVUMsfMVj
+EObjjvbdijFgilxS
+DoDKjvbdnPyxujyC
+EOcKjvbdTAFIgbPE
+DnbkKvbdZxdJnDLr
+DncLKvbdqdEiPmua
+EOcKjvbdhgJcZVjV
+DnbkKvbdRbEFLhxk
+DoDKjvbdmaivwoNu
+DoCkKvbdZQmFJMdq
+DncLKvbdeYZtTqez
+EObkKvbdqYoIGpdY
+DnbjjvbdEASJMyvw
+DoDKjvbdwzHfGYFS
+DncKjvbdjvXOECYX
+DncLKvbdbBVdepQX
+DoDLKvbdrEFIomua
+DnbjjvbdYgWdAOsJ
+EOcKjvbdkMakydfo
+EPCjjvbdegkWSNqH
+EPDLKvbdYlSEUNkm
+EPDLKvbdzRPMhjXA
+DnbjjvbdmSZUyrci
+EPDKjvbdiiehKNXr
+EPDLKvbdwzIGGXdr
+DncKjvbdSLYetfkT
+EOcLKvbdURROtuHm
+EPDLKvbdEYYLtUUM
+EOcLKvbdaSGDIUFk
+DnbkKvbdhfibyViu
+DncKjvbdeFOqavcK
+EPDLKvbdZtIhyETO
+EOcKjvbdsPuoKDVf
+DoDLKvbdBhkBjiGK
+EPDLKvbdnQZyVkYb
+DncLKvbdNsTugEtp
+EPCjjvbdCDpBWJmG
+DoCkKvbdmIdTqVRa
+EOcKjvbdptUHRqjt
+DnbjjvbdRpTfifDw
+DncKjvbdaRebgtFk
+EPDLKvbdEARiMyvw
+EOcKjvbdyNsHxShc
+DoCkKvbdxKwDgzyf
+DncKjvbdwuNFQyLn
+DncLKvbdegjvSORH
+DncLKvbdOStWGdtp
+EOcLKvbdcTCkTdKB
+DncKjvbdRECaQRES
+DoDLKvbdkIHMFemk
+EPCkKvbdfjfzcGAE
+DncKjvbdZLqdTnLm
+EOcKjvbdIMBzmwRL
+EOcKjvbdwzHeexFS
+EPCjjvbdKVuFdFHJ
+EPCjjvbdRXODcLgc
+DoDLKvbdlrZVZrdJ
+EPDKjvbdjKGIJmYS
+EObkKvbdHEKujCJj
+DncKjvbdNddTiIjd
+DoDKjvbdZjSgpGaf
+DoCjjvbdmfeXlnHZ
+EPCjjvbdRosfifDw
+DoCjjvbdZxcinDLr
+DoCjjvbdNeDsiIjd
+EPDKjvbdVgxVwgYz
+DnbkKvbdqTtGrRjt
+DnbkKvbdTqQntuIN
+DncKjvbdBvzdJEpW
+EPCjjvbdqUUHRrLU
+DnbjjvbdqcdhonWB
+DncKjvbdHDkWKBjK
+DnbkKvbdxVMeQxlO
+EObjjvbdkClKpgVH
+EOcLKvbdCSaDUGXS
+DncLKvbdUQqOttgm
+DoCkKvbdZxcjOClS
+EPDKjvbdVqmxCFMD
+DnbjjvbdqmZixlHi
+DnbjjvbdiUydvquC
+DoCkKvbdOTTugFVQ
+EOcKjvbdUQpoVVIN
+DoCkKvbdNHDPlpVL
+EOcLKvbdDncLKwCd
+EOcLKvbddeOrCXCj
+EObjjvbdqvolChyR
+EOcLKvbdaofgELzd
+DoDLKvbdrpVoKDWG
+DncKjvbdaMjasUmH
+EObjjvbdliETqUrB
+DncLKvbdXsLaMtOx
+EObkKvbdrykpTAhO
+EPDKjvbdehKvRmpg
+EObjjvbdUxhTzKnn
+DncLKvbdTfznMXVe
+EPDLKvbdqUTfqqkU
+DoCjjvbdHELWKCKK
+DoDLKvbdwuNFQyMO
+DoCjjvbdffLynGgA
+EOcLKvbdSLYetfkT
+EPDKjvbdtTRryZeD
+EPDKjvbdddoRbXDK
+DoDKjvbdFVxooljF
+DoDLKvbdxsNiNSCH
+DoDLKvbdsCGNMGkZ
+EOcLKvbdkHfkfFnL
+EPCkKvbdqrUjnLAm
+DnbkKvbdHELViajK
+EOcKjvbdNHDQMouL
+EPCkKvbdWWhxVdFH
+DnbkKvbdUWMPitBR
+DncLKvbdZoOJFFZj
+DncKjvbdcIljKewY
+DoDLKvbdVUNUGLvK
+EObkKvbdNsTufdtp
+DnbjjvbdGKdsCgmV
+EObkKvbduDCtwWPP
+EObjjvbdkMbMZeGo
+EPCkKvbdJSyAsNXl
+DnbjjvbdmbJwXnmu
+EPCkKvbdRjxeuGkT
+EObkKvbdaSFcITek
+EPDLKvbdGYtuAdYC
+DoDKjvbdFeirNiUR
+EPCjjvbdhyuGMQmf
+EObjjvbdDxYLstUM
+EObkKvbdFfKRmhtR
+DnbkKvbdyTNhmSCH
+EPCjjvbdJSyAsNYM
+EPCkKvbdEuxpQMie
+DoDLKvbdkClLQgUg
+DnbkKvbdssRrxzEc
+EPDLKvbdRMwbZNtz
+EPCkKvbdssSTYyeD
+DoCkKvbdYqMeImEq
+EOcLKvbdjuwOECXw
+EOcKjvbdOTUWHFUp
+EPCjjvbdliDtQtrB
+EPDKjvbdZxdJmblS
+DoDKjvbdbVCHXkTh
+DoDKjvbdpstHSRjt
+EOcLKvbdNPwpunGs
+DoCkKvbdLAjgNCXq
+DoCjjvbdDoDKjvbd
+DoCkKvbdZirgpHBf
+EPDLKvbdezuxdiTw
+DoCkKvbdLrXMyuQz
+DncLKvbdqlyjYkgi
+DnbkKvbdLrWlzUpz
+DoCjjvbdhytfLpnG
+EObjjvbdxrmiNSBg
+EPDLKvbdqquLNjaN
+EObjjvbdiHKCyVjV
+DncKjvbdjSziTKiz
+EPCjjvbdCflGHAzc
+EPCjjvbdZtJJZDrn
+EPCjjvbdJKEAKQHE
+EPDKjvbdIxTbHlRQ
+EOcKjvbdZRMdhmEq
+EOcLKvbdmttykJqf
+DncLKvbdEzsqFMDJ
+EPDKjvbdJuteceGi
+EOcKjvbdemFvfmJk
+DoCkKvbdkySqsZGt
+EOcLKvbdlrZVZsDi
+EOcLKvbdEXxLstTl
+DnbkKvbdkNBlZeHP
+DncLKvbdauCHYKsh
+EPCkKvbdhuZeXSVC
+EPCjjvbdOTTufdtp
+DoDKjvbdDoCkKwCd
+DoDLKvbdOAIrsirA
+EPCjjvbdlAmPNALA
+EOcLKvbdiBoCdwQq
+DoCkKvbdnCJwYOnV
+EOcLKvbdqwQLbhxq
+DncLKvbdGYuVBEYC
+EPCjjvbdcyyQXxqC
+EPDKjvbdrEEiPmvB
+DnbkKvbdJbibqJbx
+DncLKvbdiGjCxuiu
+EObjjvbdjKGIJmXr
+EPCjjvbdFkEsDIMu
+EPDKjvbdCWzchePv
+EObjjvbdEObjjwDE
+EPCkKvbdQdDApRDr
+DoDLKvbdbAvEfQPw
+DoDLKvbddtAUATNW
+DnbjjvbdUxhUZkOn
+DnbjjvbdwNWANEEm
+EPCjjvbduDCuWuoP
+DnbjjvbdjAQHApHK
+DncLKvbdJzpFxEAN
+DncKjvbdwtldpxlO
+EObjjvbdBraCtGWr
+EPDKjvbdJmADzGuB
+DoDLKvbdRadEkiZL
+DoCkKvbdAMhZTXZx
+DoCjjvbdqGDeUVaI
+DoCjjvbdVvhxWDdg
+EOcKjvbdSBceMIyL
+DnbkKvbdRkYfUfjs
+EOcLKvbdFWYpQMjF
+DoDLKvbdhlFENuCy
+EObkKvbdiCObeWpq
+DnbkKvbdHELWJaij
+EObkKvbdCTAcTfWr
+EPDKjvbdbrcLTdJa
+DoDLKvbdDncKkXDE
+DoCkKvbdmSYtzSdJ
+EOcLKvbdVZHszLPO
+DnbjjvbdhkdcmuCy
+DnbkKvbdLrXNZuQz
+EPDKjvbdZnmiFEzK
+EPCkKvbdlrZVZsEJ
+DnbjjvbdqmZixkhJ
+DoDLKvbdcTCjsdKB
+DoCkKvbdcyyPxYqC
+DoDKjvbdssRrxydc
+DoDKjvbdvPTzpjnt
+EObjjvbdZLqctOMN
+DoDLKvbdRNXbYnUz
+DncKjvbdJYUBglRQ
+EObkKvbdkIGlGFnL
+DoDLKvbdiUzEwSUb
+EPDKjvbdeEnrCWbj
+DoDLKvbdRbDdkhxk
+EObjjvbdYzcFqjWZ
+EOcLKvbdjggLfFnL
+DncLKvbdgQBzwEXh
+DoCjjvbdQlxByNtz
+DnbkKvbdoznDjwoA
+DnbkKvbdVgwuxHYz
+DoDLKvbdaaVdepQX
+DoDKjvbdLZRKSztf
+EPDKjvbdbUbHXkUI
+EOcLKvbdjhGkfFmk
+EObkKvbdeEoSBvcK
+DncKjvbdUtMtGMVj
+EPDLKvbdJTZAsMxM
+DnbkKvbdOEdUJJKd
+DoDKjvbdZHXEAPSi
+EObkKvbduaDyTPFI
+DnbjjvbdqAiFAWhE
+EObjjvbdelevgNKL
+DnbjjvbdTAEhgbPE
+DoDKjvbdnPzZVkZC
+DoDKjvbdQwNdDLhD
+DnbjjvbdnBjWwoNu
+EObkKvbdfMewGljL
+DncKjvbdrpVnjCuf
+EPDLKvbdLGFgbBRV
+EObkKvbdkCkkRHUg
+EObkKvbdTlVoAuoJ
+EPDLKvbdrMyjZMHi
+EOcLKvbdWHwuxHYz
+EOcKjvbdLrXNZtpz
+EObjjvbdbQHHDkzd
+EOcLKvbdfILWRnRH
+EPCjjvbdyfyMAMeX
+DncLKvbdNHCpNQVL
+EPCjjvbdFkEsDHlu
+DncKjvbdGGJqmhtR
+DnbkKvbdvAcxrndh
+DoCjjvbdqGDeTvBI
+DoCjjvbdJvUfDdgJ
+DoCjjvbdUVlPisaR
+DoCkKvbdqTsgSRkU
+EObjjvbdjblKpftg
+EObkKvbdtcDVXWPP
+DnbkKvbdfHkVqnRH
+DncLKvbdmoyxvLZC
+EObjjvbdkHfkfFnL
+EPDKjvbdwNWAMcdm
+EPCjjvbdJpzFOfNe
+DncKjvbdmbJvxOnV
+DncKjvbdTqQnuUgm
+EOcLKvbdTpqOuVHm
+DoCjjvbdYlSETmkm
+DoDKjvbdjEkGuPAO
+DoCkKvbdwygefXdr
+EObkKvbdrXPkcJYq
+DoCjjvbdxUleQyMO
+EOcLKvbdBsAcTfXS
+EPDLKvbdLBLGlbXq
+EObjjvbdmbJvwnnV
+DnbjjvbdbVCGwjsh
+DnbkKvbdxUmEpyMO
+EPCkKvbdYSlBNTnx
+DoDKjvbdeOeSkUTr
+DncLKvbdqmZixlHi
+EPCkKvbdNHCpNQVL
+DoCkKvbdDigjWXjA
+EObjjvbdrDeJQNvB
+EOcLKvbdJuuGDeHJ
+DoCkKvbdddnrCXCj
+DoDKjvbdqTtGqrKt
+DoDKjvbdeOeTKstS
+EObjjvbdySmiNRbH
+DnbjjvbdZshiYdTO
+EObjjvbdnCKXXnmu
+EPDKjvbdqiAKFMne
+DoDKjvbdNeEUIiKd
+DnbjjvbdzitpPdTU
+EPCkKvbdzaAOffal
+EOcKjvbdZtIiZDrn
+DoCjjvbdtSrTYyeD
+DoDLKvbdFVxopNJe
+DoDLKvbdJJdAJpHE
+DoDLKvbdHDjuiaij
+EObkKvbdUWMQKUAq
+EPDKjvbdTpqOuVIN
+EOcLKvbdqvpMChyR
+DoCkKvbdVviXudEg
+DoCkKvbdGLErbgmV
+EPCkKvbdZirhPfbG
+DoCkKvbdWXJYVceH
+DnbjjvbdhkeEOUcZ
+DncKjvbdSPtHJedX
+DncKjvbdFfKRnIsq
+DncKjvbdWWhxVdEg
+DoCkKvbdOStWHEuQ
+DoDLKvbdEuyQPmKF
+DncKjvbdrpVoKDWG
+DoCjjvbdKVtfEEfi
+DoCjjvbdWXIwudEg
+EPDKjvbdSCDeMIyL
+EPDKjvbdDoDKkXCd
+DoCkKvbdJpzEnenF
+EPDKjvbdaaWEfPow
+DoCjjvbdVwJXucdg
+EPCjjvbdauCHYKtI
+EOcLKvbdNeDshhkE
+DncLKvbdNGcQMpVL
+EOcLKvbdIryBSmXl
+DnbkKvbdTAFJICPE
+EOcLKvbdrMzKYlHi
+EOcKjvbdznopeDMY
+EOcLKvbdMRvmZuQz
+DncKjvbdeFOqbXCj
+DncLKvbdbhlijfWx
+EOcKjvbdqdEhpOWB
+DoDLKvbdUWMQJsaR
+DoDLKvbdptUGqrLU
+EObjjvbdaSGChUFk
+EPCjjvbdYTMAltOx
+DncKjvbdEPCkLWbd
+EOcKjvbdKCjDRKCx
+EPDKjvbdZyDjNcMS
+DncLKvbdFfKRnJUR
+EPDKjvbdrNZiyLhJ
+EOcKjvbdZeXfzgiC
+EOcKjvbdbUbGwkTh
+EPDLKvbdHfgZxwxH
+DncLKvbdrovOjCuf
+DnbjjvbdfNGWflik
+DnbkKvbdZoNiFEyj
+EPCjjvbddneTKtUS
+EObjjvbdRbDdlIxk
+EOcKjvbdKfFgbBRV
+EPDKjvbdFyUuBDxC
+EPCkKvbdiUzFXRtb
+EPCjjvbdrJAJeNPF
+DncLKvbdVAbRSqSZ
+EObjjvbdaNKbTVMg
+DoCkKvbdlhctQtqa
+DoDKjvbdZshiZDrn
+EPDLKvbdFkFSbglu
+EPCjjvbdHffyxwxH
+DncKjvbdTvLojTaR
+DnbkKvbdauCHXkUI
+DoDKjvbdGdKuiajK
+EOcKjvbdkClKqHVH
+EPDLKvbdnUtykKSG
+DnbkKvbdBiKbKhej
+DoDLKvbdHffzZXwg
+EPCjjvbdbrbkTcjB
+DoCkKvbdVwJYWDdg
+DncLKvbdJJdAJogE
+EPCkKvbdJvUfDdfi
+DoDKjvbdZeYGzgiC
+EObjjvbdZyEJnDMS
+EOcLKvbdmSZVZsEJ
+EPCkKvbdDnbjjvbd
+EPCkKvbdJvVGDeGi
+DoCjjvbdTXkLmzkY
+DnbkKvbdLqwNZuQz
+DncKjvbdZtIiYcsO
+DoDKjvbdLYqKSztf
+DnbkKvbdULuoBVni
+EObkKvbdiBnbeWqR
+EObjjvbdfILWRmqH
+DncKjvbdezvYdhsw
+DnbjjvbdJvUfEEfi
+EPCkKvbdRpUHKGDw
+EObkKvbdZGwEAPTJ
+EOcLKvbdcTCkUEKB
+EObjjvbdGAoQxizm
+DnbjjvbdNwoVzcmt
+DncLKvbdJbicRKDY
+DnbkKvbdGZVVAcxC
+EPCkKvbdRadFMJYk
+DnbjjvbdxsNiNRag
+DnbjjvbdiBncFXRR
+EPCjjvbdySmiNRbH
+DoDKjvbdeATqMxKG
+DnbjjvbdtSrSyZdc
+EOcKjvbdwtldpyLn
+EPDKjvbdqwPkbiYq
+EPDLKvbdzitpPcsU
+DoDKjvbdDjHiuwjA
+EPCkKvbdfMewGmKL
+DncKjvbdlrYtyrci
+EPCjjvbdZQldiMdq
+EPDKjvbdJbjDQjCx
+DncKjvbdqTsgRrKt
+EPCkKvbdEvZQPljF
+DoCkKvbdUsltGMWK
+EOcLKvbdEJgivXjA
+DnbkKvbdePFTLTtS
+EPDKjvbdEYYLstTl
+EPDKjvbdMfcPmPuL
+DoDKjvbdBsAcTevr
+EPDLKvbdwtleRZMO
+EObjjvbdRotHJfDw
+EOcKjvbdJuuFdFHJ
+DnbjjvbdZoOIeFZj
+DoDLKvbdsZlQSaHn
+EPCjjvbddoFTLTtS
+DncKjvbdbVBgXjsh
+EPCkKvbdaMkBrtlg
+EPDKjvbddiiqutzn
+EObkKvbdiZuFkpnG
+EPCkKvbdIxTaglRQ
+EOcKjvbduaEYrndh
+DnbjjvbdzQoMiJwA
+DoCkKvbdsCGNMHKy
+EObjjvbdMoxQunHT
+DnbkKvbdxwiJbPzL
+EOcLKvbdJbibpjCx
+DncKjvbdIxTbHkpp
+DoCkKvbdwuMeQxlO
+EOcKjvbdKeehCBRV
+EPCkKvbdZxdKNblS
+EPCjjvbdLFegbBQu
+DoCkKvbduLwwBUBX
+DoDKjvbdjlbMZeHP
+DoDLKvbdjAPfaPfj
+EObjjvbdqGEFTvBI
+EObjjvbdeAURNXif
+EObjjvbdxmrgxTJD
+EPCkKvbdqGDeUWAh
+DncKjvbdqTsfqrKt
+EObjjvbdjEjftoAO
+EOcKjvbdNrtWHFUp
+EObkKvbduCcUvvOo
+EPCkKvbdvwMAvBWV
+DncLKvbdtkwwBUBX
+DoCjjvbdVZHsyjnn
+EPDKjvbdQccBQQdS
+DnbkKvbdjgfkeemk
+EPDLKvbdFyVVBDxC
+DncLKvbdrNZiyMIJ
+EObjjvbdHfgZxwwg
+DoDKjvbdqceIomvB
+EPCkKvbdNGcPlouL
+DoCkKvbdCIkBkIej
+DoCjjvbdjKFhJmYS
+EObkKvbdBsBDUGWr
+EObkKvbdnQZxvKyC
+DnbjjvbdhzVFkqOG
+EPCjjvbdGLFScHlu
+DoCjjvbdtlXwAtBX
+DoDLKvbdUtMtFkvK
+DoCkKvbdBvzchdov
+DncLKvbdlZSrTZHU
+EOcKjvbdZnnJEdyj
+DncKjvbdYpleJMdq
+EPDKjvbdiMEcmtcZ
+EPCjjvbdfelZmgHA
+DnbkKvbdLhalRYAS
+DncKjvbdehLWRnRH
+DnbjjvbdeKJqvUzn
+EPCjjvbdqqtkOLBN
+EOcLKvbdfRaWzlDP
+DncLKvbdhtzFWquC
+EObkKvbdJvVFdFGi
+EObkKvbdMfcPlotk
+DoCjjvbdtcCuWvPP
+DnbjjvbdwtmFRZMO
+DoDKjvbdsPvPKCvG
+EPCjjvbdmfdwmOHZ
+EPDLKvbdMgDPlouL
+DoDKjvbdnGdwlnHZ
+DoCkKvbdVwJXudFH
+EObjjvbdQdCaQQcr
+DnbkKvbdYSkaNUPY
+DoCjjvbdULvPAuni
+EPCjjvbdSZihScWA
+DoCkKvbdBiLCKhej
+DnbkKvbdhXZAzzAJ
+EOcLKvbdQYmAGsRj
+EOcLKvbdZtJIyDrn
+DnbkKvbdNsTufduQ
+EOcKjvbdEXxMUTsl
+DoDLKvbdKyRJrzuG
+DoDKjvbdrWpLbhxq
+DnbjjvbdrDeIonWB
+EPDKjvbdHELViaij
+DoDLKvbdBdQBWJmG
+DncLKvbdRjyGUfkT
+EPDLKvbdYNqAYUut
+EPDKjvbdRXNdClID
+EPCkKvbdNwnuzdOU
+EOcLKvbdjmBkydfo
+DoCjjvbdrpWPKDVf
+EPCkKvbdZyEKNbkr
+EOcKjvbdQZNAHTRj
+EOcKjvbdwtmEpxkn
+DncLKvbdLhbMRYAS
+DoCjjvbdsrrTZZdc
+DncKjvbdxmrgxShc
+EPCkKvbdmozZVkZC
+EPCjjvbdbsDLTcia
+DoDKjvbdGKeScIMu
+EPCjjvbdrEFIpOWB
+EOcKjvbdmpZxukZC
+DoCkKvbdTkunaVni
+DoCjjvbddneSkUUS
+EPCjjvbdTlVoBWPJ
+DoDKjvbdxsNhmSCH
+EPCkKvbdVviXvDdg
+DnbjjvbdwzHfFwdr
+EPDKjvbdfMewHMjL
+DoCjjvbdbsDKtDjB
+EPDLKvbdUQpoVVIN
+EObkKvbdrEFJPmua
+EObkKvbdhlEcnUcZ
+DoDKjvbdZRMeIleR
+DnbjjvbdmajXYOnV
+DoDKjvbdaRfDHtGL
+DoCjjvbdbhljKewY
+DoDLKvbdDwwksssl
+DncLKvbdUMWOaVoJ
+DncKjvbdWWiYWDdg
+DoCjjvbdyXiJbQZk
+DnbkKvbdHDkVibKK
+EPCjjvbdtSrSxzEc
+EOcLKvbdaSGChUFk
+DnbkKvbdYSlBNUOx
+EPDLKvbdJTZBSmYM
+DoCjjvbdTkvOaWOi
+DncKjvbdMowpvNfs
+EPDKjvbdeEnqavcK
+EOcLKvbdiifIJlxS
+DnbkKvbdqceIpNua
+EPDKjvbdrNZixkhJ
+DncKjvbdiHKDZViu
+DnbkKvbdrDdiPnWB
+DncLKvbdLGFhCAqV
+DoCjjvbdwuMdqYlO
+EPCjjvbdePFTKssr
+EObjjvbdVBCQrpqy
+EObjjvbdbrcKsdKB
+DnbkKvbdBvzciEpW
+DoCjjvbdIHGyyXxH
+EObjjvbdrzLpTAhO
+EOcKjvbdemGWgNJk
+EObkKvbdVZHtZjnn
+EOcKjvbdiCObeXRR
+EPCkKvbduoTzpkPU
+DoCkKvbdrNZjYkgi
+DnbkKvbdTAEhgand
+EOcKjvbdhuZdwRuC
+DoDLKvbdWWiXuceH
+EPDKjvbdZoOIddzK
+DncLKvbdVAbRSprZ
+DnbjjvbdhgKDZWJu
+DoCkKvbdVZITykOn
+DoCkKvbdiGibyWKV
+EPDLKvbdwyhGGYFS
+DoDKjvbdiHKCxvJu
+EPDLKvbdhyuGLpnG
+EPDKjvbdOAJStKSA
+EOcKjvbdzitpPdSt
+DoCkKvbdzROlhjXA
+DoDLKvbdtTSSxzEc
+DoDKjvbdzoQRFCkx
+DnbkKvbdxnSgxShc
+DnbjjvbdiBoDFWqR
+DoCjjvbdnBjWwoNu
+DncLKvbdVYhTzKnn
+DncLKvbdkIGkefNk
+DnbkKvbdlqxuZsEJ
+EOcLKvbdACrYJzIp
+EPDKjvbdmaiwYOnV
+EOcKjvbdYkrEUNlN
+DoCjjvbdVUNTfLuj
+DoDLKvbdfHkWSOQg
+DnbkKvbdBraCsfXS
+EOcKjvbdMJBkpxAS
+DoDKjvbdcyyQXyQb
+EObkKvbdeEnrCXDK
+EObkKvbdFejSNiTq
+DoCjjvbdEYXkstTl
+EPDKjvbdyYIjBpZk
+DncKjvbdiHJcZWKV
+DncKjvbdQdDAoqDr
+EObkKvbduDDUvvOo
+EPCkKvbdzGyMANEw
+DoDKjvbdQvnECkgc
+DncKjvbdVviXudEg
+DoDLKvbdQZNAHTSK
+EPDKjvbdkCkjqHUg
+EObjjvbdwyhFeweS
+DoCjjvbdxwiJbQZk
+EOcLKvbdEPDLLXDE
+DncLKvbdVrNwbFLc
+DoCkKvbdjAPgBPgK
+EOcKjvbdpstGqqjt
+EPDLKvbdHDkVjCKK
+DncKjvbdirzhrjiz
+DnbjjvbdxrnJNSBg
+EPCkKvbdraelkgLZ
+DncLKvbdptTgRqjt
+DoCkKvbdIsYaTMxM
+DoCjjvbdMpXqVnGs
+DoDLKvbdUVkoitBR
+DoCkKvbdjmCLyeHP
+DoCjjvbdiVZeWquC
+DoCjjvbdVUMtFlWK
+EPDLKvbdxKvdHzzG
+DoDKjvbdiMEdNuCy
+EPDKjvbdwzIFfYEr
+EObjjvbdJXsagkpp
+EPCkKvbdxrmhmSBg
+DoDKjvbdlqxuZsDi
+EPDKjvbdsQVoJcVf
+DnbjjvbdEYYLstUM
+DncLKvbdkHgLfGNk
+EPCjjvbdbsDKtDjB
+DnbjjvbdJcKDQibx
+DoCjjvbdyzdnSIIh
+DnbkKvbdrpWOjCuf
+EObjjvbdbAudeopX
+DnbkKvbdYkqctNlN
+EPDLKvbdfHkWRnRH
+EPDLKvbdXmqAYUut
+DncKjvbdFyVVBEXb
+DnbkKvbdrDdhpNua
+DncKjvbdeAURNXjG
+DoCkKvbdOTUVgEuQ
+EPCjjvbddwyssrFz
+DoCjjvbdMpYRWNfs
+DoCkKvbdjuvnDaww
+DnbkKvbdVhXvXgYz
+EObjjvbdTulQKTaR
+EObjjvbdOAJTUJrA
+EPDLKvbdsZkosBIO
+DoCkKvbdhgJbxvKV
+EPCjjvbdnBivxOnV
+DncKjvbdxrnIlrCH
+DncLKvbdzaAPHGbM
+EPCkKvbduMXvaUBX
+DnbkKvbdSBceMJZL
+EObjjvbdJpzEoGOF
+DnbkKvbdWexytAPT
+DnbkKvbdkVwNcaxX
+EOcLKvbdEYYLsstM
+DoCkKvbdRosfiedX
+EOcKjvbdwuMdpyMO
+EObjjvbdUsmUFlWK
+EObjjvbdjuwOECXw
+DncKjvbdqlzJxkgi
+DoCkKvbdiHJbxujV
+EPDLKvbdakMFoNcA
+EOcLKvbdmIcsqUqa
+EPCkKvbdeKKSVtzn
+EPCkKvbdvBEZTOeI
+DncKjvbdpstHSRjt
+EOcKjvbdKVuGEEfi
+DoDLKvbdZQldiNFR
+EPCjjvbdxnTIYShc
+EOcKjvbdtunXjQsA
+EPDKjvbdjcLkRHVH
+DncKjvbdDoDLLXCd
+DnbjjvbdZyEJnDMS
+DoDLKvbdFkFTCgmV
+EOcKjvbdhkddOUby
+EPDLKvbdNeEUJIkE
+DnbkKvbdyzeNqghh
+EPDKjvbdFVxopMjF
+EOcKjvbdGdLVibKK
+DncKjvbdBdQAvJlf
+DoDKjvbdbiNKLFwY
+EPCkKvbdnGeYNNgZ
+EPDLKvbdEYXlUTsl
+DncLKvbdOEcsiIjd
+DncKjvbdKaLHMbYR
+DncKjvbdyTOIlrCH
+EPCkKvbdMpXpumgT
+EPCjjvbdtbbtwVno
+DoDKjvbdrRtkOLAm
+EObjjvbdbLLfPNcA
+DncKjvbdjmCLydgP
+DnbkKvbdTkuoBVoJ
+DnbkKvbdSCDdlJYk
+EObkKvbdCEPaVjNG
+DoDLKvbdFaOpxizm
+EPCjjvbdfMevgMjL
+DoCkKvbdYzcGRjVy
+DnbjjvbdKRZdoGNe
+EPDLKvbdZisIQHCG
+EOcLKvbdZMSEUOMN
+DoCjjvbdiGibxuiu
+EPDLKvbdZQmFJMeR
+DoCkKvbdsBemLfjy
+DncLKvbdzoPqEcMY
+DncLKvbdMoxRWOGs
+EOcLKvbdFeirOJUR
+DoDLKvbdpyOgfpdY
+DncLKvbdyzeOSIJI
+DoDLKvbdRkZFuHKs
+DnbkKvbdxVNEqZLn
+DoCjjvbdMgDPmPuL
+EPDKjvbdZQmEhmFR
+DncKjvbdBraDUFwS
+DoCkKvbdqqtjmkAm
+EPDLKvbdLZQirzuG
+DoDLKvbdlYsRryGt
+EOcKjvbdKaLHNBxR
+EOcKjvbdTqQoUthN
+EObkKvbdhbObeXRR
+EPDKjvbdJutfDeGi
+DoDLKvbdRkZFuGkT
+EOcKjvbdrbGNLgKy
+DnbjjvbdmpZyWKyC
+EPDKjvbdHELVjBij
+EPCjjvbduDDUvuoP
+EOcKjvbdrDeIonWB
+DoCjjvbdnPyyWLZC
+EPDKjvbddndrjtUS
+EObjjvbdjuvnDbYX
+EPDLKvbdCIkBjhfK
+EObkKvbdZjTHogCG
+EOcKjvbdjJehKNYS
+DnbkKvbdSxLMNzkY
+DoDLKvbdKDKDRJcY
+EPCkKvbdmpZxvKxb
+DnbjjvbdssSTYyeD
+EObjjvbdHDkVibJj
+DnbkKvbdSLZFtgLT
+DoCjjvbdxnTIXriD
+DnbkKvbdcSbjsdJa
+DoCkKvbduoTzpjoU
+DoCjjvbdXsLaNUOx
+DoDLKvbdcScKtEJa
+DnbkKvbdfpBzwDwh
+EPDKjvbdjlakyeGo
+DnbjjvbdYzcFqivZ
+DncLKvbdCIkBjiGK
+EPDLKvbdxZhFfYFS
+EObjjvbdrEFJQNvB
+DoDLKvbdjAPgBQHK
+EOcLKvbdkDLjqHUg
+DoCkKvbdiUzFWqtb
+DoCkKvbdKVtfDdfi
+DoDLKvbdwkXEHzyf
+EObjjvbdqcdhpOWB
+EPCkKvbdeEnrBvbj
+DoCkKvbdCTAbsewS
+DnbjjvbdNHCpMouL
+DoDKjvbdSQUGiecw
+DoDLKvbdelevfmKL
+DoCkKvbdySnImSCH
+DncKjvbdANIZSvzY
+DncKjvbdrJAJeNPF
+EPCjjvbdqTtGqqjt
+EObjjvbdaRfDHsfL
+EPCkKvbdrJAJeMne
+EPDKjvbdiGjDYvJu
+DoDKjvbdMgCpMpVL
+DncKjvbdZjTIQHCG
+EOcLKvbdJYTbILqQ
+DoCkKvbdzoPqEbkx
+EPDLKvbdvlvANDeN
+DncLKvbdatafwjsh
+DncLKvbdJuuFcdgJ
+DncLKvbdwXMAvBWV
+DoDLKvbdaMjbStmH
+DoCkKvbdeOdsLTtS
+DoDKjvbdbLLeoNcA
+EPDKjvbdJKEAJpGd
+DnbjjvbdZnnIeEyj
+EOcLKvbdunszpjnt
+EObkKvbdmoyyWKxb
+EObkKvbdILazmvpk
+EPDKjvbdQlwbYmtz
+EPCjjvbderAvzkcP
+EObkKvbdegjvSORH
+EOcKjvbdsrqsYydc
+EOcKjvbdfIKvSORH
+DnbkKvbdFjdsDIMu
+EPDKjvbdpstHRqjt
+EOcLKvbdWRmxCElD
+EOcLKvbdkHflGFnL
+DoCjjvbdZjTHofbG
+EObjjvbdeEoSBwCj
+EPCkKvbdJSyBTNXl
+DnbkKvbdUaCRTQqy
+EPDKjvbdSLZFtfkT
+DncKjvbdyNrgwsJD
+DoDKjvbdezuxdiUX
+DoDLKvbdACrXiyhp
+DoDLKvbdxwiJaoyk
+EOcKjvbdUxhTzLOn
+DnbjjvbdnHFYNNfy
+EOcLKvbdhanbeWqR
+DoDKjvbdzHYlAMdw
+DoCjjvbdKyRJrzuG
+DncLKvbdliETpuRa
+EObkKvbdczYpXyRC
+DoDKjvbdFfKRnIsq
+EPDKjvbdVAbQsRSZ
+DncKjvbdezvZEiUX
+DoCkKvbdZisHofbG
+EPDKjvbdjKFgilxS
+EOcLKvbduVmxKQsA
+DnbjjvbdhuZeWrUb
+EObkKvbdGYuUaDxC
+DoDLKvbdaaWFGPpX
+DnbkKvbdUQpoVUhN
+EPCjjvbdZxdJmcMS
+DncKjvbdhbPCdwRR
+EObkKvbdZRMeJNFR
+DnbjjvbdTlVoBWOi
+DoCkKvbdatbHYKtI
+EObkKvbdiHJbxvJu
+DncKjvbdsQWOjCvG
+DncLKvbdRosfjGEX
+EObkKvbdREDBQRDr
+EOcLKvbdeEnqawCj
+EPDLKvbdGZVUaEXb
+EPDLKvbdIryArmXl
+EObjjvbdiiehJlwr
+DoCkKvbdMJCMRYAS
+DnbkKvbdlrYtzTDi
+DoDLKvbdnGeXlmfy
+DoCkKvbdSCDeMJZL
+EObkKvbdLFegaaRV
+DoDKjvbdGGKRmhsq
+EObkKvbdiLdcnVDZ
+DnbjjvbdGBOqZJzm
+DnbjjvbdhfjCxvKV
+EPCjjvbdlBNPNALA
+EOcKjvbdtbbuXWPP
+DncLKvbdEPCjjwDE
+DoDLKvbdLqwNZtpz
+EPDLKvbdbVCGwkUI
+DncLKvbdZyDimcLr
+DncLKvbdfILWSNpg
+DoDKjvbdFVyPpNJe
+DncKjvbdqiAJeMoF
+EOcKjvbdqrVLOLAm
+DoCjjvbdehKuqnQg
+DoDLKvbdGLFTCglu
+DoCjjvbdXrlBMtPY
+DncKjvbdlYrrTYgU
+EPCkKvbdWSNxCFMD
+DncKjvbdUVkoitAq
+DncLKvbdfHjvSORH
+DoCkKvbdCEPaWKMf
+EObkKvbdmbJvxPOV
+EPDKjvbdwzHefXeS
+EOcKjvbdvvlAvAuu
+DncLKvbdpxngfqDx
+DnbjjvbdIwtCIMQp
+DncKjvbdHDjvKBjK
+EOcKjvbdjmCLzFGo
+DnbkKvbdZMRdTnMN
+EObjjvbdEOcLLWbd
+DoDLKvbdkNBlZdfo
+EPCjjvbdemGXHNKL
+EOcLKvbdkxrqryGt
+EOcKjvbdsPvPKDWG
+EOcKjvbdXsMAlsoY
+DnbkKvbdmIcspuSB
+DoCjjvbdUaBpsRRy
+EOcLKvbdSPsfiedX
+EOcKjvbdSCEEkiYk
+DncKjvbdWXJXudEg
+DncLKvbdRyigrbvA
+DoDLKvbdUMVoAvOi
+DnbjjvbdZtIhxcsO
+EOcLKvbdJXsbHkpp
+DnbkKvbdZtIhyETO
+DncLKvbdHlBzmvpk
+EObkKvbdzHZMAMeX
+EPDKjvbdKCjCpjDY
+EOcKjvbdjblKqHUg
+DoDKjvbdGGJrNiUR
+DoDLKvbdrEFIomvB
+EPCkKvbdrovPKDVf
+DoDKjvbdpxnhGpdY
+EPDKjvbdemGWgNKL
+EPDLKvbdTlWPAuoJ
+EOcLKvbdhuZeWqtb
+DnbkKvbdhyuGLpnG
+EObjjvbdSBcdlJZL
+DnbkKvbdeEnqbWcK
+DnbjjvbdJKEAJofd
+EObjjvbdbQGfckzd
+EPCjjvbdRkYeuHLT
+DoDLKvbdXrlBMtOx
+EObkKvbdznoqFCkx
+EPDLKvbdjggLfFnL
+EPDKjvbdhuZdwSVC
+EPCkKvbdeEoRbXDK
+EPCkKvbdKaKgNCYR
+DoDLKvbdWWhxWDdg
+EPCjjvbdqUTfqqjt
+EOcKjvbdcSbkTdJa
+DncKjvbdauCHXjtI
+DoCkKvbdQlwbZNtz
+DnbjjvbdqvolCiYq
+EOcLKvbdePFSjstS
+EOcKjvbdhgKDZWKV
+EObkKvbdCgLfHAzc
+DncKjvbdnUuZkKSG
+DnbjjvbdlhctRUrB
+DoDKjvbdpyPHgREY
+DoCkKvbdjJegimXr
+EPDKjvbdfHkVrORH
+EPDKjvbdyTOIlqbH
+EPDKjvbdjKFhKNYS
+EPDKjvbdFWZPpMie
+EPCjjvbdIwsahLpp
+EObkKvbdKfGIBaQu
+DncKjvbdGFirOJTq
+DnbjjvbdpedFUWBI
+EPCkKvbdNeDshiKd
+EObjjvbdBiLBjhej
+EObjjvbdCJKbLJFj
+DncKjvbdvwMAuaWV
+DnbjjvbdZRMdhleR
+DncKjvbdhgKCyViu
+DoCkKvbdhficZWKV
+DnbjjvbdwkWdHzyf
+DncLKvbdVBBqSprZ
+EOcLKvbdUsmTelVj
+EOcLKvbdFxuVBEYC
+DoDKjvbdKaLHMbYR
+EPCkKvbdGdKuiaij
+EPDKjvbdfIKvRnQg
+DncKjvbdfekzNfgA
+DoCkKvbdJbicRJbx
+EOcKjvbdIwsagkpp
+DncKjvbdOEctIiKd
+DncKjvbdOTUVfduQ
+EPCkKvbdFWZPomKF
+EObjjvbdezvZFJUX
+DoCjjvbdtSrTYzFD
+DoCkKvbdbVCHYLTh
+EPDLKvbdZMRdUOLm
+DoDLKvbdNwoVzdNt
+EPDLKvbdFaPRZJzm
+DoCjjvbdxZhGFweS
+EPCjjvbdZQmFImFR
+DnbjjvbdsQWOibvG
+DoCjjvbdSBdFMIxk
+EPCkKvbdEObkKvcE
+DoDKjvbdqFcdsvAh
+EOcKjvbdezuyEhsw
+DnbkKvbdVqnXaeMD
+EObjjvbdnGeXlmgZ
+DncLKvbdCIkBkIfK
+EPDLKvbdpecdtWAh
+EPDKjvbdsQVnjCvG
+DoDKjvbdkDMLQfuH
+EObjjvbdAMhZTWzY
+EPCjjvbdiCObdvqR
+DoDKjvbdUWLoisaR
+DncLKvbdSPtHKGDw
+EObjjvbdaNLBrtmH
+EPDKjvbdUyHszKoO
+DoDKjvbdQwNccLhD
+EPDLKvbdnVUzKjRf
+DoCkKvbdRyigrcWA
+EOcLKvbdbiNKLGXY
+DncKjvbdlhctRVSB
+DoCkKvbdNPxRWNfs
+EObjjvbdANHxsXZx
+DnbjjvbdNrsvHEuQ
+EPCjjvbdmbJvxPNu
+EOcKjvbdJvVGEFGi
+EPDKjvbdUWLoitAq
+DoCkKvbdkDMKpfuH
+EOcLKvbdfjfzbfAE
+EOcLKvbdczZQYZRC
+DoDLKvbdQwNcblHc
+EObkKvbdOTTugEtp
+DncKjvbdbUagYLTh
+EPCjjvbdfNGWfmKL
+EObjjvbdiVZdvrUb
+DncLKvbdZyDinDMS
+EPCkKvbdmaiwYOmu
+EOcLKvbdqUUHSRkU
+DncLKvbdDncKjvbd
+DoCkKvbdVqmxCElD
+EPCkKvbdaRfDIUFk
+EOcKjvbdjKGIJlxS
+DncLKvbdkxrrTZHU
+DncKjvbdypnmIjXA
+DoDLKvbdJpyeOfOF
+DoDLKvbdwXMBVaVu
+DoDKjvbdKfFhCAqV
+DoCjjvbdIxTahLqQ
+EOcLKvbdADSYKZiQ
+DoCkKvbdMowpunHT
+EOcKjvbdgKfzbfAE
+EPDKjvbdhkddOVDZ
+EPDLKvbdemFwHMik
+EPCjjvbdUVlQKTaR
+DncLKvbdRWnECkhD
+DnbjjvbdkWXODbYX
+DoCjjvbdZeYGzghb
+DoCkKvbdSKyFtfkT
+DoDLKvbdBhkCLJFj
+DncKjvbdlhdTqVRa
+EPDKjvbdqqtjmjaN
+DoDLKvbdZjTHofbG
+EPDLKvbdJmADzHVB
+DoDLKvbdSBceLhyL
+EObjjvbdqwPlCiYq
+DncLKvbdYORAXtvU
+EPDLKvbdZnnJEdyj
+DoCjjvbduWNxKQsA
+EPDKjvbdWSNxCElD
+DoCkKvbdRjyFtgLT
+DoCkKvbdeOeSkUUS
+EOcKjvbdDihKVxKA
+EObjjvbdffLymgHA
+DoDLKvbdcScKsdKB
+EPDLKvbdlYsSSyGt
+DnbjjvbdGKeTDINV
+DoDLKvbdCTBCtGXS
+EObjjvbdEASIlyvw
+EPDLKvbdfMfWfmKL
+DoCkKvbdpstGqrLU
+DncLKvbdtlXwAsaX
+DoDKjvbdNrsvHEuQ
+EObjjvbdCTBDTfXS
+DoDKjvbdkMalZeHP
+DoDLKvbdQccBPqDr
+DnbkKvbdYqNEiNEq
+DnbkKvbdvBDyTOeI
+DnbjjvbdLAkGmBxR
+EObkKvbdLiBlRYAS
+EPCjjvbdTukpKUBR
+EObkKvbdhuZeWqtb
+DoDLKvbdZyEJmbkr
+DnbjjvbdxrmiNSCH
+EPCjjvbdKWVFdFHJ
+EPCjjvbdRWmcblID
+EPCkKvbdsQVoJcVf
+EPCkKvbdGcjuibJj
+DoCjjvbdJuteceHJ
+DnbjjvbdLLAhWAJy
+DncKjvbdULunaWOi
+EOcLKvbdHlBznXQk
+DoDKjvbdvBDxroEh
+DoDKjvbdzaAPHGbM
+DoDLKvbdUyITyjoO
+DnbkKvbduaDxroFI
+EObkKvbdAMhZSvzY
+EObjjvbdDoDKkWbd
+EObkKvbdGKdrbhNV
+EPCkKvbdmgFXlnGy
+EOcKjvbdzdzOzdzQ
+EPCkKvbdKkBHvAJy
+EOcKjvbdqAiFAWhE
+DoCjjvbdQvmdClID
+DncKjvbdMtsSKmAX
+EObjjvbdziuPpETU
+DoDKjvbddZyQYZQb
+EPDLKvbdauBgXkTh
+DnbkKvbdnCJvwnmu
+DoCjjvbdxUmFQyMO
+DncKjvbdXGYzUAPT
+EPDLKvbdOAJTUKSA
+DncKjvbddZyPwxqC
+EOcKjvbdqlzKYlIJ
+DnbjjvbdkVvnDaww
+DnbjjvbdZdxGzhIb
+DnbkKvbdDwxLtTsl
+EObkKvbdGKdrcHmV
+DncKjvbdTAFJHbOd
+DoDKjvbdEObkKvcE
+DnbkKvbdaNLCSuNH
+DoDLKvbdDxYLtTtM
+EObjjvbdVZIUZjnn
+DoCkKvbdNsUVfduQ
+EOcLKvbdGGKRmhtR
+EPDKjvbdbKlFnmcA
+DncKjvbdvvlAvBWV
+DoCjjvbdliEUQtrB
+DnbjjvbdjgfkfGNk
+EPDKjvbdlYsSTYft
+DoDLKvbdbKlGOnDA
+EPDKjvbdjAPfaPfj
+DnbkKvbdzGyMAMeX
+DoCjjvbdZnmhddzK
+EPCkKvbdIMBzmwQk
+EObkKvbdjEkHVPAO
+EPCkKvbdQccBPpdS
+EPCjjvbdhgKCxvJu
+DncLKvbdVgxVxHYz
+EOcKjvbdxVNFQxkn
+DoDKjvbdbLMGPNcA
+DncLKvbdGckWJajK
+DnbkKvbdrMyiyLgi
+EOcLKvbdKefICApu
+DoCjjvbdqFdEtWBI
+EPCkKvbdYSlBNUPY
+DoCjjvbdIwsbILpp
+EPCjjvbdmgFYMnHZ
+EObjjvbdQvmccMID
+DncLKvbdURQntthN
+EOcLKvbddxZtUSFz
+EPCkKvbdhtzFWqtb
+EOcKjvbdVBCRSpqy
+DncKjvbdtbbtvvOo
+EPCkKvbdczZQYZQb
+DnbjjvbdQwODcLgc
+EPDLKvbdtunXipsA
+DncLKvbdBhjajhej
+DoDKjvbdNrtVfduQ
+EOcLKvbdKWUfDdfi
+EObjjvbdpstHRrLU
+DnbjjvbdznpRFClY
+EPCjjvbdfNFvgMik
+DoCjjvbdUsltGLvK
+DnbjjvbdlqyVZsDi
+DoCkKvbdNPwqWOHT
+EOcLKvbdakLeoNcA
+DoDKjvbdsCGNMGkZ
+EPDKjvbdaRfDHsfL
+DoDKjvbdZtIhyDrn
+EPDLKvbdOStVgFUp
+EPCkKvbdeATplxKG
+DncLKvbdySmhlrBg
+DoDKjvbdnCKWwoOV
+DnbjjvbdDncKjvcE
+EOcLKvbdwzIGGXdr
+EObjjvbdmIdTqVSB
+DnbjjvbdUGznLwVe
+DncLKvbdTkvOaWPJ
+DncKjvbdyOSgwsIc
+DncKjvbdjmCLzFGo
+DoDLKvbdpssfqqkU
+EPDKjvbdmtuZjirG
+EOcKjvbdOFEThhkE
+DoDKjvbdIMBznWqL
+EPCkKvbdJvVFcdfi
+EPDKjvbdnBivxOmu
+EObkKvbdTvLojTaR
+DoCkKvbdMRwNZtpz
+EObjjvbdEARhlzXX
+DnbjjvbdcScLTcjB
+DncKjvbdxmrhXrhc
+DoDKjvbdEvZQQNKF
+DncLKvbdGLErcHmV
+DoDLKvbdFkFTChMu
+DoCkKvbdOFETiIkE
+EPDKjvbdnVUzLKRf
+EPDKjvbdmuUzKjSG
+EPCjjvbdwuNFQxkn
+DncLKvbdeATpmXjG
+EObjjvbdxUmEpxkn
+EPDKjvbdcSbkTcjB
+EPCjjvbdmbKXXoNu
+EPDKjvbdSQUHKFdX
+DoDKjvbdCTAbsewS
+EOcLKvbdVwJYVdFH
+DoDKjvbdZtIiYcsO
+EPDKjvbdhkeENtcZ
+EObkKvbdGBOpyJzm
+EPCkKvbdRMxCYmtz
+DoCjjvbdzjVPocsU
+DoDLKvbdrDdiPnWB
+EPCjjvbdFjdsDIMu
+DoDLKvbdSLZGUgLT
+EPDLKvbdKefHaaQu
+DoDKjvbdKCibpicY
+EOcLKvbdijGIJmYS
+EObjjvbdelfWgNKL
+DnbkKvbdbhmKKfWx
+DoDKjvbdSQUHKGEX
+EPCkKvbdnGdxMmgZ
+DncLKvbdJJdAKPgE
+EPDLKvbdmRyUyrdJ
+EOcLKvbdhzUfLqOG
+DoDKjvbdLAjgMaxR
+DoDKjvbdRosfjGEX
+EObkKvbdpssfqqjt
+DnbkKvbdjAQHAofj
+DncLKvbdidkHUoAO
+DoCkKvbdCIjbLIej
+DncLKvbdelfWfmKL
+DoDLKvbdxUleQxkn
+EPDLKvbdEvZQPljF
+DncLKvbdJbjDQjCx
+DncLKvbdyOTIXriD
+DoDKjvbdTulPjUAq
+DnbjjvbdJSyAsNYM
+EOcLKvbdbBVeGQQX
+EPCjjvbdbKkenmcA
+EPCjjvbdiGjDZWJu
+DncLKvbdcSbjsdJa
+EObkKvbdZtJIyDsO
+DoDLKvbdrafMkgLZ
+DoCjjvbdiMFDmuDZ
+DnbkKvbdnUtyjirG
+EPDKjvbdfNFvflik
+DoDLKvbdrWokcJZR
+DncKjvbdWWhxWDdg
+EPDLKvbdNeDtJJKd
+EOcLKvbdqlzKYkhJ
+DncKjvbdSQUHKGDw
+DoCkKvbdkHflFfOL
+EPCkKvbdRXNdDMID
+DncLKvbdSLZFtfkT
+EOcLKvbdZQldiMeR
+DnbjjvbdSBdElJYk
+DncLKvbdwWlBVaWV
+DoCjjvbdhzUfLqOG
+DoDLKvbdmJEUQuSB
+DnbjjvbdULvPBVoJ
+EPDLKvbdYkrDtOMN
+EPDKjvbdHEKujBij
+EObjjvbdJuuGDdfi
+EObjjvbdzaAOgGbM
+DncLKvbdkClLRHUg
+EObkKvbdYTMAmToY
+EObjjvbdxVMeQyLn
+DoDKjvbdrEFJQNua
+DncKjvbdYSlBNTnx
+DnbjjvbdrSUkOLAm
+EOcLKvbdrylQTBIO
+DnbjjvbdrouoKDVf
+DoDLKvbdwWkaVaVu
+DoCkKvbdZQmFIleR
+EPCjjvbdiLeENtby
+DoCjjvbdrDeJQNua
+EObjjvbdIGfzYxXg
+DoCkKvbdySmiMqag
+EOcKjvbdbVBgYLTh
+DoDKjvbdLFehCApu
+EPCkKvbdCDpAvJmG
+EObkKvbdZLrDtOLm
+EPCkKvbdZnnJEdyj
+EPCjjvbdZjSgpGbG
+EOcKjvbdWSOYBdkc
+EPDKjvbdwtleQyLn
+DnbkKvbdmJDtQuSB
+EObkKvbdkWXODbXw
+DncKjvbdezuyEiTw
+EObjjvbdnBjWwnmu
+EPDKjvbdZxdJmcMS
+EPDKjvbdrbGNMHLZ
+EObkKvbdEYXlTssl
+DnbjjvbdyTOJNRag
+DnbkKvbdGZVVAdYC
+EPCjjvbdTYLMNzkY
+DncLKvbdJcJcRKDY
+EOcLKvbdYpmEhldq
+DoCkKvbdjKFgjNYS
+EPDLKvbdJbibqKCx
+EPCjjvbdyTNiNSCH
+DoDLKvbdGGKRmhsq
+EPDLKvbdLAkGmCYR
+EPDLKvbdCEPaWKMf
+DoCkKvbdZsiIyDsO
+EPCjjvbdjbkkRGuH
+DnbkKvbdqYoHgREY
+DoDLKvbdZMRctNkm
+EObjjvbdDjIJvYKA
+DncKjvbdVqnXbEkc
+EPCkKvbdiHKCyViu
+EOcKjvbdkHflGFmk
+DoDKjvbdOFDsiIjd
+EOcLKvbdVrOYCEkc
+EPCjjvbdhtydvrUb
+DoDLKvbdrNZjYlHi
+EPDKjvbdVwIxWDeH
+EObkKvbdhyuFlRNf
+EPDLKvbdSKyFuHKs
+DoCkKvbdBhjajiFj
+DoDKjvbdhanbeWpq
+DncKjvbdGGJqnJTq
+EPDKjvbdZtJIyETO
+EOcLKvbdANIZSvzY
+DnbkKvbdptUHSSLU
+DoDLKvbdRDcBPpdS
+DoDKjvbdBcpAujNG
+DnbjjvbdaaVdeopX
+DnbjjvbdhtydvrUb
+DoCkKvbdkWXNcaxX
+DncLKvbdrNZjYkgi
+EPCjjvbdBiKajiGK
+EObkKvbdwkWcgzzG
+EPCkKvbdRDcApQcr
+DncLKvbdfekzNgHA
+DoDKjvbdiBoCdwRR
+EOcLKvbdIBlZdzAD
+DnbkKvbdZLqcsnMN
+DoDKjvbdatbGwkUI
+EObjjvbdmgFXlmfy
+EPDLKvbdxUmEqYkn
+EPDLKvbdauBfxKsh
+EObjjvbdsPvOjDVf
+DnbkKvbdkVwNdBww
+EPCkKvbdzaAPGfbM
+EOcLKvbdRotGjGDw
+EPCkKvbdqceJPmua
+EPDLKvbdZyDinCkr
+EObkKvbdCDoaWKMf
+EOcKjvbdjmCLzEgP
+EPDKjvbdHlBznXRL
+DncKjvbdeOeTLTtS
+EPCjjvbdGZUuBEXb
+DnbkKvbdqTtHRqjt
+EOcLKvbdFyUuAdXb
+EPDLKvbdEARiMzWw
+EOcKjvbdFeirNiUR
+DoCkKvbdzjUoocsU
+EOcLKvbdEztQdlCi
+DncLKvbdKCjCpibx
+EPCjjvbdxZhGFxFS
+EObjjvbdwWkaWAvV
+DnbkKvbdaaWFFoow
+EOcKjvbdBsBDUGXS
+EPDLKvbdmIdUQuRa
+DncKjvbdVAbRTRRy
+DoCkKvbdHffyxxYH
+EObjjvbdDGkfHAzc
+DoCkKvbdiCPDFXRR
+EPCkKvbdVrNwbEkc
+EPCkKvbdiGjDYvKV
+DnbkKvbdIMBzmvpk
+EPCkKvbdKxqJrztf
+DncLKvbdmIctQuSB
+EOcKjvbdaSFbhUGL
+DoCjjvbdmbKWwnmu
+DoCkKvbdiUyeWrVC
+DncKjvbdGGKRmhsq
+DoCjjvbdehLVqnQg
+DncLKvbdTkunaVoJ
+DnbjjvbdGZUtaDxC
+EPCjjvbdtSrSyZeD
+DoDLKvbdjbkkQfuH
+EOcLKvbdOFDtJJLE
+DnbjjvbdBdQAvJlf
+DoCkKvbduDDVWvPP
+EOcKjvbdZtJIyDsO
+DncLKvbdQccBPpdS
+DncLKvbdiUzEvquC
+EPCjjvbdvvkaWAuu
+DoDLKvbdZoOIeEzK
+DnbkKvbdkCkkRGuH
+EOcKjvbdRkZGVHLT
+EObkKvbdtcCuXVno
+EPCjjvbdMpYRVnGs
+DoDKjvbdFfJrNiTq
+DnbkKvbdZnmiFFZj
+EPDLKvbdbhmKKfWx
+DoDLKvbdDjHivXjA
+DoDLKvbdiLeDnVDZ
+EOcLKvbdUQqOtthN
+EPDKjvbdZHXEAOri
+EObkKvbdvAdYrndh
+EObkKvbdQlwaxnUz
+DoCjjvbdQwOEDLhD
+EPDLKvbdqrVKnLBN
+EObjjvbdwtmFQxkn
+EPDLKvbdTfznMWvF
+DnbkKvbdaMjasVNH
+EPCjjvbdcyyQXxpb
+DncKjvbdMfcQMpUk
+DnbjjvbdZnmheEzK
+DncLKvbdbrbkUDia
+DncLKvbdiCOcFXRR
+DoCjjvbdZxcimblS
+EPDLKvbdRkYfVHKs
+DncKjvbdDoDKjvbd
+EOcKjvbdGAnpxizm
+EOcKjvbdYpldhldq
+DnbkKvbdQwOEDMID
+DnbjjvbdcyxoxYpb
+DoCjjvbdakMGOnDA
+EPCjjvbdLAkGlawq
+DncKjvbdJJdAKPfd
+EOcLKvbdxrnImSBg
+DoDLKvbdNddUJIjd
+DncLKvbdfIKvRmpg
+DoCjjvbdiZuGLqOG
+EOcLKvbdeAURMwif
+DncLKvbdiCPCeWpq
+DoCjjvbdGcjvKBij
+EPDKjvbdRDcBQQdS
+EPCjjvbdUtMtGLvK
+EPDKjvbdyXhjBoyk
+DoDKjvbdqZOgfpcx
+EObjjvbdYTMAmUPY
+DoDLKvbdiCObeXQq
+DncKjvbdmJDtRUqa
+EObkKvbdSCEElIyL
+EObkKvbdNGbpMouL
+DoCkKvbdEzsqElCi
+EObjjvbdOStWHFVQ
+EPCjjvbdjmBlZdfo
+EPDKjvbdiUyeWqtb
+DnbjjvbdYSkaNUPY
+DoCkKvbdTAEhhCPE
+DoCjjvbdmttyjjSG
+EOcKjvbdrMyjZMIJ
+EPDKjvbdUsmTelVj
+EPCkKvbdNsTugFUp
+DnbkKvbdWRnYBeMD
+DncLKvbdHgGzZXxH
+EPDLKvbdZLrDsmlN
+DncLKvbdcSbkUDjB
+EObkKvbdziuPpDrt
+DoCjjvbdZyEJmblS
+EObkKvbdjggMFenL
+DnbkKvbdmfeXmNfy
+EObkKvbdiBncFXRR
+EPDKjvbdADSXiyiQ
+EObjjvbdLFfHbApu
+EOcLKvbdRMwbZOUz
+EPCkKvbdFVxoomJe
+EOcLKvbdZnmiEdyj
+DncLKvbdULunaVoJ
+DncLKvbddndsKtTr
+EPDKjvbdEztQeMDJ
+EObkKvbdcScKscjB
+EOcKjvbdFkErbglu
+DoCkKvbdsBfMlGkZ
+EPDLKvbdCSaCsfWr
+EPCjjvbdVAapsRSZ
+EOcLKvbdgFkzNfgA
+EPDLKvbdjhHLefNk
+EObjjvbdyNsIXsIc
+DoCjjvbdqcdiPmvB
+EOcKjvbdeXyssrFz
+DnbjjvbdEOcKjwCd
+DoDLKvbdGKdrbgmV
+DncLKvbdKQzEoFnF
+DoCkKvbdqvpMDJZR
+EObkKvbdZyEKODMS
+DncKjvbdBhjbKiFj
+DncKjvbdfHkVrNqH
+DncLKvbdeXyssrFz
+EObjjvbdxmsHwriD
+EPDKjvbdRyigsCvA
+DoCkKvbdZoNiEeZj
+EPCkKvbdhzUfLpnG
+DncKjvbdVUNUFkuj
+EPDKjvbdRXNdDMID
+EObkKvbdlBMnmALA
+EPDKjvbdffMZnHHA
+EPCjjvbdEARhlyvw
+EOcKjvbdVTltGLvK
+EOcKjvbdJqZdoFme
+EObkKvbdyOTHwsIc
+DoDLKvbdCfkegAzc
+DnbkKvbdZMRdTmkm
+DnbkKvbdhkeEOUcZ
+DoDKjvbdZnnIeEyj
+DnbjjvbdrafNMGkZ
+DoDLKvbdZtJIyESn
+EOcLKvbdaRecITek
+EPCjjvbdZoOJEdyj
+DoDLKvbdxsNhlrBg
+EPCjjvbdZxdKNcMS
+DoCjjvbdCWzdJEov
+EObkKvbdTppnttgm
+DnbkKvbdjmCLydfo
+EObkKvbdBsAbsewS
+EObjjvbdjgflFemk
+DnbjjvbdpstGrSKt
+EOcLKvbdOTTvHFUp
+DoCkKvbdczYowyRC
+EObkKvbdTvMPjUAq
+EOcKjvbdezvYeJUX
+EPCkKvbdzHYlANEw
+EPCkKvbdqcdiQOVa
+DoCkKvbdsrrSxyeD
+EObkKvbdOTUWGeUp
+DoDKjvbdbUbHYLTh
+DoCkKvbdHakydzAD
+DoDKjvbddjJrWUzn
+EPDKjvbdmaiwYPOV
+DoCjjvbdtbcUwVno
+EPDLKvbdrMyjYkgi
+DoCjjvbdUQpoUtgm
+DncKjvbdddoSBwDK
+EPCkKvbdatbGwkTh
+DncKjvbdmbJvxPNu
+DnbjjvbdwzHeewdr
+DncLKvbdzitpPcrt
+EOcLKvbdrMyjYkgi
+EOcLKvbdrEFIomvB
+DoDLKvbdiifIJlxS
+EOcLKvbdtvOYKQsA
+DoCkKvbdxsNhlqag
+DnbjjvbdyTOIlqag
+DncLKvbdIGgZyYXg
+EOcKjvbdUsmUGMWK
+EObkKvbdhzUfMQnG
+EPDLKvbdZxdJnCkr
+DncKjvbdKWUeceGi
+EOcLKvbdmbJvwnnV
+DoDLKvbdDncKjvbd
+EPCkKvbdZoNheEyj
+DncLKvbdVqnXadlD
+DncLKvbdtunXipsA
+DncLKvbdjAPgBPfj
+DoCkKvbdyqPNJKXA
+DncKjvbdrpWPJbuf
+EOcKjvbdqvpMDJYq
+DnbjjvbdcTDLUDia
+DnbkKvbdiGjCxvKV
+EPDKjvbdauBfxKtI
+DoCkKvbdLFfHbApu
+DoDLKvbdHffyyXwg
+EOcKjvbdIxUCHkqQ
+DoDKjvbdzQoMiJwA
+DoDKjvbdyYIjBoyk
+EObkKvbdxnSgwriD
+EObkKvbdIMBznWpk
+EPDKjvbdYlSDtOMN
+DoDKjvbdijGHjMxS
+EOcKjvbdYkqcsnMN
+DoCjjvbdmaiwYOmu
+EPDKjvbdHELWKBjK
+DoCjjvbdwtmFRYlO
+EOcLKvbdFeiqnJTq
+EPDKjvbdiBncEvqR
+DoCkKvbdJXsbILpp
+EObjjvbdULunaVni
+DncKjvbdDwxLstUM
+DoDKjvbdrWpMChyR
+EObkKvbdYzcFqivZ
+DncKjvbdEzspdlDJ
+EPDKjvbdfMfXGmKL
+DoCkKvbdCTAbtGWr
+DoDLKvbdRkZGUgKs
+EPCkKvbdFWZQQMie
+DnbjjvbdxVNEqYkn
+DoCjjvbdeFPRbWbj
+EPCkKvbdZshhyESn
+EObjjvbdqrVKnLAm
+EPCjjvbdptUGqqjt
+EOcLKvbdrEEhpOVa
+DncKjvbdzQoNIjXA
+DncLKvbdmgFXlnGy
+DoDKjvbdZjShQHBf
+DnbjjvbdjKGHjNXr
+DoDLKvbdqFcdsvAh
+EPCkKvbdOEdUIiLE
+EPDLKvbdNeEUJJKd
+EPCjjvbdzHZMANEw
+DnbkKvbdqlzJyMIJ
+DnbjjvbdelfXHMjL
+EPCkKvbdANHyTWzY
+DnbjjvbdREDBPpcr
+DncLKvbdQmYCZOUz
+EOcKjvbduoTzpjoU
+DoCjjvbdqrUjmkBN
+DnbjjvbdyfxlANFX
+EOcLKvbdJmADygUa
+EPDLKvbdyNrhYTIc
+DoCjjvbdCTAbtFwS
+DncLKvbdSwkLmzkY
+DnbjjvbdjhHMFfNk
+DoCkKvbdZeXfzhIb
+DnbjjvbdbrbjtEJa
+DoCkKvbdxrmhmRbH
+DoDLKvbdrXQLbhxq
+EObjjvbdTulQKUBR
+EPCkKvbdMpYQumgT
+DncKjvbderBWzlDP
+DoCjjvbdiGjCxvJu
+DoCjjvbdlZSqsZGt
+EOcLKvbdZisIPfaf
+DnbkKvbdHEKvKBij
+DncLKvbdjSziSjiz
+EPDKjvbdCEQBWJmG
+EObkKvbdGGKRmiUR
+EPDKjvbdMuTRkNAX
+DnbjjvbdrXQLbiYq
+EPCjjvbdOTUWGduQ
+EPCjjvbdnBjXXoNu
+DoDLKvbdcarmSAUN
+DoCjjvbdNPwqWOGs
+EObkKvbdUslsekvK
+DnbjjvbdzaAPGfbM
+DoCkKvbdGdLVjCJj
+DoDLKvbdRjyFtfkT
+DoDLKvbdGLFTDHlu
+DnbkKvbdGFirOJUR
+EPDLKvbddoFTLUUS
+EObkKvbdkxrrTZGt
+DncKjvbdxrnJMqag
+EOcLKvbdCDpBWJmG
+DoCjjvbdlqyUysDi
+EPDKjvbdTfzmlXVe
+DncKjvbdEuxpQMie
+EOcKjvbdbLLfPNcA
+DncKjvbdVgxWXgYz
+DoDKjvbdrbFmLgKy
+DoCjjvbdzaAPGfbM
+DncLKvbdYSlAlsoY
+DoDLKvbdZyEJnClS
+EPDLKvbdEvYopMjF
+DncKjvbdmtuZjiqf
+DoCjjvbdCJKbLIfK
+EOcLKvbdcIljLFvx
+EObkKvbdrJAKFNPF
+DoDKjvbdBiKbKhfK
+EPDKjvbdWIYWYGxz
+DoCkKvbdjAQGaQHK
+DnbjjvbdjblLQftg
+DncLKvbdbhlikGXY
+EPDKjvbdZLrDsmkm
+DoDLKvbdVTlsfMWK
+DoCjjvbdliDsptqa
+DnbkKvbdjuvmcbXw
+DoCjjvbdbVCHXjtI
+DoCkKvbdQvmdClID
+DnbjjvbdLAkHNCXq
+EPDKjvbdZtIhyETO
+DnbkKvbdYkqdTmlN
+DoDKjvbdMtrrKmAX
+DncLKvbdJXtCIMQp
+EPCkKvbdlhdTqUqa
+EObjjvbdnHFYNNfy
+EPDKjvbdxrmhlrBg
+DncLKvbdiLeDmtcZ
+DncKjvbdNrsufdtp
+EObkKvbdlhcsptqa
+EObjjvbdNeETiIkE
+DnbkKvbdxsNhmRbH
+DnbkKvbdADRxKZhp
+DnbjjvbdTqROuUgm
+EOcKjvbdpxoIGqDx
+EOcLKvbdqBIeAWhE
+DnbjjvbdCIkBjiFj
+DncLKvbdTlWPBWPJ
+DoCjjvbdEKHjVxKA
+DnbkKvbdZRNFImEq
+EObkKvbdJbicQjCx
+DoDKjvbdNsTufeVQ
+EObjjvbdDxYMUTsl
+DoDLKvbdaSFcITfL
+EPDKjvbdcTDLTcia
+DoCkKvbdlhdTpuRa
+EObjjvbdCJKbKiFj
+DncKjvbdqAiFAWhE
+EPDKjvbdUslsfLuj
+EObjjvbdWWiXuceH
+EPCjjvbdOEcshiLE
+EPDLKvbdEJhJuxKA
+DoCkKvbdKyRKSzuG
+DncKjvbdHffzZXxH
+EOcLKvbdSLZGUfkT
+EObkKvbdHgHZxwxH
+DnbkKvbdcSbjtEJa
+EPDKjvbdZGwEAPTJ
+DoDLKvbdeAURNXif
+EPDLKvbdMpYQunGs
+EObkKvbdNeDshiKd
+DoDLKvbdzoQQdbkx
+EPDKjvbdWHxWXfxz
+EPCjjvbdCEPaVjNG
+DoCjjvbdbhlikFvx
+EOcLKvbdBvzdIdpW
+DoCkKvbdNPwqWNfs
+EPCjjvbdbhlijfWx
+DncKjvbdqwQLbiZR
+EObjjvbdkClLRGuH
+DncKjvbdNHDQNQVL
+DncKjvbdhkdcmuDZ
+EOcKjvbdKWVFdFHJ
+EPDLKvbdYTMBMtOx
+EObkKvbdSKxfVGjs
+DncKjvbdZoOJEdzK
+EObjjvbdMpXqVmgT
+EPDKjvbdhaoDFXRR
+EPCjjvbdrpWPJcVf
+EOcKjvbdczYpYZRC
+DoDLKvbdLLAhWAJy
+DoDKjvbdEObkLXDE
+EPDKjvbdnVUykKRf
+DnbkKvbdBvzdIdov
+EOcKjvbdGFirOJUR
+DoCjjvbdGGJrNiTq
+EPDKjvbdqAheAWgd
+DncKjvbdxmsIXriD
+EObkKvbdVAbQsRRy
+EPDKjvbdRXODbkhD
+EObjjvbdVZHtZjoO
+EOcKjvbdffMZmfgA
+EOcLKvbdbiMjLGXY
+DoDKjvbdUQpoVUhN
+EPCkKvbdhfjCxuiu
+DoCkKvbdziuPocsU
+EObjjvbdBhkBkJFj
+DnbjjvbdeAURNXif
+DncKjvbdQlxByOUz
+EPDLKvbdRbEEkhxk
+EPCjjvbdrbFlkgKy
+DoCjjvbdaSFbhUGL
+EOcKjvbdsCGMkfkZ
+DoCkKvbdJbicRJcY
+DnbkKvbdqlzKYlHi
+DoCjjvbdZyDimblS
+EOcLKvbdsrqsZZdc
+DoDKjvbdjggMGGNk
+DnbkKvbdADSXiyiQ
+DoCkKvbdehKurORH
+EOcLKvbdrylPsAgn
+EPCjjvbdRWmdClID
+EPCjjvbdbsCjsdKB
+EObjjvbdUQpoVVHm
+DnbkKvbdiCObeXQq
+DncLKvbdUQpoVUhN
+DoCkKvbdKCicRKDY
+DncKjvbdjlakzFGo
+DnbkKvbdMgDQMpVL
+DoDLKvbdWSNxBeMD
+DnbkKvbdvBEZTOdh
+EPCjjvbdsQWPKCuf
+EObjjvbdZeYGzghb
+DnbkKvbdxsNhmSCH
+EPDLKvbdkySrTZGt
+EObkKvbdrDdiQNvB
+DncLKvbdHDjuiajK
+DoCjjvbdURROtuIN
+DncKjvbdKyRJrztf
+EObjjvbdIGfyyYXg
+DncLKvbdXsMBMtPY
+EPCkKvbdaaVdfPpX
+DncKjvbdiHJbyWJu
+EOcKjvbdSKxfVGjs
+DoDKjvbdxZgfFwdr
+DnbkKvbdRNYCZNtz
+EPCkKvbdCDoaWKNG
+DoDKjvbdDjHjWYKA
+EPDKjvbdyNsHwsIc
+DoDKjvbdUtNTfLuj
+DoDLKvbdGGKRnJTq
+EPCkKvbdsBemMGjy
+EPDKjvbdSQUHKFcw
+DnbjjvbdkClKpfuH
+EObjjvbdRyjHrcWA
+EOcLKvbdSPsfjGEX
+DoCjjvbdGckWKBij
+EPCkKvbdGdKujBij
+DnbjjvbdcJMijewY
+EPDKjvbdkIGkefOL
+EPCkKvbdrSVLNkBN
+DnbkKvbdrpWPJbvG
+DoDLKvbdZirgpHBf
+EPCkKvbdHDjujBij
+EPCkKvbdvBDySoEh
+DoDLKvbdePEsKssr
+DoDLKvbdZRMdhldq
+EObjjvbdUQqPUtgm
+DoDLKvbdMSXNZtpz
+EObjjvbdVYhTzKnn
+EOcKjvbdrNZixlIJ
+DoDLKvbdTpqPVVIN
+DnbkKvbdkCkjqHVH
+DnbkKvbdkWWmcaxX
+EOcLKvbdJSyBSlwl
+EObkKvbdmRxtzTEJ
+DncKjvbdptTgRqjt
+EOcLKvbdqYoHfqEY
+DoDKjvbdGZUtaDxC
+EOcKjvbdKQydoGNe
+EPDLKvbdssSTZZeD
+EObjjvbdhkddOUcZ
+DoDKjvbdGdKvJbKK
+EOcKjvbdULvPAuoJ
+DoCkKvbdrEFJPnWB
+DnbjjvbdfNGWfmJk
+EPCkKvbdkWXODaww
+EOcKjvbdMtrrKmAX
+DnbjjvbdEuyPpMie
+EObjjvbdrSVKmkAm
+EPDLKvbdhanbdvqR
+DoCkKvbdkWWmdBww
+DnbjjvbdxUleQyLn
+EOcLKvbdpyPHfpdY
+DncKjvbdpfDeTvBI
+DoCkKvbdnVVZjirG
+DnbkKvbdzjVPocsU
+EPDLKvbdmfdwlmfy
+DnbkKvbdSKyFuGjs
+EObkKvbdVAaprpqy
+EPCjjvbdUaBqTRRy
+EObkKvbdZoNhddzK
+DncKjvbdrNZiyLhJ
+DncKjvbdaMkBruNH
+DoDKjvbdZyDjNcMS
+EPCjjvbdZjTIQHCG
+EObkKvbdjJegilwr
+EPDKjvbdHffzYxYH
+EPDKjvbdaSGChTfL
+DoDLKvbdcJMjLGWx
+EOcLKvbdtlXvaTaX
+DoCjjvbdGYuVAcxC
+EOcLKvbdUsltGLvK
+EPDLKvbdRNXayOUz
+DoDLKvbdRadFLiYk
+EOcKjvbdCTAbsfXS
+EPCjjvbdGZVVAdYC
+EPDLKvbdypnliJwA
+EPCjjvbdSBdFLhxk
+EOcLKvbdGLFSbhNV
+DncKjvbdTppnuUhN
+EObkKvbdezvYdiTw
+DoCkKvbdIsZBSlxM
+DncLKvbdRNYBxmtz
+EPCkKvbdeFOqawCj
+DnbjjvbdtSrTYzEc
+DncKjvbdkDLkQgUg
+DnbjjvbdEARhlzXX
+EOcKjvbdWRmxBeMD
+DoDLKvbdzQnliKXA
+EPDKjvbdpfDdtWAh
+DncLKvbdMgCpMpVL
+DnbkKvbdiZtfLpmf
+EPDLKvbdzQoNJJwA
+EPCkKvbdaNKasUmH
+EPDLKvbdRbDeLhyL
+DoDLKvbdKRZeOeme
+EOcKjvbdZxdJmcMS
+DncLKvbdeKKSVtzn
+EPDLKvbdRjxeuHLT
+EObkKvbdNGcPmPtk
+DoCkKvbdtcDVWvPP
+EPCjjvbdcTDKscjB
+DoDLKvbdbrcLTcia
+EObjjvbdvlvAMcdm
+EObjjvbdFxuVBDwb
+EPCjjvbdhkdcmtby
+EOcKjvbdRotHKFcw
+DncLKvbdelfWgNKL
+EObkKvbduCbuXVno
+EPDKjvbdEYXlUUUM
+EOcKjvbdbUbHXjsh
+EOcLKvbdmgEwmOHZ
+DoCjjvbdEXxLsssl
+EPDLKvbdZLqdTmlN
+EOcLKvbdbsCkUEJa
+EOcKjvbdqvpLbhxq
+EOcKjvbdfIKvRmpg
+DncLKvbdGBOpxizm
+DoDLKvbdnBiwXnmu
+DoCjjvbdKWVFceGi
+EOcLKvbdRbEEkiZL
+EObjjvbdffMZmgHA
+DoCjjvbdUMWPBWPJ
+EObkKvbdkClKpftg
+DoDLKvbdBhkBkIej
+DoDKjvbdhgJbyWJu
+DoCjjvbdEASIlzXX
+EPDKjvbdGZUtaDxC
+DnbjjvbdlYsRryHU
+EOcKjvbdhgKCyWJu
+EPCkKvbdsQWOibuf
+DoCjjvbdRMwbYmtz
+DoDKjvbdZxdJnClS
+EPCjjvbdJTZBTNYM
+DnbjjvbdiLeEOUby
+EOcLKvbdjEjgUoAO
+EPCkKvbdzitopDrt
+EPCjjvbdtcCuWvPP
+DncKjvbdZMRdUNlN
+DoDLKvbddZxoxZRC
+DoDKjvbdFVxoomKF
+DoCkKvbdSLYeuGkT
+DncLKvbdYSlBNTnx
+EObkKvbdeuzwoizs
+EPDKjvbdUQpoUuIN
+DoDKjvbdmpZxujyC
+EPCjjvbdDGlFgAzc
+EPCjjvbdkCkkRGuH
+DnbkKvbdvlvAMdFN
+DoDLKvbdatbHXkUI
+EPCjjvbdFWYoolie
+DnbjjvbdrEFJPnWB
+EObkKvbdpyOggQcx
+EOcKjvbdqwQMChxq
+EOcKjvbdqrVLNkAm
+EOcKjvbderBWzlCo
+DoDLKvbdRWmdDMHc
+EOcLKvbdZoNhdeZj
+DnbkKvbdunszpkPU
+EPDKjvbdGAnpxizm
+DoCkKvbdKCjCqKCx
+EOcKjvbdZshhyDrn
+DoDKjvbdddoSBvcK
+DncKjvbdcScKtEJa
+EOcLKvbdZjShQGbG
+DncLKvbdDncKkXDE
+EPDLKvbdrzMQTBHn
+EPDLKvbdIxUBglRQ
+EPDKjvbdcyxpXxpb
+EObkKvbdMSXMytpz
+EObkKvbdijGIKMwr
+EObkKvbdzdzOzdyp
+DnbjjvbdeATplwjG
+DnbkKvbdcIlikFwY
+DoDLKvbdsPunicVf
+EPDKjvbdmozYvLZC
+DoCkKvbdkyTSSxgU
+DncLKvbdRWnDcLhD
+DncKjvbdHELWJaij
+DncKjvbdZQmFIleR
+EOcKjvbdiCOcEvpq
+EOcKjvbdbrbkUEKB
+EOcLKvbdOFEThhjd
+EObkKvbdbBVdepPw
+EObkKvbdUxhTzKnn
+EObkKvbdzoPpdblY
+EOcLKvbdrbFllHLZ
+DoDKjvbdjggMGGOL
+DncLKvbdqceJQNua
+DoDKjvbdiHJbxvJu
+DoDLKvbdySnImSBg
+EPCkKvbdtTRrxzFD
+EOcLKvbdkVvnEBxX
+DnbjjvbdtcCtvvOo
+EPCkKvbdyzdmrHiI
+DoDKjvbdFjdrbhMu
+DoDLKvbdZyEKODLr
+DoDKjvbdURQnuVHm
+EPCkKvbdZyDimcMS
+EOcLKvbdNQXpunHT
+DnbjjvbdQlxCYmtz
+DnbjjvbdCDoaVimG
+EObjjvbdsPvOibvG
+DnbjjvbdgGLynGgA
+DncLKvbdCDoaWJmG
+EObkKvbdnCKXXnnV
+EOcLKvbdUxgtZkPO
+DnbkKvbdiMFDmuDZ
+DncKjvbdiGicZWKV
+DoDKjvbdcScKtEJa
+DoDKjvbdpssgRqkU
+DncKjvbdsBfNLgKy
+DoDLKvbdGYttaDwb
+DncKjvbdjvWnDaxX
+EPCjjvbdhgJcYuiu
+DnbjjvbdxUldpxlO
+DoDKjvbdUaCRSqSZ
+DnbkKvbdNwoVzdNt
+DoCkKvbdZnnIeEzK
+EPDKjvbdNeEUJIkE
+DnbjjvbdJbjDQjDY
+EPDLKvbdKVuFceGi
+EPCkKvbdKkBIWAJy
+EObjjvbdrafMlHLZ
+EOcLKvbdZLqctNkm
+EObjjvbdMgComPtk
+DncKjvbdjhHMGGOL
+DnbkKvbdJYUCIMQp
+DoCjjvbdhlEcnVCy
+DoDLKvbdxsOJNSBg
+EOcLKvbdRMxBxmtz
+EOcLKvbdHDjujCJj
+EObjjvbdZRMdhmFR
+EPDLKvbdUQpoUthN
+EPCkKvbdvlvANEFN
+EObkKvbdSCEEkhxk
+EPCjjvbdLBKfmCXq
+EPDKjvbdOStVfduQ
+EPCjjvbdGcjvJbKK
+DnbjjvbdVBBprpqy
+DoCjjvbdirziTLJz
+DncLKvbdFWYpQNKF
+DoDLKvbdjKGHjNYS
+DncKjvbdZnmiEdzK
+DoDKjvbdySmiMrBg
+DncLKvbdeAURNYKG
+EPDLKvbdemGWflik
+DoDKjvbdaMkBrtmH
+DoDKjvbdIxUBglRQ
+DoDKjvbdOEcshhjd
+EPCjjvbdpxnhGqDx
+DncKjvbdYSlBNToY
+DnbjjvbdGGKSOJUR
+EOcLKvbdZjTHpGbG
+EPCjjvbdIHGzZYXg
+DncKjvbddndsLTsr
+DnbjjvbdqAheAXIE
+EOcKjvbdVhXvXfxz
+DncKjvbdFyVVAdYC
+DnbjjvbdJvVFceGi
+EPCkKvbdoznDjwoA
+EPDKjvbdvPTzqLPU
+EObjjvbdiifIKMwr
+EOcLKvbdlZTSSxgU
+EObjjvbdQvnECkgc
+DncLKvbdjgfkfGNk
+DnbkKvbdCDoaWJmG
+DnbkKvbdxnTHwriD
+DncKjvbdoAKzshDn
+DoDKjvbdvAdZSndh
+DnbjjvbdRpTgKFcw
+EOcLKvbdiiegilwr
+EOcKjvbdGdLVjBjK
+EObkKvbdGFjRmhtR
+EPCjjvbdZsiJYdTO
+EPCjjvbdJJdAKPfd
+EPDLKvbdKfGHbBRV
+DncLKvbdjhHMFenL
+EObkKvbdbLMFnnDA
+DoCjjvbdUWMPisaR
+DnbkKvbdZjTHpHCG
+EObkKvbdbsCkTcjB
+EPCkKvbdSLYfUfkT
+DoDKjvbdZeYGzhIb
+DncKjvbdrovPJcVf
+EPCjjvbdePFSjtTr
+DncKjvbdJbibqJbx
+EPDLKvbdDxYMUUTl
+DnbkKvbdZHXEAPSi
+DncKjvbdVTmUFlVj
+EPDKjvbdzoQREcLx
+EPDKjvbdKfFhCAqV
+DoDKjvbduDDUwVoP
+DoDKjvbdgFlZmfgA
+EObjjvbdTAEiHbOd
+DoCkKvbdMowqVmgT
+DncKjvbduMXwBTaX
+DncKjvbdeYZssrFz
+DncLKvbdmfdxNNgZ
+DncLKvbdxLXDgzzG
+DoCjjvbdNsTvGduQ
+EPDLKvbdTpqOtuHm
+EObkKvbdZMRctOMN
+EPCjjvbdHEKuibJj
+EPCjjvbdBiKbLJGK
+DoCjjvbdUtNUFkvK
+EOcKjvbdVTltFkuj
+DnbjjvbdczYpXxqC
+EPDLKvbduWNxKQsA
+EOcKjvbddZyQYYqC
+DnbkKvbdyfyMAMdw
+DncLKvbdDihKWXjA
+EPCjjvbdoAKztIDn
+DoCjjvbdcTDLUDjB
+EPDKjvbdJcJcRKCx
+DncKjvbdIxTahLqQ
+DoDLKvbdTqROttgm
+DoDKjvbdjblLQgUg
+EOcLKvbdTppnuUhN
+EPCjjvbdrMyjZLgi
+EObjjvbdypnmIjXA
+DoCkKvbdczYoxZRC
+EObkKvbdFjeTDHmV
+EPCjjvbdZxcimbkr
+DoDKjvbdatbHXkUI
+EPDKjvbdvmWAMdEm
+DoCjjvbdqwQMCiYq
+DoDKjvbduWNwjQsA
+DncKjvbdACqwjZiQ
+DoCjjvbdOTTvGduQ
+EObkKvbdirzhsKiz
+EObjjvbdOTTugFUp
+EOcLKvbdKDJbqJcY
+DoCjjvbdiUyeXRtb
+EObjjvbdfMfXHNKL
+EOcKjvbdjhHMFfNk
+DncKjvbdRpUGjFcw
+EPCjjvbdfILVqnRH
+EOcKjvbdiHKCyWJu
+DoDLKvbdnPzYvLYb
+DnbkKvbdnGeYNOHZ
+DoDKjvbdtvOXjQsA
+EPCjjvbdmIctRVRa
+EOcKjvbdpyOhGpcx
+DnbkKvbdKQydoFnF
+DoDKjvbdkVvnDaww
+EObjjvbdbUbHXjsh
+EOcKjvbdCJLCLIfK
+EPDKjvbdZeYGzhJC
+DncKjvbdcScLUDia
+DoCkKvbdQmXbZOUz
+EOcLKvbdRadFMIxk
+DnbkKvbdziuPodSt
+EOcKjvbdEXxMUUTl
+DnbjjvbdegjvSOQg
+EObkKvbdZtJJYdTO
+EPDKjvbdVAbQsQrZ
+DnbkKvbdkHflFfOL
+EObkKvbdtcCuXWOo
+DnbjjvbdcTDLUEJa
+EPCjjvbdZjTIQHBf
+EObjjvbdTAEhhCPE
+EOcLKvbdbhlikFwY
+DoDLKvbdEPDKkWbd
+EOcKjvbdZtJJZESn
+EPDKjvbdZMRdUNlN
+EPCkKvbdhgJcZWJu
+DncKjvbdUaBqSprZ
+EOcLKvbdEJgiuxKA
+EObjjvbdSPtHKFcw
+DoCjjvbdFfKSOJUR
+EObjjvbdVrOXaeMD
+DoCjjvbdrXPkcIxq
+DoDKjvbdZjTHofaf
+EOcLKvbdVYgszLOn
+DncKjvbdIwsagkpp
+DncLKvbdTkvPBVni
+EOcLKvbdUtNUFkuj
+EObjjvbdZnmheEyj
+EPDKjvbdyYIjBoyk
+EPCkKvbdqlyiyMIJ
+EPCjjvbdYzbeqjVy
+EOcLKvbdUQqOuVIN
+EObkKvbdZMSDtOMN
+DncKjvbdVvhxWDdg
+EOcLKvbdiZuFlRNf
+EObjjvbdZtJJYcrn
+EPCjjvbdmuUzKirG
+DoDLKvbdVUMtGMVj
+EPDLKvbdhWyAzzAJ
+DoDLKvbdfIKvRmqH
+DnbjjvbdqdFIpOVa
+DnbkKvbdIwtCHkpp
+EOcKjvbdeEnrBvcK
+DnbkKvbdJuuFdFGi
+DoDKjvbdeOeTKtUS
+EObjjvbdKWUfDeGi
+EPCjjvbdiHJbyViu
+EOcKjvbdBraCsfWr
+DoCjjvbdGYuVBEYC
+DoCkKvbdnHEwmOHZ
+EPDKjvbdZisIQGaf
+EPCkKvbdmpZxvKyC
+DoDLKvbdmSYuZrdJ
+EObkKvbdKDJbqKCx
+EOcLKvbdZsiJZETO
+EPDKjvbdnCJvxOmu
+DoCkKvbdjgflGGOL
+DnbkKvbdRosfjFdX
+EPCjjvbdRECaQQcr
+DnbkKvbdNHComQVL
+EPCjjvbdrJAKEmOe
+DoDLKvbdqBJFAXIE
+DncLKvbdGLFTDINV
+EOcLKvbdhgJbxujV
+DnbkKvbdjSzhsKiz
+EOcKjvbdKWVGDdfi
+DoDKjvbdZnnIeFZj
+DnbjjvbdxxIiaoyk
+EObkKvbdczYpYZQb
+EPCjjvbdZxcjODMS
+EObkKvbdiHJbxvKV
+DoCjjvbdJzoexEAN
+DoCjjvbdaRfChTek
+DoDLKvbdxwhjCPyk
+DoDLKvbdVqnYBeLc
+DnbkKvbdRDcBPpdS
+EObkKvbdYqNFImFR
+EPDKjvbdsrrTYzFD
+EOcKjvbdqcdhpOWB
+EOcKjvbdaNLCTUmH
+DoDKjvbdnPzYukZC
+DncLKvbdKCjDRKCx
+EObjjvbdFkEsDINV
+EPDKjvbdMgDQMouL
+DncLKvbdOXnuzdNt
+EPCjjvbdpstGqrLU
+EPCkKvbdRbDdkhyL
+DnbkKvbdaogGdLzd
+DncKjvbdjlbLydgP
+DnbjjvbdUMVoAvPJ
+EPCjjvbdJqZeOfOF
+DoDLKvbdUsmTekvK
+DoCjjvbdpyOgfpcx
+DnbkKvbdJYUCIMRQ
+DncLKvbdjJfHjMwr
+DoCjjvbdRosgKGDw
+DoCkKvbddZxpYYqC
+DncKjvbdddnrBwCj
+EPDKjvbdijGIJlxS
+DoCjjvbdkWWnECYX
+EObkKvbdqlzJxlIJ
+EOcLKvbdzaAPHHBl
+DoDKjvbdlZTSSyGt
+DnbjjvbdatbHXkUI
+EOcLKvbdNdcshiKd
+DncKjvbdGdKujBjK
+DnbjjvbdRWnDcMID
+DoCjjvbdSxKlNzkY
+EPDKjvbdHDkWJbJj
+EPDLKvbdZxcjNcLr
+EOcKjvbdLYqKSzuG
+EPDLKvbdjuvmcaww
+EPDKjvbdxmrhYTJD
+EOcKjvbdZirhPfaf
+DnbjjvbdfIKurNqH
+EPCkKvbdYTLaNTnx
+DoDLKvbddtAUASlv
+EPCkKvbdZLrDtOLm
+DnbjjvbdnGdxMnHZ
+DoCjjvbdeFPSCXCj
+DncLKvbdYORAYUvU
+EPCjjvbdrXQMDJZR
+EPCkKvbdRpTfjGDw
+DoCjjvbdpssfrSKt
+EPCkKvbdKWUedFHJ
+DnbjjvbdVvhwvDdg
+DncKjvbdLrWlzUpz
+DncKjvbdwtmFQxkn
+EObkKvbdmIdTqUqa
+DnbkKvbdJutedFHJ
+EOcKjvbdVZITykPO
+DoDLKvbdhbPDFXQq
+DnbjjvbdmuVZjirG
+DncLKvbdieKgVPAO
+DncKjvbdEuyPpNJe
+DoDKjvbdiHJcYuiu
+EPDKjvbdmgFYNNfy
+DnbkKvbdOTUWGeUp
+DoCjjvbdZRNFJNFR
+EPDLKvbdYpmFJNEq
+EObkKvbdRMxBxnUz
+DncKjvbdNQYQvOHT
+EOcLKvbdMoxRVnHT
+DoDKjvbdpyOhGpcx
+EObjjvbdRyjITDWA
+EObjjvbdrykosAhO
+EOcLKvbdhaoDFXRR
+DoDLKvbdIryBSmYM
+DnbjjvbdlZSrTYft
+DncLKvbdegjurORH
+EOcKjvbdJYUCHlRQ
+EOcLKvbdREDApRES
+EObjjvbdmgFYMnHZ
+EPCkKvbdZyDimblS
+DoCkKvbdiCPCdwQq
+EObkKvbdbVBgYKtI
+DoDLKvbdNddUJJLE
+DoCjjvbdrpVnibuf
+EPDLKvbdKaLGlbYR
+DnbjjvbdTpqPVUhN
+DoCjjvbdcyxoxYpb
+EPDKjvbdhfibxvJu
+EPCjjvbdJpydnfNe
+DncLKvbduWOXipsA
+DoDKjvbdrRtkNkAm
+EObkKvbdNQXqVmgT
+EObkKvbdCIkBkJFj
+EPDLKvbdqUUHSRjt
+EOcLKvbdeYZtTqez
+EPCjjvbdqUUHRqkU
+DncKjvbdkWXODaxX
+EPCkKvbdaNKbTVNH
+EPCjjvbdvAcxroEh
+EOcKjvbdlZTSTZGt
+EOcLKvbdLAkHNCYR
+DoDLKvbdUtMselWK
+EPCjjvbdnVUzKjRf
+DoDLKvbdypoMiJwA
+EObjjvbdKDKCqKDY
+DoCjjvbdrWolDIxq
+DoDKjvbdwyhFfXeS
+EOcKjvbdnGeYMmgZ
+DoDLKvbdREDAopcr
+EPCjjvbdiUzFXRuC
+DoDLKvbdZQldhmEq
+EPCjjvbdtvNwipsA
+EPDKjvbdbrcLUDia
+DoDLKvbdegkVqnQg
+DoCjjvbdznopdcMY
+DoCjjvbdmfeXlmgZ
+DncLKvbdXrlBMsnx
+DoCjjvbdmgEwmOGy
+DoCkKvbdjmCLydgP
+DncLKvbdmJEUQuSB
+DnbjjvbdRbDeLiYk
+DnbkKvbdQdDBPqDr
+EObkKvbdjKGHjMxS
+DoCkKvbdyOTHxSiD
+EPCjjvbdQwNdCkhD
+EObjjvbdfNFwGljL
+EObjjvbdVqmxCElD
+EOcKjvbdeOeTKtTr
+DoDKjvbdUaBqSpqy
+DnbjjvbdmIdURUqa
+DoCkKvbdUWMQJtBR
+DnbjjvbdxnSgxSiD
+DncKjvbdwXMBVaVu
+DnbjjvbdvvkaVaWV
+EObkKvbdmaiwXnmu
+DoCjjvbdgQBzwEYI
+EOcKjvbdFVxpPmJe
+EObjjvbdKDJcQjCx
+DoCkKvbdYlRdUOMN
+EOcLKvbdZoOIddzK
+DoCjjvbdffMZnHHA
+DncKjvbdnQZxujxb
+EPDLKvbdwXMBWBVu
+DoCjjvbdLFfIBaQu
+DncKjvbdGQASwHFy
+DnbkKvbdauBfxKsh
+EOcLKvbdraelkgKy
+EObkKvbdnVUzLKSG
+DoDKjvbdANHxrwZx
+DncLKvbdqZPHfqEY
+EObjjvbdvPTzpjoU
+EObjjvbdrWpMDIyR
+DnbkKvbdCDpBWKNG
+DnbkKvbdyOSgwrhc
+DnbkKvbdeKKSVtzn
+DncKjvbdMowpumgT
+EOcLKvbdOFDtIhjd
+EPDKjvbdkDMLRGtg
+EPDKjvbdiiehJlwr
+EPDLKvbdBdQAvJlf
+DoDLKvbdZyEKODMS
+EObjjvbdJqZePFme
+DnbkKvbdKxqKSztf
+EObkKvbdmJEUQuSB
+DnbkKvbdREDAopdS
+EPDKjvbdwzHefYEr
+EPDKjvbdnHExMnGy
+EOcKjvbdmozZVjyC
+EPDKjvbdZHWdAPTJ
+DoDKjvbdjgfkfFnL
+DncKjvbdczZPxYqC
+DoDKjvbdEXwlUUTl
+DncKjvbdhuZdvrVC
+DnbkKvbdxKwDgzzG
+EPCkKvbdsZlQSaIO
+EOcKjvbdzRPMiKXA
+DoDKjvbdqvolDIxq
+DoDKjvbdQdCaPpcr
+EPCjjvbdJmADyfuB
+DnbjjvbdsCGNLgLZ
+DoDKjvbdKfGICAqV
+DoCkKvbdbiNJkGXY
+DncKjvbdiGicYvKV
+EPCjjvbdSxLLmzjx
+DncKjvbdLAjflaxR
+EPCkKvbdUyHsyjoO
+DnbjjvbdcyxoxYqC
+EObkKvbdxZgfGYFS
+EPDLKvbdZoNiEeZj
+DncLKvbdZtIhxcrn
+EPDLKvbdIwtCILqQ
+DncLKvbdQmXbYmtz
+EOcLKvbdmuUzKiqf
+EPDKjvbdsQVnibuf
+EObjjvbdOSsugEtp
+EOcLKvbdYlSETnLm
+EObkKvbdUtNUGMWK
+DoDLKvbdzeZnzeZp
+DoDKjvbdqTtHRqkU
+EObjjvbdmbJvxPNu
+DoDLKvbdliDsqUqa
+EPCjjvbdhanbdvpq
+DoDKjvbdiifHilxS
+DoDKjvbdmJDsptqa
+DnbkKvbdDncKkWcE
+EPCkKvbdaofgELzd
+DncKjvbdijGIJmXr
+EPCkKvbdRkYfUgLT
+EObkKvbdHEKuibKK
+DnbjjvbdVhXuwfxz
+DoDLKvbdiMEcmuCy
+DnbkKvbdJcJcQibx
+DnbkKvbdmfeYNOGy
+DoDKjvbdqUTgSSKt
+EPDLKvbdePErjtUS
+EObkKvbdaNKasUmH
+EObkKvbdiifIJmYS
+EOcKjvbdsPunjCvG
+EObkKvbdbrcKtDjB
+EPDKjvbdbhlikFwY
+EPCjjvbdrpVnjDWG
+EPCjjvbdaMkCStlg
+DncKjvbdMpXqVnGs
+EPDLKvbdZjShPfbG
+EPDLKvbdfHkVrOQg
+DoCkKvbdDnbjjvbd
+DoCkKvbdkySqsYft
+DoDLKvbdZRMeImEq
+DoDLKvbdYpleIleR
+DncKjvbdiHJbyViu
+EObkKvbdrMyixkgi
+EPDKjvbdqvokbiYq
+EOcKjvbdzitoodTU
+DnbjjvbdVYhTyjnn
+EPDLKvbdyYJJbPzL
+EObkKvbdeFPSCWcK
+EPDKjvbdIsZArlxM
+DnbjjvbdkIHLfGNk
+DoDLKvbdehLVqmqH
+EOcLKvbdvBEZTPFI
+DncKjvbdnUuZjirG
+EPCjjvbdakLfOnDA
+DnbkKvbdEzsqEkcJ
+DnbjjvbdVhXvXgYz
+DoCjjvbdIryBTNYM
+DncKjvbdZirgpHBf
+DoDKjvbdEYYLsstM
+DnbjjvbdZshhyETO
+DoCjjvbdOTUVgFVQ
+EObjjvbdZisHpGbG
+DoDLKvbdkDLkRGtg
+EObkKvbdegjvSNpg
+DncLKvbdfIKvRnQg
+DncLKvbdJKEAJpGd
+DncKjvbdrRtkNkBN
+EPCkKvbdjvWnDaxX
+DoCjjvbdmfdwmNgZ
+DnbjjvbdbrcLUEJa
+DncLKvbdnQZxujxb
+DoDKjvbdNsTugEuQ
+EOcKjvbdUVlPisaR
+EObkKvbdHDjujBij
+EPDLKvbdSBdFMJYk
+EPCkKvbdVvhxVdFH
+DncKjvbdIsYaTNXl
+EPDLKvbdIrxaSlxM
+EPDKjvbdfoazwDwh
+EPCkKvbddeOqbXDK
+DoCjjvbdJpzEnfNe
+DncKjvbdqiAKFNOe
+EPDLKvbduDCtwWOo
+DnbjjvbdZjShQGbG
+EObjjvbdVAbQsRSZ
+DncLKvbdtcCuWuoP
+DoDKjvbdTvLoitAq
+EOcLKvbdZQleIleR
+DoCkKvbduLxXAtAw
+DnbjjvbdqYoHfqDx
+DoDKjvbdJYTbHkqQ
+DncLKvbdGZUtaDxC
+EObjjvbdqFdEtWAh
+EPCkKvbdILaznWqL
+EObkKvbdQwNdCkhD
+EPCkKvbdmJDsqUqa
+EOcKjvbdvBEYrneI
+DoDKjvbdapGgELzd
+DoCjjvbdwWlAvAvV
+DoDLKvbdJbicQicY
+EPDKjvbdaaVdepPw
+DoCkKvbdsZkosAhO
+DoCkKvbdNeETiJKd
+EObkKvbdEObkLXCd
+EPCjjvbduCbuXVno
+DoCkKvbdrykpTBHn
+DnbkKvbdrEFIpNua
+DoCjjvbdlYrrSxft
+DoDLKvbdqdFIpOVa
+EObjjvbdrbFmMGjy
+DnbkKvbdRpUHKGDw
+EOcLKvbdzoPpdcMY
+DoDLKvbdfILVqnQg
+DoCkKvbdlZSqsZHU
+DncKjvbdrzMQSaIO
+DoCkKvbdhuZeWrUb
+EObjjvbdfSAvzkbo
+DoCkKvbdVZIUZjnn
+EOcLKvbdhlEdOUcZ
+DoDKjvbdbUagXkUI
+DoCjjvbdqUTgRqjt
+DoDLKvbdqTsfrRjt
+DnbkKvbdrouoKCuf
+EPDKjvbdmbKXXoNu
+DoDLKvbdhbPDEwRR
+DncLKvbduVnYKRTA
+DoCjjvbdcJNKKfXY
+EPCjjvbdeFOrCXDK
+EPCkKvbdczYoxYpb
+DnbkKvbdKfGHaaRV
+DoCjjvbdMuTRjmAX
+DoDKjvbdkMalZeGo
+DnbkKvbdbhmKLFvx
+EPDLKvbdjuwODbXw
+DoDLKvbdUMVoBVoJ
+DoCkKvbdRpTgJfDw
+EOcLKvbdajlFoNcA
+EPCjjvbdRMwaxnUz
+EOcLKvbdJcJbpjDY
+DoCjjvbdjhHLefNk
+EOcLKvbdcasNSATm
+DoDKjvbdyOTHwriD
+EObjjvbdKQydnenF
+EObjjvbdZirhPgBf
+EPCjjvbdBiKbLIfK
+EOcKjvbdNeDtIiKd
+EOcKjvbdkDLjqGtg
+DoDKjvbduDDVWuoP
+DncLKvbdePErjtTr
+EOcKjvbdJbicQjDY
+EPDKjvbdrylQTBHn
+DnbjjvbdkMbMZeGo
+DncLKvbdtlYWaUAw
+DoCjjvbdDwxMUTtM
+EObkKvbdjblKqGtg
+DoDKjvbdRMxCZNtz
+EObkKvbdqYoIGqDx
+EPDKjvbdmfeYNNgZ
+EObjjvbdTAFIhCPE
+DoCjjvbdjKGIKMxS
+EOcLKvbdMpYRWOHT
+EOcLKvbdMoxRVnGs
+DncKjvbdhaoDEwQq
+DnbkKvbdEXxMTtTl
+EPCkKvbdMgCpMpVL
+EObjjvbdRzKITDWA
+EOcLKvbdrzLosBHn
+EPCkKvbdBraCsfWr
+DoCkKvbdaaVeGPow
+EOcLKvbdIGgZyXxH
+EPDKjvbdliETptqa
+EOcLKvbdbKlGPODA
+DnbjjvbdRadElJZL
+EPDLKvbdjFLHVPAO
+DnbkKvbdiBnbdwRR
+EObkKvbdvBDyTOeI
+DnbjjvbdUyHtZjnn
+DnbkKvbdmgFYNOGy
+DnbkKvbdGKdsDHlu
+EPDLKvbdZRNEiMeR
+DoCkKvbdbLLeoODA
+EObkKvbdANIZSvzY
+DoCkKvbdziuPpDrt
+DnbjjvbdWHwvXgYz
+EPDKjvbdsBfNLgLZ
+DoCkKvbdWWiXudFH
+EPDLKvbdwzIGGYEr
+EOcLKvbdVTmUGMWK
+EObjjvbdMSXMytpz
+DncKjvbdZirhQGaf
+EObjjvbdCJLBjiGK
+EPCjjvbdZLrETnLm
+EObjjvbdelevfljL
+DncKjvbdGYuVBEYC
+EPCkKvbdkCkjpgUg
+DoCkKvbdbhljLFwY
+DnbjjvbdeEoSBvbj
+DncLKvbdvAcyTPFI
+DnbkKvbdjblLQgVH
+EPCjjvbdeEoSBvbj
+DnbkKvbdaMjbStlg
+EObjjvbdrDdhpOWB
+EOcKjvbdbKlFoODA
+EPDLKvbdZjTIQGaf
+EObjjvbdEzsqEkcJ
+DnbjjvbdZRNEiNEq
+EObjjvbdqlzJxlIJ
+DnbkKvbdkIHLfFmk
+EObkKvbdMtrrKmAX
+EPCkKvbdNQXpvNgT
+EPCkKvbdbrcKtEKB
+EObjjvbdSPtGjGEX
+DoDKjvbdxwiJaoyk
+DnbjjvbdVYhUZkPO
+DoDLKvbdXrlBNUPY
+DoDKjvbdZnmiEdzK
+DoCjjvbdWWiXvDeH
+DoDLKvbdyNsHwsIc
+DoDKjvbdwyhFfYEr
+EPDLKvbdNeDshhkE
+EPDKjvbdBiLBkJFj
+EOcKjvbdJqZdoGNe
+EOcKjvbdbAvEepQX
+DoCjjvbdaNLBsUlg
+EPDLKvbdvBDxsOdh
+DncKjvbdGFirNiTq
+EPDLKvbdZnmiEeZj
+DncLKvbdePFSjtTr
+EOcKjvbdnGdwlnHZ
+EOcLKvbduDDUvuno
+EObjjvbdZQmFIldq
+DoCkKvbdcyxpYYqC
+EOcLKvbdMRvlzVQz
+DoCjjvbdtcDUwVoP
+EPCkKvbdrXQLbhxq
+DoDKjvbdkVwODbXw
+DnbjjvbdnCJwYOmu
+DnbkKvbdqvpLbhxq
+DoDKjvbdKDJcQjDY
+DnbkKvbdvwMAvAuu
+EPDKjvbdtvNxKRTA
+DoDKjvbdYkqctOMN
+DoDKjvbdtcCuWvOo
+DoCjjvbdEObkLXDE
+DoCkKvbdbrbjtDia
+EObkKvbdDncKkXDE
+DnbjjvbdxxJKBozL
+EPCjjvbdbhlikGWx
+DncKjvbdJXtCIMRQ
+EOcLKvbdkVvmcaxX
+DoCjjvbdqwPkbhyR
+EObjjvbdySnImRbH
+EObjjvbdZQleImFR
+EObkKvbdmpZxujyC
+EPCjjvbdhbPDEvpq
+EObkKvbdpyPHgREY
+DoDLKvbdwzIGGXeS
+EObjjvbdaSGChUGL
+DoDKjvbdrbFmMGkZ
+EPCkKvbdxKwEHzyf
+DnbkKvbdJXtBgkpp
+EPCkKvbdlZTRrxft
+EOcKjvbdFVyPpNKF
+DoCkKvbdaRecHsek
+DoDKjvbdFfKRnJUR
+DoCjjvbdyOTIXrhc
+DoDLKvbdyOSgxShc
+DoDKjvbdEOcKjwCd
+DoCjjvbdzoPpeClY
+DoCkKvbdURRPVUhN
+DoDLKvbdVqmxCFMD
+EOcKjvbdNVSrKmAX
+EOcKjvbdTvLpKTaR
+EPDLKvbdCTAbtFwS
+EPDLKvbdZyEKNblS
+EOcLKvbdsCFllHLZ
+EObkKvbdjlbMZeHP
+EPDKjvbdMpXpunGs
+EObjjvbdaNLCSuNH
+DoDLKvbdkCkjqHUg
+EPCjjvbdTYKlNzjx
+DnbjjvbdNxOuzdOU
+DoCkKvbdegjvRmpg
+DoCjjvbdhfjCyWKV
+DncLKvbdjggMFfNk
+EOcKjvbduVmwjRTA
+DnbkKvbdDjHiuxKA
+EOcLKvbddePRavcK
+DnbkKvbdwkWcgzyf
+DnbkKvbdHlBznXQk
+EPCkKvbdatafxKsh
+EPCjjvbdcJMjKfXY
+DoDKjvbdrDdiQOWB
+DoDLKvbdVvhwvEEg
+EObjjvbdwjvdHzzG
+DncLKvbduMYXAtAw
+DoDLKvbdZQmFJNEq
+EPCjjvbdyOTIXriD
+DoCkKvbdbiNKLGWx
+DncKjvbdHEKvKBij
+EPDLKvbdYlSDtNkm
+DoDKjvbdTqROuVIN
+EPCkKvbddeOqbXCj
+EOcLKvbdCTBCsewS
+EPCjjvbdnUtykJrG
+DnbjjvbdlZTSSyGt
+EPCjjvbdjmBkyeGo
+DnbkKvbdVhXuwfxz
+DncLKvbdePFTLTsr
+EOcKjvbdemGWgMik
+EObkKvbdhuZeWquC
+EPCjjvbdEvYpQNKF
+EOcKjvbdpaJFAXHd
+DoDKjvbdJSyBSmYM
+EOcLKvbdSCDdlIxk
+DncKjvbdSLZGVGkT
+DnbkKvbdrbFlkgKy
+EObjjvbdJSyAsMwl
+EOcKjvbdEOcKkXDE
+EPCjjvbdMoxQumfs
+EPDKjvbdUQpnuUgm
+DncKjvbdaaWFFoow
+DnbkKvbdakMGPODA
+EObkKvbdrEEhomua
+EOcKjvbdmozZWLYb
+EObjjvbdVgwuxGxz
+EOcLKvbdCJLCKhej
+EPDLKvbdVUNUGLvK
+EOcLKvbdLGGHbBRV
+DoCkKvbdlqxtysEJ
+EOcLKvbdcScLTdKB
+DncKjvbdhtydwRtb
+DoCjjvbdcTCjscia
+DncLKvbdUslsekuj
+DoDKjvbdwuNFRYkn
+EOcLKvbdijGHjNYS
+DoCjjvbdJSyBSmYM
+DoDKjvbdEYXlUTtM
+EPDKjvbdUyITzKoO
+DnbkKvbdvBDyTPFI
+DoDKjvbdYlRcsmkm
+DoDKjvbddePRbXCj
+EPCkKvbdVZHtZjoO
+EPDLKvbdWXIxVceH
+EPCjjvbduDDUwVoP
+DncKjvbdQlxBxnUz
+DoDLKvbdfpBzvdYI
+DoCjjvbdMJBlRYAS
+EPCkKvbdZisHofaf
+DnbkKvbdkWXNdCXw
+EOcKjvbdEYXkstTl
+EOcKjvbdfekymgHA
+EPDKjvbdelfWflik
+EPCjjvbddCTNSAUN
+EPDKjvbdpfDeUVaI
+DncLKvbdiBnbeWqR
+EObjjvbdEuyPoljF
+EPCkKvbdRDcBQRES
+DncKjvbdhfibxujV
+EObkKvbdVqnYBeMD
+EPDKjvbdJKEAKQGd
+EOcLKvbdsQVoJbuf
+EOcKjvbdqcdhonVa
+EObjjvbdJcKCqJcY
+EOcKjvbdpfEEsuaI
+EPDLKvbdxnTIYShc
+EOcLKvbdxVMdqYlO
+EObjjvbdZyDimcMS
+DncKjvbdiGjCxvKV
+DoCkKvbdRbEEkiYk
+DoCjjvbdWIYVxHYz
+EPDLKvbdYzcFqjVy
+DncLKvbdTYLLmzjx
+DoDLKvbdwXLaVaWV
+DoDLKvbdMRvlyuQz
+DoCjjvbdajkeoNcA
+EPCjjvbdjEkHUoAO
+DoCjjvbdZoNiFFZj
+DncLKvbdlZTRryHU
+DoCjjvbdcTDLTdJa
+EOcLKvbdlhctRVSB
+EObjjvbduaEYroFI
+DncKjvbdzjUpQDsU
+DoDLKvbdyqPNIiwA
+DnbjjvbdhkdcnUby
+EObjjvbdVYgtZjoO
+DnbjjvbdCJLCLJFj
+EPCjjvbdzeZnzdyp
+DnbjjvbdqlyjZMIJ
+EOcLKvbdGAnpyJzm
+DoDLKvbdNGcQMpVL
+DncKjvbdADSXiyiQ
+DoCjjvbdLBLHNCYR
+DoCkKvbduVnXjRTA
+DncKjvbdtSqsZZeD
+EPDKjvbdpyOhGqEY
+EObjjvbdEuyPomKF
+EPDKjvbdyOSgxTIc
+EPDKjvbdGFiqnJTq
+EOcKjvbdyYJJbPzL
+DncLKvbdADRwjZiQ
+DncLKvbdCSaDUFwS
+DoDLKvbdEzsqEkbi
+EOcLKvbdssSTYyeD
+DnbkKvbdSBdEkiZL
+EObjjvbdFWZQPlie
+EObkKvbdbBVeFpPw
+DoDLKvbdBdQBVjMf
+EPDLKvbdptUHRqjt
+EPCkKvbdQwODcMID
+DoDLKvbdelevgMik
+DnbjjvbdVTmUFkuj
+DnbkKvbdLYqJrzuG
+DoCkKvbdCTAbsevr
+DoCjjvbdJpyeOfOF
+EPCkKvbdOStWHEtp
+EOcLKvbdKVtfEEfi
+DoCkKvbdmuUykJqf
+DnbjjvbdQZNAHSrK
+DnbjjvbdMgDPlpUk
+DnbkKvbdCIkBjhfK
+EObjjvbdBsBCsewS
+EOcLKvbdYzbfRivZ
+EOcLKvbdrzMQSaHn
+EOcKjvbdRosfjFcw
+EPDKjvbdANHyTXZx
+EPCkKvbdliDsptqa
+EOcLKvbdACrXizIp
+EPCjjvbdLFfICApu
+DoCjjvbdbAvEepPw
+EOcKjvbdTpqPVVHm
+DoCjjvbdsBemMGjy
+EPCkKvbduaEZTPEh
+DoCkKvbdOStWHEtp
+EPCjjvbdbBVeGQPw
+EObjjvbdOSsufeUp
+DoCkKvbdjAQHBPgK
+EPCjjvbdbBWEfPow
+EPDKjvbdtSqsZZdc
+EPCkKvbdegjuqmpg
+DoDLKvbdRotGifDw
+DoDKjvbdmJEUQtrB
+DoCjjvbdcIljKewY
+EObkKvbdbiMjKewY
+EObjjvbdcScKsdJa
+EPDKjvbdtSqsYyeD
+DnbkKvbdrpWOjCvG
+EPDLKvbdBiKbLIej
+EPCkKvbdBdPaWJmG
+EObjjvbdZRNEhmEq
+EOcLKvbdiUzFWrUb
+EPCkKvbdmIdUQtrB
+EPCkKvbdbUafxLTh
+EOcKjvbdnCKWxOmu
+DoCkKvbdsZkosBIO
+DnbkKvbdHDjujCJj
+DoCjjvbdWSOYCFLc
+EPDKjvbdmJETqVSB
+DnbjjvbdrXPkcJYq
+EObkKvbdMgDPlpVL
+DnbjjvbdZisHpGaf
+DoCjjvbdGGJqmiTq
+EObkKvbdIHGyyYXg
+EObkKvbdqTsgRrKt
+EObjjvbdmJDtRVSB
+DnbjjvbdddoSBvbj
+EPDKjvbddePSBvbj
+DnbjjvbdBcpAvJlf
+DncKjvbdezvYeItX
+DoDKjvbdmgEwmNfy
+EObjjvbdDigivXjA
+EOcLKvbdmJEURUrB
+EOcLKvbdePFTLTtS
+EPDKjvbdVTmUGMVj
+EPDKjvbdnBivwnnV
+EPCjjvbdZnmhddzK
+DncKjvbdZeXfzgiC
+DoDLKvbdEuyPpNJe
+DoDLKvbdqdEhpNua
+DoDKjvbdFWYpQMie
+DoCkKvbdMfcQMpVL
+EOcKjvbdmttykKSG
+DnbjjvbdlhcspuSB
+EPCjjvbdWSNwbFMD
+EPDKjvbdRbEElIyL
+EOcKjvbdyNsHwsIc
+EPCjjvbdrylQTAgn
+DncLKvbdADSYJyiQ
+EOcKjvbdZjTIPgBf
+EObjjvbdKDKDQibx
+EObkKvbdKDJcRJcY
+DoCkKvbdmSZUzSdJ
+EPCjjvbdaNKartlg
+DoDKjvbdIGgZyXwg
+EObjjvbdauCHXjsh
+EObkKvbdxUmEpyLn
+EPCjjvbdNsTugEtp
+EPDLKvbdZyDimblS
+DoDKjvbdbUagYKtI
+DncKjvbdliETpuSB
+EOcKjvbdDihKWXjA
+DncKjvbdZtIiZETO
+EObjjvbdygZMAMeX
+DoDKjvbdfNGWgMik
+DoCjjvbdZMSEUNkm
+EOcKjvbdsrqsZZdc
+EPCkKvbdACqxJzJQ
+EPDLKvbdNdcshiKd
+DoDKjvbdyqOmIiwA
+EOcKjvbdRMwbYmtz
+EOcKjvbdYpmEhleR
+DoDKjvbdjJfHimYS
+DoCjjvbdrbFmMHLZ
+DoCkKvbdBcpBWKNG
+DoDKjvbdIxTbHkqQ
+DoDKjvbdhuZdwSUb
+EPDLKvbdJYUBglQp
+EPCkKvbduCcUwVno
+DnbkKvbdwuNEpyMO
+DncKjvbdssSSxzEc
+DoDLKvbdGdLWJbKK
+EObjjvbdFjdsDIMu
+DncLKvbdfkGzbfAE
+EOcLKvbdrRtkOLBN
+EPDLKvbdajkfOmcA
+EPCjjvbdrMzJxkhJ
+DncLKvbdqZOhHREY
+DoDKjvbdmJEUQuSB
+DnbkKvbdRDbaQRES
+EPCjjvbdpyPHgREY
+DnbjjvbdMIalQxAS
+DncLKvbdiZuGMROG
+DoDKjvbdgFkymfgA
+DncLKvbdsCGMkgLZ
+EObkKvbdRotHJecw
+EPDKjvbdkClKpftg
+EPCkKvbdRjyGUgLT
+EOcKjvbdhuZdvqtb
+EOcLKvbdmttzKjSG
+EObjjvbdhlEdOVDZ
+DoDLKvbdZisHpGaf
+DnbkKvbdTqQntuHm
+EPDLKvbdNdctIiLE
+EObkKvbdWRnXbFLc
+EPDLKvbdKVtfDdgJ
+EPCkKvbdJSyBTMwl
+DnbkKvbduWNxKQsA
+DoCkKvbdqGEFUVaI
+EPDKjvbdhkdcnVDZ
+EPCjjvbdySnIlrBg
+EOcLKvbdYlRctNlN
+EObkKvbdvBDxroFI
+DoDLKvbdxwiJbPzL
+EPCjjvbdyNsHxTJD
+DoCjjvbdhfjDYujV
+DoDLKvbdcImKLFwY
+DnbjjvbdqwQMChxq
+DncLKvbdaaWEfQPw
+DnbkKvbdUQqOuUhN
+EOcLKvbdUaCRSqSZ
+DnbjjvbdRMxByOUz
+EPDKjvbdKCjCpjCx
+DncLKvbdrMzJyMIJ
+EPCjjvbdOEdThhjd
+EPDKjvbdrSUkOKaN
+EObkKvbdMowpunGs
+DoCjjvbdhzVGLpmf
+EOcLKvbdaMkBsVMg
+DoCjjvbdkIGkfFnL
+DnbkKvbdYpldiNFR
+EPDLKvbdZxcjNcMS
+EPDKjvbdGGKRnJUR
+EPCjjvbdbiNKKfWx
+EObjjvbdmRyUyrci
+DncKjvbdLrXNZtpz
+DncKjvbdZjTIPgCG
+DnbkKvbdypoNIiwA
+EPCjjvbdDihKVxKA
+DncKjvbdyfxlANFX
+DoDKjvbdiMFEOVCy
+EPCkKvbdtcDUvvPP
+DoCkKvbdEvYpQMie
+DnbjjvbdZLrDtOLm
+EPCjjvbdKQzFPGNe
+EPDKjvbdGdLVjCJj
+DoDKjvbdqYoHfqDx
+DoDLKvbdFVxoomJe
+DnbkKvbdKRZePFnF
+DoCjjvbdFVyQQMjF
+DnbkKvbdTulQJsaR
+EObkKvbdkHgMFenL
+DoDKjvbdVUMselVj
+EPDLKvbdrDdhonVa
+DncKjvbdkVvmcaxX
+DoDLKvbdrRuKnLAm
+EOcKjvbdJbibpjDY
+EPDKjvbdXrlAmToY
+DnbkKvbdZirhQGbG
+DnbjjvbdjgfkfFnL
+EOcKjvbdGFjSOJTq
+DoDKjvbdSCDeMJYk
+DoCkKvbdpecdtWAh
+EObjjvbdzeZnzdyp
+DoCjjvbdMJBlQxAS
+EPDKjvbdnBivwnmu
+DoDKjvbdRadElIyL
+DoDLKvbdsZlPsBHn
+EObjjvbdznopeDLx
+EOcLKvbdCJKbKiFj
+DncLKvbdmgExNNfy
+DnbkKvbdnPzYvKxb
+DncKjvbdrDdiPnVa
+DoCjjvbdAMgxrwZx
+DncLKvbdTfzmkwWF
+DncKjvbdqiAJdloF
+EPCkKvbdwuMeRZLn
+DoCjjvbdVUNUFkuj
+DoDLKvbdKQyePGNe
+DncKjvbdLqvlzVQz
+DoDKjvbdmgFYNNgZ
+DnbjjvbddxZtTrFz
+EObkKvbdqTsgSSKt
+DnbkKvbdZxcimcMS
+DoCjjvbdANHySvyx
+DoDLKvbdZQmFJMdq
+DoCkKvbdHDjujBij
+EPDLKvbdsPuoJbuf
+EPCjjvbdYpmEhmFR
+DncLKvbdZjTHpGaf
+EPDKjvbdEuyQQNKF
+DoCkKvbdmbKWxPNu
+DoCkKvbdRjyFtfjs
+DoCkKvbdiifHjNYS
+EPDKjvbdpyOhGpdY
+DoDKjvbdUVlPitBR
+DoCjjvbdEKIJuwjA
+EPCjjvbdFkFTDHmV
+EOcLKvbdySnJNSCH
+DncLKvbdRpUHJedX
+EPDKjvbdtvOYJpsA
+DoDKjvbdKDKDQjCx
+DoDLKvbdaMkCTUmH
+EOcKjvbdMpYRVnGs
+EOcKjvbdtSqsYzFD
+DncLKvbdKaKgNCXq
+DoCkKvbdsCFllGkZ
+EObkKvbdNrsvGeUp
+DoDKjvbdmaivxOnV
+EOcLKvbdOEctIhjd
+DoCkKvbdemGXGljL
+DoDLKvbdjvWmdBxX
+EPCkKvbdCIjbLIej
+EPCjjvbdkHfkfFmk
+DoDLKvbdwzIGFwdr
+EOcKjvbddBrlrAUN
+EPCkKvbdJutecdgJ
+DoCjjvbdWRmwaeLc
+DnbkKvbdiVZdwRuC
+DnbjjvbdGLEsDHmV
+EPCkKvbdxsOJNSCH
+EPCjjvbdIwtBgkqQ
+DncKjvbdbrbjtDjB
+EPCkKvbdjhGkeemk
+DncKjvbdWWiXvDeH
+EPCjjvbdnUtzKiqf
+DncKjvbdTukoitAq
+DncLKvbdCIkBjhfK
+DoCkKvbdhgKDZWJu
+EPDKjvbdBhkBjiFj
+DnbjjvbdMfbpNPtk
+DoDKjvbdnBjWxPOV
+DoCjjvbdEJhKWYKA
+EOcKjvbdTpqOtuHm
+DoCjjvbdwzIFfXdr
+EOcKjvbdrpVoKDVf
+EOcLKvbdEYYLtTsl
+DoCkKvbdLFfICBQu
+EOcKjvbdeXzTsrFz
+EOcLKvbdSQUHKFdX
+EOcLKvbdraemMHLZ
+EPDKjvbdkIGlFemk
+DncKjvbdOYOuzcnU
+DoCkKvbdIwtCILpp
+DncLKvbdZoNiEdzK
+DoDKjvbdsrqsZZeD
+EPDLKvbdzGyMANEw
+DncLKvbdBraCsewS
+EObkKvbdpyOgfpcx
+DnbjjvbdxmrgxTIc
+EOcLKvbdZjSgpHCG
+EPCjjvbdrWpMDIxq
+DncKjvbdZtJIyESn
+EPCjjvbdJSxaSmXl
+DoCjjvbdiMFEOVCy
+DoCjjvbdDwwlTstM
+DncLKvbdJYUCHkpp
+EPDLKvbdsrrSxzFD
+EObjjvbdkHgMFfNk
+EPDKjvbdOStVgFUp
+DnbjjvbdjhHMGGOL
+DnbjjvbdZyEJmcLr
+EPDKjvbdDihKWYKA
+DncLKvbdRosfiecw
+DoCjjvbdyTNhmSCH
+DnbkKvbdFeirNhsq
+DoDKjvbdrDeIpNvB
+EObkKvbdVAaqTRSZ
+EPDLKvbdLAkGlbXq
+EOcKjvbdVAaprqRy
+EPDLKvbdfIKvRnQg
+EPCjjvbdUQpoVUgm
+EObjjvbdxVNEpyMO
+EOcKjvbdsCFllGkZ
+DncKjvbdsBelkgLZ
+DoDLKvbdvlvANDeN
+DoCjjvbdnBivwoNu
+EObjjvbdsCGMkgLZ
+EObjjvbdsPvPJbvG
+EPDLKvbdxrnImRbH
+EPDLKvbdNPxRVnHT
+DoDLKvbdMtrqkNAX
+DoDKjvbdiGicZWJu
+EPDKjvbdOFEUJJLE
+EPDLKvbdoAKzshDn
+DoDKjvbdehKvRnQg
+EObjjvbdLLBIWAKZ
+EPDKjvbdeOdsLUUS
+DncKjvbdjvWmdBxX
+DncLKvbdezuyFJTw
+EPCkKvbdNPwpumgT
+EPCjjvbdkxsRrxgU
+EPDLKvbdptUHSSLU
+EPDKjvbdeATqNXif
+EPCkKvbdjlakzEgP
+EObjjvbdyXiKCPzL
+DoCjjvbdhlFDmuDZ
+DncKjvbdauCGxLUI
+EObjjvbdySmiNSBg
+EOcLKvbdfNGWfljL
+DncLKvbdVviYWDdg
+EPCkKvbdkIHLefOL
+EPDLKvbdRNYCZNtz
+DoDLKvbdmfdxNOGy
+DoDLKvbdcScKtDjB
+EOcLKvbdEPDLKvcE
+EPCjjvbdUaBprqSZ
+EObkKvbdddnqbXDK
+EPCkKvbdaaVeGQQX
+DoDLKvbduoTzqKnt
+DnbjjvbdqwPkbhxq
+EObkKvbduaEZTOdh
+EOcLKvbdKfFhBaRV
+EOcKjvbdVYgtZjoO
+EOcLKvbdrSVKnKaN
+DnbkKvbdsCFmMGjy
+DnbkKvbdSLYeuGkT
+DoCkKvbdwWlAvAuu
+EPCjjvbdRXOEClID
+EPCkKvbdCIkCKiFj
+EOcKjvbdGckViajK
+DoCkKvbdznpRFCkx
+DnbjjvbdxKwDgzyf
+DncKjvbdVAaprprZ
+DoDKjvbdOEctIhjd
+EObjjvbdmIdTptqa
+DnbjjvbdvwMAuaWV
+EObkKvbdEYXksssl
+EPCkKvbdiZtelQnG
+EOcKjvbdqdEhpOVa
+DnbjjvbdidjfuPAO
+DnbkKvbdnBivxPNu
+EObkKvbdrSVKmkBN
+DnbkKvbdiCPDFWqR
+DncKjvbdZisHofaf
+DoCjjvbdJvVFcdfi
+DoDLKvbdcyxpYYpb
+DoCjjvbdrykpTBHn
+EPDLKvbdqrUkOKaN
+DoCkKvbdGQATWgFy
+DncKjvbduaDxsPFI
+EPCkKvbdYkqdTnLm
+EObjjvbdQYmAGsRj
+DnbkKvbdZyEKOCkr
+DnbkKvbdOEdThhjd
+EPDKjvbdiCOcFWpq
+EOcKjvbdMfcQNPtk
+EPDLKvbdLGFhBaRV
+EPDLKvbdssSSyZeD
+EPCkKvbdTAFJIBoE
+EObkKvbdeFPRavbj
+DnbkKvbdjKFhKNYS
+DncLKvbdCJLBjiGK
+DncLKvbdqlzJyLhJ
+EOcLKvbdRyigsCvA
+DoDKjvbdYqMdhldq
+DnbjjvbdehKvSOQg
+EObjjvbdMgColouL
+DoCkKvbdehKuqnRH
+DoDKjvbdQvmdCkhD
+DoDKjvbdMSWlzVQz
+EObkKvbdbhlikGXY
+DoCjjvbdeAUQmYJf
+EPCjjvbdZyEJmcMS
+DoDKjvbdIGfzYxYH
+DoDLKvbdHDjvJbJj
+EOcKjvbdQwNdCkgc
+EPCkKvbdRWnDcMHc
+DnbjjvbdrMzJyMIJ
+DncKjvbdlhctQuSB
+DoDKjvbdbPgGdLzd
+EObkKvbdijFhJmXr
+DoCjjvbdbQGgDkzd
+EPDLKvbdDihJvXjA
+EObjjvbdaNKasUmH
+DncKjvbdZyEKOClS
+DnbjjvbdSLYfVHLT
+DoDLKvbdwzHfFweS
+EPCjjvbdfNFwHNJk
+DoDLKvbdelewHNJk
+EPCjjvbduaDxroEh
+DoDKjvbddwytURez
+DncKjvbdwtmEpyLn
+EOcLKvbdCIkBkIej
+EOcLKvbdiLddOUcZ
+EPDKjvbdiUydwSVC
+DncKjvbdrEEiQOVa
+DnbkKvbdYzbeqivZ
+DoCjjvbdkVwOECYX
+DoDLKvbdZLqcsmkm
+EObjjvbdVYgtZkPO
+EOcLKvbdHffyxwwg
+EPDKjvbdcIljLGWx
+DnbkKvbdMpXpvNfs
+EOcLKvbdFeirOJTq
+DncLKvbdWWhxWEFH
+DoCjjvbdZRMdhmEq
+DnbkKvbdULvPBWPJ
+EPDLKvbdZRMdiMdq
+DnbjjvbdTYLMNzkY
+DoCkKvbdZxcjNblS
+DoCkKvbdKCibpicY
+EPDLKvbddoFTKtUS
+DncLKvbdcImKLGXY
+EOcKjvbdKaLGmBwq
+EPCkKvbdnHFYMnGy
+EPDKjvbdUQqPUuIN
+EPDKjvbdeAURNYJf
+DoCkKvbdxwiKCQZk
+DnbkKvbdKVuGDeGi
+EPDKjvbdrovOicVf
+DoDLKvbdrylQSaHn
+EOcLKvbdySmhlrBg
+EOcLKvbdNrsufeVQ
+EOcKjvbdzoQREblY
+EPCkKvbdzaAOgHCM
+DoCjjvbdZLqdTmkm
+EObkKvbdNGbpNQUk
+EOcKjvbdZshiYdSn
+EPDLKvbdDncLKvbd
+EOcKjvbdqlzJyMHi
+DoCkKvbdBhkCKiFj
+EOcLKvbdRaceLhyL
+EPDLKvbdxsNiNRbH
+DoDKjvbdtcCtwWOo
+DnbjjvbdmfdwlnGy
+DncKjvbdREDBQQdS
+DncLKvbdnPzYvKxb
+EPCjjvbdjgfkefNk
+DnbkKvbdnUtykJrG
+EPDKjvbdSCEFLiYk
+EOcLKvbdGcjuiajK
+EPCjjvbdJYUCHlRQ
+EPDLKvbdYpleIldq
+EObkKvbdfMfWflik
+DncLKvbdwuMdpyLn
+DoDLKvbdEPDLLWcE
+DoDLKvbdZLrDtOLm
+DoCkKvbddZxoxYqC
+DncLKvbdTulQKUAq
+DncKjvbdqrUjnKaN
+DoCkKvbdGFjRmiTq
+EPCjjvbdpssfrRkU
+EPDKjvbdrXQLbiYq
+DoCkKvbdNQYQunHT
+DoCkKvbdNrtWHEuQ
+DncLKvbdjgflGGNk
+DncKjvbdBsBCsewS
+DoCkKvbdMpYRVmfs
+DnbkKvbdKfFhBaQu
+EObkKvbdGcjuiaij
+EObkKvbdakMGOnDA
+DnbkKvbdFyUuAcxC
+DnbkKvbdtSrTZZdc
+EPCjjvbdatafxLTh
+EPCkKvbdUGzmlXVe
+EObkKvbdZyDinClS
+DncKjvbdyzdnSIJI
+DnbkKvbdnPyxukZC
+DoDKjvbdkDMLQgVH
+EObjjvbdbVBfwjtI
+EPDLKvbdzRPMhiwA
+EObkKvbdhkeDmuCy
+DnbkKvbdZQleImEq
+EObjjvbdrDeJPnVa
+EPDLKvbdaNLBsVMg
+DnbkKvbdOEctIhjd
+EOcKjvbdatagXkUI
+DncKjvbdMowpunGs
+EObkKvbdtvNwiqTA
+DnbjjvbdyzdnSHiI
+EObkKvbdbhlikFvx
+EOcKjvbdaNKaruNH
+DnbkKvbdiVZdvqtb
+EObkKvbdVYgszKoO
+DoCkKvbdjJfIKMwr
+DncLKvbdezvZFJTw
+EObkKvbdcyxoxYqC
+EPDLKvbdFejSNiTq
+DncKjvbdIwsbIMQp
+DnbjjvbdTukpJsaR
+EPDLKvbdIsZArlxM
+EPDKjvbdTAEhgand
+EOcLKvbdfNGXHMik
+DoDKjvbdjcMLQgUg
+DncKjvbdSLYfVHKs
+DoCjjvbdnBjWwoOV
+EPCjjvbdnBjWwnnV
+EObkKvbdQvmccLgc
+EPDKjvbdwuMeRYlO
+DoDKjvbdNddUJIjd
+DoCkKvbdqUTgSRkU
+DoDLKvbdehLVqmpg
+DoDLKvbdrovOjCvG
+EObjjvbdzoPpdcMY
+EPDLKvbdZRNFIleR
+DnbkKvbdSLZGVGjs
+DoCkKvbdySmiMrBg
+DnbkKvbdwyhFfXeS
+DoDLKvbdWHwvYHYz
+DoCjjvbdIHHZyYYH
+EObjjvbdJSyArmXl
+DncKjvbdACqxJyiQ
+DncLKvbdmpZxujyC
+DoCjjvbdFkFScINV
+EPDLKvbdCDpAujNG
+DnbkKvbdhkeDnUby
+DncLKvbdFWYopNJe
+DoCjjvbdLAjfmCYR
+EPCjjvbdxrmiMrCH
+EObjjvbdcImJkGWx
+DoCjjvbdFejRnJTq
+EObkKvbdYTMAlsnx
+EPCjjvbdsPvOibuf
+EObjjvbdNeDshhjd
+EOcLKvbdBiKbLIej
+EObkKvbdauCGxLTh
+EPDKjvbdbBWEepQX
+EPCkKvbdVrNxBdlD
+EObjjvbdMIalRYAS
+EOcKjvbdJcKCpjCx
+EOcLKvbdLqwNZtpz
+DoCkKvbdZisHogBf
+DnbjjvbdEPDKjvbd
+DoDLKvbdFWZQQNJe
+EObkKvbdHgGzYwxH
+EOcKjvbdjbkkQfuH
+DnbjjvbdtkxXAtBX
+EPDLKvbdLAkHNCXq
+EOcLKvbdWWhxVdFH
+DncLKvbdCWzdIeQW
+DoDLKvbdVvhwvDdg
+EObjjvbdpfDeUWAh
+EOcLKvbdqmZixkhJ
+DncKjvbdyzdmrIJI
+DncLKvbdRpTgJecw
+DoDLKvbdGFjSOIsq
+EOcKjvbdwuNFQyLn
+DnbjjvbdIsZAsMwl
+DncKjvbdptTgRqkU
+DncKjvbdZQmEiNEq
+DnbkKvbdauCHYLTh
+EPDLKvbdyzdmrHhh
+EPCjjvbdZoOJFEyj
+EOcLKvbdUQqOttgm
+DoCjjvbdRNYCZNtz
+EPDKjvbdrRtkOLBN
+DncLKvbdmajWxOmu
+EPDLKvbdLBLHMbXq
+DoDLKvbdCIjajhfK
+EObjjvbdYkrDtOMN
+EOcLKvbdUtNUGMVj
+EObjjvbdaSFcHsek
+DnbkKvbdXrkaMtPY
+DoCkKvbdZQmFImFR
+EOcLKvbdcJMijewY
+EPDLKvbdGLErbhNV
+DnbkKvbdiUydwSVC
+EPDLKvbddndsKssr
+DoDLKvbdxwhjCPzL
+DoCkKvbdxVMeQxkn
+DncKjvbdiBoCdwRR
+EPDLKvbdnPyyVkZC
+EPCjjvbdmuUzLKRf
+DoDLKvbdSQUGiecw
+DoDKjvbdRbDdlJZL
+DncKjvbdqrVKnLAm
+DoDKjvbdVBCQsQrZ
+DoDKjvbdmbKWxPNu
+EObjjvbdFVyQPmKF
+DnbjjvbdiiehJlxS
+EOcKjvbdIrxaSmYM
+EOcKjvbdsZkosAgn
+EOcLKvbdnCKWxPOV
+EPDLKvbdKWUecdfi
+DncLKvbdhgKDZWKV
+EPDLKvbdySnImSCH
+EObkKvbdJKEAKQGd
+EOcLKvbdZMSETmkm
+DoCjjvbdhgJcYujV
+EOcLKvbdehLVqmpg
+DoCkKvbdezuyFItX
+DncLKvbdvBDxsOeI
+EObkKvbdTulPisaR
+DnbkKvbdajkfPODA
+DoDKjvbdYkrEUOLm
+EPCkKvbdfIKvSNpg
+EPCkKvbdiBncEwQq
+EOcKjvbdKWUecdgJ
+EObkKvbdYlRcsmkm
+EPCjjvbddwzUTqez
+DnbjjvbdeYZstRez
+EPDLKvbdxVNEqZLn
+DncLKvbdFjeScINV
+EObjjvbdxUleQxkn
+DncKjvbdKWUfDdfi
+DoDLKvbdssRrxzEc
+EObjjvbdRpUGiedX
+EOcLKvbdZQleJMdq
+DnbkKvbdqdFIpNua
+EPCjjvbdYzberKWZ
+DoDKjvbdxxIjBoyk
+EOcLKvbdEObkKwDE
+DoDLKvbdqquLNjaN
+DncKjvbdwuNFRZLn
+DoCjjvbdqUTgRrKt
+EObkKvbdVwIwvDeH
+DnbkKvbdVwJYWEEg
+DnbjjvbdYlSETnMN
+DnbkKvbdqTsgRqjt
+DoDKjvbdiGicZVjV
+DnbjjvbdxnTHxTJD
+EObkKvbdqUTfrSKt
+DoCkKvbdFyVVBEXb
+EOcKjvbdqGDdsvAh
+EPCkKvbdTkunaVni
+EObkKvbdMRvlzVQz
+EPDKjvbdDncKkWbd
+EObjjvbdqqtkNkBN
+DncLKvbdfHkWRnRH
+DnbjjvbdiLdcnUby
+EOcKjvbdVYgsyjnn
+EPCjjvbdUtNTfMWK
+EPDKjvbdqYoHgREY
+DncKjvbdGZUuAdYC
+DnbjjvbdDnbjjwDE
+EOcKjvbdTqQntthN
+EOcLKvbdUyITzLPO
+EOcLKvbdjblLRHVH
+DoCkKvbdLGFhCBQu
+DncLKvbdliEUQuSB
+EObkKvbdRacdkiZL
+EOcLKvbdaSFcHtFk
+DoDKjvbdJYTahLpp
+EPDLKvbdUQqOuVIN
+EPCjjvbdqmZjYkhJ
+DoCkKvbdRjyGUgKs
+EObjjvbdyNrhYSiD
+EPCkKvbdBhkCKiFj
+EObjjvbdYlSDtOLm
+DoCjjvbdTAFIhBoE
+DncKjvbdNdctJIjd
+DoDLKvbdGdKvJaij
+EObjjvbdJpydnfNe
+EPDLKvbdCDpAvKNG
+DoDLKvbdeEoRavbj
+DoCkKvbddoFSjssr
+EPCjjvbdqYoHfqEY
+EPCkKvbdFkFScHmV
+EObjjvbdcyyQYZRC
+DoDKjvbdyzdmrHhh
+DoDKjvbdUWLojUAq
+EObkKvbdiCPCdwRR
+DoCkKvbdCTBDTevr
+EOcKjvbdLAkGlbXq
+EPDKjvbdcyyQXyRC
+EPDLKvbdyNsHxSiD
+EPDKjvbdqUTgRrKt
+DoDKjvbdJuuFdEfi
+DoDLKvbdEXwktTtM
+EObkKvbdeJirVtzn
+EObjjvbdYTMBMsnx
+DnbkKvbdNQXpumfs
+EPDLKvbdzitopDrt
+DncLKvbdDxXlUUUM
+EOcKjvbdADSXiyhp
+DoCjjvbdqTsgSSKt
+DoCkKvbdZtIhxdTO
+EOcKjvbdUyHtZjnn
+EPDLKvbdcSbkTdKB
+DncLKvbdxZgfGYEr
+DncKjvbdeATplxJf
+DoDLKvbdnCJwXnmu
+DnbkKvbdbKlFnnDA
+DoCkKvbdrDeIpNua
+EPCjjvbdmttzKirG
+DoDKjvbdbrbkUDjB
+DnbkKvbddZxoxZRC
+EObkKvbdhgKDZWKV
+DnbjjvbdGFiqmhtR
+EPDKjvbdULvOaWPJ
+EOcLKvbdygYlANFX
+DnbjjvbdIHGzZYYH
+EOcKjvbdhkeENuCy
+EOcLKvbdNddTiJLE
+EObjjvbdGFiqnJUR
+EOcLKvbdjvWnEBxX
+EPCjjvbdVBCRTRSZ
+DncKjvbdVBCRTRSZ
+EObkKvbdBdQAvJlf
+EObkKvbdJYUCHkpp
+EOcKjvbdGckVjCJj
+EObkKvbdBsAcUGWr
+DoDLKvbdIxUBhMQp
+DoDKjvbdMgDQNPtk
+EOcLKvbdHEKujCKK
+DoCjjvbdLhalQxAS
+EObkKvbdULuoBVoJ
+EPDKjvbdhfjDZVjV
+DoCkKvbdKDJbqJbx
+DoCkKvbdbKlGPNcA
+DncKjvbdrpVnicWG
+EPDKjvbdvAdZSneI
+DnbkKvbdFyVUaEYC
+EOcKjvbdHDjuibJj
+DnbjjvbdbiMjLFvx
+EPCjjvbdUsltGLvK
+DoCjjvbdkNBkzEgP
+DncLKvbdFxtuBEYC
+EOcKjvbdnBjWxPNu
+DnbkKvbdqUTfrRjt
+EPCjjvbdZHXEAPSi
+DoCjjvbdxxJJapZk
+DncKjvbdZyDimcLr
+DnbjjvbdiBnbeWpq
+EObjjvbdjbkkQftg
+EObjjvbdqvokbhyR
+EOcLKvbdeYZtTrFz
+EPCkKvbdLqvmZtpz
+DoDKjvbdNeDsiIjd
+EPCkKvbdeXystRez
+EOcKjvbdAMhZSvzY
+EPCjjvbdSwkMNzkY
+DoDKjvbdtlYXAtBX
+EPCjjvbdBvzdIdov
+DoDLKvbdVBBqSqRy
+EOcLKvbdTvMQKUAq
+EOcLKvbdxVMeQyMO
+EPDLKvbdBsAbtGWr
+DoCkKvbdKefHaaRV
+DncLKvbdCTBDTewS
+EPCjjvbdTIyjRAAl
+DoDKjvbdkxsSSxft
+EObjjvbdjvXOECXw
+EPDKjvbdVTlsfLvK
+EOcKjvbdjJfHjNXr
+EObjjvbdfMfWflik
+DnbkKvbdYqNFImEq
+DoDLKvbdcJMikFvx
+DoCkKvbdrXPlDIyR
+EObjjvbdeOdsLTtS
+DncLKvbdJSyArmXl
+EObjjvbdkNBlZeHP
+EObkKvbdfHkVqnRH
+DncLKvbdKCjCqKDY
+DoDLKvbdUyHsykOn
+DncKjvbdWWiYWEEg
+EPCkKvbdKWVFdEfi
+EObkKvbdFpATWgFy
+EOcKjvbdrzLpTAgn
+EPCjjvbdhuZeWrVC
+EPCkKvbdraellGjy
+DncLKvbdGKeTCgmV
+DoDLKvbdCEQAvJlf
+DoDLKvbdJvUfEFGi
+EOcKjvbdHDkVjCJj
+EPCjjvbdZxdJnClS
+DoCjjvbdcImJjewY
+DoDLKvbdkDMLRHUg
+DoDLKvbdqZOggREY
+DoCkKvbdkMakyeHP
+DoCkKvbdEvYpPmJe
+DncLKvbdJJdAJpHE
+DoDKjvbdEPCjkXCd
+DnbjjvbdlAmOmALA
+DoDLKvbdsBfNLgLZ
+DncLKvbdKyQjSzuG
+EPDLKvbdeAURMxJf
+EPCjjvbdkHflGGOL
+EOcKjvbdEuxpPlie
+DncKjvbdcyyPxYqC
+DoCkKvbdRDbaPqES
+DncLKvbdaaVeFpQX
+EOcLKvbdMuTSLNAX
+EPCkKvbdbiMjKfWx
+EOcKjvbdSCEEkiZL
+DncKjvbdbhmJkGWx
+DncKjvbdWXJYVcdg
+EOcLKvbdvBDxrndh
+DoCkKvbdCEQBVjNG
+EPDLKvbdxUmFQyMO
+DnbkKvbdznpRFCkx
+DoCjjvbdKDJbpjDY
+EOcLKvbdREDBQRDr
+DoDLKvbdZtIhyETO
+EObjjvbdKfGHbBQu
+DnbjjvbdnUtzKirG
+EPDLKvbdyNsHwsIc
+DoCjjvbdIrxaSlxM
+DoCkKvbdRjyFuHLT
+EPCkKvbdJvUfDdgJ
+DnbkKvbdgQBzvcwh
+DnbkKvbdpyOgfqEY
+DnbkKvbdmRxuZsEJ
+EObkKvbdmRyUysDi
+DnbjjvbdrzMPraIO
+EPDLKvbdDxXksssl
+EPDLKvbdqUUGrSKt
+EPCjjvbdZisIPfbG
+EPDLKvbdiGicZVjV
+DnbjjvbdqcdiPnVa
+DoDLKvbdGKdsCglu
+EPCkKvbdYSlBNUOx
+DoCkKvbdjmBkyeHP
+EObjjvbdKDJcRKDY
+EPDKjvbdiLdcmuCy
+DoCjjvbdbAvEfQQX
+EPDKjvbdegjvRmqH
+EOcLKvbdrounibvG
+DoCkKvbdliEUQtrB
+DoCkKvbdrXPlChyR
+DnbkKvbdcyxoxZRC
+DoCkKvbdWIYWYHYz
+DnbkKvbdmJETptrB
+EObjjvbdbBVeGPpX
+DoCkKvbdypnliKXA
+EOcLKvbdatagXkTh
+EPDKjvbdrounjDWG
+EPDKjvbdUyHsyjnn
+EPDKjvbddZxoxZRC
+DnbjjvbdKCjCpjDY
+DoCjjvbdKkBHvAJy
+DnbjjvbdjbkkRGuH
+DoCjjvbdrafNMGjy
+DncKjvbdxnTHwsJD
+DncKjvbdemFvfmJk
+DnbjjvbdIwsbILqQ
+EObjjvbdUMWPAvOi
+EOcLKvbdGKdsChMu
+DoCjjvbdWXIxWEEg
+DoCjjvbdvPTzqKnt
+DoDKjvbdILazmwRL
+EPCkKvbdjlakzFHP
+EPDLKvbdKDJbqKCx
+EOcLKvbdHELWKBjK
+DoCkKvbdOFDshhkE
+EPDKjvbdBhkCKhej
+DoDKjvbdNddTiJKd
+EPCkKvbdVqmwadkc
+EPCkKvbdFfKSOItR
+EPCjjvbdZshiYcrn
+DncLKvbdvAcxsOeI
+EObkKvbdKVtfEFHJ
+DncLKvbdXsMBNUPY
+DoDLKvbdCTAbtGXS
+DoDKjvbdRyjHsDWA
+DoCjjvbdJcKDRJcY
+EOcKjvbdEuxpPljF
+DncLKvbduWNxKQsA
+EOcLKvbdhuZeXSUb
+EObjjvbdjvWnDaxX
+EObjjvbdwWlAvAuu
+EObkKvbdqquKnLBN
+DoDLKvbddCSmSATm
+DoCjjvbdwtmEpxlO
+DnbjjvbdDoCkLWcE
+DncLKvbdwyhGFxEr
+EOcKjvbdrykosAgn
+DnbjjvbdNeEUJJLE
+DoDKjvbdjuwNdCYX
+EPDKjvbdiGibyVjV
+DnbjjvbdYqNEhmEq
+EPDLKvbdxVNEpyLn
+DoCjjvbdZeYGzgiC
+DoCjjvbdZjTIQGbG
+DnbkKvbdSPsfjGEX
+EObjjvbdBsBDUGXS
+DoCkKvbdsBfNMGkZ
+EOcLKvbdLBLGmCXq
+EPDKjvbdJTZBTNYM
+DnbjjvbdJTZBSmYM
+DoDLKvbdjKFgjNYS
+DoDKjvbdqlzKYkhJ
+EPCkKvbdkWXOECYX
+EObkKvbdFkEsDINV
+EObjjvbddndsKstS
+DoCjjvbdauBfwjsh
+DnbjjvbdFjeTCglu
+EOcLKvbdfMfWflik
+EObjjvbdlYsRryGt
+EPCjjvbdtbcVWuoP
+DnbjjvbdMgDPmQVL
+DoDLKvbdjhHLefNk
+EOcLKvbdUsmTfMWK
+DoCkKvbdptTfqqjt
+EObkKvbdrRuKmjaN
+EPCjjvbdzoQQdcMY
+DoDKjvbdrpVoKDVf
+DoCkKvbdlZSrTYft
+DoCjjvbdBhjajiFj
+EOcLKvbdzoQQdbkx
+EObkKvbdOhAYZAYa
+EOcKjvbdjvXNdBww
+DnbjjvbdEXwlTtTl
+DoCkKvbdzjVPocsU
+DoDLKvbdZQldiMeR
+DncKjvbdYNqAYVVt
+DnbjjvbdtvNxKRTA
+EPCjjvbdqceIonWB
+EOcKjvbdyXiKCPzL
+DoCkKvbdfIKurNpg
+DoDKjvbdFxuVAdYC
+EOcLKvbdeOdrjssr
+DncLKvbdxnShYTIc
+EPDLKvbdoznEKwoA
+DoDLKvbdptTfrRkU
+DncLKvbdkWWnDaxX
+EPCjjvbdKWVGDeHJ
+EPCjjvbdtumwipsA
+DoCkKvbdZxcinDMS
+EObjjvbdCWzdIeQW
+EPDKjvbdHgGzYwwg
+EOcKjvbduDCtvvOo
+DnbjjvbdqvokbiZR
+DnbjjvbdmIcsptqa
+DncLKvbdrJAJdmPF
+EPCkKvbdKjaHvAJy
+DoCkKvbdhuZdwSUb
+EOcKjvbdnPzZVjyC
+DoDKjvbdYSlAmUPY
+EOcKjvbdffLzNgHA
+DncLKvbdptUHRqjt
+EPCjjvbdyTNiMqag
+DoCjjvbdauBgXkTh
+EPCjjvbdbiMikGXY
+EOcLKvbdIHGzZXwg
+DncKjvbdrXPkcIxq
+DnbjjvbdOTTugEuQ
+DnbkKvbdjcMKqHUg
+DoDKjvbdffMZnHHA
+DoCjjvbddijSWUzn
+DncKjvbdBhkCKiGK
+DncKjvbdJYTbHkqQ
+DnbkKvbdqwPlCiZR
+DoCkKvbdxUmFRYkn
+DoDKjvbdmSZUzTDi
+EPDLKvbdkyTSSxft
+DoCjjvbdmajXYPOV
+EPCkKvbdMowqVnHT
+DncLKvbdTppoUuHm
+EPDLKvbdgFkymfgA
+EObjjvbdhgJcYujV
+DncKjvbdtAGqIABS
+DoDLKvbdqZOhGpdY
+EObkKvbdjbkkRGuH
+DoCjjvbdGLEsChNV
+DnbjjvbdZoOIeEyj
+DncLKvbdbrbjsdJa
+EPCjjvbdGGJqmiTq
+EPCkKvbdNPxRWNgT
+EPCjjvbdJpydnfOF
+EOcKjvbdcyxoxYpb
+EPDKjvbdmozZWLYb
+EObjjvbdVTmUFlVj
+DoCjjvbdNrtWGduQ
+DncKjvbdqUTfqqkU
+DoDKjvbdTfznMWue
+EOcLKvbdNsTugEuQ
+DoDLKvbdjhHLfGOL
+EObjjvbdZtJJYdSn
+DoDKjvbdZjTHofbG
+DncKjvbduCbtwVno
+EPCkKvbdZtIhxcsO
+EOcLKvbdnUuZkJqf
+EObkKvbdiCPCeXQq
+EOcKjvbdZtJIxcsO
+EOcLKvbdZRNEhmFR
+DnbkKvbdFjdsDINV
+DncKjvbdsZlQSaIO
+EObjjvbduLxXAtAw
+DncKjvbddoFSjtTr
+DoCkKvbdmbKXXoOV
+DoDKjvbdOAIsTirA
+DncLKvbdMfcQMpVL
+EPDKjvbdsrqrxzFD
+EOcLKvbdZRMdiMdq
+EObkKvbdCTAbsfXS
+EPDLKvbdtunYJpsA
+EObkKvbdYSkaNToY
+DoCkKvbdZMRdUOMN
+EPCkKvbdIsYaSmYM
+DncLKvbdVYgtZkPO
+EObjjvbdaNLBsUmH
+EOcLKvbdZyEKOCkr
+DoDLKvbdOSsufdtp
+DoDKjvbdhbPCdvqR
+DnbkKvbdiZuFkpnG
+DoDKjvbdHDjujCJj
+EPDKjvbdCDpBVjMf
+EObkKvbdeFOrBwDK
+DoDLKvbdhgJbxvJu
+EObjjvbdiZuFlQmf
+EPDKjvbdeuzwpJzs
+EPDKjvbdezuyEhsw
+EPCkKvbdJYTbIMQp
+DnbkKvbdkIHLeenL
+DoCkKvbdAMgyTXZx
+DnbkKvbdfIKvRnQg
+EPDLKvbdJqZePFnF
+DoCjjvbdRjxfVGkT
+EOcLKvbdySmhlqbH
+DnbjjvbdEYYMUTtM
+DoDLKvbdhtydvquC
+EObjjvbdZRMdiMdq
+EPCjjvbdVZITzLOn
+DoCkKvbdmuVZjjRf
+DoCjjvbdzoQREbkx
+DnbkKvbdkyTSSxgU
+DoCjjvbdzRPNIjXA
+EPDKjvbdnPyxvLZC
+EOcKjvbdSZjHrbvA
+EPCkKvbdShyjRABM
+EObjjvbdYpmEiMeR
+DoCjjvbdFaOqYizm
+DncLKvbdEvZQQMjF
+DncKjvbdNrtWGeVQ
+DoDKjvbdqdFJPmvB
+DnbjjvbdRXODblID
+DoDLKvbdyzdnRhIh
+EPCkKvbdcTCjsdKB
+DncLKvbdJcKCqKCx
+EObjjvbdmfdwmNgZ
+EPDLKvbdqUTgSSLU
+EObjjvbdZyEKODLr
+EPDKjvbdTppoVVIN
+DnbjjvbdFVyPpNJe
+EPDKjvbdJYUBhLqQ
+EPDLKvbdqceIpOWB
+EPDLKvbdiBnbeXQq
+DnbkKvbdGZVVBEYC
+DncKjvbdGLFTDINV
+EObjjvbdUGzmlXWF
+EOcLKvbdxrmiMqbH
+DoDLKvbdJpzEnenF
+EObjjvbdEvYoomJe
+DoDKjvbdJqZdoFme
+EObjjvbdEuyPpMie
+EOcKjvbdmtuZjjRf
+EPDKjvbdjKGHilwr
+EPCkKvbdpaIeAWgd
+DoDKjvbdGZVUaDxC
+DoCjjvbdFkErcHlu
+EOcKjvbdrbFllGjy
+DnbkKvbdMRwMzUpz
+DoCkKvbdDxYLtTsl
+EOcLKvbdLBKfmBxR
+DoCjjvbdVwJYWDeH
+DoCkKvbdZoOIdeZj
+EPDLKvbdpfEFUWAh
+EOcLKvbdKWVGDdfi
+EObkKvbdtvNwipsA
+DoCjjvbdwuNEqZMO
+EObkKvbdfSBWzkbo
+EPDLKvbdFxuVAdXb
+DnbkKvbdRWnEClHc
+EOcKjvbdkCkjqHUg
+DoCjjvbdbsDKscia
+EPDLKvbdzQoMiKXA
+DnbkKvbdRDcApQcr
+DoDKjvbdZtIiYcrn
+DoDLKvbdqZPHgQdY
+EObjjvbdyfxlAMeX
+EObjjvbddjJrWUzn
+EPDKjvbdjcMLQgVH
+EOcLKvbdozmckXoA
+EPDKjvbdcJMjLGWx
+EPCkKvbdbhlijewY
+EObjjvbdrEFJPnWB
+EOcKjvbdmuVZjirG
+DncKjvbdnBjXYOmu
+DncLKvbdjcLjqHUg
+EPDLKvbdlhdUQuRa
+DoDKjvbdVwIwvEFH
+EObkKvbdZMSDsnLm
+DoDLKvbdzHZMAMdw
+EOcKjvbdZMSDsnLm
+DncKjvbdZshhyDsO
+DncKjvbdCEPaWJlf
+EOcKjvbdxxJKCQZk
+EPCkKvbdezvZEiTw
+EPDLKvbdypoMiKXA
+EPCkKvbdnUuZjjRf
+DnbkKvbdFfJqnJUR
+DoCjjvbdTpqPUthN
+DncKjvbdcyxoxYpb
+EObkKvbdCSaCsfXS
+DnbkKvbdRacdlIyL
+DoCjjvbdTIzKRABM
+EPCkKvbdatbGwjsh
+EObjjvbdUsltGMWK
+DoDLKvbdtvOXjQsA
+DnbjjvbdYSlAmUPY
+EOcKjvbdwuNEpxkn
+EObkKvbdYqMdiMdq
+EOcKjvbdnGeXlmgZ
+DnbkKvbdqwQLcJYq
+EObkKvbduVmxJqTA
+EObjjvbdmoyyVkYb
+DoDKjvbdBdPaWKMf
+DncKjvbdVvhwvEFH
+EObkKvbdauBfxLUI
+EOcLKvbdMgDQNQUk
+EOcKjvbdsQVnjCuf
+EObkKvbdjuvnEBww
+DoCkKvbdkWXODbXw
+EPCkKvbdZyDjNblS
+DoDKjvbdZLqdUNlN
+DoDKjvbdbLMFoNcA
+DoCkKvbdFVyQPmJe
+EOcKjvbdhkdcmuCy
+EPCkKvbdmtuZjiqf
+DnbjjvbdRbEFLiYk
+EPCkKvbdySnJMqag
+EPDLKvbdhlFDnVCy
+DoCjjvbdzoQREblY
+EPCjjvbdvBEYroFI
+EPCjjvbdJbjCqJcY
+DnbkKvbdliEURUrB
+DoDKjvbdOTUWGdtp
+EOcLKvbdZnmhddzK
+EPDKjvbdSBcdkiZL
+DoCjjvbdZMRctOLm
+DoDLKvbduCcUwVno
+DoDLKvbdEzspeMDJ
+EPCjjvbdULunaWOi
+DoDLKvbdIwsaglQp
+EObkKvbdJuuFdFGi
+EPCkKvbdQccBQRDr
+EPDKjvbdNrsugEtp
+EPDLKvbdEXxLtUUM
+DoDKjvbdVBCQsRRy
+DncKjvbdeFPSCWcK
+DoDLKvbdhficYvJu
+DncKjvbdkClLRHVH
+EOcLKvbduWNxKRTA
+EObjjvbdNPwpumgT
+DoCjjvbdjmCLzFGo
+DncKjvbdZtIhxdSn
+EObkKvbdKQyePFme
+EPCjjvbdEuxpPljF
+DoCkKvbdZtIhyDrn
+EPDLKvbdJpzFOfNe
+EPDKjvbduaEZTPFI
+EPDLKvbdSQTgKFcw
+EOcLKvbdBcpAujMf
+EPCjjvbdfHkVrOQg
+EPCjjvbdKaKflaxR
+EObkKvbdZjTIQGaf
+EOcLKvbdijGIKMwr
+EPDLKvbdvBEZTOdh
+DnbkKvbdZRNEhleR
+DnbkKvbdijFgimXr
+EObjjvbdEASIlywX
+DoCjjvbdKaKgNCXq
+EPDLKvbdTppoUuHm
+EPCkKvbdwzHefYEr
+EPCkKvbdhtyeWrUb
+DnbkKvbdPyNAGsRj
+EPDKjvbdmttzKiqf
+DnbjjvbdRacdkhyL
+EOcLKvbdeJjRvUzn
+EObjjvbdNHCpNQVL
+EPCjjvbdgLGzcGAE
+DoCkKvbdidkGtoAO
+DnbkKvbdKDJcRKCx
+DnbjjvbdSQTgKGEX
+EPDLKvbdyqPMiJwA
+DnbkKvbdLrWlytpz
+DnbjjvbdmgExNNgZ
+EPCkKvbdlYsRrxgU
+DnbjjvbdTkuoAvPJ
+EOcKjvbdgFkymgHA
+EPDLKvbdmaivxOnV
+DnbjjvbdEztQeMDJ
+EObjjvbdWfYzUAPT
+DnbkKvbdiMEdNuDZ
+DoDKjvbdgQBzwEXh
+EOcLKvbdSBcdlIyL
+DnbjjvbdrMzJxkhJ
+DnbjjvbdddnrCXDK
+DncLKvbdmbKXXnnV
+DnbjjvbdYzbfSKWZ
+EPCjjvbdUMWPBVoJ
+EPDKjvbdBraDUGWr
+DoCkKvbdFkFTDINV
+DncKjvbdYkqdTmkm
+DncKjvbdmpZyVjyC
+DoCjjvbdZisIQHCG
+DncLKvbdYqMeJMeR
+EPDKjvbdZjTHpHBf
+EOcLKvbdcJMikFwY
+DoCkKvbdFpATXHGZ
+DnbjjvbdVBBqSpqy
+DoCkKvbddZyQXxpb
+EOcLKvbdqlyiyMHi
+EPDLKvbdfMfWgNJk
+DoCjjvbdrNZjZLgi
+EPCkKvbdeOdsKtTr
+EPDKjvbdLrXMytpz
+DncLKvbdQvnDcMHc
+DoDLKvbdyYJJbPyk
+DnbjjvbdrylPsBIO
+DnbkKvbdTqROuUgm
+DoCjjvbdcyyQYZRC
+EObjjvbdbLMFnmcA
+EObjjvbdbVCGxKsh
+EObjjvbdelfWgMjL
+EPDLKvbdnGdwmOGy
+EPCkKvbdcTDLTdKB
+DncLKvbdUxhTyjoO
+EPCjjvbdwzHfFxEr
+EPCjjvbdkxrqryHU
+DncLKvbdDihJvYKA
+EPCkKvbdRzJhScWA
+EObjjvbdZHWdAOri
+DoDLKvbdjbkkRGuH
+DncKjvbdNVSrLNAX
+DncKjvbdVqnYCElD
+DnbjjvbdFWZPpMjF
+DoCjjvbdZMRctNkm
+EPCjjvbdRNXaxmtz
+EOcLKvbdLZQjSztf
+EObjjvbdePFSjssr
+EOcKjvbdjbkkRHUg
+EPDKjvbdcSbjtEJa
+EObkKvbdKQzFPFme
+DoCkKvbdnUtzKjRf
+DncLKvbdeOeTKtUS
+DoCjjvbdpstGqqjt
+EOcKjvbdrpWPJcWG
+EPCkKvbdwkXDgzyf
+DncKjvbdnPyxvLYb
+DoCkKvbdpxoIHRDx
+DnbjjvbdLFegaaRV
+EPCjjvbdrXQLcJYq
+DncKjvbdWXJXvDdg
+DnbjjvbdQdCaQRDr
+EOcLKvbdWWiXuceH
+DoCjjvbdbiNJkGXY
+EPDKjvbdijGHjMxS
+DoDLKvbdTfzmkwVe
+EObkKvbdmSZUzTEJ
+DnbjjvbdKefHaaRV
+DncLKvbddoFSjstS
+DncLKvbdSLYfUgKs
+EPCkKvbdCIjbLJGK
+DncKjvbdKNADzGuB
+DoDKjvbdBcpBVjMf
+DnbjjvbdpxoHfqEY
+DoCjjvbdANHyTWyx
+DoDKjvbdFjeSbgmV
+DnbkKvbdxwiKCPzL
+DncKjvbdqceIpNvB
+DnbjjvbdLFfHbAqV
+EPDLKvbdtTSTYydc
+EPCjjvbdezvYdiTw
+EObjjvbdWWiYVdFH
+EOcLKvbdZyDjNbkr
+EObkKvbdwzIFeweS
+EPCjjvbdjmBkzFGo
+EObjjvbdGAoRYizm
+EObjjvbdjcMLQgVH
+DoCjjvbddePRavbj
+EOcKjvbdlhcspuSB
+EPCjjvbdSCEFMJZL
+EObkKvbdEYYLsssl
+EObkKvbdpstGrSLU
+DoDLKvbdIGgZxwwg
+EObkKvbdWIYWYGxz
+EPCjjvbdfILWSNqH
+DnbkKvbdFWYpPljF
+DoCjjvbdVAbRSqRy
+EOcKjvbdeEoSCWcK
+EOcKjvbdSBceMIxk
+DoCjjvbdgFkzOGgA
+EObkKvbdbPfgELzd
+DnbjjvbdmtuZkJqf
+EPCkKvbdYgWdAPSi
+EObkKvbdmaiwXoOV
+EOcKjvbdjuvnDbXw
+DncLKvbdiBoCdvpq
+DnbkKvbdZxcjNbkr
+EPDKjvbdKfFgaaRV
+DoDKjvbdNGcPlouL
+EOcKjvbdHlBznXQk
+EPCjjvbdKQydoFme
+EPCjjvbdDxYLsssl
+DoCjjvbdHbLydzAD
+DnbkKvbdZisHofbG
+DnbkKvbdvvkaWBWV
+DncLKvbddxZtUSFz
+EPCjjvbdBcpBWJlf
+EObkKvbdVBBprpqy
+DoCkKvbdaSFcITfL
+DoCkKvbdZLqctOMN
+EPDKjvbdFWYpQMie
+DncKjvbdOEctJIjd
+DoCkKvbdEuyQPmJe
+DncLKvbdZGwEAOsJ
+DncKjvbdlqyUzSci
+EOcKjvbdKCibqKCx
+DnbjjvbdEOcLKvbd
+DncKjvbddneTLUUS
+EPCjjvbdhbPDFWpq
+DoCjjvbdeAUQmXjG
+EPDKjvbdVwJYWDeH
+DncKjvbdePFTKstS
+DoCjjvbdjggMFemk
+EPCjjvbdcScLUDjB
+DoDKjvbdZjTIQGbG
+EObjjvbdehKurNpg
+DncLKvbdbsDLUEJa
+EOcLKvbdEJgjWXjA
+EPCkKvbdqquKnKaN
+DnbjjvbdZjShQHCG
+DoCjjvbdCEPaVilf
+EObjjvbdzjUpQDrt
+EOcLKvbdUVlPjUBR
+DnbjjvbdeFPSCWbj
+DoCkKvbdKxpirzuG
+DncLKvbdrykpTAgn
+DoDKjvbdemGXGljL
+DncLKvbdTYKlNzkY
+DncKjvbduaDyTOeI
+EObkKvbdnBjWwoOV
+EPCkKvbdGdLWKCJj
+EPDKjvbdKeegaaQu
+EObkKvbdxnShXrhc
+DoCkKvbdsBemLgKy
+EPCjjvbdrzLoraHn
+EPDLKvbdrRuKmjaN
+DncLKvbdmajWxPOV
+DncKjvbdKVuGDeGi
+EObjjvbdziuQPdTU
+DnbkKvbdZxcinCkr
+EPCkKvbdlqxtzTDi
+EPCkKvbdyzeOSHiI
+DnbkKvbdqmZiyMIJ
+EOcLKvbdIwtBgkqQ
+DncLKvbdfekzOHHA
+EPCkKvbdKNADzGuB
+EOcLKvbdUaBqSqRy
+EPDKjvbdddnrBvbj
+DncLKvbdmuVZjirG
+EOcKjvbdbBWEepPw
+DncLKvbdwjvdHzyf
+EPDKjvbdmgFXlmgZ
+EPCkKvbdtSqryZeD
+EObkKvbdOFEUIhkE
+EOcKjvbdiBncFXRR
+DncLKvbdxZgeeweS
+EPDLKvbdxwiKCPyk
+EPDKjvbdHEKvJajK
+DncKjvbdrafMlGjy
+EOcLKvbdwWlBWBWV
+DncLKvbdegjvRmqH
+EObkKvbdehKvRmqH
+DoDLKvbdUaBpsQrZ
+EPDKjvbdRaceMJYk
+DnbkKvbdZRNEhldq
+DnbjjvbdKCibpjDY
+DoDLKvbdKaLGmCXq
+DncLKvbdKaKflbYR
+DoCjjvbdZQleJNFR
+EPCjjvbdZHWdAOsJ
+EObkKvbdpxnggRDx
+EPDKjvbdiUzFXSVC
+DncKjvbdhfjDZWJu
+DoCjjvbdYkrDtNlN
+EOcLKvbdkVvmdBxX
+DnbjjvbdFkFScHlu
+DoCjjvbdlrYuZrci
+EOcKjvbdrDdiPnWB
+DoCjjvbdfoazvcwh
+EPCkKvbdtkxWaUAw
+EObjjvbdVYgsyjoO
+EPCjjvbdssSTZZeD
+DoCjjvbdbVBfwjsh
+EPCjjvbdVgwuxGxz
+EOcKjvbdZoNhdeZj
+EPCkKvbdGYttaDwb
+DncLKvbdvAcySoEh
+DoDKjvbdIGfzZYYH
+DoDKjvbdtcCtvvPP
+EObjjvbdkxsRryHU
+DnbkKvbdJSyBTMwl
+DoCjjvbdsPuoJbuf
+DnbjjvbdZxcimcMS
+DoDKjvbdNGbpMouL
+DnbjjvbdSZjHrbvA
+DoCkKvbdmRxtysDi
+EOcLKvbdZQmEiMeR
+EPCjjvbdpfEEtVaI
+EPCjjvbdtTRrxzEc
+DoCkKvbdZdxGzghb
+DncKjvbdrykpTBIO
+EPCkKvbdxxIjCPyk
+DncLKvbdCEQAujNG
+EOcLKvbdrWokbhyR
+EPDKjvbdjJehKMwr
+DncLKvbdSxLMNzjx
+DnbjjvbdZyDinDMS
+EObjjvbdZirhQGaf
+DncLKvbdkClKqHVH
+EObkKvbdfIKvRmqH
+DoDLKvbdQvmcblID
+EPDKjvbdNsTufdtp
+EObkKvbdZRMeIleR
+DnbkKvbddwytTrFz
+EObjjvbdZxdKODMS
+EPCkKvbdSLZFtgKs
+EPDKjvbdrovPJbuf
+EPCjjvbdHgHZxxYH
+EPCjjvbdddoSBvbj
+DoDKjvbdegkVqmpg
+DoDKjvbdCfkfHAzc
+EObjjvbdtvNxJqTA
+EPDKjvbdhtyeXSVC
+EPDLKvbdUtMtGLvK
+EPCjjvbdFaPRYizm
+EPCkKvbdVZIUZkOn
+EPDKjvbdFeiqnIsq
+EObkKvbdddoRbWcK
+EOcLKvbdaNLCSuMg
+EObjjvbdFpATXGfZ
+DncLKvbdrXPkcJYq
+EPCjjvbdFjdrcHlu
+EObkKvbdUQqPVUhN
+DoDLKvbdpxoHfqDx
+DncLKvbdypoNIjXA
+EPCjjvbdmRxuZrdJ
+EPDKjvbdqZPHgREY
+EOcLKvbdZGwEAPTJ
+DncLKvbdjuwNcbXw
+DoCkKvbdTlWPBVoJ
+DoCjjvbdRzKIScWA
+EPDLKvbdZnnJFEzK
+EPDLKvbdqvokbhyR
+DnbkKvbdAMhZTWyx
+EPCkKvbdqYoHgRDx
+EPDKjvbdZtJJZETO
+EObkKvbdWRmxBdlD
+DnbkKvbdwWkaWBWV
+DncKjvbdgKfzcGAE
+DncLKvbdtbcUwVno
+EOcLKvbdcImJjfWx
+DncLKvbdSwjlNzjx
+EObkKvbdjblLQftg
+DncLKvbdQmYByNtz
+DnbjjvbdhlFDmtby
+DnbjjvbdcTDKsdJa
+EPCkKvbdqUTgSRkU
+EOcKjvbdZQleImEq
+EOcLKvbdtTRrxzFD
+EPCkKvbdUVkpKUAq
+DncLKvbdmbJvwoNu
+EPDKjvbdrJAKFMne
+DncKjvbdpyOhGqEY
+EOcLKvbdLrWlzVQz
+DnbjjvbdvAdYsPFI
+EPCkKvbdDoDKjvbd
+DoDLKvbdelfWgMjL
+EObkKvbdaMjbTUlg
+EObjjvbduVmwjRTA
+EPCjjvbdHffyxwwg
+DnbkKvbdXrkaNToY
+DoCjjvbdZshhyDrn
+DoDKjvbdunszqKoU
+EPCkKvbdmJDtRVSB
+DnbkKvbdcImKLFwY
+DoCjjvbdpedEtVaI
+DnbjjvbduMXwAtBX
+EPDLKvbdhbPDFWpq
+EPCjjvbdrDdiQNua
+DnbkKvbdKxpirzuG
+EObkKvbdcTCjtEJa
+DncLKvbdZQmFIldq
+DoCkKvbdqUUGrRkU
+DnbkKvbddZyQXyRC
+DncLKvbdIryBTNXl
+EPDKjvbduaDxrneI
+DoCkKvbdZMSDsmlN
+DoDKjvbdrovOjCvG
+EOcLKvbdhyuFkpmf
+DoDLKvbdddnrBwDK
+DncKjvbdDwxLstTl
+EPDLKvbddZxpXxpb
+DoDKjvbdCSaDTewS
+EPCkKvbdVqmxBeLc
+DoCkKvbdZMSEUNkm
+DnbkKvbdznopdcMY
+EPCjjvbdqYoHgQcx
+EPCkKvbdlhdUQuRa
+EObjjvbdauBgYLUI
+EObjjvbdySnJMrCH
+EObjjvbdkIGlGGOL
+DoCkKvbdwXMAvBWV
+DnbjjvbdiCOcFXRR
+EPCkKvbdIHGzZYXg
+EPDKjvbdiMFDmuCy
+EOcKjvbdtlXvaUBX
+DoDLKvbdhfibxuiu
+EPCkKvbdqwQMChxq
+EObkKvbdRkYeuGjs
+DoDKjvbdYkrEUNlN
+EPDKjvbdZshiYcsO
+DnbkKvbdQlxBxnUz
+DncKjvbdSPtGifEX
+DoDLKvbdmajXXoNu
+EObjjvbdHbMZdzAD
+EPCkKvbdZyEKNblS
+EObkKvbdKfFgbBRV
+EOcLKvbdOTUVgFVQ
+DoCkKvbdfMevgMik
+EPDKjvbdptTfrSKt
+DnbkKvbdxZhFexFS
+DncLKvbdUaBqTQrZ
+DoCjjvbduDDUwWPP
+DoDKjvbdNsUVfduQ
+EObkKvbdvOszpjoU
+EObkKvbdNsTvGdtp
+EPDKjvbdxwhiapZk
+DoDKjvbdiGjCxvJu
+DoDLKvbdxxIibPyk
+DncKjvbdvAdYroFI
+EOcLKvbdLAkGmBwq
+DncLKvbdIsYaTMxM
+EPDLKvbdFejRmiUR
+DoCkKvbdbrbjscia
+DoDLKvbdiHJbyWJu
+EOcKjvbdIwtBhMQp
+EObkKvbdpfDdtVaI
+EObjjvbdfMevfmJk
+EObjjvbdptUHRrLU
+EPDLKvbdYgXEAOri
+EObkKvbdZoOJEeZj
+DoDKjvbdqUUGqqjt
+DnbjjvbdxnTHwriD
+EPDKjvbdfHkWRmpg
+EPDLKvbdePEsLUUS
+EPCjjvbdEPCkLXDE
+DoCjjvbdgQBzvdYI
+DoCkKvbdZjSgogBf
+EObkKvbdtunYKQsA
+EPDKjvbdezvYdiTw
+EPDLKvbdLBLGmCYR
+EObkKvbdSLYfVHKs
+EPDKjvbdfILWSNqH
+EObjjvbdqlyixkhJ
+DoCkKvbdjKFgjNXr
+DoDLKvbdyzdmrHhh
+DoDLKvbdYpleImEq
+DoDKjvbdUxgtZkPO
+EPDLKvbdJKEAKPgE
+DoDKjvbdRXODblHc
+DoCkKvbdmozYujxb
+EOcKjvbdMgCpMouL
+DncKjvbdZsiJZESn
+EPCkKvbdzROmIiwA
+DnbkKvbdEOcLKvbd
+EPCjjvbdpxoIHRDx
+DnbkKvbdEJgivXjA
+DoDKjvbdfHjurOQg
+EObjjvbdyYIjCPzL
+DoCjjvbdvlvANEEm
+DncLKvbdOXoVzdOU
+EObkKvbdatagYKtI
+DnbkKvbdGYtuAcwb
+EObkKvbdegjuqnRH
+DnbkKvbdtumxKQsA
+DnbkKvbdIxTbILqQ
+DncKjvbdIsZBTMxM
+EPCjjvbdRjyFuHLT
+EOcKjvbdJXtCIMQp
+DoDKjvbdYkqdUOLm
+EObjjvbdZsiIyESn
+DnbkKvbdhtyeWrUb
+EPCjjvbdEuyQPmKF
+EOcLKvbdeFOrCWcK
+DoDLKvbdEvYpPlie
+DoCjjvbdZtJIyETO
+EPCjjvbdrWokcJYq
+DoDLKvbduaDySneI
+DncLKvbdsPunjCuf
+EObkKvbdpyOhGpcx
+EObkKvbdliDsqUqa
+DoDLKvbdhaoCeXQq
+DncLKvbdaRfChUFk
+EOcKjvbdYTMAlsoY
+EPCkKvbdfkGzbfAE
+EOcKjvbdURQnttgm
+DoDLKvbdDoCjjvcE
+DncLKvbdCJKbLJGK
+EPDKjvbdhlFEOVDZ
+DnbkKvbduCcVWvOo
+EPCjjvbdQdDBPpcr
+EObkKvbdbBVdeopX
+DnbkKvbdWHwuwfxz
+DoDLKvbdsrqrxzFD
+DoDKjvbdCSaCsfXS
+DoCkKvbdNPxQunGs
+EPDLKvbdyzeNrHhh
+EObjjvbdWXIwudFH
+EPCjjvbdKWVFceHJ
+EOcLKvbdqwPlCiZR
+DncLKvbdyOTHwsJD
+DncLKvbdxUleRZMO
+DnbjjvbdZHWdAPTJ
+DoDLKvbdePEsKstS
+EPDKjvbdHDkVjBij
+EObjjvbdSPtHJecw
+EObjjvbdyTOJNRag
+EOcKjvbdhfibxuiu
+EOcKjvbdRDbaPqES
+DnbjjvbdemGWflik
+DoDKjvbdwjwEHzzG
+EObjjvbdsCGNMGjy
+DnbjjvbdssRsYyeD
+DoDKjvbdJvVFceGi
+EPCkKvbdLZQjSzuG
+DoDLKvbdqUUHSSLU
+EPCjjvbdaaWEeoow
+EPCjjvbdDjHiuxKA
+EPDKjvbdZQmFIleR
+DoDKjvbdRDbaPpdS
+EPCjjvbdZoOJFFZj
+EObjjvbdQmYBxnUz
+EPDKjvbdKCibqKDY
+DoDLKvbdsCFmMGjy
+DncKjvbdKaKgMaxR
+DoCjjvbdrMzJxkhJ
+EObkKvbdeKKRutzn
+EPCkKvbdcTCjscjB
+EPCkKvbdZsiIyDrn
+EObjjvbdnBjXXoOV
+DoDKjvbdBiKakIfK
+EOcKjvbdRpTfjGEX
+DoCkKvbdtSqrxydc
+EObkKvbdHDkVjBij
+DncLKvbdqTsgSSLU
+DncLKvbdzdzOzdzQ
+DoDLKvbdVrNwadlD
+DncLKvbdSQUGifEX
+DncLKvbdxxJKBoyk
+EPCjjvbdrzLpSaIO
+DnbkKvbdhtyeXRuC
+DoDKjvbdyTOImSBg
+EPDLKvbddZxpXxqC
+DoCkKvbdZMSDsnLm
+DncLKvbdEARhlzXX
+EPDKjvbdkWXOECYX
+EObkKvbdSLYetgLT
+EPDKjvbdTfznLvvF
+DoCjjvbdSZjHrcWA
+DncKjvbdmJDsptqa
+EOcLKvbdZxdJmblS
+DnbjjvbdKWUfDeHJ
+EPCkKvbdLiBkpxAS
+EObkKvbdePFSkTtS
+DoDKjvbdYzbfSKWZ
+EPCjjvbdvAdYsPFI
+EObkKvbdTAFJIBnd
+DnbkKvbdsZkpSaHn
+DoDLKvbdczZQYZRC
+EPDKjvbdTvMQKTaR
+DnbkKvbdyYJKCQZk
+EPCkKvbdVAaqTQqy
+EOcLKvbdbPfgDkzd
+EObkKvbdePErjssr
+EPDLKvbdyTOJNRag
+EPDLKvbdyTNiNSBg
+DoCjjvbdqvpMCiYq
+DoDKjvbdRpUHKGEX
+DoCjjvbdDoCkLWbd
+DncLKvbddCTNSATm
+DoCkKvbdcSbkUEJa
+EPDLKvbdzjVPocrt
+DnbkKvbdxVNFQyLn
+DnbkKvbdSKyFtfkT
+DoCkKvbdmpZxukZC
+DncLKvbdGFjSOJTq
+EOcKjvbdhkdcmtcZ
+DoCjjvbdyzeORghh
+EPCkKvbdRbDeMJZL
+DoDLKvbdZMRctOMN
+EObjjvbdAMgySvyx
+EOcLKvbdTYLMNzkY
+DnbjjvbdmuVZjjSG
+DnbkKvbdZsiIyDrn
+EPDLKvbdjEjfuPAO
+DoCjjvbdkxrrSxgU
+DncKjvbdSLYfUfkT
+DnbjjvbdBcpAvJmG
+DoDLKvbdSPsgKFcw
+DoCkKvbdrXQMDIyR
+EObkKvbdKVuFdEfi
+DnbkKvbdrSVLOLBN
+DoDKjvbdZnmhdeZj
+DoDKjvbdNHDQNPuL
+DoDKjvbdpyOggREY
+DoCkKvbdQvmcblID
+EPCkKvbdMfbomQVL
+EPCjjvbdNVTRjmAX
+EOcKjvbdbhlijevx
+EObkKvbdWWiXvEFH
+DncKjvbdlqyVZrdJ
+DnbjjvbdrSUkNjaN
+DncLKvbdmSZUzTDi
+EObjjvbdZQmEhmEq
+EOcKjvbdiLdcnVDZ
+EObkKvbdySmhlqag
+DnbjjvbdbUagYLTh
+DncKjvbdBdQAvKNG
+DncLKvbdyzdnRghh
+EObkKvbdLZRKSztf
+DoDLKvbdRXOEDMHc
+DncKjvbdFkFSbgmV
+EPCjjvbdZQldiMeR
+EPDLKvbdFfJqmiTq
+EOcLKvbdpssgRrKt
+DnbjjvbdKRZeOeme
+DnbkKvbdnPzYvLZC
+DoDLKvbdUVlQJsaR
+EPCjjvbdqFceTvAh
+EPDKjvbdEARhlyvw
+EPCjjvbdNGbolotk
+DoCjjvbdVhYWXgYz
+DoCjjvbdUtMtFkvK
+DncKjvbdZQldhleR
+DnbjjvbdCEPaWKMf
+EObjjvbduWOXjQsA
+EOcKjvbdIjEAKPfd
+DoCjjvbdURRPUuIN
+EObkKvbdbhmKKfWx
+DoDKjvbdxrnJMrCH
+EObjjvbdGFirNiTq
+DoDLKvbdtSqsZZeD
+EPDLKvbdKkAhWAJy
+EPCkKvbdbVBgYKsh
+DoCjjvbdKWVFdFGi
+EPDKjvbdwXMAuaWV
+DoCkKvbdRXNdCkhD
+EPCjjvbdZRMdhmEq
+DncLKvbdcJMijfWx
+DnbkKvbdZRNEiNFR
+EObjjvbdAMhYrvyx
+EPDLKvbdijGIJmXr
+DoCkKvbdbhmJjfXY
+EOcLKvbdrzMQTBHn
+DnbkKvbdKVtfEEfi
+EPCkKvbdxVNFRZMO
+EPDLKvbdjcMLQgUg
+EObjjvbdjuwODbXw
+EObkKvbdZeXfzhJC
+EPCkKvbdUyITyjoO
+EPCkKvbdGFjRnIsq
+DnbjjvbdIwsbHlRQ
+DncKjvbdtTSTYzEc
+EPDKjvbdhfjCyWKV
+DoCjjvbdhytelQnG
+DoDKjvbdxnTHxTIc
+EOcKjvbdUQqPUtgm
+EPDLKvbdkNCMZdgP
+DnbkKvbdGKeTDINV
+EOcLKvbdZMRcsmlN
+DnbjjvbdRXNdCkgc
+DoCjjvbdRXNccMHc
+EObkKvbdRjyFuGjs
+EPDLKvbdmJDtRUrB
+DoDLKvbdpyPIGpdY
+EPCjjvbdkNCLzEgP
+DoDLKvbdZoNiFEzK
+DoDKjvbdKVuFcdfi
+DoDKjvbdqZOggQdY
+EPCkKvbdSQTgJecw
+EOcKjvbdrRuKnLAm
+EObkKvbdbUbHYLUI
+EOcLKvbdyNrgwsJD
+DoDKjvbdegkVqnQg
+DnbkKvbdGBOpxizm
+EObkKvbdJbjDQicY
+DncLKvbdSLZFuGjs
+DoCkKvbdGckVibJj
+DoCkKvbdzeZnzdyp
+EObjjvbdxxJKCQZk
+EObjjvbdJpzFPGNe
+EPCkKvbdUsltGLvK
+DoDLKvbdziuQQDsU
+DncLKvbdRzKIScWA
+DoCkKvbdSLYfVGjs
+EPCjjvbdhgKDYujV
+DoDKjvbdtunXjQsA
+EPDKjvbdqceJPnWB
+DncKjvbdUQqOuUhN
+EOcKjvbdJvVFceHJ
+EPCkKvbdMfcPmQVL
+EObkKvbdNrsufdtp
+DncLKvbdUQpnuUhN
+DncKjvbdYkqdUOMN
+EObkKvbdqceJQNvB
+EPDLKvbdCWzdJFPv
+DncKjvbdauBfxLTh
+DncKjvbdZnnJEdyj
+DncLKvbdEvYpPlie
+DoDLKvbdhaoCdvpq
+EObkKvbdCEQBVimG
+EOcKjvbdBiKbKhfK
+DnbkKvbdeuzwpJzs
+DncLKvbdhlEcnVDZ
+EObkKvbdkCkjpftg
+DncKjvbdZQldhmEq
+DoDKjvbdFyVVBEXb
+DncKjvbdZirgogCG
+EPCkKvbdWXJXvEFH
+DnbkKvbdOStVfduQ
+DnbkKvbdNGbpMouL
+EObkKvbdcIljKfXY
+DoDLKvbdXrlBMsnx
+EOcLKvbdfNFwGmJk
+EObjjvbdUQqPUuHm
+DnbjjvbdEXxLtUTl
+EPDKjvbdLGFhCBQu
+DncKjvbdTYLLmzkY
+DoCkKvbdkaNPNALA
+DoCjjvbdFxtuBDwb
+EPDLKvbdGGJrNhsq
+DoCkKvbdZyEJnDLr
+EObkKvbdDxXlTssl
+EPCkKvbdGKdrbglu
+EOcLKvbdmoyyVjxb
+DnbkKvbdRNYByNtz
+EObjjvbdGFirOItR
+DoCjjvbdxUmFRZLn
+EPCkKvbdsQWPJcWG
+EPCjjvbdegkWSORH
+DncLKvbdYzcGRjVy
+DoCkKvbdRXNcblHc
+EObkKvbdwtldqYkn
+DnbkKvbdZisHpGaf
+EPCkKvbdGQASvfey
+DnbjjvbdeFPRavbj
+EOcLKvbdGZVVBEYC
+EPCkKvbdKDKDQicY
+EPCkKvbdUsmUFkuj
+DoCkKvbdatbHXjtI
+EObkKvbdlrYtyrdJ
+DnbjjvbdjKGHilwr
+EOcKjvbdjlakyeGo
+DoDLKvbdnPzZVkZC
+DnbjjvbdCIjbLJFj
+DoCkKvbdegkWSORH
+DoDLKvbdjvXODbYX
+EPDKjvbdaaVeFoow
+DncKjvbdwtmFRZLn
+EObkKvbdkNCLzEfo
+DncLKvbdrbGMlGkZ
+EObjjvbdczZQXxqC
+DoCkKvbduaEZTOdh
+EObjjvbdZxcjNbkr
+EOcKjvbdCJKbKiFj
+DnbjjvbdjEkGuPAO
+DnbjjvbdZshhyDsO
+DoDLKvbdbsCkUDjB
+DoCkKvbdNddUIhkE
+EPDLKvbduVnYJpsA
+DnbjjvbdQvmccMHc
+DoDKjvbdDjIKWXjA
+DoDLKvbdxZhGGYEr
+EObkKvbdqquKmkBN
+EObjjvbdLBLHMawq
+DoDLKvbdrbFmLgLZ
+EPDLKvbdddnrBwCj
+DoCkKvbdbrcLUEKB
+DoDKjvbdqlyjYlHi
+DncKjvbdQwNdDMID
+EObkKvbdBiLCKhej
+EPCkKvbdSZigsDWA
+DnbkKvbdwuNFRYlO
+EPDLKvbduCbtvvOo
+DnbjjvbdaaWFFpPw
+EObkKvbdRECaQQdS
+DncKjvbdyOShXsJD
+EPCkKvbdFVyPomJe
+DoDLKvbdcJMijevx
+EObkKvbdSZigsCvA
+EObjjvbdrNZjYlHi
+DnbkKvbdKfFhBaRV
+EPDLKvbdSLZFtgKs
+EPDLKvbdrbGNMGjy
+EPCjjvbddwzTtSFz
+DoDLKvbdnGdxNNgZ
+DncLKvbdTfzmlWue
+EOcKjvbdbLLfOmcA
+DoDLKvbdNGcQNPuL
+DncLKvbdUaCQsQqy
+EPCjjvbdCfkfHAzc
+EPDKjvbdlrYuZsDi
+EPDLKvbdmajXYPOV
+EObjjvbduCcUvvOo
+DoDLKvbdJXsahLqQ
+EPCkKvbdOSsugEuQ
+DnbkKvbduaDyTOeI
+DncLKvbdYqNEhldq
+EOcLKvbdeOdsKtUS
+EOcKjvbdkHgLefOL
+EPCkKvbdrpVoKCuf
+EObjjvbdShzJqAAl
+DnbjjvbdgPazwDxI
+EPDLKvbdEztQdlDJ
+DoDKjvbdYpmFImFR
+DncLKvbdsBellHLZ
+DoCjjvbdatbHYKsh
+DoCjjvbdptTgRrLU
+EOcLKvbdznpRFCkx
+EPCjjvbdWWiYWEFH
+EPCjjvbdRosgJedX
+DnbjjvbdkIGkefOL
+DnbjjvbdiZuGLqNf
+EPCkKvbdANIZTWyx
+EObjjvbdZQmFJMdq
+EObkKvbdjvWmcbYX
+DncLKvbdRbEFMJYk
+EOcKjvbdpfDdtVaI
+EPDKjvbdJqZePFnF
+DnbjjvbdeFOqavcK
+DoCjjvbdnHFXlnHZ
+EPCjjvbdTvLpKTaR
+EPDLKvbdVgxVxHYz
+EObkKvbdZRNFJMdq
+EPDLKvbdbUafwkUI
+EObjjvbdKCjDQibx
+EPDLKvbdrXPlChyR
+DoCjjvbdxsNhlqbH
+DoDKjvbdNGbomPtk
+EPDLKvbdLBLGmBwq
+DncLKvbdIsZBTNYM
+EPDLKvbdOXnuzcmt
+EPDKjvbdKDJcRJcY
+EObkKvbdiBncFWqR
+DncLKvbdlhcsqUrB
+DncKjvbdrylQTAgn
+DoDLKvbdTlWOaWOi
+EPCkKvbdegjurNpg
+EObjjvbdyTNhmSBg
+EPCjjvbdQccBPpcr
+EPDKjvbdeOeSkTtS
+DoCjjvbdGYuVAdXb
+EObjjvbdrzMPsAhO
+DncLKvbdrEFJQOVa
+EPCjjvbdbhmKKfWx
+EPCkKvbdeYZssqez
+DnbkKvbdURQntuHm
+EPDLKvbdkDLkRHVH
+EOcKjvbdlZSrSxft
+EObkKvbdijGHimXr
+EOcLKvbdpxnggQdY
+DncKjvbdJKEAJpGd
+EPCjjvbdMowpumfs
+DoCkKvbdmSYtysDi
+DoDLKvbdBsBDTfWr
+EPDLKvbdrMzKZMHi
+DnbkKvbdBraDUGWr
+DnbjjvbdDxYMTtTl
+DncKjvbdFyUuBEYC
+EPCkKvbdVZITzKnn
+DnbkKvbdTkvPBWPJ
+EObkKvbdSQTfjFdX
+DoCjjvbdZisIPgBf
+EPCkKvbdLGFhCAqV
+DoCjjvbdNGcQNPuL
+DoCkKvbdqlzJyMIJ
+EObjjvbdZtIiZDrn
+DnbjjvbdeEoRawCj
+DoDKjvbdUaBqSqRy
+EOcLKvbdmfdwmOGy
+DoDKjvbdptTfqrKt
+DoDLKvbdvAcxsPEh
+DoCkKvbdySmhmRbH
+EOcLKvbdhfjDZWKV
+EOcKjvbdHffzZXxH
+DoDKjvbdLFfHaaQu
+EPCjjvbdgFlZmfgA
+EOcKjvbdtcCuXVno
+DoDLKvbdZirgpGbG
+EObjjvbdNsUWHEuQ
+DoDLKvbdsBfNLgKy
+DoDKjvbdGGKRnJUR
+DoDLKvbdKkAhWAKZ
+DnbjjvbdOFDtJJKd
+EPCjjvbdMuSrKmAX
+DnbjjvbdyXiKBpZk
+DncLKvbdOFDtIhjd
+DoDKjvbdNPxQumgT
+DnbjjvbdrSVLOKaN
+EPCjjvbdmJDtRVRa
+EPCkKvbdZeXfzgiC
+DoDKjvbdhaoCdwRR
+DncKjvbdiBncFXRR
+EPDLKvbdvBEYrndh
+DnbjjvbdBiLBkIfK
+EPDLKvbdhgJbyVjV
+DncKjvbdzRPNIiwA
+DnbjjvbdegjvRmpg
+DncLKvbdyYIibQZk
+EPCkKvbdxnTIXrhc
+EPCkKvbdhkeEOUby
+DnbkKvbdjJehKMxS
+DoDKjvbdkVwODbYX
+EPCkKvbdFWYpQNKF
+EPCjjvbdXrkaMsnx
+EPDKjvbdRjxetgLT
+DoDKjvbdEztRFLbi
+DnbkKvbdqdFJQNua
+EPDLKvbdTqQntthN
+DoDLKvbdYORAXtvU
+DnbjjvbdEYXksstM
+EPDKjvbdkMbMZdfo
+DncLKvbdJKEAKQGd
+EOcKjvbdFejSOJUR
+DoCjjvbdYlRdTmkm
+DoDKjvbdlYrqrxgU
+EPDKjvbdKVuFdFGi
+EOcLKvbdJqZeOfNe
+DnbkKvbdzoPpdcLx
+DoDKjvbddePSCXCj
+DoDKjvbdEASIlywX
+DoCjjvbdrEEiPmua
+EPCkKvbdidkGuPAO
+EObjjvbdKRZdnfNe
+DncKjvbdhgJcZWJu
+EPDLKvbdZxcimbkr
+EPDKjvbdNeEUIiKd
+EOcKjvbdvAdZSndh
+DncLKvbdjggMGGNk
+EObkKvbdOStVgFUp
+EPCkKvbdRaceMIxk
+DncKjvbdDwxMUUUM
+DncKjvbdWeyZtAPT
+EPCjjvbdEYXkstTl
+EOcKjvbdxsOJNSBg
+EPCkKvbdKQzFPFnF
+EOcLKvbdJXtCHkpp
+DoCjjvbdtlYXBUBX
+EPCjjvbdwuNFRYkn
+DoDLKvbdkDLjpfuH
+EPDKjvbdxrmhlqbH
+EOcLKvbdjmCLzEgP
+DoCjjvbduaEYsPFI
+EPCkKvbdCEPaWJmG
+DncKjvbdwtmEpxlO
+EPCkKvbdJbjCpjCx
+DnbjjvbdhzVGMRNf
+EPCkKvbdZxcinDMS
+DoCkKvbdrNZiyLgi
+EOcLKvbdIHGyyYYH
+EObkKvbdYNqAXuWU
+EPDKjvbdtvNwjRTA
+EPCkKvbdcJMjLFvx
+EPCjjvbdNrsvHEuQ
+DoCjjvbdnGeYMmgZ
+DoDLKvbdSLZGUfjs
+EPDKjvbdtvOYKRTA
+DoDKjvbdziuPpESt
+DoCkKvbdMgDPlotk
+DoCkKvbdeFOrCXDK
+DnbkKvbdMgColpUk
+EPCkKvbdKVuFdFGi
+DoDLKvbduCcUvuoP
+DoCkKvbdRDcAopdS
+EPDLKvbdehKvSNpg
+EOcKjvbdDoCjjvbd
+DoCjjvbdOSsufdtp
+EObjjvbdGQASwGfZ
+DncLKvbdiHJcYujV
+DncKjvbdRadFMJZL
+EPDLKvbdZxcinDLr
+EPDLKvbdhaoDFXQq
+DoDKjvbdcJNJkGXY
+DoDLKvbduaDySoEh
+EOcKjvbdUxhUZkPO
+DncLKvbdVYhTzKoO
+DnbjjvbdehKvRnQg
+DnbkKvbdOhAXyAYa
+DncLKvbdxsNiNRag
+DoDLKvbdTppoVUgm
+EObkKvbdURROuVIN
+EOcLKvbdNsTugFVQ
+DoCkKvbdrXPlChxq
+EPDKjvbdHDkWJajK
+DoCkKvbdxnTHxTIc
+EPDKjvbdEvZPoljF
+EPDKjvbdrzMQTBIO
+EPCjjvbdqZPHgQcx
+DoCkKvbdVqmxCFMD
+DncLKvbdSPsgKGEX
+DoCkKvbdzjVPodSt
+DoDKjvbdnUtyjiqf
+DnbjjvbdIBkydzAD
+DoDKjvbdcTDKscjB
+EOcKjvbdiHKDYuiu
+DncKjvbdBraDUFvr
+DoCjjvbdQmYCZOUz
+EPCkKvbdySnIlqbH
+DnbkKvbdkDLjqGuH
+DnbjjvbdVqnYCFMD
+DncLKvbdGKeTCglu
+DncKjvbdlZSqrxft
+DncLKvbdrEEhpNvB
+EOcLKvbdrDeJQNvB
+EPCkKvbdQmXbYmtz
+DoCkKvbdQlxCYnUz
+EPCjjvbdEObkLWbd
+EPDLKvbdehKuqmqH
+EPCkKvbdkCkjpfuH
+DncKjvbdRXNcblHc
+EPCjjvbdsrqrxydc
+EPDKjvbdddoSBvcK
+EPCjjvbdADRxJzIp
+EPDLKvbdvAcxsPEh
+EPDKjvbdSLYfUgLT
+DoCkKvbdsrrTYyeD
+DoCkKvbdLFegbApu
+EPCjjvbdyqOliJwA
+EPDKjvbdqTtGrRjt
+EPCkKvbdhbObdvqR
+EPCjjvbdcScLUEJa
+DoDLKvbdRWnDblID
+EObkKvbdZLrETnLm
+DoDKjvbdiBoDEvpq
+DoDKjvbdMpXqVmfs
+EPCjjvbdpxngfpcx
+DncKjvbdsCGNLfjy
+DncKjvbdRjyGVHLT
+EPDKjvbdkHflGFmk
+DoDKjvbdlhdUQuSB
+EPCjjvbdKaLGlbXq
+EPCkKvbdVhXvXgYz
+EOcLKvbdKyQirztf
+EOcLKvbdliDsqVRa
+DncKjvbdJutfDdfi
+DoDKjvbdEXwksssl
+DncLKvbdxxIjCPyk
+EObkKvbdKaKgMaxR
+EPDKjvbdkCkjpgUg
+EOcLKvbdZLqctNlN
+EPDKjvbdNddThhjd
+EOcKjvbdYlSDsmlN
+EPDLKvbdmgExNOGy
+DoDKjvbdePErjstS
+DnbkKvbdZQleIldq
+DncKjvbdpssfrRkU
+EOcKjvbdDxYMTtTl
+EPCjjvbdySmhmSBg
+EPDKjvbdiiehJlxS
+EOcLKvbdFkFTDINV
+EPCjjvbdVqmxCFMD
+DncLKvbdIsZAsMwl
+DncKjvbdBraDTfXS
+EPDKjvbdmuUykJqf
+DnbkKvbdFyVUaEXb
+EObjjvbdzROmJJwA
+DncKjvbdEYXlUUTl
+EPDKjvbdBhjbKhfK
+DoCjjvbdJpzEneme
+DncLKvbdVwIwuceH
+EPDKjvbdhfjDYuiu
+EOcLKvbdFpASwHGZ
+EPDKjvbdZoOJEdyj
+DoDKjvbdqdEiPnWB
+DoDKjvbdnBjXYPNu
+DoCjjvbdiHKCxuiu
+EOcKjvbdGLFTChMu
+EOcKjvbdiMEdNtby
+DnbkKvbdGdKujBij
+DncKjvbdKQydneme
+DnbkKvbdziuPocsU
+DoDKjvbdmfdxNNgZ
+EObjjvbdDxXlUTtM
+EObjjvbddePSBwCj
+EOcKjvbdNPxQvOHT
+DnbkKvbdZHWdAOsJ
+EPDLKvbdyqPNIiwA
+DoCkKvbdpyPHfqDx
+EPDLKvbdUslsekuj
+EPCjjvbdiZtfLpnG
+DoCkKvbdmSZVZsDi
+EPCjjvbdpyOhGpcx
+EPDLKvbdzitoodSt
+DoDKjvbdVYhUZkOn
+EObkKvbdBsAbtGWr
+EPDKjvbdvBEYsOdh
+EObkKvbdGcjuibKK
+DncKjvbdeATqNYKG
+DoCjjvbdKNAEZgVB
+DncLKvbdqUUHSRjt
+EOcLKvbdGcjuibJj
+DoDLKvbdnBivxPOV
+DnbkKvbdKCjDRKCx
+DnbkKvbdrykosAgn
+EOcKjvbdUaBqTRRy
+EPCjjvbdcSbkTcjB
+DoDLKvbdIxTbILpp
+DoCjjvbdHDjuibJj
+DncKjvbduaDxroFI
+DoDKjvbdpedEtWBI
+EOcKjvbdXsLaNTnx
+EPCjjvbdYORAYVWU
+DoCjjvbdYpleIleR
+DoDKjvbdCDpAujMf
+EPCkKvbdpxoHfpcx
+DoCkKvbdUWMPisaR
+EPCjjvbdmuUzKjSG
+EPDKjvbdkxsRsYgU
+EPCkKvbdZxcjNblS
+DnbkKvbdbPffckzd
+EPDKjvbdUVkpJtBR
+DoCkKvbdvlvANEFN
+EObkKvbdShyjRAAl
+EPDKjvbdxrmhmSCH
+DoDKjvbdjvXNcaww
+EPDKjvbdkDLjqGuH
+EObkKvbdhfibxuiu
+EPCjjvbdlqyUyrci
+EPDLKvbdFVxopMjF
+EOcKjvbdqdEiPnWB
+DncKjvbdrXPlChxq
+DoCkKvbdxVMeRYkn
+EPCjjvbdlhdUQtqa
+EObjjvbdRotHKFcw
+EObkKvbdwjvcgzzG
+EPDLKvbdBhkBjiFj
+EObjjvbdlZTSTZGt
+DoCkKvbdkIHMFemk
+EObjjvbddndrkTsr
+DoDLKvbdFVxpQNKF
+EPCjjvbdZsiJZETO
+EObjjvbdiMFEOUby
+DoCkKvbdhlFEOUby
+EPCkKvbdrWolDIyR
+EObjjvbdmajWwoOV
+DoCkKvbdypoMiJwA
+DoDKjvbdCDpAvKMf
+EPDLKvbdzjVQQDrt
+EObjjvbdjlakydfo
+EObkKvbdJpyeOeme
+DoDLKvbdiHJcYvJu
+EOcLKvbdbsDKtEKB
+EOcLKvbdrpWOjDVf
+EObjjvbdelfWfmKL
+EObjjvbdxnSgwriD
+DnbkKvbdqlyjZLhJ
+EPCkKvbdQdDBPqDr
+EPCkKvbdRkYfUfjs
+EObjjvbdhtydwSVC
+DnbjjvbdWWhwvDdg
+DoDLKvbdypnliKXA
+DncLKvbdhfibxvKV
+DncLKvbdxrmiNSCH
+DncKjvbdUaBqSqRy
+DoDKjvbdZMSDsmkm
+DncLKvbdFjeScHmV
+EPDLKvbdQYmAHSrK
+DoCkKvbdUVlQJsaR
+DoDKjvbdGKdsDHmV
+EPCkKvbdkHgLfGNk
+EPDKjvbdCIkCLJFj
+DoCkKvbdrpWOicVf
+DncLKvbdqmZiyMIJ
+EObkKvbdNGcQMpUk
+EOcLKvbdhfibxuiu
+DoCjjvbdjcLjqHVH
+EPDLKvbdZxdJnDMS
+DncLKvbdHDkViajK
+EPDKjvbdhytelRNf
+EPDKjvbdZRNFIleR
+EObjjvbdNQYRWNgT
+EPCjjvbdNdcsiIkE
+DoCkKvbdajkfOnDA
+EPCjjvbdRNYCZOUz
+EPCkKvbdBcpAvKNG
+DncKjvbdqTsfqrLU
+EPCjjvbdsZlQSaHn
+EOcKjvbdqdFIpNvB
+DoCjjvbdtbcUwWPP
+EObjjvbdEYYMTtTl
+EOcLKvbdgGLzNfgA
+DoDLKvbdzdynzeZp
+DnbjjvbdajlGPNcA
+EPCjjvbdEJhJuxKA
+EPCjjvbdLLBIWAJy
+DnbkKvbdwzIFewdr
+DoCkKvbdBvzciEpW
+DoDKjvbdaNKasVNH
+EPDLKvbdVviXudEg
+EPDKjvbdcbSmSAUN
+EPDKjvbdqcdiQNua
+EPCkKvbdbBVdfPpX
+EOcLKvbdrEFIpOVa
+DoDKjvbdDigivXjA
+DoDKjvbdYSlBMtPY
+DoDKjvbdrRtjnLAm
+DoDKjvbdKeegbApu
+DnbkKvbdHgHZyXxH
+EPCkKvbddwzUTrFz
+DnbjjvbduDCtwWPP
+EOcLKvbdaRfDHsfL
+EPCjjvbddeOqbWbj
+DncLKvbdOFDsiJLE
+EObkKvbdSBceMIyL
+EOcLKvbdrylQSaIO
+DncLKvbdJcJcQjCx
+EPCkKvbdaRfCgsek
+EOcKjvbdzitoocsU
+DoDKjvbdyzdnSIJI
+EObkKvbddndsLTsr
+DoDLKvbdcTDKtEKB
+EPCkKvbddZyQYYpb
+EPDLKvbdCIjakJFj
+DncLKvbdLrWlzVQz
+EOcKjvbdxrnIlqag
+DncLKvbddeOrCWcK
+DoCkKvbdRaceLiZL
+EPCkKvbddePSCXCj
+DoDKjvbdJpzFOeme
+DoCkKvbdiMFEOUby
+DncKjvbdUQqPVVHm
+EOcLKvbdcSbjscjB
+DnbjjvbdvPTzpjoU
+EPDKjvbdEPDLKvbd
+DncKjvbdvBEYsPEh
+DnbjjvbdIxTbIMQp
+DoDLKvbdZLrETnMN
+EPCkKvbdZxdJmbkr
+EPCjjvbdIidAKQHE
+DncKjvbdrSUjmjaN
+DnbkKvbdkaNOmALA
+DnbkKvbdiGjCyViu
+EPCjjvbdYkrDsmlN
+EOcKjvbdypoMhjXA
+DoCkKvbdiGjDZViu
+DoDLKvbdZxcinClS
+DoCjjvbdqUUGrSLU
+DnbkKvbdYTLaNUPY
+EObkKvbdehKurNpg
+EOcKjvbdmRyVZrdJ
+EObkKvbdZirhPgBf
+EOcKjvbdpyOggQcx
+DnbkKvbdfoazwEXh
+DnbkKvbdmuUzLJqf
+EPDLKvbdYlRdUOLm
+DncKjvbdRjyFuGjs
+DoDLKvbdQdDAopdS
+DoCkKvbdmSYtysEJ
+EObjjvbdQdDApRDr
+DoDKjvbdyOTHxShc
+EPDKjvbdptUHSRkU
+EOcKjvbdLGGHaaRV
+EOcLKvbdaaWFFopX
+DoCjjvbdlBMnmALA
+DnbjjvbdZnnIdeZj
+DoCjjvbdZMRdUNkm
+DoDLKvbdRMxByNtz
+EPCkKvbdJYTahMRQ
+DncLKvbdpyPIHQdY
+DoCkKvbdVBCRTRRy
+EOcLKvbdZyEKODLr
+EObkKvbdRadEkiYk
+EOcKjvbdcyyQXyRC
+DnbkKvbdVqnXadkc
+EPCkKvbdGKeTDIMu
+DnbkKvbdrRtjnKaN
+EObkKvbdFVxooljF
+DoDKjvbdDoCjjvcE
+DnbkKvbddneTLTsr
+EPDKjvbdGcjvKCKK
+EObjjvbdgPazvdYI
+DoDKjvbdSLYfVHKs
+DoCkKvbdEPCjkWbd
+DnbjjvbdmaivxPOV
+EObjjvbdJJdAJogE
+DoDKjvbdhkddNtby
+DoCkKvbdiCPDEwQq
+EOcKjvbdmajXYOmu
+DnbkKvbdqYngfqEY
+EOcKjvbdTppoUuIN
+EPDKjvbdNddThhkE
+DncKjvbdDnbkKvbd
+DnbjjvbdZRNEiNFR
+EPCjjvbdaaWFFopX
+EPDLKvbdBhjbKhej
+DoCkKvbdfpBzvcwh
+DoDKjvbdmSZVZrdJ
+EObkKvbdbAueGQQX
+EOcKjvbdNQXqWOGs
+EPCjjvbdvAcySndh
+EOcLKvbdySnImRag
+EObkKvbdSxLLmzkY
+DnbjjvbdcJMjLGXY
+EObkKvbdBsBDUFwS
+DoCjjvbdqlyjZLhJ
+EPCjjvbdliEURVRa
+DoDKjvbdptTgRrLU
+DncKjvbdiBoCdwQq
+EOcKjvbdEOcLLXDE
+EObjjvbdEYYLtTsl
+EPDKjvbdVTmTekuj
+DncLKvbdLFegbBQu
+EPCjjvbdmttzLKRf
+EPDLKvbdpfEFTuaI
+DncKjvbdiiegjMwr
+EObkKvbdxVNEqYlO
+DoCjjvbdRWnDblHc
+EPCjjvbdaSFbgtGL
+DnbkKvbdozmcjwoA
+DoDKjvbdPyNAHSrK
+DncLKvbdVqnXbEkc
+EPCkKvbdFWYpQNJe
+EOcLKvbdlYsRsZHU
+EOcLKvbdQvmcblID
+EObjjvbdRkYetfkT
+DoCjjvbdFjdsDINV
+EPCjjvbdrafNMGkZ
+EPDKjvbdczZQXxqC
+EPDLKvbdDwxLtTsl
+DoCjjvbdFpASvffZ
+DoCjjvbdiMEdOVCy
+DoCkKvbdelevfljL
+DnbjjvbdaSFcHtFk
+DncKjvbdBhkBkIfK
+EObjjvbdGKdsDHmV
+DncLKvbdhzUekqOG
+EOcLKvbdZshiZDrn
+DncLKvbdDjIJuwjA
+EPCjjvbdpxoHfqEY
+EPCjjvbdOAIrsjSA
+EPDLKvbdEuyPolie
+EPDKjvbdssRrxydc
+EPDKjvbdjlakzEgP
+DncKjvbdiUydwRuC
+DoCkKvbdZMSDtNkm
+EPDLKvbdbBVeGQPw
+EObkKvbdNHDPlpVL
+DoDLKvbdDjHiuxKA
+EPDKjvbdatbGwkUI
+DnbjjvbdeqaWzkbo
+DoDKjvbdvvlBWAuu
+EObjjvbdZirhQHBf
+EPCkKvbdDncLKvcE
+DnbjjvbdehKvSNpg
+DncKjvbdVwIwudFH
+DoCjjvbdNQYRVmgT
+EOcKjvbdNrtWGeUp
+DncKjvbdvvlAvAuu
+DnbkKvbdjKGHimXr
+EObjjvbdhkddNuDZ
+EPCkKvbdNddThhkE
+EPCjjvbdsPunjDVf
+EPDKjvbdxZgfFwdr
+DncKjvbdZyDjNblS
+EPDKjvbdjcMLQfuH
+DncKjvbdwtmFRZMO
+DncKjvbdVhXuwgYz
+DoCkKvbdVZITyjnn
+EPCkKvbdNrtWHEtp
+EPCjjvbdMfbomQUk
+EObkKvbddwyssqez
+EPCkKvbdhfjCyVjV
+DoDKjvbdtvOYJpsA
+DoDKjvbdiLdcnVCy
+EObkKvbdLrWlzUpz
+DoCkKvbdSPsgKFdX
+EPCjjvbdkNCLyeGo
+DncKjvbdCSaCtGWr
+DnbjjvbdRkZFtgLT
+DoCkKvbdVAaprprZ
+DnbjjvbdyXhibQZk
+DoCkKvbdsQVnibvG
+EPCjjvbduaDyTPFI
+DncLKvbdUaCRSpqy
+DoDLKvbdnPzYukZC
+DoDKjvbdRWnDcMHc
+EOcKjvbdxVNFRZLn
+EOcKjvbdRkZGUfkT
+DnbkKvbdvmWAMdEm
+EOcKjvbdmbKXYOmu
+EPCkKvbdyXiKCPyk
+DnbkKvbdkHgMFfOL
+DncKjvbdVYgtZkPO
+EPCkKvbdDnbkKwCd
+EObkKvbdKfGHaaRV
+EPCkKvbdqZOggQdY
+EOcLKvbdTlVnaVoJ
+DoCkKvbdhanbeWqR
+DnbkKvbdypoMiJwA
+DnbkKvbduMXvaUBX
+DoDKjvbddiirWUzn
+EObkKvbdqYoHgQcx
+DnbjjvbdFyUuBDwb
+DoCkKvbdKCicQjDY
+EPDLKvbdezvYeJTw
+EPCjjvbdSxKlNzkY
+DoDKjvbdQmYByOUz
+DnbjjvbdIGgZxxXg
+EPDKjvbdqmZjZLgi
+DncKjvbdmfeYMmgZ
+DncLKvbdGdLVibKK
+DoCkKvbdZGvdAOsJ
+EObkKvbdjSzhrkJz
+EPDLKvbddePRbWcK
+EObjjvbdDxXkstUM
+DoCjjvbdvlvANDeN
+EOcKjvbdrDdiQOWB
+DoCkKvbdmajXXoOV
+DncKjvbdUtMsekvK
+EOcLKvbdxxJKBoyk
+EPDKjvbdqYnhGpcx
+EObjjvbdatafwkTh
+DncLKvbdajkenmcA
+DnbjjvbdZQleImEq
+EPCjjvbdDncLKwCd
+EObjjvbdHELWKBij
+EPDLKvbdxrmhmRag
+DoCjjvbdwXMBWBVu
+EObjjvbdsPvOjCvG
+EOcLKvbdssSTZZdc
+EPCkKvbddndrkUUS
+EOcLKvbdNGbolotk
+EObjjvbdZMSDtNlN
+EObkKvbdZshiYcsO
+DncKjvbdDwxLsstM
+EOcLKvbdqZPIGqEY
+EOcKjvbdZRNFImFR
+EOcKjvbdrDeIonVa
+DnbjjvbdYzberKWZ
+EObjjvbdegjvRnQg
+DoCkKvbduDDUwWOo
+EPDKjvbdRotGjGEX
+EOcKjvbdKQyeOeme
+EPCjjvbdDwxMTtUM
+EObjjvbdpedFTvAh
+EPDLKvbdFxtuBDxC
+DoCjjvbdlqxtzSdJ
+DncKjvbdZLrDtOMN
+EPCkKvbdGdKujBjK
+DoCkKvbdezvYdiTw
+DnbjjvbdrEEiQOVa
+DncKjvbdOYPVzdOU
+DnbjjvbdxwiKCPzL
+EObkKvbdRpTgJecw
+DoCkKvbdwtmEpxlO
+EPDKjvbdqFceTuaI
+DncKjvbdsPuoJcWG
+DncLKvbdRyjHsCvA
+EPCkKvbdyXiJaoyk
+EPDLKvbdJvVFcdgJ
+DncLKvbdrXPlChxq
+EObjjvbdvBEZTOdh
+DoDKjvbdqvokcJYq
+EOcKjvbdlqxtzSci
+EPDKjvbdFkErbglu
+DoDKjvbdEPDLKvcE
+EObkKvbdijFhJlxS
+DoCjjvbdOFDtJJKd
+DnbkKvbdyXhiapZk
+DncKjvbdEXwlTtTl
+DncLKvbdZyEKOCkr
+DnbkKvbdqlyjYlIJ
+EObkKvbdIGfyxwxH
+DnbjjvbdyNrgxTIc
+DnbkKvbdeOeSkTsr
+EPCjjvbddZyPxZRC
+DncLKvbdkDMKpgUg
+EPDKjvbdfIKuqnQg
+EPCkKvbdhlFENuDZ
+DoDLKvbdiBoCdvqR
+EPCkKvbdySnImRag
+DnbjjvbdIxTahLqQ
+DoDKjvbdZnmhddyj
+EOcKjvbdgQBzwEXh
+EPDLKvbdfILWSNqH
+DncKjvbdjcMKqGtg
+EObkKvbdKQzEnfNe
+EPDKjvbdUQqPVVHm
+EObjjvbdREDBPpcr
+EObjjvbdnHExMnGy
+DnbkKvbdvBDxrndh
+DncKjvbdCEPaVimG
+DnbkKvbdGBPQxizm
+EPDKjvbdLqwMzVQz
+DnbkKvbdEPDLLXDE
+EPDKjvbdwWkaWBVu
+EObkKvbdxrnImSCH
+DncKjvbdsrqrxzEc
+DnbkKvbdpfDeUWAh
+EPDKjvbdjAQHApGj
+DoCkKvbdaSGChTfL
+DoDKjvbdiHJbxvKV
+EPDLKvbdlhdURUqa
+EPCjjvbdIwsahMRQ
+EObjjvbdGYtuBEYC
+DncLKvbdNeEThhkE
+EObkKvbdBvzdIePv
+EPCjjvbdbAueFpQX
+EOcLKvbdjAQGaQGj
+EPCjjvbdNHDQNPuL
+DncLKvbddoFSkUUS
+DncKjvbdACqxJzIp
+DnbkKvbdxLWcgzyf
+EPCkKvbdTlVnaWPJ
+DoCkKvbdCJKbLIfK
+DoCkKvbdDwxMUTtM
+EPCkKvbdEPDLKwDE
+EOcLKvbdTvMQKTaR
+EOcLKvbdeXytTrFz
+EPDKjvbdNUrrLNAX
+DnbkKvbdZjShPgBf
+EObjjvbdjAPfaQGj
+EPCkKvbdYlRdUNlN
+EPDKjvbdzjUoocsU
+DoDLKvbdKDKCqJbx
+EPCjjvbdQvnECkhD
+DnbkKvbdGckVjBij
+EObjjvbdXmqAXuVt
+EPCjjvbdeFPRavcK
+DoDKjvbdEYXlUTsl
+DoCjjvbdXrlBNToY
+DoDLKvbdrRuLNkAm
+DncLKvbdDxXlUTtM
+EOcKjvbdwuNEqZLn
+EPDKjvbdEOcLLWbd
+DoCkKvbdpfDdtVaI
+EOcKjvbdmpZyVjyC
+EOcKjvbdtSrSxzFD
+EObkKvbdsBemLfjy
+DoCjjvbdUGznMWue
+DncLKvbdbAvEfPpX
+DnbjjvbduCcUwVno
+DoDLKvbdTppoUuIN
+DncKjvbdYqMeImEq
+DoCkKvbdrDdhomvB
+EObjjvbdgFkzOGgA
+EPDKjvbdSwjkmzjx
+DoCjjvbdREDBPpcr
+EObjjvbdYkrDtNlN
+EObjjvbdZisHogCG
+DncKjvbdUtMselWK
+DoDKjvbdkHfkeemk
+DncLKvbdSLYeuHLT
+EOcLKvbdeFOrBwCj
+EObjjvbdHDjvKCJj
+DnbkKvbdkIGkeemk
+DoCkKvbdZQmFJMeR
+DoCkKvbdqTtGrSKt
+DncLKvbdcIljKfWx
+DnbjjvbdRjxfUgKs
+DnbkKvbdhyuFlROG
+EObkKvbdpxoHfpdY
+DoDKjvbdhuZdwRtb
+DnbkKvbdBdQAvKMf
+DoCkKvbdVTlsekuj
+EObkKvbdCJLBkIfK
+EOcKjvbdmgFYNNgZ
+EPDLKvbdxrnImRag
+DoCjjvbdbKlGPODA
+DoCjjvbdMoxRVmgT
+EPDLKvbdKfGIBaRV
+DoDKjvbdSCEElJZL
+EPCkKvbdmRxtzSdJ
+EPDKjvbdjKGIKNXr
+DnbkKvbdlhdTptrB
+EPDKjvbdBcoaVilf
+EPDKjvbdRzKIScWA
+EOcKjvbdnHFXmOGy
+EPCjjvbdFfJrNhtR
+DnbkKvbdzaAPHHCM
+DnbkKvbdwXLaWBWV
+DoDKjvbdKeegaaQu
+EPCjjvbdRotHKFcw
+EOcKjvbdnGeXmOGy
+DoCjjvbdmIdTqVRa
+DncLKvbdfNGWgMik
+EPCkKvbdrovPJbuf
+EObkKvbdEvYpPljF
+DncLKvbdOYPVzdOU
+EObjjvbdrzLosAhO
+DnbjjvbdyzdnSIJI
+EOcLKvbdIsZArmYM
+DoDLKvbdvAdZTPEh
+DoCkKvbdQvnDcMHc
+EObjjvbduMYWaUBX
+DncKjvbdUyHszLOn
+EPCkKvbdbrbjscia
+EObjjvbdTkunaVni
+EObkKvbdeATpmYKG
+EOcKjvbdqUTfqrLU
+EPDLKvbdGYttaDxC
+EPDKjvbdRNYByNtz
+DncLKvbdADRwizJQ
+DncLKvbdKfFgaaQu
+EPDKjvbdxZhGGYFS
+DncLKvbdwtmFRYlO
+EOcLKvbdehLVrNqH
+DnbkKvbdKxpirztf
+DoCjjvbdZxdKNcLr
+DoDLKvbdrbFmMGjy
+DoDLKvbdqYnhHQcx
+EPCjjvbdGKeTDIMu
+EPCjjvbdZRNEhleR
+DnbkKvbdfMfXGmJk
+DnbjjvbdRjyGVHKs
+EPDKjvbdZHXEAOri
+EObjjvbdxnTIYTIc
+DnbjjvbdTpqOttgm
+EOcLKvbdWXIwuceH
+EOcLKvbdzROmJKXA
+EPCkKvbduCbtwWOo
+DncLKvbdJTZBTMwl
+EObkKvbdlqyUysDi
+DnbjjvbdrpVoJcWG
+DoCjjvbdHDjvKCKK
+EObkKvbdVwJXvDeH
+EPDKjvbdZsiJZDrn
+DoCkKvbdhfjDYvJu
+DoDLKvbdZyEJmcLr
+DnbjjvbdmajXXoOV
+DoCkKvbdelewGmKL
+DoDLKvbdUtMsfMVj
+EOcKjvbdegjuqmpg
+DnbkKvbdZMRctNkm
+DncKjvbdhlEdOUcZ
+DoDLKvbdqAiFAXIE
+EObjjvbddBsMrAUN
+EPDKjvbdaSGDHtGL
+DnbjjvbdbVCGwjtI
+DncLKvbdzdzOzeZp
+EPDKjvbdKQyePFnF
+EPDLKvbdauBgXjtI
+EPDLKvbdCSaCtGWr
+DnbkKvbdbsCjtEKB
+DoDKjvbdCWzdIeQW
+EPCkKvbdRbDeLhxk
+EObjjvbdOEctJIkE
+DoCkKvbdSPtGiedX
+DncKjvbddZyPxZRC
+DnbjjvbdTukpKUBR
+DoCjjvbdpstHRqkU
+DncKjvbdNdctIhjd
+EOcKjvbdUWMPjTaR
+DoCkKvbdLGGHbApu
+EObjjvbdmozZWLZC
+EObjjvbdULvPAvOi
+EPDLKvbdcJMikFvx
+DncLKvbdjJfHjMxS
+EPCjjvbdqYoIHREY
+DoCjjvbdiifHjNXr
+EObkKvbdZLrETnMN
+DnbkKvbdtSqsYydc
+EPDLKvbdCIkCLJFj
+DoCkKvbdliDsqUrB
+DnbkKvbdNPxQumgT
+EPDKjvbdACrYJyiQ
+EOcLKvbdYTMBMtOx
+DoDLKvbdNGcQNPtk
+DncKjvbdtbbtvuno
+DncKjvbdZLrEUNlN
+DoCkKvbdaogHELzd
+DoCjjvbdgFlZmfgA
+EPCjjvbdvPTzpkOt
+DoCjjvbdjKGHjMxS
+EPDLKvbdauBgXjsh
+EOcLKvbdiBoCeWpq
+EObkKvbdSPsfjGEX
+DnbkKvbdzGxlAMeX
+DoDLKvbdqFcdtWAh
+EPCkKvbdOYOuzcmt
+DoCjjvbdDwxLtUTl
+DnbkKvbdOTUVgFUp
+DnbkKvbdiGibyWJu
+EPCjjvbdUyITzLOn
+DoCkKvbdbLMFnnDA
+DoCjjvbdDwxLsssl
+DncLKvbdBiLBjhfK
+EPDKjvbdNPwpvOGs
+EObkKvbdzQnliKXA
+DoCjjvbdeYZssqez
+DoCjjvbdeATplxKG
+EOcLKvbdRyjIScWA
+EPDKjvbddeOqbWcK
+EPDLKvbdACrXjZhp
+DnbjjvbdmuVZkKSG
+EPDKjvbdVqmwbFLc
+EPCkKvbdCSaCtFwS
+DnbjjvbdVZHszLPO
+DoDKjvbdVrNxCFLc
+EOcKjvbdegjuqnQg
+EPCjjvbdZMSETmlN
+EOcKjvbdHDjvKBjK
+EPCkKvbdyOTIXsJD
+DoDKjvbdnQZyWKxb
+DncLKvbdxwhiaozL
+DncLKvbdNdcshhkE
+EPCjjvbdXnRAYUut
+DoDLKvbdNsUWGeUp
+DncKjvbdWHwuwfxz
+DnbkKvbdRpUGifEX
+DnbjjvbdEOcLKwCd
+EPDKjvbduaEYsOeI
+DnbkKvbdjhHLfFnL
+DncLKvbdZoOJEeZj
+EPCkKvbdEPCjjvcE
+EObjjvbdxUldqYkn
+EObkKvbdOEdThiLE
+DnbkKvbdjcMKpgVH
+EObjjvbdkIGkeenL
+DncKjvbdZsiJZDrn
+EPCkKvbdxnShXsIc
+DoDKjvbdZnmiEdzK
+DoCkKvbdVTmUGLvK
+EOcLKvbduCcVXVno
+EObjjvbdZQleJNFR
+EObjjvbdFejRmhsq
+EPDLKvbdaMkBruNH
+DoCkKvbdNQXqWNgT
+DoDKjvbdjuwNcbXw
+EPCjjvbdSBceLiYk
+DoCjjvbdMgColpVL
+DoDLKvbdVZHtZkPO
+DoDKjvbduMYXBUAw
+EPDKjvbdNeDshiKd
+DoDKjvbdTAFJICPE
+EObjjvbdJvVFceGi
+EObjjvbdNHCpMpUk
+DnbkKvbdijGIKNYS
+DoDLKvbdDncKkXCd
+DncKjvbdkMakyeGo
+EObkKvbdjKFgilwr
+DoCkKvbdOhAXyAZB
+DoCkKvbdUGznMWvF
+EOcKjvbdRosfifEX
+EPDLKvbdfNFvgMjL
+EObkKvbdxxJJbPzL
+EPCjjvbdQlxCYmtz
+EOcLKvbdgPazwEXh
+DoDLKvbdkySrTYft
+DoDLKvbdhgKDYuiu
+DoDKjvbdYkrETmkm
+EObjjvbdNPwpunHT
+EOcLKvbdYlRdUNlN
+DnbkKvbdZLrDtOLm
+EObjjvbdxrnJMrCH
+EObjjvbdZnnIeFZj
+DoCjjvbdzRPMhiwA
+DncKjvbdssSSxyeD
+EOcLKvbdjAPgAofj
+DncKjvbdRosfifEX
+DoDKjvbdEXwktUTl
+DnbjjvbdWRmwadkc
+EPDLKvbdeEoRavbj
+DoDKjvbdXsMBNToY
+DnbkKvbdVqmxCFLc
+EOcKjvbdkVwOEBww
+DoCjjvbdfNGXGmJk
+EOcLKvbdmtuZjiqf
+DoCkKvbdnPyyWKyC
+EObjjvbdJpydoGNe
+DnbkKvbdjJfHimYS
+DoCkKvbdyXhjBozL
+DoCjjvbdkIHLeenL
+EOcLKvbdTAEiIBoE
+DnbkKvbdvBDxsPFI
+DncKjvbdlhdTpuRa
+EObjjvbdFfJqmiUR
+EPCjjvbderAvzkbo
+DncLKvbdwygeexEr
+EObjjvbdSBdElJZL
+EOcKjvbdySmiMrBg
+EPDKjvbdatbGwkTh
+DncKjvbdnBivwnmu
+EPDKjvbdFxuVAdYC
+EPDLKvbdqlzJyMHi
+EPDKjvbdZRMdhldq
+DoCjjvbdNeDtIhkE
+DoCkKvbdfMewGlik
+EOcLKvbdhaoDEwQq
+DnbjjvbdIwsagkqQ
+DncKjvbdkIHMGFnL
+DoDLKvbdGdKuibKK
+DnbjjvbdTAEiICOd
+DncLKvbdNeEThiKd
+EObkKvbdYpmEiNFR
+EPDLKvbdFkFTDHlu
+DoCkKvbdkDLkRHUg
+DnbkKvbdyYIjCPyk
+DncLKvbdFVyQPmKF
+DnbjjvbdZQldhldq
+DoDKjvbdVqnYBdkc
+EPDKjvbdSKxeuGkT
+EPCjjvbdiZuGLqNf
+DnbjjvbdJTZArmXl
+DnbkKvbdyNrgwrhc
+EOcLKvbdrNZiyLgi
+DncKjvbdSBdFMJZL
+EPCkKvbdfMfWfmKL
+EPDLKvbdfMevfljL
+DoCjjvbdmIcsqVRa
+DoDLKvbdrEEhpOVa
+EPDLKvbdZRMeImEq
+DoDLKvbdyTNiMrBg
+EPCjjvbdsQVnibvG
+EOcKjvbdvBDxsPFI
+DoDKjvbdqquKnKaN
+DncLKvbdqGDeTuaI
+EPCkKvbdZdxGzgiC
+DoDKjvbdkDLkQftg
+DoDKjvbdePEsKtUS
+DoDKjvbdUxgtZjoO
+DncLKvbdxUmFRYlO
+DnbjjvbdwuMeRYkn
+DoCkKvbdRWmdClID
+EPDLKvbdCDpBWJlf
+DncKjvbduaEYrneI
+DnbjjvbdfHkVqmpg
+EPDKjvbdKxpirzuG
+DoDLKvbdZLqdUNkm
+DoDLKvbdDwxMTstM
+EOcKjvbdrzLosAhO
+DnbjjvbdqZPHgQdY
+EObkKvbdjggMFfNk
+EPCjjvbdZMRcsmkm
+EObjjvbdEJgiuxKA
+DncLKvbdZtJJZDsO
+EObkKvbdRjxeuGkT
+DncKjvbdqdFJPmua
+DoCkKvbdGYtuAcxC
+DoCjjvbdZnmheEzK
+DoCkKvbdKWUfEFGi
+DoCkKvbdfMfXGmKL
+DnbjjvbdjvWmcbXw
+DnbkKvbdyzeORhJI
+EPDLKvbdpstHRqjt
+DoDKjvbdTukpKUAq
+DoDKjvbdSPtGjFcw
+DncKjvbdWSNxCFMD
+DnbkKvbdjlalZdgP
+EOcLKvbdkxsRsYgU
+EObjjvbdLFfICApu
+DoDKjvbdCEQBWKMf
+DoDKjvbdbAvFFpQX
+DoCkKvbdhgKCxvKV
+DncLKvbdjcMLQgVH
+EPCkKvbdzitpQDrt
+EOcKjvbdNVTRjmAX
+EPDKjvbdkxsRsZHU
+DoDKjvbdKDJcRKCx
+EPDKjvbdFjeScHmV
+EPCkKvbdZjTIQHBf
+DnbkKvbdlqyUyrdJ
+DoDKjvbdehKurORH
+EObjjvbdbKlFoODA
+DoCkKvbdwtmFQyMO
+DoCjjvbdXnRAYUut
+DoDKjvbdxsOIlqbH
+DncLKvbdyNsIXrhc
+DoDLKvbdCEQAvKNG
+DncKjvbdRotHJedX
+EPDLKvbdVZHsyjoO
+DnbjjvbdkCkkRHVH
+DoDKjvbdRWmcblHc
+DncLKvbdqvokbiYq
+DoDLKvbdRkZGVHLT
+EObjjvbduCbuXVno
+DoCkKvbdEJgivYKA
+DoDKjvbdkWWnDbYX
+EPDKjvbdnGdxMmfy
+DoDLKvbdIHGzYxYH
+DoDKjvbduCbtwVno
+EObkKvbdqlyjYkgi
+EObjjvbdVwIwudEg
+DnbjjvbdfRaWzkcP
+EPCkKvbdEARhlzXX
+DnbkKvbdfMevfmJk
+DncLKvbdZyDjNcLr
+EOcKjvbdtAHQhABS
+DncKjvbdkClKqGtg
+DoCkKvbdEObkLXCd
+EObjjvbdFkFTDINV
+EOcKjvbdEztQdkcJ
+DoCkKvbdKaLHNBxR
+EPDLKvbdhaoCdvqR
+EObkKvbdrJAJdmOe
+EObjjvbdrpVnjCuf
+EPCkKvbdFjeTCglu
+DoCjjvbdqdEiPnWB
+EPDKjvbdGFirOJUR
+EPCkKvbdJmADzHUa
+EPCjjvbdWWhwucdg
+DncLKvbdBhkBjiFj
+DoCkKvbdSZihSbvA
+DncKjvbdZtIiZETO
+EPDLKvbdCTAcUGXS
+DoDKjvbdVqmxCFLc
+DncLKvbdmajWwoOV
+EPDKjvbdVhYVxHYz
+DoDLKvbddoFSjtTr
+DoDLKvbdrzMQTAgn
+DoCjjvbdUVlPjUBR
+EPDLKvbdtvOXipsA
+DoCjjvbdrouoKCvG
+EObkKvbdOSsufdtp
+EPDLKvbdIGfzZXxH
+EObkKvbdbQGgDkzd
+DoCkKvbdOFDtJIkE
+EPCjjvbdiHJbyWJu
+DnbjjvbdLAkHMaxR
+EPCkKvbdJTZBTMwl
+DncLKvbdSQTfjGEX
+EOcLKvbdlrZVZrci
+EObjjvbdkyTSTZHU
+EPCjjvbdxUleQxkn
+EPDLKvbdEKIKWYKA
+DoCkKvbdZHWdAPSi
+EPDLKvbdxVNFRZMO
+EPDLKvbdcSbkTcjB
+DoCkKvbdlYsSTZGt
+EPDKjvbduaDxroFI
+EObkKvbdNHDQMouL
+DoDLKvbdxrnJMqbH
+DnbjjvbdmfeXmOGy
+DoDKjvbdidkGtoAO
+DnbjjvbdGYtuBEXb
+DnbjjvbdRECaQQdS
+DoCkKvbdmajXXnnV
+DncKjvbdZMSEUNlN
+EPCkKvbdZtJIxcrn
+DncLKvbdJpydneme
+DncKjvbdVviYWEEg
+DoDLKvbdyXhjBoyk
+DoCjjvbdbhlikGXY
+DnbkKvbdVviXudFH
+EPCkKvbdYTMAlsnx
+EPCjjvbdxZhFeweS
+DoCjjvbdyNsIXriD
+DoDKjvbdznoqEcMY
+DnbjjvbdauCHXjtI
+DncKjvbdIsZAsMwl
+EPCkKvbdZMSDtOLm
+DnbkKvbdJqZePFme
+EPDKjvbdkHfkeenL
+DoDLKvbdaNLCStmH
+DncLKvbdIwsbHkqQ
+EObkKvbdfHjvRnRH
+EPCjjvbdlqyVZsDi
+EObkKvbdEuxoolie
+DoDKjvbdjAPgAofj
+EOcLKvbdjcMLRHVH
+DncKjvbdjKFgjNXr
+EPCkKvbdmIctQuRa
+DncLKvbdJpyePGOF
+DncLKvbdNGbpMouL
+EObkKvbdpfDdsuaI
+EPCjjvbdyzeORhIh
+DoDKjvbdrDdhpNua
+DoCjjvbdFfKRmhtR
+EPDLKvbdpfEEsuaI
+EPDLKvbdqcdhpOVa
+EPCjjvbdVYgsykPO
+DoDLKvbdDncLLXCd
+EObkKvbduaEYroEh
+EOcLKvbdkNBlZeHP
+EObjjvbdGcjvJajK
+DncLKvbdrpVoJbuf
+EObjjvbdEKIJuxKA
+DncKjvbdZxcjODMS
+DncLKvbdmgFXmOGy
+DoCkKvbdUMVoAuoJ
+DoDKjvbdqcdiQNua
+DnbkKvbdbrcKtDia
+DnbkKvbdKfFgbApu
+DncKjvbdezvZEiTw
+DnbkKvbdlqxtzSdJ
+DoCjjvbdOTUWGeUp
+EPCkKvbdJXtBhMQp
+EOcLKvbdOAJTTjSA
+EOcKjvbdfILVrNpg
+EOcLKvbdnQZxvLZC
+EPDKjvbdyYJJaoyk
+DnbjjvbdkMakzFHP
+DnbjjvbdjbkjpfuH
+DoCkKvbdgGLymfgA
+DoDLKvbdJYUBhLpp
+EPCjjvbdJSyBTMxM
+DnbjjvbdyTNiMrBg
+DnbkKvbdqYoHfpdY
+EOcKjvbdZyEKNcLr
+DoCkKvbdZtIiYcsO
+EPCkKvbdZQmFJNFR
+DncKjvbdSPsgKFdX
+DoCjjvbdvwMAuaWV
+EPDKjvbdHfgZxxYH
+EObkKvbdrSUjnKaN
+DnbjjvbdKWVGEFGi
+DncKjvbdsPvOjDWG
+EPDKjvbdhzVFkqOG
+DoDKjvbdssSSyZdc
+DoDKjvbdYkqcsmlN
+EPCjjvbdYpldiNFR
+DncLKvbdemFwGlik
+DoDLKvbdjuvmdBxX
+DoDKjvbdCTBDTewS
+DoCkKvbdKeehBaQu
+EObkKvbdwyhFexEr
+DoDKjvbdQvmccMID
+DoDKjvbdVviYVceH
+EPCkKvbdmRxtyrdJ
+EPDLKvbdYqMeJNFR
+EPCkKvbdRbDeMIxk
+EPCkKvbdcJMjKfXY
+DnbkKvbdVwIwvDdg
+DnbjjvbdIwtCHkpp
+DncLKvbdczYpYYqC
+EPCkKvbdKaLGmBxR
+DncKjvbduLwwAsaX
+DncLKvbdssRrxzEc
+EObjjvbdrXQMCiZR
+DnbkKvbdZRNFImFR
+EOcKjvbdACqwjZhp
+DnbjjvbdbKlGOmcA
+EObjjvbdGFirOJUR
+EPDLKvbdqvokbiYq
+EOcKjvbdJmAEZgUa
+DoCkKvbdbhljKevx
+EPCjjvbdbKlGPNcA
+EOcKjvbdRMxByOUz
+EOcKjvbdbsDLUEJa
+EPCkKvbdRacdlJZL
+EObkKvbdmuUyjjSG
+EObkKvbdjKFgjNXr
+DoDLKvbdlhctQuRa
+DoCkKvbdjKFhKMxS
+EObjjvbdpedEtVaI
+EOcKjvbdIwtBhLpp
+DnbjjvbdZHWdAPSi
+EOcLKvbdiLdcmuCy
+EOcLKvbdjcMLRGuH
+EPCjjvbdRbDdkiZL
+EOcKjvbdiHJbxvKV
+EOcLKvbdaSGDHsfL
+DoCkKvbdjKFhJlwr
+DncKjvbdiBoCeWqR
+EOcLKvbdegjvSNpg
+EOcLKvbdrbGMlHLZ
+DnbjjvbdBraDUGXS
+DncLKvbdFeirOIsq
+EPDLKvbdhytekpmf
+EOcKjvbdIsYaTMwl
+DnbkKvbdrSVLOKaN
+DoCkKvbdTIyjRABM
+EOcLKvbdsBfNMGkZ
+EPDLKvbdUtNTfMWK
+EObkKvbdRjxeuGjs
+EObkKvbdTqQnuVIN
+EObjjvbdhuZdwRuC
+EOcLKvbdqTtHSSKt
+DncKjvbdmpZxvLZC
+DoDLKvbdlAloNALA
+EPDKjvbdiLddOUby
+EPDLKvbdwuMdpxlO
+DncKjvbdNrsvHEuQ
+EPCkKvbdyOSgxTJD
+EOcLKvbdIryArlxM
+EPDLKvbdZHXEAPSi
+EPCjjvbdSCDdlIxk
+EOcKjvbdySnJNSCH
+DnbjjvbdijGIKNXr
+EPDKjvbdVAaqTRSZ
+EObjjvbdkxsSSxft
+EPCkKvbdnUtzKiqf
+EPCkKvbdlqxuZsEJ
+EObjjvbdEXxMUUUM
+EPCkKvbdLFfIBaQu
+DnbjjvbdrRtkNjaN
+DoCjjvbdNHCpMpUk
+EPDKjvbdZjTIQGaf
+EPCkKvbdHELWJbKK
+DoDKjvbdJbibpjCx
+DnbjjvbdJSyArmYM
+EPCjjvbdfNFwGmJk
+EOcLKvbdYTMBMsnx
+DoDLKvbdyTOJMqbH
+EObjjvbdEPDLLXDE
+DncLKvbdkyTSTZGt
+EObjjvbdGBPRYizm
+DoCkKvbdVviXvDeH
+DncKjvbdsQWOicVf
+DoCkKvbdfHjvSNqH
+DncKjvbdlZTSSxft
+DncKjvbdFVyPolie
+EPCjjvbdRXODblID
+DoCjjvbdlhcsqVSB
+DncLKvbdqYnhGqDx
+EObjjvbdFeiqmiUR
+DnbjjvbdKefHaaQu
+DoDKjvbdRNXbYmtz
+EOcKjvbdNwnuzcmt
+DoDLKvbdXFxytAPT
+EPDLKvbdOTUVfdtp
+DoCjjvbdraelkfkZ
+DncKjvbdXsMAltPY
+DoDKjvbdVUMsfLuj
+EPDLKvbdZisIPfbG
+EPDKjvbddZxpYYqC
+DnbkKvbdzjUopESt
+DnbkKvbdVUMtGMVj
+DncLKvbduCbtwWOo
+EObkKvbdaaVeFpPw
+DncKjvbdKNADzGta
+DncKjvbdeEoSCXCj
+EObjjvbdhancEvqR
+EObkKvbdKCicQibx
+DncLKvbdijGHjMwr
+DoCkKvbdziuPpETU
+DoCjjvbdiBnbeXRR
+DoCkKvbdZQmEiMdq
+EObkKvbdrMyjZMHi
+EOcKjvbddoErkTtS
+DoCkKvbdtkwvaUAw
+EPDLKvbdTlVnaVoJ
+DncKjvbdfHjurOQg
+DoDLKvbdWWiXvEEg
+EPCkKvbdqdEhpNua
+EOcLKvbdYSkaMtPY
+EPCkKvbdxmsHxTIc
+DnbjjvbdJqZdnenF
+EPDKjvbdWexzUAOs
+EOcLKvbdrovPKCuf
+DoDKjvbdkxsSSyGt
+Dnbjjvbdzdynzdyp
+EOcLKvbdHEKvJbJj
+EObjjvbdOStWHEuQ
+DnbjjvbdkyTRsZGt
+DoCkKvbdcJNKKevx
+DoDKjvbdSPtGifDw
+EObkKvbdGdLVibKK
+DnbjjvbdbBVdfPow
+DncKjvbdhtyeXSVC
+EPDLKvbdptTfrSLU
+DncKjvbdjvXODaww
+DncKjvbdqZOgfqDx
+DncLKvbdTJZjRABM
+EOcLKvbdTpqPVUhN
+EOcKjvbdRWmdClID
+DoCjjvbdqquLOLAm
+DoCjjvbdFfJqmiUR
+EOcKjvbddBsMrATm
+EOcKjvbdYzcFrKVy
+EPCjjvbdsZlQSaIO
+EPCkKvbdkHfkeenL
+EOcKjvbdiHJcYuiu
+DoDKjvbdCEPaVilf
+DoCjjvbddBrmSAUN
+EPDLKvbdSPtGifDw
+EOcLKvbdAMhYrvyx
+DncLKvbdTIyjRAAl
+EOcLKvbdZtIhyESn
+DnbjjvbdVUNUFlWK
+EOcKjvbdyXiJaoyk
+EPCkKvbdDncLKvbd
+EOcLKvbdKWVFcdgJ
+EPDKjvbdnQZxvKyC
+DncKjvbdjJehJlxS
+DoDKjvbdRkYfVHKs
+EPDLKvbdirzhsLJz
+EObkKvbdVUMtFkuj
+DnbjjvbdqwPkbiYq
+EPCjjvbdIGfzZYXg
+DoCkKvbdlYsRryGt
+EObjjvbdpfDeUWBI
+EOcKjvbdwtldpxkn
+DoCkKvbdzitopETU
+DoDKjvbdJuuGEEfi
+DnbkKvbdnPzZVkZC
+EOcKjvbdmfeYMnGy
+EPDKjvbdkIGlGGNk
+DncKjvbdezvZEhtX
+EPDKjvbdqqtjmkAm
+EPDLKvbdzRPNIiwA
+DoCkKvbdGKeSbgmV
+EPDLKvbdmJETqVSB
+EPDKjvbdbVCGwkTh
+DoCjjvbdBhkBkIej
+EOcLKvbdbBWFFopX
+DncLKvbdjggLfGOL
+EPCkKvbdzQnmIiwA
+EOcLKvbdhbPDFWpq
+EPDLKvbdkClLQgVH
+EObkKvbdrWpMChyR
+DncKjvbdMfbpNPuL
+DnbjjvbdNsUVfeVQ
+EOcKjvbdaRfDHtFk
+DoDKjvbdRbEFLhyL
+EOcKjvbdmIcsqUqa
+DncKjvbdFVyPpNJe
+DoCjjvbdLAjgMaxR
+EOcLKvbdypoNJKXA
+DncLKvbdEztRFMCi
+DoCkKvbduVmwiqTA
+EObkKvbdUyHsykPO
+DoCkKvbdhzUfLqNf
+EPCjjvbdiUzEvqtb
+EPDKjvbdpfDeTuaI
+EPCkKvbdSwjkmzjx
+DncLKvbdjKFgjMwr
+EOcLKvbdRWnECkhD
+EOcKjvbdZoOJFEyj
+DnbkKvbdvvlAvAvV
+DncKjvbdZLqcsmlN
+DncKjvbdyqOliJwA
+EPCkKvbdKWUedEfi
+DoCkKvbdePEsLTtS
+DnbkKvbdtcDVXVoP
+EPCjjvbdKCjCpicY
+EObkKvbdZdwfzhJC
+EPDLKvbdBhjajiGK
+EOcKjvbdJXsahMRQ
+DoCkKvbdZxdKNcLr
+EPDKjvbdnBjWwoOV
+DncLKvbdapGgDkzd
+EPDKjvbdjmCLzEgP
+EPCkKvbdWRmwbFMD
+DnbjjvbdBdQAujMf
+EObkKvbdzjUpPcsU
+DoDLKvbdwtmFQyMO
+DoCkKvbdiMEcmtby
+DncKjvbdSBcdkiYk
+EPCkKvbdfSBWzkbo
+EOcLKvbdxVMeRZLn
+DnbjjvbdCSaDUGXS
+DncKjvbdZtJIyETO
+EPCkKvbdTkvOaVni
+DnbkKvbdkySqsYft
+EPCjjvbdxsOJMrCH
+EPCjjvbdCWzdJEov
+EPCjjvbdEARiMywX
+EObkKvbdxsNiNSCH
+DncLKvbdhbPDFWqR
+EObkKvbdVUNUFlVj
+EObjjvbdXrlBNToY
+EOcLKvbdfHjvSOQg
+EPCjjvbdwWkaWAuu
+DncKjvbdbKlFnnDA
+EPCkKvbdRkZFuGkT
+EPCjjvbdMowpvNfs
+DncLKvbdmtuZjjSG
+DnbkKvbdiCPDEvqR
+DncLKvbdbAudfPow
+DnbjjvbdFjeSbhMu
+DncKjvbdSQTfjGEX
+EPDKjvbdbAueGQQX
+DnbkKvbdjKGIJmXr
+EOcKjvbdIryBTNYM
+EPDLKvbdmgEwlnGy
+EObjjvbdSBdEkhxk
+DoCjjvbdfMfWgMjL
+EPDLKvbdEObjjwCd
+EObjjvbdhzUekqOG
+EObjjvbdWSNwbElD
+DoDKjvbdrNZjYkhJ
+DoCkKvbdRkYfUgKs
+EObjjvbdczYpYZRC
+DoCkKvbdzoQQeDMY
+DncKjvbdFxuVBEXb
+DoDKjvbdSiZjRABM
+DoDLKvbdYzbfRivZ
+EPDLKvbdlqyUyrdJ
+EOcLKvbdtbbuWvOo
+DncKjvbdSKxfVGkT
+DoCjjvbdEXxLtUTl
+EOcLKvbdEPCjkWbd
+EPDLKvbdEObkLXDE
+EPCkKvbdxKvdHzzG
+EPDKjvbdpfDdtVaI
+DoCjjvbdbAueGPpX
+DoCjjvbdZMRdUOLm
+DoDLKvbdwtmFRYkn
+DoCjjvbdNPwpumgT
+DoCkKvbddijSWUzn
+DoDKjvbdJXsbHkqQ
+DnbjjvbdxZhFexEr
+DoCjjvbdSQUHJedX
+EPDLKvbdjmCMZdgP
+DncLKvbdMfbomPtk
+EOcLKvbdqTtHRqjt
+EPCkKvbdqceIpNvB
+DncLKvbdFxtuBDxC
+EPCkKvbdxVNEpyLn
+EOcKjvbdYzbeqivZ
+DoCjjvbdNdcsiJLE
+DoDKjvbdzjVQQDsU
+EObjjvbdvBDySneI
+DoDKjvbdBhjbKhej
+EPDLKvbdWSOYBdlD
+EOcKjvbdOYOuzcnU
+EPCkKvbdkCkkQgVH
+DnbkKvbdtlXwBTaX
+DnbkKvbdTppoVUgm
+DoCjjvbdQmXaxnUz
+DncKjvbdkHfkfFmk
+EPCjjvbdmgEwlnHZ
+EPDLKvbdZdxGzhJC
+EPCkKvbdmIdTqUqa
+DoDKjvbdzGyMAMeX
+DnbkKvbdTppnuUhN
+DoCjjvbdSLYfUgLT
+DnbkKvbdZsiJZETO
+EObkKvbdNUrqjmAX
+EObjjvbdZyDimcLr
+DoCkKvbdRDbaQRDr
+DnbjjvbdbAudfPow
+EPDKjvbdZjTHpGaf
+DoDKjvbdqwQLcIxq
+DnbjjvbdZLqdTmkm
+DoDKjvbdyXiKCPzL
+EObjjvbdssSTYyeD
+DoCjjvbdddoRawCj
+DoCjjvbdkMbLydfo
+DoCjjvbdVTmUFkvK
+DoCjjvbdhyuFkpmf
+EObkKvbdlYsSSyGt
+EPCjjvbdtvNxKQsA
+DoDKjvbdRpTgKFdX
+EObjjvbdjbkkQgVH
+DnbjjvbdaNLCStlg
+EOcKjvbdDxYLsssl
+DoCjjvbdfNFvgMjL
+DncLKvbdrovPJcWG
+DnbkKvbddoFSjssr
+DnbjjvbdSQTgKGDw
+DoCjjvbdQvnEDLhD
+EOcKjvbdUxhUZkOn
+EPCjjvbdEzsqFMDJ
+DoDKjvbdGdKuiaij
+EOcKjvbdxrnJMrCH
+DnbjjvbdUWMQJtBR
+EObkKvbdEKHivYKA
+EPDLKvbdYSlAltOx
+DnbjjvbdbVCHXjtI
+DnbkKvbdtkwwAtBX
+DoCjjvbdZQleJNEq
+EPDKjvbdEPCjjvcE
+EPCjjvbdCSaDUFwS
+EPDKjvbdHELViajK
+DoDLKvbdijFgjNXr
+DncLKvbdjmCLydfo
+EObkKvbddZyQXxqC
+DnbkKvbdySnImSCH
+EPCjjvbdqmZjYkgi
+EPCjjvbdGFirNiTq
+DoDKjvbdRXNdDMID
+DncLKvbdMfcQNQUk
+EOcLKvbdZdwfzghb
+EPDLKvbdULuoBWOi
+EObjjvbdFyVUaDwb
+DoCjjvbdNQXpumfs
+DnbkKvbdrWolDIxq
+EPCkKvbdBvzdIeQW
+DnbkKvbdfIKuqmpg
+EOcKjvbdnBiwXoNu
+EObjjvbdiHKDZWKV
+EPCjjvbdZLqdTnLm
+DoCjjvbdlYsSTYgU
+EPDLKvbdsBfNMHKy
+DnbkKvbdjuvmdCXw
+EPDLKvbdRDcBQQdS
+EOcKjvbdySmhmRbH
+EPDLKvbdbrbjscia
+EPDLKvbdkxrrTZGt
+DoDKjvbdcJMjLGWx
+EPDKjvbdKeegbBQu
+DnbjjvbdvPTzqKoU
+EOcLKvbdIidAKPgE
+DoDLKvbdVrOYBdkc
+EObjjvbdeFOqawDK
+EOcLKvbdZRNEhmFR
+EObjjvbdKfFgbBRV
+DoCjjvbdiLeEOVCy
+EPCkKvbdqmZjYkgi
+EPDKjvbdHffyxxXg
+EPDKjvbdZLrDsmlN
+DnbjjvbdTkuoBVoJ
+EOcKjvbduDDUvvOo
+DoDKjvbdZdwfzhJC
+EPCkKvbdfMfWgNKL
+EPCjjvbdRXOECkgc
+EOcKjvbdMowpvNfs
+DoDLKvbdiBoCeWpq
+EObkKvbdNwoVzdOU
+EPDLKvbdDoDKjvbd
+EObjjvbdLFehCBRV
+EOcLKvbduCcVWuno
+EOcKjvbdXsMBMtOx
+DnbkKvbdcIljKewY
+DoDLKvbdEzspdkcJ
+DncKjvbdqcdhomua
+EPDKjvbdiifHjNXr
+EObkKvbdVqnXbFLc
+EPCkKvbddwyssrFz
+DncKjvbdrSVKmkAm
+EPCjjvbdTlVoBVni
+EObjjvbdOhAYZAYa
+EPCjjvbdRadEkiZL
+DoCkKvbdSCEEkiYk
+EObjjvbdGZVVAcxC
+DnbjjvbdZyEJnDMS
+EOcKjvbdzitoodSt
+EPDKjvbdXFxzUAPT
+DnbjjvbdziuQQESt
+EPCjjvbdEARhmZvw
+DncLKvbdatbHXkTh
+DncKjvbdbsCjtDjB
+EPCjjvbdKWVGDdgJ
+EPDKjvbdrafNLfkZ
+EObkKvbdFkEsChMu
+DnbkKvbdVgxWXfxz
+EObjjvbdJbjDRJbx
+EObkKvbdwyhFfYFS
+EPCjjvbdMfbpNPtk
+EObkKvbdbsDKtDia
+EPCkKvbdkxsRsZHU
+DnbkKvbdvAdZTOdh
+DncKjvbdptUHRrLU
+DncKjvbdvPTzqKnt
+DncLKvbdTppoUthN
+DnbkKvbdrbFlkgLZ
+EPCjjvbdGdKvJajK
+EPDLKvbdACqxKZiQ
+DoCkKvbdbPffckzd
+DoCkKvbdhbOcEvqR
+DnbjjvbduCcVWvOo
+DoCkKvbdmuUzLKRf
+EPCjjvbdbUbHYLUI
+DoDKjvbdbKkeoNcA
+DoCjjvbdcScKtEJa
+DoCjjvbdyzdnRgiI
+EPCjjvbdkIGlFfOL
+EOcLKvbdzjUpPcsU
+DoDLKvbdJuuGEEgJ
+DncLKvbdTqROtthN
+EOcLKvbdpstGqqkU
+EPCkKvbdtSrTYzEc
+EPDKjvbdezvYdiUX
+DoDKjvbdtTRrxzFD
+DoCjjvbdrovOjDWG
+DoDKjvbdUQpoUthN
+EOcKjvbdKDJbpicY
+DnbjjvbdaSGCgtFk
+DoDKjvbdGZVVAcwb
+DnbjjvbdEvYopNJe
+EObjjvbdSQTgKFdX
+EPDLKvbdrXPkbhyR
+DoDLKvbdhyuGMROG
+DoDKjvbdzoQRFClY
+EPCkKvbdKWUeceHJ
+EObkKvbdZnmiFFZj
+DnbjjvbdtcDUwVoP
+DoCkKvbdjlakyeHP
+EPCkKvbdBvzdIdpW
+EPCjjvbddePRawCj
+DoDKjvbdmfeYNNfy
+DnbkKvbdSLYetgKs
+DncKjvbdFejRnJTq
+EPDLKvbdIGfzZXwg
+DncKjvbdJvVFdFHJ
+EOcLKvbdIHHZyYYH
+EPDLKvbdyXhiaoyk
+DoCjjvbdADSYJzIp
+EObjjvbdNPxQunHT
+EPCkKvbdxnTHwrhc
+DncKjvbdTppnuVHm
+EObkKvbdjlbLydfo
+DoDLKvbdVBBpsRRy
+DnbjjvbdACqwiyhp
+DoCkKvbdZRNFJNEq
+EOcLKvbdaRfDHtFk
+DoCkKvbdKfFgbBQu
+DnbjjvbddCTNSAUN
+EPDLKvbdTfznMXVe
+EOcKjvbdeOeSkUTr
+DnbkKvbdqdEiPnVa
+EOcLKvbdsBemMHLZ
+DoCkKvbdNPxQvOGs
+EPDLKvbdOTTufeUp
+DncKjvbdraelkfjy
+DoDLKvbdZoOIeFZj
+DnbkKvbdptTgRrLU
+DncKjvbdACrXiyhp
+EPDLKvbdIGgZxwxH
+DnbjjvbdZnmiEeZj
+DnbkKvbdWRmxCFLc
+DoDLKvbdyYIiaozL
+EPCjjvbdOTTvGeUp
+EPCkKvbdNUsSKmAX
+EPCjjvbdDigiuwjA
+DoDKjvbdIrxaTMxM
+DoDKjvbdZyDimcLr
+EPCjjvbdjbkkRHVH
+DoCjjvbdWXJYVceH
+EOcLKvbdlZTSSyHU
+DncLKvbdwuNEqYlO
+EPCkKvbdrpWPJbuf
+DncKjvbdtbcUwWPP
+EOcKjvbdGKeScINV
+DncKjvbdZeXfzhJC
+DncKjvbdUQqPVVIN
+DoDKjvbdxsNhmSBg
+DoDKjvbdURROuVHm
+DncKjvbdRMwbYmtz
+DoDKjvbdZRMeImEq
+EOcLKvbdWHwvXgYz
+EPDLKvbdIwsahMQp
+EOcKjvbdfHkVrNqH
+EObjjvbddjKSWUzn
+DncKjvbdxwiJbQZk
+EPCkKvbdMSWlzVQz
+DoDLKvbdUQpnuUhN
+DncLKvbdiCPCdvqR
+DoCjjvbdapHHELzd
+DncKjvbdyOSgwrhc
+DoCkKvbdDxYLtUTl
+EObjjvbdyfyMAMdw
+EObjjvbdHffzYxYH
+DoDKjvbdYzcFrKWZ
+EPDLKvbddZyPwyRC
+EPCkKvbdLhalRYAS
+DoCkKvbdGYtuBEXb
+DoCjjvbdrylQTAgn
+DoCjjvbdbBVeGPpX
+EPDLKvbdYpmFImFR
+DnbkKvbdJcKCpjDY
+DncLKvbdYTLaNUPY
+DnbkKvbdeOeSjtTr
+DoCkKvbdEYYLtTtM
+EPCkKvbdrzLoraIO
+DoCjjvbdKWVGDdfi
+DoDKjvbdBhjbLIfK
+EPCkKvbdNQYQvOGs
+EOcLKvbduLxXBTaX
+EPDKjvbdANHySwZx
+DnbkKvbdeOdsLTtS
+DnbkKvbdUsmTfMWK
+DoDLKvbdcImJkGXY
+DncKjvbdsPunibuf
+DnbjjvbdIGfyxxYH
+DoDLKvbdvBDyTOeI
+EPDLKvbdGKeScHmV
+EOcLKvbdqFceUVaI
+DncLKvbdqdEhpOWB
+DoDLKvbdTulPitAq
+DnbjjvbdWXIwudEg
+EPDLKvbdcTDKtDjB
+DoCjjvbdgFlZnHHA
+DnbkKvbdwuNEqZLn
+EObkKvbdmRxtzSci
+EObjjvbdjvXNdCYX
+DnbkKvbdqGDdsvBI
+DncKjvbdqdEhomvB
+DoCjjvbdrpVoKCvG
+EObkKvbdWHwvYHYz
+EOcKjvbdrykoraHn
+EPCkKvbdsPuoKCuf
+DncKjvbdZjSgofaf
+DncKjvbdNeETiIjd
+DoDLKvbddoFSkTsr
+EPCkKvbdkWWnECXw
+DnbkKvbdZRNFIldq
+EObjjvbdzjVQPdTU
+DnbjjvbdhytelRNf
+EOcKjvbdNPxQunHT
+DoCkKvbdmuVZkJrG
+EPCjjvbdUVlQJtBR
+DoDKjvbdzitpQESt
+DoCjjvbdraemLfkZ
+DoDLKvbdkNBlZeHP
+EObkKvbdrbGNMHLZ
+EPDLKvbdkIHLeemk
+DoDKjvbdbAvEeopX
+DoDKjvbdiGjCxujV
+EPCkKvbdqlzJxkgi
+DncLKvbdVZITzLPO
+EOcLKvbdVZITykOn
+EPCjjvbdjuvnDaww
+DoDKjvbdkVwOECYX
+EObjjvbdcyxpXyRC
+DnbjjvbdULvPAuni
+DnbkKvbdOTUWGdtp
+EOcLKvbdKDJcRKCx
+EPCkKvbdBsBDUFwS
+DncLKvbdQdDAopcr
+EObjjvbdcSbjtEKB
+DnbjjvbdlAloNALA
+DoCjjvbdADSXizJQ
+EOcKjvbdrpWOibvG
+EObjjvbdIGfzZXwg
+EPDKjvbdptUHRrKt
+DncLKvbdZdwfzhIb
+DoCkKvbdQZNAGrrK
+DoDKjvbduCbtvuoP
+EPCjjvbdJuuFceGi
+EPCkKvbdgGLymgHA
+DnbjjvbdcyyPxYpb
+EPCkKvbdhuZeWquC
+EObkKvbdyTNiNRbH
+DoCjjvbdVAaqSprZ
+DncLKvbdoznDkYPA
+EPCkKvbdiUydvquC
+DncLKvbdhytfMROG
+DoCkKvbdmbKXYPNu
+DnbkKvbdMpYQunHT
+EOcLKvbdHkaznXQk
+DoDLKvbdTvMPisaR
+DoCkKvbdIryBTNXl
+DoDLKvbdZLrDsmkm
+DncLKvbdlhctRVRa
+EPCjjvbdYkqcsmkm
+EPCjjvbdEXwlUTtM
+EObkKvbdEvZPoljF
+EPDLKvbdZRNEiNFR
+DoCkKvbdANIZTXZx
+DncKjvbdZoOIeFZj
+DoDLKvbdeJirWUzn
+DoCjjvbdRWmdDLgc
+DoDKjvbdACrYKZhp
+EPDKjvbdMowpunHT
+EOcKjvbdYTLaNTnx
+DnbjjvbdQvnEClHc
+DnbkKvbdSBceLhyL
+DoDKjvbdjgflGGOL
+EOcKjvbdYpldiMdq
+DoCjjvbdrovPKDWG
+DoDKjvbdZisHofbG
+DoDKjvbdEOcLKwDE
+EPCjjvbdhfjDZWJu
+DncKjvbdhfjCyWJu
+EOcLKvbdtSqsYzEc
+DoDLKvbdbQHHELzd
+DoDKjvbdySnImRbH
+EOcLKvbdVqmxCElD
+DnbjjvbdNdcsiJKd
+EPCkKvbdkNBkzEfo
+DnbkKvbdJKEAKPfd
+DncLKvbdiifIJlwr
+DnbjjvbdhtzEvqtb
+EObjjvbdwWlAvBWV
+EPDLKvbdlhctQuSB
+EOcLKvbdNddUIiKd
+EPDKjvbdJSxaTMxM
+EPDLKvbdVrOXaeMD
+DoDLKvbdGcjvKBjK
+DncLKvbdqvpLbiZR
+EPCkKvbdjKFgilxS
+DncLKvbdDoCjjvbd
+DoCjjvbdqqtjnKaN
+EOcKjvbdBvzdJEpW
+DoCkKvbdcarlrATm
+DoDLKvbdQdCaQQdS
+DncKjvbdVqnXadkc
+DoCjjvbdJvUecdgJ
+DnbkKvbdVYhUZkPO
+EPDKjvbdxZgfFxEr
+EPCjjvbdsPunicWG
+DnbkKvbdmSYtyrdJ
+DnbjjvbdTulQJsaR
+DncKjvbdsrrSxyeD
+DnbkKvbdzQnmJJwA
+DncKjvbdatafxLTh
+EOcLKvbdmfeYNNgZ
+EObkKvbdNxOuzcnU
+EPDLKvbdDwwksstM
+EPDLKvbdxnTIYTIc
+EPDKjvbdHgGyyXxH
+EOcKjvbdGAnpyJzm
+DoCkKvbdUQqPVUhN
+DncLKvbdYgWdAOri
+DoDLKvbdygZMANFX
+EPCkKvbdrJAJdlne
+EPDLKvbdZnmheEyj
+DnbjjvbdIxUCHkpp
+DnbkKvbdjJehJlwr
+DoDKjvbdhlEdNuDZ
+EOcKjvbdeOeSkTsr
+EOcLKvbdVqnYBdlD
+DoDKjvbdeATqMwif
+EPCjjvbdrXQLbhyR
+DnbjjvbdFkErbhMu
+DoCjjvbdpxnhHQcx
+EOcLKvbdrWpMDIxq
+EPDKjvbdVhYWYGxz
+DoCkKvbdwzIGFxFS
+DoCjjvbdEztQeLbi
+DnbjjvbdlZTRrxgU
+DncLKvbdSZihSbvA
+DnbjjvbdrzLpTAgn
+EPCjjvbdNrsugFVQ
+DnbjjvbdxUleQxlO
+DncKjvbdtkwwBUAw
+DoCjjvbdbBVdeoow
+EPDKjvbdEObjkXDE
+DnbjjvbdhgJbxvKV
+EPCkKvbdIwtCHlQp
+DoCkKvbdxmsIXrhc
+EObkKvbddePSCXDK
+EOcKjvbdVrOXbEkc
+EOcLKvbdFVyPomJe
+DoDLKvbdREDBPqDr
+DncLKvbdaNLCStmH
+DncLKvbdbAudfQPw
+DoDKjvbdRaceLiZL
+DoCkKvbdJYUCIMRQ
+DnbkKvbdYkrDtOMN
+DnbjjvbdFkFTChNV
+EOcLKvbdZRMeImFR
+EObkKvbdUxgszLOn
+EOcKjvbdFjdsChMu
+EObkKvbdrafNLgLZ
+EPDKjvbdelewGmJk
+EOcKjvbdZMRctNlN
+DoDLKvbdliEUQtqa
+DncKjvbdqUUHSRjt
+EPDKjvbduCbtwVno
+DoCkKvbdaaVeFoow
+EPDLKvbdkClKqGuH
+DoDLKvbdCflFgAzc
+DoDLKvbdTAEhgbPE
+EObkKvbdmtuZjjRf
+EObjjvbdKDKCqJbx
+DncKjvbdrovOjDVf
+DoCkKvbdhtzFWqtb
+DncLKvbdEvYpQNKF
+EOcLKvbdeFPRavcK
+DoDLKvbdhlEcnUby
+DoCkKvbdegjvSOQg
+DncKjvbdhbPCeWpq
+DnbjjvbdsrrTYyeD
+DncLKvbdTlWPAvOi
+EPCjjvbdwzHeexEr
+DncLKvbdmJEUQuRa
+DnbkKvbdkIHLeemk
+EObkKvbdhtyeXSUb
+EOcLKvbdHDkWKCJj
+EOcLKvbdRbDdkhyL
+EObkKvbdRosfifDw
+EPCjjvbdOStVfduQ
+DnbkKvbdiHJbxujV
+DoCjjvbdsPuoJcWG
+EPCkKvbdDxXktTtM
+DoCjjvbdHDjujCJj
+EObjjvbdUWLoisaR
+EPDKjvbdqiAKEmOe
+DoDLKvbdxmsIYShc
+EPCkKvbdCJKbKiGK
+DoDLKvbdRECaQRDr
+EPDLKvbdYqNEiNEq
+DnbkKvbdiMEcnVCy
+DoCkKvbduCbtwVno
+DoDKjvbdHbMZdzAD
+DnbkKvbdemGXGmKL
+DoDLKvbdgQBzwDwh
+DoDKjvbdKQzEoGOF
+DoDKjvbdWSNwaeMD
+EPDKjvbdySmhlqbH
+EObkKvbdDxYLtTtM
+DnbjjvbdFxuVBEXb
+EObjjvbdiBoCdwRR
+EPCjjvbdGQATWgGZ
+EPCkKvbdYpleJNEq
+EOcLKvbdvPTzqKoU
+DnbkKvbdZQmEhldq
+DncKjvbdLBKgMawq
+EPCkKvbdqFceTvAh
+EPCjjvbdkIHMFenL
+DoDKjvbdehLVqnRH
+DoDKjvbdxwhibPyk
+DnbkKvbdkMbMZeHP
+EOcKjvbdsrrSyZeD
+EOcLKvbdMowpunHT
+EObjjvbdJqZdnfOF
+DoCkKvbdezuxdhtX
+DnbjjvbdaaWFFopX
+DoCjjvbdqdFJQOVa
+EPCjjvbdWWhwudFH
+EPDKjvbdhtzFWrUb
+EPCkKvbdWSNwaeMD
+EObkKvbdcIlikFvx
+EPCkKvbdauCGwkTh
+EPCkKvbdbhmJkGWx
+EPDKjvbdRosgJfEX
+DnbkKvbdTvMQJtAq
+DnbkKvbdsBfMlGkZ
+DnbkKvbdVrNxCElD
+DoDLKvbdmpZxukZC
+EObkKvbdhlEcnVCy
+EOcLKvbdwzIFfYFS
+DnbkKvbdZtIhxdSn
+DoDLKvbdjgfkfFmk
+DoDLKvbdqTtHSRkU
+EObjjvbdSCDeLiZL
+DoDKjvbdeATplxJf
+DnbkKvbdIBkzEzAD
+EOcKjvbdFWZQPljF
+DoCjjvbdRbDeMJYk
+EPDLKvbdDoCkKvcE
+DoCkKvbdZjShPfbG
+DnbjjvbdNPxQvOGs
+EPDLKvbdKyQirztf
+DoDLKvbdJutecdfi
+DoCjjvbdTppoUuHm
+EPDLKvbdjEkGuPAO
+DnbkKvbdVTmTekuj
+DnbkKvbdZyEJmcMS
+EOcKjvbdNddThhjd
+DncLKvbdrDdhpNua
+EOcKjvbdBiLBkJGK
+DoCkKvbdrXPkbhxq
+DnbjjvbdZQmEiMdq
+DncLKvbdhzUfMROG
+EPDKjvbduaEYroEh
+DoCjjvbdJYUCHkqQ
+DoCjjvbdwzHfFxEr
+EPCjjvbdLiBkqYAS
+DoDLKvbdxZgfFxEr
+DoCkKvbdraemLgLZ
+DoDLKvbdxxJJaozL
+EPDLKvbdKeehBaRV
+DoCkKvbdPIAYZAZB
+EObjjvbdBvzdIdov
+DoDKjvbdjblKqGuH
+DoDKjvbdlhdURVSB
+EPDKjvbdqvpMDJZR
+DncKjvbdajkeoODA
+EOcKjvbdkySqsZHU
+DnbjjvbdJqZdnfOF
+DncKjvbdZHWdAOsJ
+DoCkKvbdaNLCStlg
+DoDLKvbdVZHszKnn
+DoCjjvbdtvOYJpsA
+DoCjjvbdNPxQvNfs
+DoDLKvbdZLqctOMN
+EObjjvbdvwMAvAvV
+DnbkKvbdEuxpPlie
+DnbkKvbdAMhYsWyx
+DoCkKvbdtumwjQsA
+EPCjjvbdVAaprqRy
+EObkKvbdlZSqsYgU
+EObkKvbdBvzdIdov
+DnbjjvbdyOShYTJD
+EOcLKvbdZshhxdSn
+EPDKjvbdUtMselWK
+DoDLKvbdYqNEiMeR
+DncLKvbddePSBwDK
+DncLKvbdqYnggQcx
+DnbkKvbdqceJQOVa
+DoDLKvbdtSrTZZeD
+EPCjjvbdANHyTWzY
+DoDLKvbdcIlikFvx
+DoDKjvbdxmsHwsIc
+EObkKvbdYzbfRiuy
+EPDKjvbdWHwuwfxz
+EOcLKvbddndsLTsr
+EObkKvbdwXMAuaVu
+EPDLKvbdbVBfwjtI
+EObjjvbdfMfXHMik
+DoCkKvbdOXoVzdOU
+DnbkKvbdnGeXlnHZ
+EPCjjvbdGGJrOJTq
+EPCkKvbdhanbeWqR
+EOcLKvbdLhbLpxAS
+EPDLKvbdbBVdepPw
+EOcKjvbdWSNwadlD
+DoCkKvbdaRfChTek
+EPCkKvbdmbJvxOmu
+DoCkKvbdCSaCsfXS
+EObkKvbdbhljKewY
+DncLKvbddZxowxpb
+DnbjjvbdRDcBQQdS
+DnbjjvbdKDJbqKDY
+EObkKvbdWRmxCFLc
+EPDLKvbdYlSETmkm
+EOcLKvbdMIalRYAS
+DoDKjvbdCEQAuimG
+EPDKjvbdCTAcTewS
+EPCjjvbdrRtkOKaN
+DnbkKvbdtTRryZeD
+DnbjjvbdMgColpVL
+EOcKjvbdrDdhomua
+EPDKjvbdRbDeMJZL
+DnbkKvbdxnSgwrhc
+DoDKjvbdVvhxVdFH
+DncKjvbdLYqJrzuG
+DncLKvbdZsiIyETO
+EPDLKvbdieLHUoAO
+EPDLKvbdNsUVgEuQ
+EPDLKvbdoAKztHcn
+DncKjvbdfNFvgNJk
+DoCkKvbdqYoHgQcx
+DncLKvbddwzUUSFz
+DoCkKvbdIHGzZYXg
+DncLKvbddZxpXxpb
+DnbjjvbdhlFDnUcZ
+EPCjjvbdSKxfUfjs
+DoCkKvbdbAvFGPpX
+EOcLKvbdVhXuwfxz
+EPCkKvbddoEsKtTr
+DncKjvbdhkeEOVDZ
+EObjjvbdNUrqjmAX
+EPDLKvbdUWLojTaR
+DoDLKvbdWIYVwfxz
+DnbkKvbdUtMsekvK
+EOcKjvbdRpUHJecw
+DoDKjvbdCJKbKiFj
+EObjjvbdEuxoomJe
+EPCjjvbdLrWlytpz
+EObjjvbdMgDPlotk
+DncLKvbdNrtWHFVQ
+DoCjjvbdZeYGzgiC
+EPCkKvbdKaKfmCYR
+DoCjjvbdjlakzEfo
+EPDKjvbdpeceTvBI
+DnbkKvbdKDKCqJcY
+DoDKjvbdMowqWNgT
+EPDKjvbdRMxCYmtz
+EObjjvbdrXQLbiYq
+DncLKvbdZnmheFZj
+EOcLKvbdiLeENtcZ
+DncKjvbdzaAPGfal
+EPCkKvbdeATqNYKG
+EObjjvbdSCDdlIyL
+DoCkKvbdVZHtZjnn
+EPCjjvbdZtIhxdTO
+EPDKjvbdTlVoAuoJ
+EObjjvbdZRNFIleR
+DoDLKvbdEPDLKwCd
+DnbjjvbdfRaWzkbo
+EPDLKvbddneSjstS
+EObkKvbduCbtwWOo
+EPCkKvbdmoyyWKyC
+EPCjjvbdehLVrORH
+DoDLKvbduCcUvuno
+EObkKvbddZxowxqC
+EObkKvbdKQydoFme
+EPCkKvbdqqtkOKaN
+DoDKjvbduaEYsOeI
+EObkKvbdePEsLUTr
+DoDLKvbdbsDLTcia
+DncLKvbdDwwlTtUM
+EOcKjvbdOEdUIhkE
+DoDLKvbdtvOXjRTA
+EObkKvbdeFPSCXCj
+EPCkKvbdqlzJxlIJ
+EOcKjvbdUMVoBVni
+EPCkKvbdqqtkNkBN
+DoDLKvbdiVZeWquC
+DncKjvbdZLrDsmlN
+EPCkKvbdzitopESt
+EOcKjvbdnBjXYPOV
+EObkKvbdehKurOQg
+DoCjjvbdmJDsptrB
+DnbkKvbdaNKbTVNH
+DncLKvbdGQASvfey
+EOcLKvbdtbcUwVno
+EOcKjvbdqUUHSSLU
+EOcLKvbdvwLaWBWV
+EPCkKvbdRacdlIxk
+DnbkKvbdxZgfGXeS
+EOcLKvbdVAapsQqy
+EOcLKvbdQvnECkhD
+EPDKjvbdCWzchdpW
+DoCjjvbdpedFUWBI
+EPDKjvbdqvpMCiYq
+EPDLKvbdEPDKjwCd
+DncLKvbdGckWJaij
+EObjjvbdgPazwEXh
+DoCkKvbdUVlPitBR
+DoCjjvbdMSXMzVQz
+DnbkKvbdliEUQuRa
+DoCkKvbdOStVgFUp
+EPCjjvbdUtMtGMVj
+DoCkKvbdKWVFdFHJ
+EPCkKvbdUxhUZkOn
+DnbkKvbdLBKflbYR
+EPCkKvbdFkEsCglu
+DnbkKvbdKCibpjCx
+DnbkKvbdGLEsChNV
+DoCjjvbdLGFhCApu
+DncLKvbdeXzTsqez
+DoCkKvbdxrmhlqbH
+EPDLKvbdYlRdTmlN
+EPCjjvbdqYnhHRDx
+EPDKjvbdWfYzUAOs
+EPCkKvbdMJCLpxAS
+EObkKvbduCbtwVoP
+DoCkKvbdmfdwlmfy
+EPCjjvbdVBBprpqy
+DoDLKvbdEKHivXjA
+DoDLKvbdkWWnECYX
+EOcKjvbdqUUHSRkU
+DncKjvbdYlRcsnLm
+EOcKjvbdelfWfmJk
+EPDLKvbdZtIhxcsO
+EOcLKvbdGKdrcINV
+EPDLKvbdOAIsUKSA
+DoCjjvbdXFxytAOs
+EPCjjvbdUQpntuIN
+EPDLKvbdTvLpJtBR
+EPDKjvbdRyihSbvA
+DnbjjvbdhyuFlROG
+EObkKvbdZxcinClS
+EOcKjvbdptTfqrKt
+DoDLKvbdURRPUtgm
+EObkKvbdaNKbTVNH
+EOcLKvbdiZuFlQmf
+EPDKjvbdePEsLUTr
+EPCjjvbdFxuUaEYC
+EPDLKvbdliETpuRa
+EObjjvbdjKFhKNYS
+DoCkKvbdwzHefXeS
+DoDLKvbdFfJqmiUR
+EObjjvbdcJMjKewY
+EObjjvbdqdFIomua
+DnbkKvbdFejRnJTq
+DnbjjvbdEzsqFMCi
+EPDLKvbdhzUelROG
+EPDKjvbdLKaIWAKZ
+DoCkKvbdGGJrOIsq
+EOcKjvbdVUMtGMWK
+EObkKvbdmpZyVkZC
+DoDLKvbdJTYaSmXl
+EObjjvbdmSZUyrci
+EObkKvbdxnSgwsIc
+EOcLKvbdhgJcYujV
+DoDKjvbdUQpoVVHm
+EPDKjvbdKWVFdEgJ
+DoCkKvbdWXJXudEg
+EObkKvbddxZtURez
+DnbkKvbdZRMeJNEq
+EOcKjvbdpxoIHRDx
+EObkKvbdGGKSOJTq
+EOcKjvbdkIHMFenL
+EPDLKvbdTqQoUtgm
+DnbjjvbdtvNxJpsA
+DnbkKvbdFyUtaDxC
+DnbkKvbdSLYeuHKs
+DncLKvbdxrmhlrBg
+DncLKvbdGdLWJajK
+EPCkKvbdSPtHJfEX
+EPCkKvbdeKJrVtzn
+DoCjjvbdWRnXadlD
+DncKjvbdhkdcmtby
+DoDLKvbdVviYWEFH
+EOcKjvbdTAFJICPE
+EPCjjvbdCJKbLIej
+DoDLKvbdyYJJaoyk
+EPDKjvbdNsUVgFUp
+EPCjjvbdrDdhomua
+DoDKjvbdySnJNRag
+EPCjjvbdyNrgxShc
+DnbjjvbdADRxKZhp
+DnbkKvbdaMkCStmH
+EPDKjvbdfIKvRnRH
+DnbkKvbdoAKztIEO
+DnbjjvbdDjHjVwjA
+EObkKvbdjuwODbYX
+DoDLKvbdbhmKKfWx
+EPDLKvbdKaLGlaxR
+DoDLKvbdwzIGFxFS
+EPCkKvbdGBOpxizm
+EPDKjvbdRXODcMHc
+EOcLKvbdYqNFJMdq
+EOcKjvbdxUleQxkn
+EPDKjvbdZirgpHCG
+DncLKvbderAvzkbo
+EPCkKvbdTvMPisaR
+EPCkKvbdZtJIxdTO
+EOcKjvbddePRavcK
+DncLKvbdCDpAuimG
+EPDLKvbdQdCaPqES
+EObjjvbdZyEJmbkr
+DoDLKvbdOEcsiIkE
+EOcKjvbdrbFlkgLZ
+EOcKjvbdRacdlJZL
+EPCkKvbdKDKCqKCx
+EPDKjvbdrDeIonVa
+DncKjvbdOFEThhjd
+DncLKvbdLAkHMbXq
+EObkKvbdhytekpnG
+DncLKvbdrSUkOLAm
+DncLKvbdiCOcFWpq
+DoCjjvbdrylPsAhO
+EOcKjvbdxVNEpyLn
+DnbkKvbdmbJvwnnV
+DnbkKvbdVAbQsQrZ
+EPCkKvbdCTBCtGXS
+DncKjvbdTAEiHbPE
+EObjjvbdFeiqnJTq
+EPDLKvbdDxYMTtTl
+DncLKvbdHDkVibKK
+DnbkKvbddePSBvcK
+DoCjjvbdauCGwkTh
+EPDLKvbdWIYWYGxz
+DoDLKvbdjcLjqHVH
+DoDLKvbdTfznMXWF
+DnbkKvbdkVwNcaww
+EObjjvbdlYrrSxgU
+DncKjvbdaNLCTUmH
+EOcKjvbdznoqEblY
+DncLKvbdjuwOEBww
+DncKjvbdGQATXHGZ
+EOcKjvbdiZuFkpmf
+EPCjjvbdajlGOnDA
+EPDKjvbdJcJbpjCx
+DncKjvbdauBgXjtI
+EPCkKvbdsZkpTAhO
+EPCkKvbdOEdUIhjd
+EOcKjvbdNsUWGduQ
+DnbkKvbdVTltFlVj
+EObjjvbdaNKasVNH
+DnbjjvbdhancEvpq
+EPDLKvbdZtIiZETO
+DoDKjvbdFxuUaEYC
+DoDLKvbdLGGHbAqV
+DoDKjvbdqceIpOWB
+DoDKjvbdvBEZTPEh
+DoDKjvbdKefHbBQu
+EPDLKvbdlZTSSyHU
+DncKjvbdnPyyWKyC
+EObjjvbdsZkpTBHn
+DoCjjvbdaaVdepPw
+EPDKjvbdtkwvaUAw
+EObjjvbdEPCkKvbd
+EPCjjvbdtkwvaUBX
+DncKjvbdRbDeMIyL
+EOcKjvbdxwhjBoyk
+DoDLKvbdFxuVAcxC
+DnbkKvbdxZgfFxFS
+EOcKjvbdjhGkefNk
+EOcKjvbdEPDKkWcE
+EPDLKvbdQvnEDMID
+EOcLKvbdqquKmjaN
+DoCkKvbdZtJJZESn
+EPDLKvbdTkvOaWPJ
+DnbjjvbdcSbkUEJa
+EObjjvbdQlxBxmtz
+EOcLKvbdehKuqmpg
+EObjjvbdpyOggQcx
+DncLKvbdnVVZjjSG
+EPCjjvbdyqOmIiwA
+EPDLKvbddZxpXyRC
+EObkKvbdRXODcMID
+EOcKjvbdnHFXlmfy
+EPDKjvbdznpQdcLx
+EOcLKvbdqGDdtWBI
+EPCjjvbdZoNhddzK
+EOcKjvbdqTsgSSLU
+EOcLKvbdRzJhTCvA
+EOcKjvbdCIjbLIfK
+DncKjvbdKQzEoGNe
+EOcKjvbdACrXizJQ
+EObjjvbdEzspdkcJ
+EObkKvbdsZlQTAhO
+EPDKjvbdfoazwEYI
+DoDLKvbdjAQGaQGj
+DoDLKvbdEzsqFMCi
+EPDKjvbdyYJJapZk
+DnbkKvbdIxUBglRQ
+DoCjjvbdtTRsYyeD
+EPDKjvbdGKdsDIMu
+EOcLKvbdFyVVAcxC
+DnbkKvbdZLrDtNkm
+EPDLKvbdsrqrxydc
+EPDKjvbdrpVnjCvG
+DoDLKvbdmSYtzTEJ
+EPDKjvbdajkfOmcA
+EPDLKvbdssSSxzEc
+EObjjvbdDxYMTssl
+DnbkKvbdiMFEOVDZ
+EOcLKvbdULvOaVni
+EPDLKvbdlqyUzSdJ
+EObjjvbdZoNheFZj
+DncKjvbdcScLTdKB
+EObkKvbdGLFTDINV
+DncKjvbdcyyQYZRC
+EOcKjvbdYqMeIldq
+DoCkKvbdOEcshhkE
+EObkKvbdirzhrjiz
+EOcLKvbdxUmFRYlO
+DoDKjvbdkyTRsZGt
+DncKjvbdIryAsNYM
+EObkKvbduWNxJpsA
+DncKjvbdYkqcsnLm
+DoDLKvbddZxpXyQb
+DncKjvbdRotGiedX
+DnbkKvbdKVtedEgJ
+EOcKjvbdjvWnEBww
+EObkKvbdFyVVAdXb
+DoCkKvbdYlSEUNkm
+EOcKjvbdcTDLTcia
+EPCkKvbdzjUpQESt
+DnbkKvbdqUTfqrLU
+EPDKjvbdSQUHJfEX
+DnbjjvbdiGjDYvKV
+EObkKvbdhkdcnVCy
+EPCjjvbdJuuFdFHJ
+EObjjvbdYkqdTnMN
+DoCkKvbdpssgSRkU
+EObkKvbdUWLpKUBR
+DoDKjvbdZsiJZESn
+DnbkKvbdYqMdhmEq
+DoCkKvbdjcLkRHVH
+DnbkKvbdSPsgKGDw
+DoDLKvbdKVtfEEfi
+EPCjjvbdiGibyWKV
+EPCjjvbdEYYLtUTl
+EPCjjvbdFejSOIsq
+DncLKvbdRECaQRES
+EPCkKvbdEuyQQNKF
+EObkKvbdxwhjCPzL
+DncLKvbdiLeDnUby
+EOcKjvbdEuxpQMie
+EOcKjvbdIidAJogE
+DoDKjvbdxsNhlqag
+EOcKjvbdEzsqFLcJ
+EObjjvbdYTMAmToY
+DoDLKvbdwuNFQyLn
+DoCkKvbdzitpQDrt
+EOcLKvbdZtJIxdSn
+DncLKvbdqZPHgRDx
+EPDLKvbdMoxQvNfs
+DncKjvbdmIctQuSB
+DoCkKvbdFfKSNiUR
+EPDLKvbdhtydvqtb
+EObjjvbdxrnJNRag
+DnbjjvbddoFTKssr
+EPDKjvbdqlyjZLgi
+DnbkKvbdyNsHwsJD
+EOcLKvbdxnTHwsJD
+EObjjvbdUQqOtuIN
+DnbkKvbdwtleQyMO
+DoDLKvbdrovPKDVf
+EOcLKvbdFaPQxizm
+EObjjvbdVAapsQqy
+EOcKjvbdJvVFdFGi
+DnbkKvbduDDVXVno
+EObkKvbdZjTHpGbG
+EObjjvbdZirgofaf
+DncKjvbdAMgySvzY
+DoDKjvbdGdLVibKK
+DoDKjvbdWRmwbEkc
+DncKjvbdXsMAlsnx
+DoDLKvbdtcCuXVoP
+DoDLKvbdqlyjYlIJ
+EPCjjvbdHELVjCKK
+DncLKvbdBdQAuilf
+DoCjjvbdeFOrCXDK
+DoCjjvbdRpTgJfDw
+DoCkKvbdLAkHMbXq
+EOcLKvbdaRebhUGL
+DncLKvbdnQZyWLYb
+EObjjvbdXsMBNUOx
+DncKjvbdrSVKnKaN
+EPCjjvbdAMhZSwZx
+EOcLKvbdcScKtEKB
+DncKjvbdKaLGlaxR
+EOcKjvbdZRMeJNFR
+EPCkKvbdwygeewdr
+DnbkKvbdhancFXRR
+EOcKjvbdOTUVfdtp
+EPDLKvbdmbKXYOnV
+DoDKjvbdGLFSbhNV
+EPDLKvbdMfbomPtk
+DnbkKvbdmIcsqVRa
+DoDKjvbdwtmFRZLn
+DoCkKvbddtAUATMv
+DncKjvbdiBoDEvqR
+EObkKvbdiHJcYujV
+DnbjjvbdiCPDFWqR
+EOcKjvbdyTNhlrCH
+DoDKjvbdNQYRVmfs
+EOcLKvbdFjdrbhMu
+DoCjjvbdsrrSyZeD
+EPCkKvbdXsMBMsoY
+DoDKjvbdjhHLfFmk
+EPCkKvbdyOTIYTIc
+EOcLKvbdbhmKLGWx
+DnbjjvbdxnTHwsIc
+EOcLKvbdZoOJEeZj
+EOcKjvbdjmBkzEfo
+EPDKjvbdYORAXuWU
+EPDKjvbdtkxXAsaX
+DoDLKvbduaEYsPFI
+EPCjjvbdypoNIiwA
+DoDKjvbdVBCRTQrZ
+DnbjjvbdlrYtyrdJ
+DoCjjvbdhzUekpnG
+EOcKjvbdcTCjsdJa
+EObkKvbdbhlijfWx
+EOcLKvbdYTLaMsoY
+DnbjjvbdKVtedFGi
+EOcLKvbdsPvPJbuf
+DncLKvbdNrsvHEuQ
+EObkKvbdmfeYMmfy
+EPCjjvbdZjTHpHCG
+DoDLKvbdpyOhGqDx
+DoDKjvbdRkZGVGjs
+DnbjjvbdRWnEDMHc
+EPCkKvbdjlbMZdfo
+DoCkKvbdyqOmIiwA
+DoCkKvbddxZstSFz
+DnbjjvbdKCibqJbx
+DoCjjvbdqqtjnLBN
+DnbjjvbdBhjbLJGK
+DoDLKvbdrWokbhxq
+EOcLKvbdJzpGXdAN
+EPDKjvbdRMxCZNtz
+DncKjvbdkClLRGuH
+DncLKvbdIHHZxxXg
+EPDKjvbdZshiYdSn
+EPCkKvbdqcdhomvB
+DoDKjvbdVTmUFkvK
+EObkKvbdZisHogBf
+DoCjjvbdRbDdkiYk
+DnbkKvbdGGJrOJTq
+DncLKvbdeFPRavcK
+DnbjjvbdSPtHKGDw
+DoDLKvbdJmADyfuB
+EPCjjvbdKCibpicY
+DoDLKvbdiGicZVjV
+DoCkKvbdZLqdUNkm
+EPDKjvbdVUNUFkvK
+EPCjjvbdemFvflik
+EPCkKvbdkxrqrxft
+DnbkKvbdRbEElIxk
+EPCjjvbdaaVdfQQX
+DoDLKvbdySmhlqag
+EPCjjvbdrRuKnKaN
+DncLKvbdezuyEhtX
+DnbkKvbdtbbuWuoP
+DnbkKvbdZtIhxcrn
+EObkKvbdcyxoxZQb
+EOcKjvbdDxYLtTtM
+EObjjvbdjggMFfOL
+EPCkKvbdGckWJbKK
+DnbjjvbdddnqavcK
+EPDKjvbdYgWdAPTJ
+DnbjjvbdbhlikGXY
+DncKjvbdNPxRVmgT
+EObkKvbdRpUHKGDw
+EObkKvbdmfdwlmgZ
+DoDLKvbdBvzdJFPv
+DnbjjvbdZHXEAPSi
+EPDKjvbdbQHGdLzd
+EOcKjvbdCIjbLIej
+DnbjjvbdOXnuzdNt
+EObkKvbdrSUkNkBN
+DoDLKvbdNeDsiJLE
+EPCkKvbdiUyeXRtb
+EObkKvbdbsDKsdJa
+DncLKvbdbrcLTdJa
+DncLKvbdSPsgJecw
+EObjjvbdKNADzGta
+EPDLKvbdFWZPomKF
+EPCjjvbdRzKISbvA
+EOcKjvbdvmWAMcdm
+DncKjvbdwyhGGYEr
+EPDLKvbdfHjuqnRH
+EPCjjvbdRXOEDLhD
+EPCkKvbdyOSgwsJD
+DoDLKvbdnCKXYOmu
+DnbjjvbdjmCLyeGo
+DnbjjvbdTYKlNzjx
+DoCjjvbdZisHpGbG
+EObjjvbdUWMPisaR
+EObjjvbdqFcdtWAh
+EOcLKvbdYqNEhleR
+DnbjjvbdlZSrSyGt
+EPDLKvbdePEsLTsr
+DncKjvbdSBcdlJYk
+EPDKjvbdePEsLTsr
+EPDKjvbdypnmIjXA
+DnbjjvbdsQWPKCuf
+EOcKjvbdZRNEhldq
+EPCjjvbdYpmFImEq
+EPCkKvbdKfFhBaRV
+DncLKvbdezvZEhtX
+DncKjvbdiCObdvpq
+DnbjjvbdmJETqUrB
+EOcLKvbdfpBzvcxI
+DncKjvbdRbDdkhxk
+EPCkKvbdmpZyVkZC
+EPDLKvbdyNsIXrhc
+DnbkKvbdyYJJaoyk
+DncKjvbdwWlBVaWV
+DoDKjvbdqwPlCiYq
+DncLKvbdvvkaVaWV
+DncKjvbdcJMjKewY
+EObkKvbdbBWFFpPw
+EPCjjvbdpyOhGqEY
+EPDKjvbdCDpAujNG
+EPDLKvbdCSaCtFvr
+DoCjjvbdwygfFxEr
+EOcLKvbdLFehBaQu
+EPCjjvbdssSSxydc
+EPCjjvbdHfgZyYYH
+DnbkKvbdnBjWxOmu
+DnbkKvbdcJNJjewY
+EObjjvbdrzLoraIO
+EOcKjvbdADRwjZiQ
+EPCkKvbdOAJStJrA
+DncLKvbdajkennDA
+DoCjjvbdmbKWxPNu
+EObkKvbdmbKXYPOV
+DoCkKvbdKCjCpjDY
+EPCkKvbdIjEAJogE
+DoCkKvbdkHgLfGOL
+DoCkKvbdJcJbqKCx
+EPCkKvbdVUMtGMWK
+DoDKjvbdNxOuzcmt
+EPDLKvbdNQYRVnGs
+DnbkKvbdzjUoocrt
+DoDKjvbdDnbjjvcE
+DoCkKvbdGBPRZJzm
+DoCjjvbdtvNwjRTA
+EPDLKvbdZQldhleR
+DoDLKvbdUtMsfMWK
+DnbkKvbdDxYLtTsl
+DoCjjvbdmbJwYPOV
+DoCjjvbdaNLCTVMg
+DoCjjvbdWXIwvEFH
+DoDKjvbddZxoxYpb
+DncLKvbdijGHimXr
+EPDKjvbdZQmEiMdq
+DncKjvbdTulPisaR
+DncLKvbdnGdxMnGy
+EPCkKvbdlYsSSyHU
+DoDKjvbdKRZePFme
+DoCkKvbdZRNFJNEq
+DncLKvbdkMbMZeGo
+DoCkKvbdBiLBkIej
+EObjjvbdWXIwvEFH
+EOcLKvbdGGJqnJTq
+DoDLKvbdRWmcblID
+EObjjvbdxUleQxlO
+DnbkKvbdREDBPpdS
+DnbjjvbdiifHjMwr
+EObjjvbdZLqctOMN
+EPCjjvbdmRxtyrci
+DoDLKvbdDxXlTtUM
+DoDKjvbdxrmiNSBg
+DoDKjvbdTppntthN
+EObjjvbdnUtykKRf
+DoCkKvbdRNYBxmtz
+EOcLKvbdQYmAHTSK
+EPCjjvbdZtIhxcsO
+DoCjjvbdbsCjsdJa
+EPDKjvbdsZkoraIO
+DoDKjvbdEJhJvYKA
+EOcLKvbdJSxaTMwl
+DoDLKvbdANHxrvzY
+EObkKvbdcTDKtDia
+EPDKjvbdrWolDJZR
+DoDKjvbdsQVnicVf
+EPCjjvbdYSlAlsoY
+EPCkKvbdJYUBhMRQ
+DncLKvbdtlXwBUBX
+EObjjvbdVrOYBeMD
+EPCjjvbdcJNJkGWx
+DncLKvbdjKGHjNXr
+DncKjvbdRMwayOUz
+EObjjvbdzdzOzdyp
+DnbjjvbdNHColpVL
+DoDLKvbdNddThiLE
+EPDKjvbdFjdsCgmV
+DnbjjvbdTJZjRABM
+DncKjvbdOTTugFVQ
+DncLKvbdVYgszLPO
+DncKjvbdEARhlzWw
+EPDLKvbdUGzmkvvF
+DoDLKvbdmRyVZsEJ
+EObjjvbdptUHRqjt
+EOcKjvbdJpzFOeme
+DnbkKvbdMgDPmPtk
+EOcKjvbdhzUfMRNf
+DoDLKvbdpyPHgQdY
+DoCjjvbdZjShQHCG
+EOcKjvbdOTTvGeVQ
+EPCjjvbdRacdkiZL
+DnbjjvbdzitoodTU
+EOcKjvbdxxIjCPyk
+EObjjvbdunszqLPU
+EObjjvbdwjwDgzzG
+DnbkKvbdUyHtZkOn
+DnbjjvbdqvpMChyR
+DnbjjvbdmIctRUrB
+EObkKvbdNHCpMpUk
+DoDKjvbdeFPSCXCj
+EOcKjvbdtvOXjRTA
+DncLKvbdZGvdAPSi
+DoCjjvbdQcbaPpcr
+DoDLKvbdVUMselVj
+DnbjjvbdVgxWXgYz
+DoDLKvbdjAQHBQHK
+EOcKjvbdxxJKCPyk
+DnbkKvbdQdDApQcr
+DnbjjvbdqrUjmjaN
+EOcKjvbdJzofYEAN
+DoDLKvbdJvVGEFHJ
+EObkKvbdJcJbpjDY
+EPDLKvbdhanbdwRR
+EObkKvbdiZtfLqOG
+DoCjjvbdeOdsLTsr
+DoCjjvbdSLZFuGjs
+DoCjjvbdqTsfrRjt
+EObjjvbdACqxKZhp
+EPCjjvbdxZhFexEr
+EPDKjvbdiBoCeXRR
+DoDKjvbdqFcdtVaI
+DnbkKvbdkClLQgVH
+DnbkKvbdZQmEhldq
+DnbjjvbdQYmAGrqj
+DnbjjvbdiLddNuDZ
+DoDLKvbdsQWOjDWG
+EPDKjvbdVqnXaeLc
+DnbjjvbdwNWANEFN
+EPCkKvbdsBfNMHKy
+EOcLKvbdKQzFOfOF
+DoDKjvbdHELVibJj
+EPDKjvbdcImJkFwY
+DncKjvbdIwtBgkqQ
+EObkKvbdANHySvyx
+DoDLKvbdpxnhGqEY
+EPCjjvbdrafNMHKy
+DoDLKvbdSQTfiecw
+DnbkKvbdiMEdOUcZ
+EObjjvbdQmYCYnUz
+EPDLKvbdWIYWXfxz
+EPCjjvbdNeEThiLE
+EObjjvbdHDkWJaij
+DncKjvbdMgDQNPuL
+DncKjvbdKWUedFGi
+EPDLKvbdJYUCIMRQ
+EOcLKvbdRacdkhyL
+EPCkKvbdSBdEkhyL
+EPCkKvbdMRwMzUpz
+EPDLKvbdkxrqsYft
+EObkKvbdRkYetgLT
+EPCkKvbdNrsvHFVQ
+DoCjjvbdqiAKFNOe
+DoDKjvbddwystRez
+EOcKjvbdrylQTBHn
+EPDKjvbdDjHjWXjA
+EObjjvbdCIkCLJGK
+DnbjjvbdqwPlDJYq
+EPCjjvbdnVUzLKRf
+EOcLKvbdUxhUZjnn
+DnbjjvbdRpUHJecw
+DnbjjvbdjhGlFfNk
+EObkKvbdJKEAKPgE
+DoDLKvbdIidAKPgE
+DncKjvbdCSaCtGXS
+DoCjjvbdIidAKQHE
+DnbkKvbdFjdsCgmV
+DoCkKvbdGKeTCglu
+EOcKjvbdEzspeMDJ
+EOcLKvbdqUTgSSKt
+DoCkKvbdnBivwnmu
+DncLKvbdJcJcRKCx
+EPCjjvbdVwJXucdg
+DnbjjvbdKVuGEFHJ
+DncLKvbdnVUzKjSG
+DoCkKvbdqGDeTuaI
+DnbkKvbdLFfICBQu
+DnbkKvbdZjTIQGbG
+DoDLKvbddBrlrATm
+DncKjvbdYNqAXtut
+DnbjjvbdURROtuHm
+EObjjvbdxmrgxSiD
+DoCkKvbdjJfHjMwr
+DncLKvbdNwoVzdOU
+EPDLKvbdyTNhlqbH
+EObkKvbdiMEcnUby
+DoDKjvbdJcKCqJbx
+EPDLKvbdNrtVgEtp
+DncKjvbdjEkGtoAO
+DoDKjvbdNVSrKmAX
+EOcLKvbdxmsIYTIc
+EObkKvbdcTDKtDjB
+EPDLKvbdxsOIlrCH
+DnbkKvbdbrbjsdKB
+DoCjjvbdpfEEtWAh
+DoCkKvbdMowqVmfs
+EPCkKvbdeATqMxJf
+EObkKvbdjJehJmYS
+EPDKjvbdxmrhYSiD
+EObjjvbdjbkkQgUg
+DoCjjvbdYlRdUNlN
+DoDLKvbdiHKDZWJu
+DoDKjvbdpedEsvAh
+DoCkKvbdEuyPomJe
+EPCkKvbdhtyeWrVC
+DncLKvbdbAvEfQQX
+DnbjjvbdTkvPBWPJ
+DncKjvbdYlRdUOLm
+DncLKvbdCIjajiGK
+EPDKjvbdUtNTfLuj
+DnbkKvbdKVuFdEgJ
+DoDKjvbdfVzwoizs
+EPCjjvbdySmiMrBg
+EPCkKvbdrpWPJcVf
+DoDKjvbdcImJjewY
+DoCkKvbdkVvnECYX
+DncKjvbdWRnYCEkc
+DoDKjvbdCIkBjhfK
+EObkKvbdmIdURVSB
+DoCkKvbdTppoUuHm
+EPDLKvbdUQqOtuHm
+DnbkKvbdhgKDYvJu
+DnbkKvbdkHgLfFmk
+EPDLKvbdCDoaVjMf
+EPCkKvbdehKvSNqH
+DncKjvbdNeEUJJLE
+DncKjvbdlhdTqVSB
+EOcKjvbdEuxpPmJe
+DncLKvbdqceIpNua
+DnbjjvbdnVVZjjRf
+DnbkKvbdKDJcRJbx
+EObkKvbdnHEwlmgZ
+EOcLKvbdFWZQQMjF
+DoDKjvbdKWUedEgJ
+DoDLKvbdmozZVkZC
+DoCkKvbdZdxGzhJC
+EObkKvbdGQATWffZ
+EPCkKvbdJuuGDeHJ
+DoCkKvbdiGibxvJu
+DnbkKvbdBraDUGXS
+EPDLKvbdiHKDYvKV
+DnbjjvbdZxcjODMS
+DnbkKvbdnGdwlmgZ
+DoDKjvbdkxsRrxgU
+EOcKjvbdrzMQTAgn
+DncLKvbdjhHLfGOL
+DnbjjvbdQvnEClID
+DoDKjvbdqdEhomvB
+DoDLKvbdGdKvKCJj
+DnbjjvbdqvpLbiYq
+EObjjvbdsPvOjCuf
+DoDLKvbdVqnXbElD
+EPDLKvbdeEoRbXCj
+DoCkKvbdyYJKBoyk
+DoDLKvbdlhdURUqa
+EPDLKvbdYkqdTnMN
+DoCkKvbdnGdwmNgZ
+EObkKvbdGGKSOIsq
+EObjjvbdLLAgvAJy
+DnbjjvbdajlFnmcA
+DoDLKvbdiifHimYS
+EPCjjvbdnPzYukYb
+EPDLKvbdVYhTyjnn
+EOcLKvbdfNFwHNJk
+DoCjjvbdbrbkTcia
+DncLKvbdRkZGVHLT
+EObkKvbdSQUHKFdX
+EOcKjvbdSKxeuHKs
+DncKjvbdFxuUaDwb
+DoCkKvbdaSGDHtFk
+EPDKjvbdZyDimcLr
+EObjjvbdiGibxvJu
+EPCkKvbdDwwktTsl
+EPDKjvbdRadEkiZL
+EPDKjvbdmgEwlmfy
+DncLKvbdaogHDkzd
+EOcLKvbdjuvmdCXw
+EPDKjvbdqwPlCiYq
+DoDKjvbdLBLHNBxR
+EObjjvbdeFOrBvbj
+EPDKjvbdFyVVAdYC
+EPDLKvbdKNADygUa
+DncKjvbdbVCGxLUI
+DoCkKvbdJSyArmXl
+EObkKvbdQvnDbkgc
+EObjjvbdrEEiQOWB
+EOcKjvbdZMSDtOLm
+DoDKjvbdQvmccLhD
+EPCkKvbdrzMQTBHn
+EPDKjvbdMgCpNQUk
+DoDKjvbdmbJwYPOV
+EOcKjvbdgGLymgHA
+EObjjvbdsrqsYzFD
+EPDLKvbdrNZiyLgi
+DnbkKvbdiiegimYS
+DoDKjvbdqwQLcJYq
+EObkKvbdaNLCSuNH
+EPCkKvbdnUuZkJqf
+EPCjjvbdSCEEkiZL
+DncLKvbdVZHszKnn
+DnbjjvbdUtMsfLuj
+DoDKjvbdxmrgwriD
+DoCkKvbdxxJKBpZk
+EObkKvbdZMRdUNlN
+EObkKvbdbPgHDkzd
+EObkKvbdqqtjnLAm
+EPDKjvbdURROuUhN
+DoDKjvbdCWzdJFPv
+DoDLKvbdMSXMytpz
+DnbjjvbdqlyjZMHi
+DoDKjvbdbsDLUDia
+EOcLKvbduVnXiqTA
+DoCjjvbdDxYLsssl
+DoDLKvbdyqPMiJwA
+EObkKvbdeOdsLUUS
+EOcKjvbdEuyQQMjF
+DoDKjvbdEztQeMDJ
+EPCkKvbdGZVVBDxC
+DnbkKvbdnGdxNNgZ
+DoCkKvbdcIljLFvx
+DoCjjvbdYqMdhmEq
+EPDLKvbdgKfzbfAE
+EPCjjvbdJcKDRJcY
+EOcKjvbdOFDtJJLE
+DncKjvbdiLdcmuDZ
+EObkKvbdrWpLcJZR
+DnbkKvbdVAaqTQrZ
+DnbjjvbdFkFTChMu
+DncKjvbdaaWEepQX
+EPCkKvbdpedEsvAh
+DncKjvbdjAQGaPfj
+DoDKjvbdbUbHXkTh
+DoDKjvbdRjyFtfkT
+EOcLKvbdOTTvHEtp
+DoCjjvbdRkYfVGjs
+DncLKvbdzoQRFCkx
+DncKjvbdrMzJyMHi
+EOcKjvbdULvPBWOi
+EOcLKvbdzdynzdzQ
+EPCjjvbdtumxJpsA
+DoDLKvbdwMvAMcdm
+EOcLKvbdqceIonVa
+EObjjvbdOEdUIiKd
+EObjjvbdHELVjBij
+EObjjvbdqcdiPmvB
+DoCjjvbdJvVFdFGi
+EPDKjvbdWRmwaeLc
+EPDKjvbdZxdJnDMS
+DoDKjvbdZxdJnDMS
+EObjjvbdxUldpxkn
+DnbkKvbdSLYetfjs
+EPDLKvbdYqMeIldq
+DoCjjvbdrMyjYlIJ
+EObkKvbddxZtTqez
+EPCkKvbdWSNxCElD
+DoDKjvbdWWiYVcdg
+DoDLKvbdqGDdsvAh
+EOcLKvbdhzVFlRNf
+EOcKjvbdaNLCSuNH
+DnbkKvbdkHgMFfNk
+DnbkKvbddePRbXDK
+DncKjvbdNVTSKmAX
+EObkKvbdhzUfLpmf
+EOcKjvbdZMSDtNkm
+EPDKjvbdTqROtuHm
+DoCkKvbdddnqbXCj
+DoDKjvbdliEURVSB
+DncKjvbdtvNxKQsA
+DnbjjvbdqceJQOVa
+EPDKjvbdpyOggQcx
+EOcKjvbdtcDUvuoP
+EObjjvbdrWpMChxq
+EPDKjvbdGYttaEYC
+EObjjvbdiifIKNYS
+DoCjjvbdZyEJmcMS
+EPDLKvbdKQzFOfNe
+DoCkKvbdqYoIGpdY
+EPDLKvbdxwhibPzL
+EPDKjvbdRadElJYk
+DoDLKvbdtkwwAtAw
+EPCjjvbdDjHjVxKA
+EPDKjvbdrzLosBIO
+EPCkKvbdBdPaVimG
+DoCjjvbdrafMkfjy
+EPDKjvbdNGcPmQVL
+DoDLKvbdVviYVdFH
+EPCjjvbdkVwODaxX
+DncKjvbdkMbMZeGo
+EOcLKvbdfkGzbfAE
+DnbkKvbdpyOhHQdY
+DoDKjvbdQdCaPqES
+EObjjvbdEKHiuxKA
+DnbjjvbdpxnhGpcx
+DnbkKvbdkxsSSxgU
+DnbjjvbdURQnuUgm
+DoDLKvbdTukpJtBR
+EPCkKvbdqAiFAWgd
+DnbjjvbdgGLymfgA
+EOcLKvbdyYIibQZk
+DoDLKvbdWHxVxGxz
+EPDLKvbdFyVVAdXb
+DnbkKvbdrRuKnKaN
+DoDLKvbdTpqOttgm
+EPDKjvbdLhbLqYAS
+DoCjjvbdHELVjCKK
+DncLKvbdfSBWzlDP
+DoCkKvbdRDcBPpdS
+DoDLKvbdsQWPJcVf
+EPCkKvbdySmiMrCH
+EPCkKvbdbUbHXjtI
+DoDLKvbdUtMsfLuj
+EPCjjvbdEvZQPmKF
+EObjjvbddeOqbXDK
+EPDKjvbdkClKqGtg
+DncKjvbdqiAJdmPF
+EOcLKvbdlrZUyrci
+EOcKjvbdbBVeFpPw
+EOcLKvbdULvPBWOi
+EPCkKvbdcJMjLFwY
+DnbjjvbdZtIhxcsO
+EPDLKvbdSPtHJfDw
+EObkKvbdaNLBsUlg
+DoDLKvbdqvpLcIxq
+DoCkKvbdpxoIHQcx
+EPCkKvbdlZTRsZGt
+DoCjjvbderBWzkcP
+EPDLKvbdZtJIxdSn
+EOcLKvbdmoyyWKxb
+DoDLKvbduaDxroEh
+EPDLKvbddoErkTtS
+DncKjvbdnPzYvKxb
+EObjjvbdsZlPsAhO
+EPDLKvbdjJfHjMxS
+EOcLKvbdbsDLUDia
+DncLKvbdMuTSLNAX
+EPDLKvbdemGWfmKL
+EObkKvbdKefHbBQu
+EOcLKvbduVnXjRTA
+DnbjjvbdGZVUaEYC
+EOcKjvbdkNCMZeGo
+EPCkKvbdGKeSbgmV
+DoDKjvbdqrVLNjaN
+DnbjjvbdEASIlzWw
+DnbjjvbdeOdrkUUS
+DncKjvbdDjIJvXjA
+DoCjjvbdqGEFUWAh
+EPCjjvbdQcbaQRES
+DnbkKvbdhtydwSUb
+DoCkKvbdMuTRjmAX
+DnbjjvbdJutfEEfi
+EPCjjvbdzGxlAMeX
+DncLKvbdIHGyyYYH
+DoDLKvbdxUmEqZLn
+DnbkKvbdNHCpMotk
+DnbjjvbdFyVVAcwb
+EPCjjvbdShzJqABM
+DnbjjvbdcyxoxZRC
+EPCjjvbdqquKnLBN
+DncLKvbdcIlikFwY
+DoCkKvbdeOeSkTsr
+EOcLKvbdYpldhldq
+EPDLKvbdQYmAGsRj
+DoCkKvbdzGyMAMeX
+EPCkKvbdqrVKnLBN
+EObkKvbdxUldpxlO
+EPCjjvbdfIKuqnRH
+EPDKjvbdFWYpQMjF
+EPDLKvbdOFEUJJKd
+EOcLKvbdHEKvKBij
+DoDKjvbdjcMLRHUg
+EPCkKvbdWXIwudEg
+DncLKvbdgPazvcwh
+DnbjjvbdnVUykJrG
+EPCjjvbdxxJJbPyk
+DncLKvbdjJehKMxS
+DncKjvbdEzspdkbi
+EPDKjvbdrpVnjDWG
+DnbjjvbdVrOYCFLc
+DoDLKvbdMfbpMotk
+DncKjvbdbhljLGWx
+DncKjvbdxrmhlrBg
+EOcKjvbdbKlGPODA
+DoDKjvbdJvUfEFHJ
+EPCkKvbdySnIlqag
+EPDKjvbdVAbQrpqy
+DnbjjvbdrykosAhO
+DnbkKvbdKfFhCBQu
+DnbjjvbdEXwktTsl
+DoDKjvbdDoDLLXCd
+EObkKvbdvwMAvAvV
+EObkKvbdXsLaNUOx
+DnbkKvbdRDcBQRES
+EOcLKvbdZisIPgCG
+DoDKjvbdpfEEtWBI
+DoDKjvbdfoazwDwh
+EPCkKvbdFpASvffZ
+EObjjvbdRWnDblHc
+DoCkKvbdNxOuzdOU
+DncLKvbdYlSDtOLm
+EPCjjvbdjbkjqHVH
+EPCkKvbdrMzJxkgi
+EPDKjvbdCIkBjhfK
+EPCkKvbdUslsekvK
+EOcKjvbdFejRnJUR
+EPDLKvbdNHColotk
+EPCjjvbdUxgtZjnn
+DoDKjvbdEOcLLXCd
+EPCkKvbdkHflGFnL
+EPCjjvbdwygfFxEr
+DncKjvbdeOdrjtTr
+DoDLKvbdqTtHRqjt
+EPDLKvbdQwNdCkgc
+EPCkKvbdhzVGLpnG
+DoDKjvbdxwiKCPzL
+EPCkKvbdZirhQGbG
+DoCjjvbdqrUkOKaN
+DoDLKvbdlrZUysEJ
+DoCjjvbdqFdFUWAh
+DnbjjvbdyYJKCPzL
+DncKjvbdxUldpyMO
+EPCjjvbdvAcyTOeI
+EObjjvbdLFegaaRV
+DncKjvbdemFvgNKL
+EOcLKvbdjcLjqHVH
+DoDKjvbdRMxCYnUz
+EPDLKvbdRjxfUfkT
+DoDLKvbdiMEdNuDZ
+DoDLKvbdZRMdhmEq
+DoDLKvbdqlyiyLgi
+EObjjvbdiiehJmYS
+DoCjjvbdwuMeRYlO
+EPDKjvbdqquKmkAm
+EOcKjvbdlrYtysDi
+EPDLKvbdliETqUrB
+EObjjvbdePErkTsr
+DoDLKvbdfHjvRnQg
+EObjjvbdRXOECkgc
+EObkKvbdMpXqWOGs
+DncKjvbdEJhJvYKA
+DoCkKvbdVrOYBeMD
+EPDKjvbdTkvPBWOi
+EOcLKvbdjuvmcbYX
+DncKjvbdMfcQMouL
+EOcLKvbdMpXpvOHT
+DoCjjvbdiLdcmtcZ
+DnbkKvbdiHJcZWJu
+EPDLKvbdTqQnuUgm
+DncKjvbdLGFgbBQu
+EPDKjvbdNdctIiLE
+EPDKjvbdZxdKODLr
+DoDKjvbdSZjITCvA
+EPCjjvbdDwxMUTsl
+EPCkKvbdySmhmRag
+EOcLKvbdSPtHKGDw
+DoDKjvbdmIctRUqa
+DoDKjvbdaRfChTek
+DncLKvbdyNrhXsIc
+DncLKvbdJTZBSlxM
+DoDKjvbdFeirOIsq
+DnbjjvbdJutedFHJ
+DnbkKvbdUsltGMWK
+DnbkKvbdbhljLGWx
+EPCjjvbdirziTLJz
+EOcKjvbdnPzYvKyC
+DoDKjvbdkDMLRGtg
+DncLKvbdyzeNqhIh
+EPCjjvbdYTMAmUPY
+DoCkKvbdgGMZnHHA
+DncLKvbdlZSqsYft
+EOcLKvbdZjShQHCG
+DnbjjvbdjhGlGGNk
+DoDLKvbdkxsRryGt
+DoCjjvbdZyDjNbkr
+DnbkKvbdNeEUJIjd
+EOcKjvbdxxJJbPyk
+DoDLKvbdRbDeMIxk
+EObjjvbdrDeJPnWB
+EPCkKvbdrXPkbiYq
+EPCjjvbdeFPRbWbj
+DncLKvbdHffyxxYH
+EPDKjvbdcyyQYZQb
+DoCkKvbdNsTvGeUp
+EPCkKvbdfpBzwDxI
+EPCjjvbdqTtHRrLU
+EPCkKvbdhgJbxvJu
+EOcKjvbdkxsRryGt
+EPCkKvbdZshhyETO
+DnbkKvbdrWpLbiZR
+EObkKvbdnHExMmfy
+DnbkKvbdbUbGwkTh
+DnbkKvbdnHExMnHZ
+EObjjvbdZnmiFEyj
+EObkKvbdSQUGjGDw
+EPCkKvbdqTtGrRkU
+EObjjvbdcImKLGXY
+EObkKvbdShzJqAAl
+DncLKvbdGGJqnIsq
+DnbkKvbdehKuqmpg
+DncLKvbddeOrCXDK
+EOcLKvbdRMwbYmtz
+DnbjjvbdgFlZmgHA
+DnbkKvbdyOSgxTJD
+EOcLKvbdQZNAGsSK
+DoCkKvbdRMwayNtz
+DncLKvbdezvYeItX
+EOcLKvbdVAapsQrZ
+DoCjjvbdcImKLFwY
+DoDKjvbdTqQnttgm
+DnbjjvbdOEdUJIkE
+DoDKjvbdeYZssqez
+DnbjjvbdZjSgpHCG
+DoCkKvbdTvMPisaR
+EOcKjvbdZjSgofaf
+EPDLKvbdfVzwoizs
+DnbjjvbdCSaCsewS
+EPDLKvbdFVyPpMjF
+EObkKvbddjJrVtzn
+DnbjjvbdyOSgxTIc
+EOcLKvbdrovPKDVf
+DnbjjvbdxZhGGXeS
+DncLKvbdbLLeoNcA
+EOcKjvbdMfbomQUk
+EPDLKvbdaRebhTfL
+DoDLKvbdoAKztHcn
+EOcLKvbdGckWJbJj
+DncLKvbdqmZjYlHi
+DncKjvbdZyDinDLr
+DoCkKvbdxwhibPzL
+DnbkKvbdZoOJFFZj
+EPDLKvbdYpmEiMdq
+DoCkKvbdiUzFWquC
+DnbjjvbdsPvPJcVf
+DncKjvbdDwxMTssl
+EObkKvbdZQleJNEq
+DoDLKvbdWSNxBdkc
+DoCjjvbdcSbkTcia
+EOcKjvbdqvolChyR
+DnbjjvbdqlzJxlHi
+DoCjjvbdlrZUzTEJ
+EPCkKvbdGdLWJbJj
+EObkKvbdzoPqFDLx
+DncLKvbdANIYrwZx
+EObjjvbdSPsgJfEX
+DoCjjvbdbiNJjfWx
+DnbkKvbdMfbpNQVL
+EObkKvbddePRbXCj
+EPDKjvbdShzKRAAl
+DoDKjvbdnPyxukYb
+EObjjvbdVZITzKoO
+EPDLKvbdZyDinDMS
+EPCjjvbdYpldhmFR
+DoCkKvbdZjTIPfaf
+EObjjvbdqdEiPmua
+DnbkKvbdRadEkhxk
+EPDLKvbdzjVPpDrt
+DnbkKvbdaMkBsUlg
+DncLKvbdMpXpunGs
+DoDKjvbdUxgszLPO
+EPCkKvbdiiegilxS
+DoCjjvbdEOcKkWbd
+EOcLKvbdcTDLUEJa
+EPDLKvbdZtIiYcrn
+DoDLKvbdmttyjirG
+EPDLKvbdGdLVjBjK
+DncLKvbdDigjVxKA
+EPCkKvbdelfWflik
+DoDKjvbdOTUVfdtp
+DncKjvbdTlWOaVni
+EPDKjvbdrpWOibvG
+EPDKjvbdfRaWzlCo
+DncKjvbdlrYuZrdJ
+DoDKjvbdIsZBSlwl
+EPDLKvbdqquLOKaN
+DnbjjvbdJmAEZgUa
+EPCkKvbdcImJkFvx
+DncLKvbdkxrqsYft
+EPCkKvbdUWLojTaR
+DoDKjvbdnGeXlmfy
+DoCkKvbdiMFDmuCy
+EPDKjvbdauCHXjtI
+DoCjjvbdBsAcUGXS
+DoDKjvbdACrYJyhp
+DoDKjvbdsZlPsBHn
+DoDLKvbdjJegimXr
+DoDKjvbdWXIwvDdg
+DncKjvbdelewHNJk
+EObkKvbdyTOJMrCH
+DoCkKvbdNddUIiKd
+DoCkKvbdRyjHrbvA
+DoCjjvbdiGjCyWKV
+DoDLKvbdhlFEOVDZ
+EPCkKvbdQdDAoqDr
+DoDKjvbdBiLBjhej
+EOcKjvbdqlyjZLgi
+DncLKvbdtSrTYzFD
+DoCkKvbdrMyjYlHi
+EObjjvbdhficYuiu
+DoDKjvbdfekymgHA
+EOcLKvbdiifHjNXr
+EObjjvbdIwsaglQp
+DoCjjvbdCIkBkIfK
+EPDKjvbdaSFcHsfL
+DoDLKvbdMgDPlpUk
+EPDKjvbdqYnggQdY
+DoDKjvbdaSFbgsek
+DoCjjvbdiZtekqNf
+EPDLKvbdkClKpftg
+DoCkKvbduMYWaUAw
+EObkKvbdtTSTYydc
+DnbjjvbdptUGqrKt
+EObjjvbdYlRctNlN
+DncKjvbdMgDQNPtk
+DncLKvbdILaznXQk
+DoDLKvbdiCPDFWpq
+DoCkKvbdiGicZWKV
+DncKjvbdFjdrbglu
+DncLKvbdKWUfDeGi
+DoCjjvbdVhXuwgYz
+DoDKjvbdhtzFWquC
+EPCjjvbdRpTfiedX
+DoCkKvbdKVuFdEfi
+DoDLKvbdbBWEfPow
+DoCkKvbdZyDjODLr
+DncLKvbdeAUQmXif
+DoCkKvbdIidAKQHE
+EPCkKvbdTqROuVIN
+DncKjvbdRXODcMID
+DoDKjvbdkyTRsZHU
+EPCjjvbdxnTIXrhc
+EObjjvbdJzofXdAN
+EOcKjvbdiBncFWpq
+EObkKvbdYORAXuVt
+DnbjjvbdiMEdNtby
+EPDKjvbdVrOXbFMD
+EPCkKvbdAMgxrwZx
+DoCkKvbdtbbuXVoP
+EPCjjvbdDoCkKwCd
+DncLKvbdVBBpsRRy
+DoDKjvbdemGWgMik
+EObkKvbdeEnqbXDK
+EPCjjvbdhanbdvqR
+DnbkKvbdmaiwYOnV
+DoCjjvbdcJMjLGXY
+DnbkKvbdIryArlxM
+EPCjjvbdtkwvaUAw
+DnbkKvbdxZgefYFS
+EPCkKvbderBWzlDP
+EPCjjvbdNxPVzdOU
+EPDKjvbdaSGDHsek
+EOcKjvbdqcdhpOVa
+EPCkKvbdxmsHxShc
+DoDKjvbdDncKjwDE
+DoCjjvbdYpmEhmFR
+DncKjvbdaRfCgsfL
+EObjjvbdegjurNpg
+DnbkKvbdjhHMFenL
+EPCjjvbdMfcPmQUk
+EOcLKvbdACrYKZhp
+DoDKjvbdffMZmgHA
+DoCjjvbdaaVeGQQX
+EOcKjvbdSCDdkiZL
+EOcKjvbdqwPlCiYq
+DoDKjvbdajlGPODA
+DncLKvbdJYTbHkpp
+DncLKvbdtcDVXWOo
+EPCjjvbdEXxLtTsl
+EPCjjvbdJuteceGi
+DnbjjvbdDoCkLWbd
+DoCkKvbduCbtwWOo
+EPDLKvbdauBgYLTh
+EPCjjvbdOXoVzcmt
+DoCkKvbdRMxByOUz
+DoCjjvbdqYoIGqDx
+EPCjjvbdNGbpMpVL
+DoCjjvbdJpzFOfNe
+EOcKjvbdVAapsQrZ
+DncKjvbdpxoIHQcx
+EOcKjvbdRaceLiZL
+DncLKvbdtcCuWvOo
+EObjjvbdbBVeGPow
+DnbjjvbdKyRKSzuG
+EOcLKvbdFyVUaEYC
+EPDKjvbdkCkkRHUg
+EObkKvbdKaKfmBxR
+DoDLKvbdbUbGwjsh
+DnbjjvbdrovOjDVf
+EPCjjvbdZsiIyDsO
+EObjjvbdRDbaPqDr
+EOcKjvbdnBivwnmu
+EPCjjvbdYTMBMsoY
+DoDLKvbdxKwEHzzG
+EPCkKvbdqTsgRqkU
+EPDKjvbdfMfWgNKL
+DnbkKvbdznpREbkx
+DncKjvbdJXtCHlRQ
+EPDLKvbdGYuVBEXb
+EPDKjvbdZLrEUOMN
+EPDKjvbdtcCtvuoP
+EObjjvbdXsLaNUPY
+EPDLKvbdyOTIYSiD
+EObjjvbdsrrTYyeD
+EObjjvbdZisHpGaf
+DoDLKvbdvOszqLOt
+DncLKvbdaMjbSuNH
+DncLKvbdYTMBMsoY
+EPDKjvbdwzIGFxFS
+EPDLKvbdmRyUyrci
+DncLKvbdTkvPBWOi
+EPCjjvbdNdcsiIjd
+EPCkKvbdEzspdkbi
+EObkKvbdrovOicVf
+DoDKjvbdhbObeXQq
+DncKjvbdZnnIeFZj
+EObkKvbdRECaPpdS
+EOcKjvbdnGeXlnHZ
+EPCjjvbdauCGwjsh
+EPCjjvbdczYpXyRC
+EOcLKvbdDihJuxKA
+EOcKjvbdkVwNcbXw
+EObjjvbdbsCkTcia
+DoCkKvbdfMewHNKL
+DoCjjvbdxZgeexEr
+EOcLKvbdiBoDEwQq
+DnbkKvbdpstHSSKt
+EOcKjvbdQvmdClHc
+EPDKjvbdIxUBhLqQ
+EObkKvbdZtJIyESn
+EPCjjvbdtumwjQsA
+DoCjjvbdNPxQunHT
+EOcLKvbddndrkUTr
+EObjjvbdCTBCsevr
+EOcKjvbdiUzEwRuC
+EPDKjvbdRyigrbvA
+DoCjjvbdezvYeJTw
+EOcLKvbdVgxVxGxz
+DnbjjvbdZeXfzhIb
+DncKjvbdxZgfFweS
+DoCkKvbdKxqKSztf
+DncLKvbdpyOggREY
+EPDLKvbdXrlBNUOx
+EPCkKvbdqwPkbiZR
+EPDLKvbdbsCjscia
+DoDKjvbdnGeYMmgZ
+EOcLKvbdUsmTfLvK
+DnbkKvbdjuwOEBxX
+DnbjjvbdTAFJICPE
+DncKjvbdEuxoomKF
+EPDKjvbdeOdsLTsr
+EObkKvbdZshiYdSn
+DncKjvbdcTDKscjB
+DncLKvbdvwMBWAvV
+EOcKjvbdVwIwudFH
+EPDLKvbdlZTSSxgU
+EOcKjvbdMgColotk
+EOcLKvbdZdxGzgiC
+DnbjjvbdULuoBWOi
+EObjjvbdiCObeXQq
+EPDKjvbdNUsRkNAX
+DoCjjvbdZxcjOClS
+DncLKvbdiUzEwSVC
+DoDLKvbdvlvAMceN
+DoDLKvbdqcdhpOWB
+EObkKvbdCSaDUGWr
+DoCkKvbdssSTYydc
+DoCkKvbdnGdxMmgZ
+DoCkKvbdHELWJbKK
+DoDKjvbdKefHbApu
+EObkKvbdVqmwbFLc
+DoCkKvbdUtNTekuj
+EPDLKvbdTlWOaVni
+DoCjjvbdDxXkstUM
+EPCkKvbdpxoHfqEY
+EPDKjvbdmSYtzTEJ
+DoCjjvbdddnrCXDK
+EPCkKvbdZjTHpGbG
+DncLKvbdhzVGLqOG
+EPCjjvbdZjSgogBf
+EPDLKvbdkDLjqGuH
+DncLKvbdxUmFRZLn
+EPDLKvbdjhHMFfNk
+EPCkKvbdZjTHpHBf
+EObkKvbdegkVqnQg
+EPDLKvbdGYttaEXb
+EObjjvbdZdwfzhJC
+DoCkKvbdGQASwHFy
+EPDKjvbdkVvnDbXw
+EObkKvbdJYTagkqQ
+DoCjjvbdMSWlzVQz
+DoCjjvbdnGeYMmfy
+DoDLKvbdADRxKZiQ
+EObkKvbdZLqdTmkm
+EPCkKvbdFeirOItR
+EPCkKvbdRjyGVGjs
+DncLKvbdiMFDnUcZ
+EObkKvbdVAaqSpqy
+EPCkKvbdULunaVni
+DnbkKvbdcImKKevx
+DoCjjvbduaDyTPFI
+EPDKjvbdKQydoFnF
+EPCjjvbdozmcjwoA
+DoDLKvbdZLqdUNlN
+DoDKjvbdJXsbHkpp
+DoCkKvbdelfXHNJk
+EObjjvbdeFOqavcK
+EPDLKvbdqlyjZMIJ
+DoCjjvbdUtMsekvK
+DoCkKvbdIxUBhMQp
+EOcKjvbdemGWgMjL
+DoCkKvbdwuMeQyLn
+DncKjvbdkClKpgVH
+DoDKjvbdfNFvflik
+DncKjvbdhkdcmuCy
+DoDLKvbdCJKakIfK
+DnbkKvbdSQTgJfEX
+DnbkKvbdkIGlGFmk
+DoDKjvbdySmhlqbH
+DoCjjvbdGdLVibJj
+EPCjjvbdSLZGUfkT
+EPDLKvbdSKxfVHKs
+DoDKjvbdGLFSbhMu
+DoCkKvbdqFcdtWAh
+EOcLKvbdbVBfxLUI
+DoDKjvbdcScKsdKB
+DnbkKvbdVwJYWEFH
+EPCjjvbdGQASwHFy
+DnbjjvbdqUTfrRjt
+EPDLKvbdEYYMTtUM
+DoDLKvbdfNFwHNKL
+EObkKvbdsQWPJbvG
+EOcKjvbdIsYaSmYM
+EPDKjvbdBdQAuilf
+DnbkKvbdrounibvG
+EObkKvbdiCPCdvqR
+EOcLKvbdBsAbsfXS
+DoCjjvbduDDVWuoP
+EPCkKvbdbsCjtEJa
+EOcKjvbdcTDLTdKB
+DoCjjvbdXGYytAPT
+DnbjjvbdePFTLTsr
+EObkKvbddoErjssr
+EPCkKvbdcTDKsdJa
+EPDKjvbdjgflGFnL
+EObjjvbddeOqbWcK
+EObkKvbdACqwizJQ
+EObjjvbdHgGyyXxH
+DoCjjvbdqlzKZMHi
+DnbjjvbdhfibxvJu
+DoDKjvbdSCEFLiZL
+EPCjjvbdSCEFLiYk
+EObkKvbdiLdcmuDZ
+EObkKvbdzGyMAMeX
+EPDKjvbdVYhTzKoO
+EPCkKvbdxrmiNRag
+DoDLKvbdjKGHilxS
+EOcKjvbdhWyAzzAJ
+EPDLKvbdMfcQNQVL
+DncKjvbdYkqdTmlN
+DoDLKvbdjJfIJlwr
+EOcLKvbdZeYGzghb
+DncLKvbdJuuFceGi
+EPCkKvbdhzUelRNf
+DnbkKvbdBhkCKhej
+DoDLKvbdhbObeXRR
+DnbkKvbdzHZMAMdw
+DoDKjvbdZxcjNblS
+DoCjjvbdDwwksstM
+DoCkKvbdUVkpJtAq
+DoDLKvbdaaWEepPw
+DncLKvbdGdKvJbKK
+DoDLKvbdTulQJtBR
+DoDKjvbdqceJPnVa
+DnbkKvbdvAdZTOeI
+EOcKjvbdVAbRSqRy
+EPCkKvbdTqQnuVHm
+DoCjjvbdwNWANDeN
+DnbkKvbdZtIiYdSn
+EPCjjvbdPIAXyAZB
+EPCjjvbdZoOIeEzK
+DoDLKvbdmJETqUrB
+DoCjjvbdOFDtIiKd
+DnbkKvbdqvolDIxq
+DnbjjvbdmgFYNNfy
+DncLKvbdieLHUoAO
+EPCkKvbdDnbkLWcE
+DoCjjvbdmJETpuSB
+DncLKvbdiiegjNXr
+EPDKjvbdZQldiMeR
+EOcKjvbdZHXEAPTJ
+EObkKvbdWHwvXfxz
+DnbkKvbdxUleRZLn
+DnbkKvbdtvNxKQsA
+DoDKjvbdOStWHEuQ
+DnbkKvbdsBellHLZ
+DoDKjvbdsCFllGkZ
+EPDKjvbdjhGlGGOL
+DncKjvbdxxJKBoyk
+DncKjvbdrXPkcJYq
+DoCkKvbduVnXipsA
+DoDKjvbdjKGHjMwr
+DoDKjvbdbBWEfPpX
+EOcKjvbdznoqEcMY
+DoCkKvbdySnJMqbH
+DoCjjvbdlrZVZsDi
+EPDLKvbdKfFgbApu
+DoDLKvbdZRMdiNFR
+EObjjvbdpeceUWAh
+EObkKvbdRotHKFcw
+DncKjvbdiZuFkpmf
+DoDKjvbdnGdwmNgZ
+DoDKjvbdMoxRVnGs
+DoDLKvbdiVZeXRtb
+EOcKjvbdGAoRYizm
+DoDKjvbdJJdAJpGd
+DoDKjvbdwMvANEFN
+DnbjjvbdaaWFFpQX
+DnbjjvbdqlzKZMIJ
+EPDLKvbdxnShXsJD
+DncLKvbdMfcPlotk
+DncLKvbdURRPVUhN
+DnbkKvbdHgGzZXxH
+EOcLKvbdYlRctOMN
+DncKjvbdnHEwlnGy
+DoDKjvbdlYsSTZGt
+EOcKjvbdZxcjNcLr
+EObjjvbdmttyjjSG
+EObkKvbdffLynHHA
+DnbkKvbdmpZxvLZC
+DncLKvbdBhjakJGK
+DoCkKvbdpstHSRkU
+EPDLKvbdiLddOVCy
+EOcKjvbdxUleQyLn
+EPCkKvbdTukpKTaR
+EOcLKvbdjvXOECYX
+EObjjvbdRWnEDLgc
+EObkKvbdbhljLGWx
+EPCkKvbdZoOJEdyj
+DnbkKvbdqrVKnLAm
+DoDKjvbdVAbRTRRy
+DnbkKvbdhfjDZWKV
+EOcLKvbdkWXOECYX
+DnbkKvbdYTLaMsnx
+EObjjvbdZRNFImFR
+DncLKvbdCWzdIdpW
+EOcLKvbdpyPIGqDx
+DoDLKvbdiCOcFWpq
+EPCjjvbdhtzFXSUb
+Dnbjjvbdlqxtyrci
+DoCkKvbdiZtelROG
+EPCkKvbdVUNUFkvK
+DnbkKvbdNddUJJLE
+DoCkKvbdNdctIhjd
+DnbkKvbdcyyQYZQb
+EObkKvbdQmYByNtz
+DoDLKvbdVrNxBeMD
+EPCjjvbdCTBCsevr
+DncLKvbdtSrTYyeD
+DnbjjvbdRyigsDWA
+DncLKvbdJYUBglQp
+DoDKjvbdSPsfiedX
+DoCkKvbdADRxKZiQ
+EPDLKvbdrEFJPmvB
+DnbjjvbdvAcyTOdh
+EOcKjvbdaMjasUmH
+DoDKjvbdZjSgogBf
+DnbkKvbdnGeXmOGy
+DnbjjvbdMgComPuL
+EPCkKvbdxKvcgzzG
+DncKjvbdwtldpyMO
+DoDKjvbdbhlikGXY
+EPCkKvbdpyPIHREY
+DoDLKvbdkClLRHUg
+EPDKjvbdqFdFUWBI
+EOcLKvbdkxrqrxgU
+DoDLKvbdTvLoitAq
+DoCjjvbdJuuFcdfi
+EPCjjvbdrykpTAhO
+EPCjjvbdiZuFkqNf
+EObjjvbdEuxpQNKF
+EPCjjvbdGGKSOJUR
+EPCkKvbdcyxowxqC
+DnbjjvbdjhGkeemk
+EPDKjvbdijGIJmYS
+DnbkKvbdypnliKXA
+EOcKjvbdRadFLhyL
+EPCjjvbdxwiKCPyk
+DoCkKvbdfILVqnQg
+DoDLKvbdkNCLzEgP
+DoCkKvbdGKdrbglu
+DnbkKvbdJcJcRJcY
+DoDLKvbdIwsahMRQ
+DnbkKvbdNddUIhjd
+EPCkKvbdJuuGDdgJ
+EPDLKvbdjKGHjMwr
+EObkKvbdGdKvKCJj
+DncKjvbdNUrqkNAX
+DoDLKvbdTqQoVVHm
+DoDKjvbdNddTiIkE
+EPCkKvbduaEZTPFI
+DnbjjvbdFWYopMie
+EObjjvbdyXhiaozL
+EPCjjvbdhaoDFWpq
+DncKjvbdJJdAKQHE
+DoDKjvbdegkVrOQg
+DnbjjvbdwuMdqYlO
+EPCkKvbdLKaHvAJy
+DoDKjvbdRbEFLiYk
+DoDKjvbdSxLMNzjx
+DnbkKvbdGKdsChMu
+DncKjvbdACrYJzJQ
+DoCjjvbdbUafwkUI
+DncKjvbdzjVPpDrt
+DnbjjvbdFfKSOJTq
+EPDKjvbdHffyyXxH
+EOcLKvbdRkZFtgLT
+EOcKjvbdXsMAmToY
+EOcLKvbdNPwqWNfs
+DoCjjvbdEuxpPljF
+DncLKvbdjJfIJlxS
+DoCjjvbdhgJbxuiu
+EPCkKvbdrDdhpOWB
+DnbkKvbdwWlBWAuu
+EObjjvbdySmiMrCH
+EPCjjvbduWOXjRTA
+DncLKvbdRDbaPqES
+EPCkKvbdjEkHVPAO
+EPDLKvbddiiqvUzn
+EPDKjvbdyYJKCPyk
+DncKjvbdNeEThiKd
+DncKjvbdrbGMlGkZ
+EOcKjvbdOTTvHEuQ
+EObjjvbdFyVUaEYC
+EPCkKvbdbiMikFwY
+EPDKjvbduaDxsPFI
+DncLKvbdozmckYPA
+DoDLKvbdVYgsykPO
+DoCjjvbdQvnDbkgc
+DncKjvbdZLrDtNkm
+DoDKjvbdHfgZyYXg
+DoDKjvbdauCGwkUI
+DoDKjvbdmJDsqVSB
+EOcKjvbdhgJbyWKV
+EPCjjvbdrouoKDWG
+DoDKjvbdQmYCYnUz
+DoDLKvbdfHkVqmpg
+DoCjjvbdZjShPfaf
+DoCkKvbdIGfzYxYH
+EPDKjvbdZRMeJNFR
+EPCjjvbdRpTgKFdX
+EPCkKvbdEYYMUUUM
+DncLKvbdwuMdqZLn
+EOcKjvbdmuVZkJqf
+DncKjvbdhgJbyWJu
+DnbjjvbdKVuFcdfi
+EPCkKvbdRadElIxk
+EPCkKvbdYlSDsmkm
+DoDKjvbdhlFEOVDZ
+DoCjjvbdIsZBSlwl
+DoDKjvbdLAkGmCXq
+DoDLKvbdqwQMCiYq
+EPDKjvbdURROtuIN
+DoCjjvbdpxoHgREY
+DncKjvbdwXLaWAuu
+EObjjvbdrpWPJcWG
+EPDLKvbdmozYvLYb
+EPCkKvbdMowpunGs
+DnbkKvbdANHySvzY
+DncLKvbdZyDinDLr
+DoCjjvbdziuPpESt
+EPDKjvbdiVZeXRuC
+EPDLKvbdDncKkWbd
+EOcLKvbdFVxopNJe
+DncLKvbdACqxJzIp
+DncKjvbdaMkCTUlg
+DoCkKvbdhyuGMQnG
+EObjjvbdbBWFFpPw
+EObkKvbdTAEiICPE
+DoDKjvbdbUagXjtI
+DoDLKvbdGZUuAcwb
+DoDKjvbdnGdwlmgZ
+DoDLKvbdVBCRSpqy
+DnbjjvbdfIKvRnRH
+EObkKvbdaRebgsek
+DnbjjvbdNVSrLNAX
+EPDKjvbdrJAKEmPF
+DnbkKvbdBdQBWKNG
+DoCjjvbdePFTLUUS
+EPCkKvbdRDcAoqDr
+DncLKvbdrNZiyLhJ
+DoCkKvbdLqwNZtpz
+EPDLKvbdlqxtzTEJ
+DnbkKvbdrRtjmkBN
+EPCkKvbdZRMeJNEq
+DnbkKvbdZsiJYdTO
+EObjjvbdUtMtGLvK
+EOcLKvbdnCJwYOnV
+DncLKvbdUMWPAuni
+EOcKjvbdJcJbpjDY
+DoCkKvbdcImKLGXY
+EObkKvbdYSlAmTnx
+DncLKvbdCTBCtFvr
+EObjjvbdqlyjYlIJ
+DoCkKvbdmSZUzSci
+DoDKjvbdjEjfuPAO
+EPCjjvbdWfYzUAPT
+DnbjjvbdzROmJJwA
+EObjjvbdnQZyVjyC
+DncKjvbdjAQGaPgK
+EObkKvbdtTSTZZeD
+DoDLKvbdZLrETnLm
+DncKjvbdCDpAujNG
+DncKjvbdUyHsykOn
+EPDLKvbdeXystRez
+EPCjjvbdlrZUyrci
+EPDKjvbdwjvcgzzG
+EPDKjvbdnHExNOGy
+EOcKjvbdZLqdTmlN
+EPCkKvbdEuxopMjF
+EObjjvbdJYTaglRQ
+EPCjjvbdrWpLbiZR
+EPCjjvbdNxOuzcnU
+DoDLKvbdijFhKNXr
+DnbkKvbdKWVGEFHJ
+DnbkKvbdKCicQjCx
+DoCkKvbdcScLTdKB
+EOcKjvbdKWUecdfi
+DoCjjvbdiLeDmuDZ
+DncKjvbdySnJNSCH
+EPDLKvbdZshhyDrn
+DnbkKvbdssSSxydc
+EOcLKvbdqrUjnLBN
+EPDKjvbdGdLWKCKK
+EObjjvbdsQWPJbuf
+DoDLKvbdJcKDRJcY
+DoCjjvbdZoNiEeZj
+DnbkKvbdGFjSOJTq
+EPDLKvbdxxJKBozL
+DoDKjvbdBraDUGXS
+EPDKjvbdJbjCpicY
+DoCjjvbdVqmwbEkc
+EPDKjvbdijFhKMwr
+EPDLKvbdrSVLNkBN
+DoCkKvbdiUzEvquC
+EPCjjvbdWIYVxGxz
+DnbkKvbdZoOIdeZj
+DncLKvbdZRMeJNEq
+EObjjvbdZMSDtOMN
+DnbjjvbdRWnDcLgc
+DoDLKvbdmRxtzTDi
+EOcKjvbdJmADygUa
+EOcKjvbdxUmFQyMO
+EOcLKvbdOTUWHEtp
+DoDLKvbdZRNFJMeR
+EOcLKvbdxmsHxShc
+EPCkKvbdUxhTykPO
+DoCkKvbdelfWfljL
+EPDLKvbdFejSOJTq
+EPCkKvbdKefIBaRV
+DncKjvbddeOqbXDK
+EOcKjvbdhlEcnUcZ
+DoCkKvbdZtJJZETO
+DnbjjvbdSPtHJfDw
+DncLKvbdOFDtIhkE
+EPDLKvbdFyVVAcwb
+DoCjjvbdqTtGqqjt
+EOcLKvbdyTOIlrCH
+DnbjjvbdACrYKZiQ
+DoDLKvbdvmWAMceN
+DoDKjvbdLBLHNCYR
+EPCkKvbdIxUCHlQp
+EPDLKvbdQmXayNtz
+DoCjjvbdKRZdoFme
+DncLKvbdZoNiEdyj
+DoDKjvbdqqtkOLBN
+EPCkKvbdiZuFkpmf
+DncKjvbdEPCjkXCd
+DoDKjvbdbVBgXjsh
+DoCjjvbdmRyUzSdJ
+EObjjvbdMJCLpxAS
+DoCjjvbdwWlBWAvV
+EPDKjvbdNHCpMouL
+DncKjvbdEOcLKwDE
+DoCjjvbdwjvcgzzG
+DnbkKvbdNGbpNPtk
+DoDLKvbdZGwEAOri
+EObjjvbdaRfDITfL
+DoDKjvbdVvhwudEg
+EPCjjvbdHgGyxwwg
+DncKjvbdcJMikFwY
+EObjjvbdwMvAMdEm
+EOcKjvbduMYXBUAw
+EPDLKvbdpfDeTuaI
+DoDKjvbdssSSxzEc
+DnbjjvbdjblLRHUg
+EOcLKvbdVwIxWDeH
+EPCkKvbdLGFgaaQu
+EPDKjvbdBiKakIfK
+DoDLKvbdEOcKjwDE
+EOcKjvbddijRvUzn
+DoCjjvbdmaivxPOV
+DnbkKvbdMfcQNPuL
+DncLKvbdZtIiZDsO
+DoDLKvbdhlEcmuDZ
+EOcKjvbdIGfzYxYH
+DncLKvbdICLydzAD
+EPDLKvbdMfcPmPuL
+DnbjjvbdrRuKmjaN
+DnbkKvbdbsDKscjB
+DoCkKvbdhkddNtcZ
+EOcLKvbdNQXqVnGs
+DoDLKvbdrEFIonVa
+DoCjjvbdQvnDcMID
+EPCjjvbdjlalZeGo
+EPCkKvbdjJfIKNYS
+EObjjvbdREDBPqES
+EPCjjvbdiZtfMRNf
+DoDKjvbdADRxJyiQ
+DncLKvbdYkqcsnMN
+DncLKvbdZshiZDsO
+DoDLKvbdRNXayNtz
+DncLKvbdqcdiPmvB
+EPCkKvbdrNZixlHi
+EPCjjvbdwtmFRYlO
+EObkKvbdJTZBTNXl
+EOcLKvbdWRnXadkc
+DoDLKvbdvwMBVaVu
+DoDKjvbdlZSrTYgU
+EPDLKvbdQcbaQRDr
+DoCjjvbdhuZdvrUb
+DnbkKvbdZxdKOClS
+DncKjvbdJzoexEAN
+EOcLKvbdQvmdDLhD
+DncLKvbdunszpkPU
+EOcKjvbdiZuGMQnG
+DncKjvbdVZIUZkOn
+DoDLKvbdkxsRsYgU
+EPCjjvbdGQASwGey
+DncKjvbdnBivwoNu
+EPDLKvbdsBelkfjy
+DoDLKvbdddoRbWbj
+EPCjjvbdhancFXQq
+EObkKvbdJvUfEEfi
+EPDLKvbdIidAKPfd
+DoDLKvbdxVMdpxkn
+DoCjjvbdaNLCTVNH
+DnbkKvbdZyDinDMS
+DoDLKvbdrMzJyLhJ
+EPDLKvbdyXhiaozL
+DoCjjvbdGKeTDHlu
+DncKjvbdwzIGFxFS
+EObjjvbdJvUedEfi
+DncLKvbdIjEAJpGd
+DncKjvbdyTNiNRbH
+EOcKjvbdidkGuPAO
+DoDLKvbdkVvmcbXw
+DoCjjvbdJYTbHkpp
+DoDLKvbdFyVVBEYC
+EPDLKvbdmoyyVjyC
+EOcKjvbdcTDKtDjB
+EPCjjvbdEvYpPmJe
+DoCjjvbdCJLCKhej
+DoCjjvbdSKxfUgLT
+DoDLKvbdFjeTDINV
+DncLKvbdEXxMUTtM
+EOcKjvbdWRnXaeMD
+DoCjjvbdrMzJyLgi
+DoCkKvbdcSbkUEKB
+DnbkKvbdyzeOSIIh
+DncLKvbdpstGqrKt
+EPDKjvbdCJLBkJGK
+EOcLKvbdJcJcQjDY
+EPDLKvbdbLLfPNcA
+DnbjjvbdEASImZwX
+DnbjjvbdtumwiqTA
+DnbkKvbdxKvdHzyf
+DoCjjvbdVwIxWDeH
+DncLKvbdYzcFqjVy
+EPDKjvbdqiAJeMoF
+DoDLKvbdNQXqVmfs
+EPDLKvbdFjdsChNV
+DoCkKvbdOTUWGdtp
+EOcKjvbdOEdUIiKd
+EOcLKvbduaEZSoFI
+EOcLKvbdxsNhlrBg
+EObkKvbdcIlijfXY
+DoDLKvbdLqvlytpz
+DoDKjvbdIryBTNXl
+EObjjvbdQwOECkhD
+DoCjjvbdLFegaaQu
+EObkKvbdFkFTChNV
+DnbjjvbdyzeOSHiI
+EObjjvbdLAkHNCYR
+DnbkKvbdZyDimcMS
+DncKjvbdkMbLzEgP
+DnbjjvbdRbEEkhyL
+EOcKjvbdLrXMzVQz
+EOcKjvbdVBBqTRRy
+EObjjvbdyNsHxTIc
+EPCjjvbdMuTRkNAX
+DoCkKvbdUaCQrprZ
+EPCjjvbdjmCLydfo
+DoCjjvbdFyVVAcxC
+EPCjjvbdQvnDblID
+DnbjjvbdLhbLqYAS
+DncLKvbdFxuVBEYC
+DncKjvbdGLFScIMu
+DncKjvbdBvzcheQW
+EPDLKvbdSPsfjFcw
+DnbkKvbdsQWOibvG
+DnbkKvbdaSGChTfL
+EPDLKvbdjmBkzFGo
+DoDLKvbdqAiFAWhE
+EPDLKvbdkVwNcaww
+DoCkKvbdKRZePGOF
+EOcLKvbdJXtCIMRQ
+EPCkKvbdaNLCTUmH
+EPDLKvbdliDtRUrB
+EOcLKvbdKfGHbApu
+EObkKvbdDwwlTstM
+DoDLKvbdmgExMmfy
+EOcLKvbdKWUfEFHJ
+EPCjjvbdkxrqrxft
+DncLKvbdkClKqHUg
+DoDKjvbdVqnXadlD
+DoDLKvbdULvPBWPJ
+DoDKjvbdUslsfMWK
+EOcLKvbdJvVFdFGi
+DncKjvbdiifHilxS
+EPCkKvbdRaceMJYk
+DoCkKvbddwytTrFz
+EPDLKvbdYkrETnLm
+DoCjjvbdiMEdOUby
+DoCkKvbdxVMeQyLn
+EPCkKvbdwuMdpxlO
+EPDLKvbdNPxQumfs
+DncKjvbdYpleJNEq
+DncKjvbdTAEhhCPE
+EOcLKvbdUGznLwVe
+EOcKjvbdNPwpunHT
+EPDLKvbdKaLHNBwq
+EOcLKvbdFfKRmhtR
+EObkKvbdYlRcsmlN
+DoDLKvbdWSOXadlD
+EOcLKvbdWWiXucdg
+DoCkKvbdZsiIxcsO
+DoDLKvbdbhlikFvx
+EOcKjvbdtlYXAsaX
+EOcLKvbdUtNTelVj
+DoDKjvbdhaoDFXRR
+DoDLKvbdEuxoomJe
+DoDLKvbdEYYLtTsl
+DncLKvbdbhmJkGWx
+EPDLKvbdqwPkbhxq
+DnbjjvbdlrYuZsEJ
+DncLKvbdeKKSWUzn
+DnbkKvbdyTNiNSCH
+DncKjvbddwzTsqez
+DncLKvbdTXkMNzjx
+DoDKjvbdJmAEZgUa
+DncKjvbdeEnqavbj
+EPDLKvbdcJNJjfWx
+DncLKvbdPyNAGsRj
+DoCjjvbdLGGHbAqV
+DncKjvbdddoRbWcK
+DoDLKvbdZjTHogBf
+EPDLKvbdRkZFuHKs
+EOcLKvbdEuyPoljF
+EPDKjvbdEYYMTtUM
+DncKjvbdDxXlTssl
+DnbkKvbdQvmcblID
+EObkKvbdjmBkydgP
+DoCkKvbdOAJTUKSA
+DncKjvbdhgJbxvJu
+DoDKjvbdVvhxVceH
+DoCkKvbdjvXODaww
+EPDKjvbdemFvflik
+DoDKjvbdkCkkRGtg
+DoCjjvbdDigjVxKA
+DncLKvbdLAjgNCYR
+EPDKjvbdbUbGwkTh
+EObjjvbdmuUzLJrG
+DnbjjvbdmgFXlnGy
+DoCkKvbdFxttaDwb
+EPCjjvbdJcKDRKCx
+DoCkKvbdpfDeUWAh
+EPDLKvbdADSYJyhp
+DoCjjvbdHkazmvqL
+DnbkKvbduLxWaUBX
+EPCkKvbdQdCaPpdS
+EOcLKvbdZdwfzhIb
+EPDKjvbdKWUeceGi
+EPDKjvbdSCDeMJZL
+DoDKjvbdyOShYShc
+EObjjvbdliEURVSB
+DncLKvbdmgEwlnGy
+DnbkKvbdsBemMHKy
+DoDKjvbdYzcGSJvZ
+EObkKvbdGcjvKBjK
+EOcLKvbdJuuGDdgJ
+EPCjjvbdOStWGeUp
+EOcLKvbdGLEsChMu
+EOcLKvbdeATqNYJf
+DncLKvbdxxIjCQZk
+EObkKvbddZyQXyQb
+DoDKjvbdVBCRTRRy
+EPCjjvbduDDVWuoP
+EOcKjvbdVZHtZkOn
+EPCjjvbdZQmEhmFR
+DnbkKvbdZyDimcLr
+EPDLKvbdjblKqHVH
+EOcLKvbdZtIiZDsO
+DnbkKvbdRWmcbkhD
+EPCjjvbddneSjtTr
+DoCkKvbdZQmFJMdq
+DoDLKvbdLFegbBRV
+EOcKjvbdSwkMNzjx
+DoCjjvbdFjeTDHlu
+EPCjjvbdtSqrxydc
+DncLKvbdSPtHKFcw
+DncLKvbdyYJJapZk
+EOcKjvbddxZssrFz
+EObjjvbdfekzOGgA
+EPDKjvbdrylQSaHn
+DnbjjvbdZisHofbG
+EObjjvbdrbGNMHKy
+DnbkKvbdLBKfmBxR
+DncKjvbdACqxJyhp
+DncLKvbddijRutzn
+EPDLKvbdMpYRVmfs
+DncLKvbdmttzKiqf
+DnbkKvbdZnmhdeZj
+EPCkKvbdjKFgjNYS
+DnbjjvbdxnTHxShc
+EPCjjvbdlZTSTYgU
+DoCjjvbdqlyjYkgi
+EObkKvbdxVMeQyMO
+EPDLKvbdSPtHJecw
+EPDLKvbdrpWOibvG
+EObkKvbdRbEFLhyL
+DoCkKvbdYNqAYUvU
+DoCkKvbdnCKXXnnV
+EObkKvbdddoSBvbj
+DncKjvbdNGcPlpUk
+DnbkKvbdmajXXnmu
+DoCjjvbdJXsbHlQp
+DncLKvbdNGcPlouL
+DoCkKvbdTAFJHaoE
+EPCjjvbdnPyxvKyC
+EPCkKvbdRyihTDWA
+DncLKvbdQlxCZNtz
+EObkKvbdJSyAsMwl
+DoCjjvbdmttykJrG
+EPCkKvbdfpBzwEXh
+DoCjjvbdrzMQTBIO
+EPDKjvbddZxowyRC
+DncKjvbdaNKaruNH
+DnbjjvbdaNKasVMg
+DncKjvbdcbTNSATm
+EPCkKvbdiLdcnVDZ
+EObjjvbdYTLaMtOx
+EOcKjvbdEASIlzWw
+DnbjjvbdziuPodTU
+EOcLKvbdqUUHRqkU
+DnbkKvbdyNsHxSiD
+EObjjvbdhkeDnUcZ
+EOcKjvbdNHCpNQUk
+EPDLKvbdIryBSmYM
+DnbkKvbdfekynGgA
+EOcLKvbdiHKCyWJu
+EObkKvbdrMzKYlIJ
+DoCjjvbdsZkoraIO
+EOcKjvbdQccAoqES
+DoCjjvbdtTRrxzFD
+EPCjjvbdJXtBhMRQ
+DnbjjvbdsBfNMHKy
+DnbkKvbdeEnrBwCj
+DoDLKvbdTfzmkvvF
+DoCjjvbdCJLCLIej
+DnbjjvbdNUrrLNAX
+DoCkKvbdxsNiNRag
+EPCjjvbdtbcUwVoP
+DoDKjvbdaogHDkzd
+DncKjvbdpedFTuaI
+DnbjjvbdqYngfpdY
+DncKjvbdbiNJkGWx
+DoCjjvbdGckVjBij
+EObkKvbdqceIomvB
+EPDLKvbdFWZQQNJe
+EObkKvbdrRtkOLAm
+DncKjvbdDwwktUTl
+EObkKvbdwNWAMceN
+DncKjvbdZMSDtOLm
+EObjjvbdTkvPAuni
+DoDLKvbdUxhTykPO
+EOcLKvbdVBCQsQqy
+EPDKjvbdZshhxcrn
+DnbjjvbdqdEiQOWB
+DoDKjvbdkWWmdBww
+DoDLKvbdzQoMhiwA
+DnbjjvbdUGzmlXWF
+DncKjvbdJTYaTMwl
+DoDKjvbdGLFScHmV
+DoDKjvbdrWpLcJZR
+EOcKjvbdwNWAMcdm
+EObkKvbdmfeYNOGy
+EObkKvbdtcDUwVoP
+DnbjjvbdiZuGMQmf
+EObjjvbdfMewGmJk
+DnbjjvbdANIZTWyx
+DncKjvbdtTSSxydc
+DnbkKvbdsBfMkfjy
+DoDKjvbdSLYfUgKs
+DoDLKvbdZisHogCG
+EObkKvbdVTlsfMVj
+DncKjvbddZyPwxpb
+DncLKvbdAMhYsXZx
+DncLKvbdxwhjCPzL
+EOcKjvbdKRZeOeme
+DoCkKvbdunszqLOt
+EPDKjvbdZRMdiMdq
+DnbjjvbdEuxpPljF
+EPDLKvbdGGJrOJUR
+EPDKjvbdVviXudEg
+DnbjjvbdpfDeTvBI
+DncLKvbdRadElJYk
+EPDKjvbdaMjbSuMg
+EPDLKvbdTAEhhCOd
+DncLKvbdTIyiqABM
+EPCkKvbdBsBDUFvr
+DoCjjvbdcSbkUEJa
+EObjjvbdCIjbKhfK
+DoDKjvbdauCHXjsh
+DoCkKvbdpyPHfqEY
+EOcLKvbdDwxMUUUM
+DnbjjvbdGFjRmiUR
+DoDLKvbdbQGgELzd
+EOcKjvbdGGJqnItR
+EPCjjvbdxrnJNRag
+DoDLKvbdbhmJkFwY
+EPDKjvbddoFSkTtS
+DncKjvbdNUsSKmAX
+EPCjjvbdfelZmfgA
+DoCkKvbdjKGIJlwr
+EPDLKvbdJYTaglQp
+EPCkKvbdVrOXbFMD
+EPDKjvbdTpqPUuIN
+EPCjjvbdGckViaij
+DnbjjvbdczZQYYqC
+DoDKjvbdMtrqkNAX
+EObkKvbdaNKartmH
+EPDKjvbdmSZUysDi
+EOcLKvbdlhdURVSB
+DncKjvbdWRnXbEkc
+DncLKvbdLBKfmBwq
+EPDKjvbdZdwfzhIb
+EPCkKvbdhancFXRR
+EObkKvbdaSFbgtGL
+DncLKvbdJXsaglQp
+DncLKvbdUsltFlVj
+DoDKjvbdLBKfmBwq
+EPCkKvbdnVVZjirG
+EObjjvbdiZuFlROG
+EObkKvbdwygeeweS
+EPCkKvbdwjvcgzyf
+DnbkKvbdssRsYzFD
+DnbjjvbdxwiJaoyk
+EPCjjvbdVhYWYHYz
+DncKjvbdhzVFkpnG
+DncLKvbdeJjSVtzn
+DncLKvbdyYIjCPyk
+EPDLKvbdJpzEoGNe
+DncKjvbdnBiwXoNu
+EOcKjvbdVrOYCElD
+EObkKvbdLBKgNCXq
+EPDKjvbdTlWPBVni
+EPDKjvbdFxuVBDxC
+DncKjvbdnHFXlnGy
+EPCjjvbdYkrDtOMN
+DoCkKvbdUWMPjTaR
+DoCjjvbdjSziSjiz
+DnbjjvbdeOdsKtUS
+EPCkKvbdmfdwmOHZ
+EObjjvbdtSrTYydc
+DnbkKvbdRjxeuGkT
+EObkKvbdKeehCApu
+EOcLKvbdpxoIGqEY
+DncKjvbdbLMGOnDA
+EPCkKvbdEXwktUUM
+EObkKvbdiUzFWqtb
+DoCjjvbdiHKCyViu
+EObkKvbdvwLaWAuu
+DoDLKvbdiCPDEvqR
+EOcKjvbdWXJXvEEg
+DoCkKvbdqTtGrSLU
+DnbkKvbdtbbuXWOo
+EObjjvbdgGLzOGgA
+DncKjvbdTlVoBWPJ
+DoCkKvbdeEoRbWcK
+DoCkKvbdkWWmdCXw
+DncKjvbdehLWRmpg
+EPCkKvbdjFLGtoAO
+DoDKjvbdGLFScIMu
+EObjjvbdrRtkOKaN
+EPCkKvbdczZQYYqC
+DnbjjvbdfHkVqnRH
+EOcLKvbdtvNxKRTA
+EPCkKvbdADSYJyiQ
+EOcKjvbdmJETptrB
+EOcLKvbdURQoUtgm
+DoDLKvbdZMSDtOMN
+EPCjjvbdFfJqnIsq
+EOcKjvbdcJNKKfWx
+DnbjjvbdkySqrxft
+DncLKvbdJpyePFme
+DncKjvbduCcVXWPP
+EOcLKvbdxKvcgzzG
+DoDLKvbdpfEEsvAh
+EObkKvbdZyDjNblS
+EPCjjvbdhbPDEwRR
+EPDLKvbdTqQoUthN
+DoDKjvbdxnSgxShc
+DoCkKvbdcTCjscjB
+DoCkKvbdOTUVfeVQ
+DncKjvbdkMbMZeHP
+DncLKvbdEvYpPmKF
+DncLKvbdJTZBTNYM
+EObjjvbdIHGyxxYH
+EOcKjvbdraemLfkZ
+EOcKjvbdMpYRVmgT
+DncKjvbdxZgfFxEr
+DnbkKvbdpxoIGpcx
+EPCkKvbdkIGlGFnL
+DoDKjvbdUslselVj
+DnbjjvbdZnnJEdzK
+DncLKvbdehLVrORH
+DoCjjvbdySmhlqbH
+DoDLKvbdADSXiyhp
+DoDKjvbdZtJJZDrn
+DoCjjvbdezvZEiUX
+EOcLKvbdqTtHSRkU
+EPDKjvbdVgxWXgYz
+DoCjjvbdGZUuBDwb
+DncLKvbdhzUekpnG
+EPCjjvbdZxcinDMS
+EPCkKvbdOFEThiLE
+DoDLKvbdhzVGLqOG
+EObjjvbdkySqryGt
+DoDKjvbdmpZyVkYb
+DoCjjvbdnHFYMnGy
+EObkKvbdRotGjFcw
+EPDKjvbdjblKpgUg
+EOcLKvbdWWiYVdFH
+DoDLKvbdtbcVXVoP
+EPDLKvbdqqtkOLAm
+EPDLKvbdmRyUysEJ
+DnbkKvbdxnShYTJD
+DoDLKvbdGKeSbhMu
+DoCkKvbdjuwODbXw
+DncLKvbdaMkCSuMg
+DncKjvbdtbcUvuno
+DnbjjvbdiVZeWqtb
+DoCjjvbdLBKgNBxR
+EObkKvbdlZSqrxgU
+EPCkKvbdULunaWOi
+DoCkKvbdwzIGGYEr
+EPCkKvbdnHExNOHZ
+EObjjvbdpyOgfqEY
+DnbjjvbdpedFUWAh
+DoCkKvbdhaoDFXQq
+DnbkKvbdYqMdhleR
+DnbjjvbdsZkpSaIO
+EPDKjvbdJcJbqJbx
+EObjjvbdehKvRmqH
+EOcLKvbdmIdURVSB
+EPDLKvbdvOszqKoU
+EOcLKvbdZisIQGbG
+DnbjjvbdFyVUaDwb
+EPCjjvbdTAEiIBoE
+DncLKvbdRkZFtgKs
+EOcLKvbdzdynzdyp
+EOcLKvbdnUtykKSG
+DoDKjvbdZQmEhldq
+EOcKjvbdnBjWxOnV
+EPCkKvbdqvpLbiZR
+DoDKjvbdrykosBIO
+EOcLKvbdBiKbLJGK
+EPDLKvbdBvzciFPv
+DoCjjvbdemFwGlik
+EPDLKvbdqTsfqqjt
+DncLKvbdptUHRrLU
+EObkKvbdbUbGwjsh
+DoCkKvbdHffyyXwg
+EPCjjvbdgGMZnHHA
+EPDKjvbdFejRmhsq
+DoCkKvbdQvmdCkgc
+DncLKvbdyNsHxShc
+DoCkKvbdrDeIpOWB
+EObkKvbdYzcGRiuy
+DncKjvbdMowqWNfs
+DoDLKvbdbsDLTcjB
+EPCkKvbdZQmEiNEq
+EObjjvbdNPwqWNfs
+DoDLKvbddeOrBwDK
+EObkKvbdrNZixkgi
+DoDKjvbdtlXvaUBX
+DncKjvbdtunYKRTA
+EOcLKvbdfSBWzkcP
+EObjjvbdVAbRTQrZ
+DnbjjvbdcJNKLFvx
+DncKjvbdssRsYyeD
+DoDLKvbdqTsgSSLU
+EPCkKvbdMowqVmgT
+DoCjjvbdDnbjjvbd
+EPCkKvbdlhdURUqa
+DncKjvbdqrVLOLAm
+DoDKjvbdNHDQNQUk
+EPCkKvbdXsLaMtOx
+EPCkKvbdRosgJfDw
+DncLKvbdKVuFcdgJ
+DoCjjvbdGGKRnItR
+DnbkKvbdeEnrCWcK
+EPDLKvbdlZSrTYgU
+EPCjjvbdtSrTYyeD
+DoCkKvbdZisHpHCG
+DnbjjvbdbrbkUDia
+DnbkKvbdhficYvKV
+EOcKjvbdsBfMlHLZ
+DoDKjvbdBdQBVjNG
+DnbkKvbdTvLpKUAq
+DoCjjvbdzaAPGgCM
+EObjjvbdiVZeWrVC
+EPCjjvbdZshiYcrn
+EObjjvbdRNXbYnUz
+EObkKvbdBcpBWJlf
+DncKjvbdtbcUvuoP
+DoCkKvbdmfeXmNgZ
+DncLKvbdbPfgELzd
+DncKjvbdZshiYdSn
+EObkKvbdDjHiuwjA
+DoDLKvbdfIKvRnRH
+DnbjjvbdiLeDmtcZ
+DoDLKvbdQwNcblID
+EObkKvbdmRyUzSdJ
+DnbkKvbdnHFYMnHZ
+EOcLKvbdfHjvSORH
+DncLKvbdlZSrSyHU
+EObkKvbdtSrSxzFD
+EObjjvbdZyEKNcLr
+EObkKvbdRkYeuHLT
+EOcKjvbdTkuoAuoJ
+DnbjjvbdEPDKkXCd
+EPCkKvbdnCJwXoOV
+EObjjvbdxrmiMqbH
+DoDLKvbdRaceMIyL
+EPDKjvbdRosgKFdX
+DoCjjvbdzoQQeDMY
+DncKjvbdZyEJmcMS
+DoDLKvbdOFDshiLE
+EPDKjvbdSQUGiedX
+EPCkKvbdTIyjRAAl
+EObjjvbdxUmFRYkn
+DncKjvbdmpZyWLYb
+DoCkKvbdygZMANEw
+DoDLKvbdhuZeWquC
+EObkKvbdFyUuAcxC
+DoCkKvbdiCPCeXQq
+DncKjvbdsCFlkfkZ
+EPCjjvbdNPwpvOHT
+DoCjjvbdSPtGjGDw
+DncLKvbdAMhZSvyx
+EPCkKvbdWXJYWDdg
+EPDKjvbdaogHDkzd
+DoDLKvbdRosgKFcw
+EPDLKvbdrRtjnKaN
+DncKjvbdvBEZSoEh
+DoDLKvbdmajXYOmu
+DnbjjvbdfNFwHMjL
+EPCkKvbdezuyEhtX
+DoCkKvbdHffzZYYH
+EPCkKvbdvAdYsOdh
+EPCjjvbdhlFDnVDZ
+DncKjvbdbiNKLFvx
+DoDLKvbdMIalQxAS
+EPDLKvbdGckWKBjK
+EOcKjvbdvOszqKnt
+DoCkKvbdraelkgKy
+EOcKjvbdMgComPtk
+DoDKjvbdOSsugFVQ
+DoCkKvbdyNrhYTJD
+EPCjjvbduDDVXWOo
+DncLKvbdiCPDFXRR
+DncLKvbdiGibyWKV
+EOcLKvbdfNGXHNJk
+EObkKvbdBhjakIej
+EPCjjvbdxmrhXriD
+DnbkKvbdJbibqKDY
+DnbkKvbdSCDdkhyL
+EPCjjvbdGFirOIsq
+DnbkKvbdKVtfDeHJ
+DoDKjvbdGKdrbhMu
+DncLKvbdZLrETmlN
+EObjjvbdjuvmcbXw
+DncKjvbdQdDApRDr
+EObkKvbdeATplwjG
+DoCjjvbdZMRdUNkm
+DoDKjvbdTqQoVVIN
+EPCkKvbdOTTufeVQ
+EPDKjvbdWRnXadlD
+DncKjvbdZsiJYdSn
+DoCkKvbdZLrDsnMN
+DoDKjvbdEKHiuwjA
+EPDLKvbdnBivxPOV
+EPCjjvbdddnrCWbj
+EOcLKvbdpssgSRkU
+EPCjjvbdzdzOzdyp
+EPCjjvbdZxcinClS
+DoDKjvbdvAcySoEh
+DnbjjvbdWHxWXfxz
+DoDLKvbdCWzdJEpW
+DoCjjvbdehLVqnRH
+EObjjvbdEXxLstTl
+EObjjvbdkMakzEfo
+EPCkKvbdKaKflbXq
+EPDLKvbdijFgjNYS
+DoCjjvbdZsiIxdSn
+DncKjvbdeATqNXif
+DncLKvbdzoPqEblY
+EObkKvbdLAjgNBwq
+DncKjvbdUxgsykPO
+DoDKjvbdaogGckzd
+DncKjvbdFVxpPmJe
+EOcLKvbdZLrDtNlN
+EObjjvbdYNqAXuWU
+DoCkKvbdEYYLstUM
+EObjjvbdeFPSBwDK
+DncKjvbdePEsKssr
+DncKjvbdZjTHogCG
+EPCkKvbdjKGHjNXr
+DoCkKvbdNrtVgFVQ
+DncLKvbdaMjaruNH
+DoDLKvbdwjwEHzzG
+EOcLKvbdTIzJqABM
+DoDLKvbdliETqVSB
+DoDLKvbdNrtVfdtp
+DnbjjvbdZxdKNcMS
+EPDLKvbdbUafxKsh
+DoCkKvbdVrNxCFMD
+DoCkKvbdxZgefYEr
+DoDKjvbdYTLaMsoY
+DncKjvbdeAURMwif
+EOcLKvbdNGcPmQVL
+EPDKjvbdqceJQOVa
+DncKjvbdRotHKGEX
+DoCjjvbdwNWAMdFN
+EPCkKvbdFyVVAcwb
+DoDKjvbdmozYvKyC
+DncKjvbdSPsgJecw
+EPDKjvbdZtJJYcrn
+EOcLKvbdGckWKCJj
+DoDKjvbdkxrrSxft
+DnbjjvbdRbDdlIxk
+DncKjvbdyYJJbPyk
+DnbjjvbdhgJcYvKV
+EObkKvbdjcLjqHUg
+EObkKvbdhgJbyWKV
+EObjjvbdrovPKCvG
+DoCkKvbdbBVdepQX
+DnbjjvbdUVkojTaR
+EPCkKvbdbUagYLUI
+DoDLKvbdptUGqqkU
+DoCjjvbdyTNhlqag
+DncKjvbdEYXlTssl
+EPCkKvbdXFxytAOs
+EOcLKvbdNdctIhkE
+EPDLKvbdkDMLRGuH
+EPDLKvbdDihJuxKA
+EOcLKvbdrafNMHLZ
+EPDLKvbdbKlFoODA
+DncLKvbdZLqcsnMN
+DnbjjvbdznpRFDLx
+DncLKvbdziuQPdSt
+EPCkKvbdbrcKsdKB
+DncLKvbdaMkCTUmH
+EPDLKvbdYkqdUOLm
+DoDKjvbdjhHLfGNk
+DoDLKvbdZMSDtNlN
+DnbjjvbdZjTHpHCG
+DoCkKvbdemFvgNKL
+DncKjvbdrRtkOLAm
+EPCjjvbdyNrhXsIc
+EObjjvbdgPazwDwh
+DoDKjvbdRDcAoqDr
+DoDKjvbdvvkaWBWV
+EOcKjvbdZRMdiNFR
+EPCkKvbddePRawCj
+DoCkKvbdHDjvKBij
+DnbkKvbdZirgpGbG
+EOcKjvbdhbPCeWqR
+DnbkKvbdNPwpvNfs
+EPCjjvbdZirhPfbG
+EOcLKvbdIGgZxwxH
+EPCkKvbdrykosBHn
+DoDKjvbdxnTIYShc
+DnbjjvbdNsTvGduQ
+DncLKvbdBcpAvJlf
+DnbjjvbdlqxtysDi
+DoCkKvbdOEdTiIjd
+DncKjvbdfHkVrOQg
+DoCkKvbdiHKDYvKV
+DoDKjvbdOTUVgFUp
+EObkKvbdaaVdfPow
+DncLKvbdZHXEAPTJ
+DnbkKvbdkIHLefNk
+DnbkKvbdjEjfuPAO
+EObjjvbdhtzFWqtb
+DoDLKvbdSQTfjFdX
+DncLKvbdHEKvKBjK
+DncLKvbdHDkVjBij
+EPDKjvbdRpTfiecw
+DnbkKvbdiBncEwQq
+EObkKvbdRadEkhyL
+EPCkKvbdezvYdiTw
+EOcKjvbdaMjasUlg
+EObkKvbdczZPwyQb
+EPCjjvbdTvMQJtAq
+EPCjjvbdJXtCIMRQ
+DoDLKvbdkDMKpftg
+EPCjjvbdiVZdvqtb
+DnbkKvbdtunXipsA
+DoCjjvbdjJehKNYS
+DnbjjvbdJvUeceHJ
+DoDKjvbdKRZdoFme
+DncLKvbdJcKCpjCx
+EPDKjvbdmbKXYPNu
+DnbjjvbdkIHLeenL
+EPDLKvbdNPxQunHT
+DnbjjvbdUtMtFkvK
+EPDLKvbdsPvPJcWG
+EObjjvbdMRvlzVQz
+DoCkKvbdsQWOjDWG
+DnbjjvbdXGZZtAPT
+DnbjjvbdunszpkOt
+DncKjvbdxZhFfXdr
+DnbjjvbdRzJgsCvA
+EPCkKvbdSCDdlIxk
+EPDKjvbdREDBPqES
+DnbjjvbdBvzdIdov
+DoDLKvbdSLYetfkT
+EObjjvbdKWVGDeHJ
+DoCjjvbduDDUvuoP
+EOcLKvbdWIYWXgYz
+DoCjjvbdbhmJjfWx
+EPDKjvbdIxUCILpp
+EOcLKvbdeXzTsrFz
+EPDLKvbdsBemLgKy
+EPCkKvbdzjVPpDrt
+DncLKvbdZyDimbkr
+DnbjjvbdRNYBxmtz
+EPCkKvbdvOszpkPU
+EObkKvbdSQTfiedX
+DncKjvbdZRNFIldq
+DoDKjvbdbhlijfXY
+EObkKvbdEzspeLcJ
+EPCjjvbdKCicRJbx
+EOcLKvbdOYOuzcnU
+DoCkKvbdhkddOVDZ
+DncKjvbdIxTahMQp
+EOcLKvbdwygeexFS
+EPCjjvbdKRZeOeme
+EPDLKvbdgPazvcxI
+DncKjvbdfNFwHMik
+EOcLKvbdtkwvaTaX
+EObjjvbdURQnuVIN
+DnbkKvbdiBncFWqR
+DncLKvbdaMkCStmH
+EPCjjvbdZjSgogBf
+DoDKjvbdMowpvOGs
+EPCkKvbdsrqsZZdc
+DnbkKvbdRpTfjFdX
+EOcKjvbdaMjbTVMg
+EOcLKvbdmgExMmfy
+DncKjvbdCJLCLJGK
+DoCkKvbdNeDshiKd
+DnbkKvbdGLFSbgmV
+EObjjvbdMtrrLNAX
+EOcKjvbdpedEsvAh
+DoDKjvbdcyxpXyQb
+EObkKvbdxZhGGXdr
+DoCkKvbdEztQdlCi
+EObkKvbdijFgilxS
+EPDLKvbdkHgMFenL
+EOcLKvbdlrYtysDi
+DncLKvbdjcLjpgVH
+DoCjjvbdnVVZkKRf
+EPDKjvbdFeirNhsq
+DnbkKvbdjblLRGuH
+EPDLKvbdtTSTZZeD
+DoDKjvbdVBCRTRSZ
+DncKjvbdTYLMNzjx
+DoCkKvbdEztQdkcJ
+EObjjvbdpfEFTuaI
+DncLKvbdYSlAmUPY
+DncKjvbdYpldiNFR
+DncLKvbdWXIwvDdg
+DoDLKvbdeXyssrFz
+DncLKvbdqdEhonVa
+EOcLKvbdNQYRVnGs
+EObjjvbdRpTgKGDw
+DoDKjvbdauCHXkUI
+DoDLKvbdhficZViu
+DnbjjvbdzoPpeCkx
+DoCkKvbdJYTaglQp
+DoDKjvbdnBiwYPNu
+EOcLKvbdMJCLqYAS
+EPCjjvbdYkrDsnMN
+EPCkKvbdehKvRmqH
+EObkKvbdVqmxCFMD
+DncKjvbdrDeJPmvB
+EPDLKvbdzaAOgHCM
+EOcLKvbdNPxQvNfs
+DncLKvbdFVxopMie
+EPDKjvbdgQBzwDwh
+EObjjvbdTfzmkvvF
+EPDLKvbdUaBprpqy
+DoCkKvbdnGdxNOGy
+DncLKvbdfIKurOQg
+EPCkKvbdKDJcRKCx
+EPCjjvbdmJEUQuSB
+DncLKvbdrafNMGjy
+EOcKjvbdZxdKNbkr
+DnbkKvbdJmADzGuB
+EPCjjvbdQvmdDMID
+DnbkKvbdemGWgNJk
+DncKjvbdyfxlAMdw
+EPCkKvbddtAUATNW
+DncKjvbdcasMrATm
+DoDKjvbdVhYVxHYz
+EPCjjvbdhyuFkpmf
+DoDLKvbdcbTMrATm
+EPCkKvbdILaznXRL
+DoDKjvbdRDbaQQcr
+DncKjvbdijFgjNYS
+EObkKvbdIMBznXRL
+EPCjjvbdxVNEpyLn
+DncLKvbdYkqctOMN
+EOcKjvbdxrmiNSBg
+EPDLKvbdtTRsYzFD
+EOcKjvbdzjVQQDsU
+EPCjjvbdZMRctNlN
+DncKjvbdXrlAmTnx
+EOcLKvbdbPgGdLzd
+EPDLKvbdFfJqmhsq
+EOcLKvbdyzdmqgiI
+DoCjjvbduCbtvuoP
+DncLKvbdNGcPlpVL
+EPCjjvbdGBOpyJzm
+EPCkKvbdRDcBPpcr
+EOcLKvbdRbEFLhyL
+EOcLKvbdePFTLTsr
+EObkKvbdcTCkUDjB
+DnbkKvbdrWokbhxq
+DncLKvbdqUTfrRjt
+EOcLKvbdRyihTDWA
+EObkKvbdpxnhHQdY
+DnbkKvbdrSUkOKaN
+DoCjjvbdIGgZyYXg
+DoDLKvbdMowqWNfs
+DoDKjvbdUxgtZkOn
+EObjjvbdUtNTelVj
+EObjjvbdlqxtyrdJ
+DncKjvbdkVvnDbYX
+EObjjvbdePFTKssr
+DoCkKvbdMuSrLNAX
+EOcLKvbdnQZyWLZC
+DoDKjvbdhgJcYujV
+DoDLKvbdaMjasVMg
+EPCjjvbdcScLUDia
+DnbjjvbdbKkeoNcA
+DnbkKvbdfpBzwEYI
+DoCkKvbdBhkBjhej
+DnbjjvbdkDMLRGtg
+EObkKvbdeATqNXjG
+EOcKjvbdFkFSbglu
+DnbjjvbdznpQdcMY
+DncLKvbdIidAJpHE
+DoCjjvbdLZQirzuG
+DnbjjvbdzjUopDrt
+EOcLKvbdnUuZjiqf
+DoDLKvbdwyhFeweS
+DoCkKvbdaoffckzd
+EObkKvbdzaAPGgCM
+EObkKvbdEzspdkcJ
+DnbjjvbdDjHiuxKA
+DnbkKvbdVqmxBdlD
+EOcLKvbdrJAKFMne
+EOcKjvbdZjSgofbG
+EPCjjvbdfMfWgNJk
+DoCkKvbdTukpJsaR
+DoCjjvbdySmiNSBg
+DnbkKvbdzGyMANFX
+EObkKvbduWNxKQsA
+DoDKjvbdRkZFuHLT
+DncLKvbdbKlGOmcA
+DncLKvbdyNsIXsJD
+DnbkKvbdMpXqWNfs
+DoCkKvbdHEKujBjK
+DncLKvbdDxXktTsl
+EPCkKvbdACrYJyiQ
+EOcKjvbdqUUHSRjt
+DoDLKvbdOFDsiJLE
+EObkKvbdrbGMlGjy
+DoCjjvbdjblKpgUg
+EPCkKvbdiHJcYujV
+EPDKjvbdrDeJQNvB
+EPDLKvbdbrbkTdJa
+DnbkKvbdNeDtIhkE
+DnbkKvbdcJNKKevx
+EPCjjvbdxVNFQxkn
+EObjjvbdhyuGLqOG
+EOcKjvbdrafMkfkZ
+EObkKvbdRkYetgKs
+DnbjjvbdUWLoitBR
+DoCjjvbdQvmcblID
+EOcLKvbdDoDLLXCd
+DncLKvbdzRPMiJwA
+DoCkKvbdsZkoraHn
+DoDKjvbdkHgMGFnL
+EObkKvbdrbFmMGjy
+DnbkKvbdRWnDbkhD
+EPDKjvbdJbicRJbx
+DncKjvbdGZUuAcwb
+DoCjjvbdmfdwmNfy
+DoDKjvbdBdQAujNG
+EPDLKvbdwWlAuaVu
+DncLKvbdxmrgxSiD
+DoCkKvbdUsmUFkuj
+EOcKjvbdcTDKsdKB
+DnbjjvbdjcLkRHVH
+DoDKjvbdbiMijewY
+EPCjjvbdPyNAHSrK
+DnbjjvbdFkErcINV
+EPDKjvbdZQldhmFR
+EPDKjvbdTJZjRABM
+EOcKjvbdKaKgMaxR
+DoCjjvbdwzHefYEr
+DoDLKvbdDwxLtUUM
+DoCkKvbdfILWRmpg
+DoCkKvbdRyihTCvA
+DoDKjvbdSQUGjFcw
+DoCjjvbdEYXktUTl
+EPCjjvbdoznEKxPA
+EPDLKvbdSiZiqABM
+EObkKvbdVUNUFkuj
+DncKjvbdMfbpNQUk
+DncLKvbdEvYopMie
+DnbjjvbdMowpvNgT
+DncLKvbdKjaHvAKZ
+DoDKjvbdqmZjZMIJ
+EObjjvbdGcjuibJj
+DoDLKvbduLwvaTaX
+DoCkKvbdHgHZyYYH
+EObjjvbdEOcKjwCd
+EPCjjvbdGckWKCKK
+EObkKvbdEuyQQMie
+DnbjjvbdHgGzZYYH
+EObjjvbdVUMsekuj
+EObkKvbdWWiXucdg
+EPDKjvbdRWnECkgc
+EPDKjvbdxZgefYFS
+DnbkKvbdEuyPomKF
+EPCjjvbddePSCXCj
+DoDKjvbdUsltFlWK
+DnbkKvbdbsDKtEJa
+EObkKvbdmoyyWLZC
+DoDKjvbdSCDeMJZL
+DnbkKvbdwtleRYkn
+EPDLKvbdJpzEnfNe
+DncKjvbdZisIQGbG
+DoCjjvbdiUzEwRtb
+DncKjvbdrounicVf
+DncLKvbdmIdURVRa
+DoDKjvbdYSlBNUPY
+DnbjjvbdKDKDQibx
+DoDLKvbdnCJvwoOV
+EPDKjvbdgFlZmfgA
+DoDKjvbdTukojTaR
+DnbjjvbdVAbQsQqy
+EOcLKvbdtAHRIABS
+DnbjjvbdmbJvwnnV
+EOcKjvbdvBDxrneI
+DnbjjvbdeJirWUzn
+DnbjjvbdKeegaaQu
+DnbjjvbdzQoMiKXA
+DnbjjvbdxwiJbPyk
+EPDLKvbdKNADzHUa
+DoCkKvbdANHyTXZx
+EObkKvbdxLXDgzyf
+EOcKjvbdpxoHgQcx
+DncKjvbdLBKflawq
+EPDKjvbdhanbdwQq
+DnbkKvbdEASIlyvw
+EPCkKvbdwzHfGYEr
+EOcLKvbdqZPHgQdY
+EPDKjvbdqTtGqqjt
+DoCjjvbdDxXksssl
+DoDKjvbdQlwayNtz
+EOcKjvbdTvLoitAq
+DnbkKvbdirzhsKiz
+EPDKjvbdyzeORghh
+DncLKvbdmJDsqVRa
+DncLKvbdKefICAqV
+EOcLKvbdZnmheFZj
+DoDKjvbdIxUCILpp
+DncLKvbdxsOIlrBg
+DoCkKvbdiVZdvqtb
+EPDLKvbdbBWEfQPw
+EObkKvbdsCFllGkZ
+EObkKvbdNdctIiKd
+EObjjvbdozmcjwoA
+EPDLKvbdlhdTqUqa
+EOcKjvbdbUagYKsh
+DnbkKvbdJpydoGOF
+DnbkKvbdnGeYMmfy
+DncKjvbdtlXwBUAw
+DncKjvbdqiAJdlne
+EPCkKvbdMIakqYAS
+DnbkKvbdCWzchdov
+EObkKvbdelewHNJk
+EPCjjvbdFpASvgFy
+DoDLKvbdVrNxCFMD
+DnbkKvbdMpYQvNfs
+EPCkKvbdEObkKwDE
+EPDLKvbdHDjuibJj
+EPCjjvbdKaLHMaxR
+DoDKjvbdakLfOmcA
+EPDLKvbdMgDQNQVL
+DoCjjvbdEvYpQNKF
+EPDKjvbdrEEhpOVa
+EOcLKvbdOFDsiIjd
+DncKjvbdtTSTYyeD
+EObjjvbdQvnDblHc
+DoDKjvbdVrNwbElD
+EPCjjvbdZMRdUNkm
+DoCjjvbdhfibxujV
+DnbjjvbdYpmFJMeR
+DncLKvbdDihKVxKA
+DoCjjvbdrNZjYkgi
+EOcLKvbdYqNFImEq
+DoDLKvbdJbjDQjCx
+DoDKjvbdwygefXeS
+DncLKvbdUyHsykPO
+DncLKvbdJSyBTMxM
+EPDKjvbdcImKKfXY
+EPCjjvbddndsLTtS
+DoDLKvbdEASIlzWw
+EObjjvbdrylQTAgn
+DoDKjvbdFkFTChMu
+DncLKvbdUaCQrprZ
+DnbjjvbdOFEThhjd
+EObjjvbdlYsRrxgU
+EPCkKvbdnGeYNOGy
+DoDKjvbdwygefYEr
+DoCjjvbdGckViajK
+DoDKjvbdSZjITDWA
+EObjjvbdkWXNdCXw
+EPCkKvbdKjaIWAJy
+EObkKvbdKkBIWAKZ
+DoDLKvbdptTfqrLU
+DoDKjvbdPxmAGsRj
+EObkKvbdTvMPitBR
+EPCkKvbdegjvSOQg
+DoDKjvbdwNWANEEm
+EOcLKvbdRNXbYmtz
+DoDKjvbdEOcKjwDE
+EPDLKvbdfMfXHMik
+DoCkKvbdWHwvXfxz
+EPCjjvbdelfWgNKL
+EPCjjvbdqcdiQOVa
+DncKjvbdkyTSTZGt
+DoCkKvbdbAueFpPw
+EOcKjvbdQwNdClHc
+DnbjjvbdxmsIYSiD
+EPDKjvbdCTAbtFwS
+DncLKvbdJpzFOeme
+EOcKjvbdiZuGLqOG
+DncKjvbdKaLHMaxR
+EPDLKvbdbiMjLFvx
+EPCkKvbdjvXODaxX
+EOcLKvbdOAJSsirA
+EPDKjvbdqYnhHQdY
+DoCkKvbdDwwlTtUM
+DnbkKvbdRjxfVHKs
+EObjjvbdzjUpPcrt
+EOcLKvbdeUAUATNW
+EObkKvbdQlwaxmtz
+EObkKvbdEXxLtUUM
+EObkKvbdYkrETmkm
+DoCkKvbdxmsHwsIc
+DoDKjvbdzjUoocrt
+EPDKjvbdqGEFTuaI
+EPCjjvbdbiMjLGXY
+EPDKjvbdfpBzwEXh
+DncKjvbdZeYGzhJC
+DoCjjvbdFkEsCglu
+DncKjvbdOFDshhjd
+DncKjvbdZMRcsnMN
+EPCkKvbdrEFJPnVa
+DoCkKvbdcyyPxYpb
+EPDLKvbdijGIKMwr
+DoCjjvbdbAudepQX
+DncLKvbdFejSOItR
+EOcKjvbdSLZGVHLT
+EPDKjvbdMJBkpxAS
+DncKjvbdJXsaglQp
+DnbkKvbdjcMLRHVH
+DoCkKvbdFjeTCgmV
+DnbjjvbdqUTfrRkU
+DnbjjvbdznoqFCkx
+EObkKvbdVqnYBeLc
+DoDLKvbdaMjbTVMg
+DoCkKvbdSQUHKFdX
+DoCjjvbdrDdhomua
+DncLKvbdcTCjsdJa
+DoCkKvbdsCFlkgKy
+EPCkKvbdmbKWwnmu
+DoCjjvbdZQmFImEq
+EPCkKvbdyXiKCPzL
+EOcLKvbdKQzEnenF
+EPCjjvbdrbGNMGjy
+EPDKjvbdgGMZnHHA
+EOcLKvbdfHjuqnRH
+EOcLKvbdFeirNiUR
+DoCjjvbduaEZSoFI
+DncKjvbdbAudfPow
+DoCkKvbdbiMikFwY
+DoDLKvbdcyxpYYqC
+DnbjjvbdpxoHfpdY
+DncKjvbdqUTgRqjt
+DoDKjvbdcImKKfWx
+DnbjjvbdmfeYNNfy
+EPCjjvbdIjEAJofd
+EObjjvbdLBKgNCXq
+EObjjvbduLxWaUAw
+DnbjjvbdJTZBTNXl
+DoCkKvbduaDyTOeI
+EOcLKvbdUyIUZkPO
+EOcLKvbddePRawCj
+EPDKjvbdhbObeWqR
+EOcKjvbdBdQAvJmG
+EOcKjvbdkVwODaww
+DnbkKvbdUVkoisaR
+DnbkKvbdMoxQvNfs
+EObjjvbdCJKbLIfK
+DncKjvbdYpmFJNEq
+DoCjjvbdjKFhKMxS
+DnbjjvbdZLrEUNlN
+EPDKjvbdwuNFRZMO
+EObjjvbdjuvnECXw
+EPCkKvbdlZTSTZGt
+DoCjjvbdsQVoJcWG
+DncLKvbdmJETqVSB
+DnbjjvbdjggLfGOL
+EObjjvbdxwiKBpZk
+DoDLKvbdKDKCpjDY
+EPCjjvbdzRPNIjXA
+DoCkKvbdkaMoNALA
+EPCkKvbdjvWnDaww
+EPCkKvbdSBcdkiZL
+DnbkKvbdbUbHXkUI
+EOcKjvbdURROtuHm
+DncLKvbdJmAEZgVB
+DoDLKvbdDxYLsssl
+DncKjvbdWRnXadlD
+EPCjjvbdADSXiyhp
+DnbkKvbdNGcPlouL
+DnbjjvbdBsAcTevr
+EObjjvbdWWhwvDeH
+EOcLKvbdbUafxKsh
+DoCkKvbdtcCuXWOo
+EOcKjvbdbKkennDA
+EPDLKvbdGcjujBjK
+DoDKjvbdRWmdDMHc
+EPCkKvbdmSZUyrdJ
+DoCkKvbdLZRKSztf
+DncKjvbdZQmFJNFR
+EPDLKvbdjhGkefNk
+DncKjvbdeATpmYJf
+EPCkKvbdDjHivXjA
+EObjjvbdFyVVBEXb
+DncKjvbdIHHZxxXg
+DnbjjvbdMoxQvNfs
+EObjjvbdlYsRsZGt
+EOcLKvbdZHWdAPTJ
+DoCkKvbdoznDjwoA
+EOcLKvbdYpmEiNEq
+EOcLKvbdfMfWgNJk
+DnbjjvbdjlalZeGo
+EPDLKvbdVgxVxGxz
+DoDKjvbdZRMdiMeR
+DnbkKvbdNsUVgFUp
+EObjjvbdNGcPmPuL
+EPDLKvbdrSUjnKaN
+DncKjvbdMgDPmQUk
+DoDLKvbdRkZGUfkT
+EOcLKvbdpxoIGqDx
+DoCkKvbdVwIxVcdg
+DoDKjvbdZQmFIleR
+EPDKjvbdZshiZDrn
+EPCkKvbdFWZPpNJe
+DnbkKvbdcImKKfXY
+DoCkKvbdiVZeWqtb
+EPCkKvbdkxsSSyHU
+EObkKvbdcSbkTdKB
+EOcKjvbdFxttaEYC
+EPCkKvbdhtzEwSVC
+EOcKjvbdLAjgNBwq
+DoCkKvbdZisHofbG
+DoDLKvbdIsYaTNYM
+EPDLKvbdADRxJzIp
+DoDKjvbdTkuoAvOi
+EOcLKvbdZRMeJMdq
+EPDLKvbdWWiXvDdg
+DnbjjvbdbsDKscjB
+DnbkKvbdtlXwBUBX
+EPCjjvbdmgFXlmgZ
+EObkKvbdjmBlZeGo
+EObkKvbdmgEwmOGy
+DoCjjvbdtlXwBTaX
+EPDKjvbdSiZiqABM
+EPDLKvbdEXxMTssl
+EPCkKvbdRWmccLhD
+DncLKvbdrWpMDJZR
+EPDLKvbdelfXGlik
+EOcLKvbdFjdsChNV
+EPCkKvbdVUMtFkuj
+DoDLKvbdtkxXBUBX
+DncLKvbdMgDQNPtk
+DnbkKvbdMJCMQxAS
+EOcLKvbduWOYJpsA
+EPCjjvbdZxcimcMS
+DoDKjvbdqrUjmkAm
+EObjjvbdRzJgsCvA
+EOcLKvbdiBoDFXRR
+EPCjjvbdSPtHKFcw
+DncKjvbdbBVeGPpX
+DnbjjvbdRotGiedX
+DoDKjvbdIHGzZYXg
+DnbjjvbdiGjCyViu
+EPCjjvbdSxKkmzjx
+EPCjjvbdmajWwoOV
+DnbjjvbdmbKWxPNu
+EObkKvbdCTBCsfXS
+DoCjjvbdKQzEnfOF
+EPCkKvbddijRutzn
+EObkKvbdFjeTCgmV
+DnbjjvbdURQnuUhN
+DnbkKvbdiCOcFXRR
+EObkKvbdJutfEEfi
+DncLKvbdhtydwRuC
+DoCjjvbdcTCjsdJa
+DnbjjvbdzoPqEcMY
+DoDLKvbdSCDdlJZL
+EOcKjvbdlhctQuSB
+EPDKjvbdOFETiJKd
+EObkKvbddZyQYZQb
+EOcLKvbdrMyjYlHi
+DoDLKvbdqrVLOLBN
+DncKjvbdyNsHwriD
+EObkKvbdQvnECkgc
+DnbkKvbdznopeClY
+DoCkKvbdCJLBjiGK
+EOcLKvbdauCGxKtI
+EPCjjvbdeFOrCWcK
+DncLKvbdcSbjtDia
+DnbkKvbdKWVGDdgJ
+EPDKjvbdrDdiQNua
+DncLKvbdqTtGqrKt
+DoDKjvbdjJfIKMwr
+DoCkKvbdkxsSTZHU
+EObkKvbdFejSNhtR
+DoDKjvbdnCKWxOmu
+DoDLKvbdvBDySneI
+DncKjvbddZxpXyRC
+EPDKjvbddwzTsqez
+DoDLKvbdLFfIBaQu
+DncLKvbdwzHeewdr
+DncLKvbdOFEUJJKd
+DoDLKvbdEvZQQMie
+EPDLKvbdWHxVwgYz
+DoCjjvbdiGjCxujV
+EPDKjvbdrovPJcWG
+DoDLKvbdZxcjOCkr
+DnbjjvbdRzJgsDWA
+DoDLKvbdiZuGLpnG
+DncLKvbdTukoitBR
+DnbkKvbdnBiwXnnV
+DoDKjvbdBvzdIdov
+EObkKvbdRWnECkhD
+DoCkKvbdRbDeMJZL
+DncKjvbdiGjDYujV
+EPCkKvbdNdctIiLE
+EPCjjvbdKWUfDdfi
+EOcKjvbdkIGlGGNk
+EPDKjvbdGZVVBDxC
+EObkKvbdXsMBNUOx
+EObjjvbdANHxrvyx
+EPDKjvbdZtIhyDrn
+DoCkKvbdRWmdCkgc
+EObkKvbdffLynGgA
+DoDKjvbdIxTahMQp
+DncKjvbdKQzFPGOF
+DoDKjvbduDCtwWOo
+EOcKjvbdnCJvxOmu
+DoCjjvbdEJgivXjA
+DncKjvbdemGWgMjL
+DncKjvbdCDpBVjMf
+DncLKvbdmoyxukZC
+EOcLKvbdtkwwBTaX
+DoCkKvbdLqwMzUpz
+DncLKvbdqFdFUWBI
+EPDLKvbdZyEJmblS
+EOcKjvbdEzsqFMCi
+DoCkKvbdcarmSATm
+DncLKvbdFfJqmiTq
+DncLKvbdKQzEoGNe
+DoCjjvbdUaCRTRSZ
+EOcLKvbdqZOhGqEY
+DoCkKvbdZisIQGaf
+DoCkKvbdeFOrBwCj
+DoDLKvbdmIctQtqa
+EObkKvbdxVMdqYkn
+DncKjvbdwygfFxFS
+DoCkKvbdRWnEDLhD
+EOcKjvbdmRyUyrci
+DoCkKvbdWXIwvDeH
+EPDLKvbdRXODcLgc
+DoDLKvbdBsBDUGWr
+EOcKjvbdEvYopNJe
+DoCjjvbdBvzdIdov
+DoCkKvbdyzeNrIJI
+EObkKvbdCJKbKhej
+EObjjvbdQccBQQcr
+DnbkKvbdxZgeewdr
+DoDKjvbdqcdhpNua
+DoCjjvbdeJjSVtzn
+DncKjvbddneTKssr
+DnbjjvbdZxcjNbkr
+EPCjjvbdZisIPfaf
+EPCkKvbdkyTRrxft
+DncKjvbdVwIxVcdg
+DncLKvbdIxTagkpp
+EPCjjvbdbrbjtEJa
+DncKjvbdkCkjqHUg
+DoCkKvbdUxgsyjnn
+EObjjvbdUaCRSprZ
+DnbjjvbdMJCLpxAS
+DncLKvbdliEUQuRa
+EPCkKvbdANHxrvzY
+EPCjjvbdeAURMwjG
+EPDKjvbdZoOIeEzK
+DoDKjvbdmuVZkJqf
+DncLKvbdaNLCTUlg
+DoCkKvbdnQZxvLYb
+DncLKvbdhficZWJu
+DncKjvbdatbHYLUI
+DoCjjvbddndrjtUS
+EOcLKvbdsBfMkgKy
+DnbjjvbdBiKakIfK
+DnbjjvbdSQTfjFcw
+DoCjjvbdmoyxvKyC
+DoCkKvbdGcjuibKK
+DnbkKvbdZQldiMeR
+EObkKvbdqquKnKaN
+DoCjjvbdZRNEhldq
+EPCjjvbdBiKbLJFj
+EPCjjvbdyXhjCPyk
+DncLKvbdtTSSxzEc
+EPCjjvbdnCJwXnmu
+DoDLKvbdbBWEfQPw
+EOcLKvbdemGXHNKL
+DoDLKvbdmfdxMnGy
+EOcLKvbdTqQntthN
+EOcLKvbdrMyixlIJ
+EOcLKvbdVUMselWK
+EOcLKvbdBvzchePv
+DoCjjvbdbVCHXjsh
+EPCjjvbdZRMdhleR
+EOcLKvbdhbObeXRR
+EPCkKvbdFWZPpMie
+DncLKvbdXFyZtAOs
+DnbkKvbdTqQoUuHm
+EPCjjvbdCSaDUFvr
+DoDKjvbdQZNAHTSK
+EOcLKvbdmoyyVkZC
+DoCkKvbdGLErbhMu
+EOcLKvbdtvNwjRTA
+EObkKvbdFjdsDINV
+EOcKjvbdeOdsLUUS
+DncKjvbdMtrrKmAX
+EObkKvbdBsBCtGWr
+EOcLKvbdVBCRTRSZ
+DoDKjvbdKQydoFme
+DncLKvbdnHFXmOGy
+DnbkKvbdGAnqYizm
+EOcLKvbdjlakzEfo
+EOcKjvbdegkWSOQg
+DoCjjvbdtkwwAsaX
+EPCkKvbdeKKSWUzn
+EObjjvbdrRtjnLBN
+EPCkKvbdeATqMxKG
+DnbkKvbdZMRdTmlN
+DoDKjvbdNsUWGeVQ
+EObjjvbdyXiKBpZk
+EOcLKvbdJKEAJpHE
+DoDKjvbdzQoNJJwA
+DoCkKvbdwygeewdr
+EObkKvbdsCGNMHKy
+EOcLKvbdlhdUQuRa
+EObjjvbdyNsHwsIc
+DoDLKvbdWRnXbFLc
+EObjjvbduCcUvvPP
+EOcLKvbdrEEhonWB
+EPCjjvbdRjyFtgKs
+EPCjjvbdkNCLzFGo
+DoCkKvbdRDbaPpcr
+DoDKjvbdQdCaQQdS
+DncKjvbdwyhFexFS
+EPDLKvbdBhjakJGK
+EPDKjvbdaNKaruMg
+EObkKvbdzQnliJwA
+DnbjjvbdptTfrSLU
+DoDKjvbdFWZPpNJe
+EObkKvbdZxcjOCkr
+DoDKjvbdehLWRnQg
+EOcLKvbdcSbkUEKB
+EObjjvbdbUafxLTh
+EObkKvbdBcpAvKNG
+DoDLKvbdySmiNSBg
+DncLKvbdmIdUQuRa
+EPCkKvbduDDUvuoP
+DoDLKvbdMtrqjmAX
+DoDLKvbdVZHtZkOn
+EOcLKvbdiZuGLpnG
+EOcKjvbdxmrgxShc
+DoCjjvbdMpYQvNfs
+EOcKjvbdCIkCKiFj
+EPDLKvbdaaVdepPw
+EObkKvbdXFyZtAOs
+EPDLKvbdbKlFnnDA
+DncLKvbdqGEFTuaI
+EOcKjvbdqFcdsvAh
+EPCkKvbdcSbkUDjB
+DncKjvbdrJAJeMoF
+EObjjvbdZMRdUNkm
+DncKjvbdCEPaVjNG
+DnbjjvbdptUHSSLU
+EPCkKvbdUtNTekuj
+DoCkKvbdVqmwadlD
+EObjjvbdCIkBjiFj
+EOcLKvbdbVCGwkUI
+EObjjvbdFfKSNiTq
+EPDKjvbdJXtCHlRQ
+EPDKjvbdTvMQJtBR
+EPCjjvbdZMRdTnLm
+EPCjjvbdemGXGljL
+EPDKjvbdxmsHxTJD
+EOcKjvbdiVZdvrVC
+DnbkKvbdmSZUzSdJ
+EPCkKvbdUaCRTRSZ
+DncLKvbdoAKztIDn
+EObjjvbdHffyyXxH
+EPCkKvbdaMjbStmH
+EObjjvbdZyDinDMS
+DoDKjvbdjlbMZdgP
+DncKjvbdQwOEDMHc
+DncLKvbdGLFSbgmV
+EPCkKvbdjvXOECXw
+DoCkKvbdSBceLhyL
+DoDLKvbdEvYpPmKF
+EOcKjvbdrbFlkfkZ
+EPDKjvbdTvMQJsaR
+DncLKvbdjvXNcaxX
+DnbkKvbdijGIKNXr
+EOcLKvbdiHJcZViu
+DoCjjvbdlqxuZsDi
+DnbkKvbdhuZeXRtb
+DncLKvbdACqxJzJQ
+EObjjvbdjlbLydgP
+EPDKjvbdxZgefXdr
+EOcKjvbdSCEFLiYk
+EObjjvbdKefICApu
+EPDKjvbdjlbLyeGo
+DncLKvbdbAvEepQX
+EPCkKvbdrSVKnLAm
+DncLKvbdZjTHpHBf
+DnbkKvbdCWzdIdov
+DoDLKvbdxUmFQyLn
+DnbkKvbdxVNFRYkn
+DoCkKvbdZisHpHCG
+DoDKjvbdwkXEHzzG
+DoCjjvbdSPtHJedX
+EOcLKvbdBiLBkIej
+DoCkKvbdiLdcnVCy
+DnbkKvbdlhcsqUqa
+EPCjjvbdwzIGFxEr
+EPCkKvbdySmiNRag
+DncLKvbdHEKujCKK
+EPDLKvbddeOrCXDK
+DoDLKvbdNGbolpUk
+EOcLKvbdtlYXBTaX
+EOcLKvbdqwQLcIyR
+EObjjvbdIrxaSlxM
+EObjjvbdbrcKtEKB
+EOcKjvbdpxngfqDx
+DoDLKvbdKfFhCApu
+DoDLKvbdJvUfEEfi
+DncKjvbdsQWOibuf
+DoCjjvbdHgGyxxXg
+DoCkKvbdZHWdAPTJ
+DncKjvbdauBgYLTh
+DoDLKvbdJYUCIMRQ
+DncKjvbdbrbjtEJa
+DnbjjvbdemFwHNJk
+DnbkKvbdBvzcheQW
+EPCkKvbdJqZePGNe
+EPCkKvbdSKxeuGkT
+EPDLKvbdIryBTMxM
+EPCjjvbdwWlAuaVu
+EOcLKvbdyTOJNRbH
+EPCjjvbdQvmdClID
+DnbjjvbdyTOJMqag
+DncKjvbdrXQMDJYq
+EPCkKvbdGdLVjBij
+EOcLKvbdjJehJmXr
+DnbkKvbdCJKakJGK
+DoCjjvbdLrWlzUpz
+EPCkKvbdhzVFlRNf
+DoCjjvbdRDcApRES
+EObkKvbdzROmJKXA
+DncKjvbdxUmFRYlO
+EPCkKvbdURQoVVIN
+EPDLKvbdVZHtZkPO
+DnbkKvbdatafwjsh
+EObjjvbdNrtWGdtp
+DoDLKvbdBiLCLJFj
+EOcKjvbdmgFXmOHZ
+EObjjvbdZRMeImEq
+DoCjjvbdiMEdNtcZ
+DnbjjvbdgFkzNfgA
+DnbjjvbdGKdsDHmV
+DncLKvbdIxUBhMRQ
+DoDLKvbdjSzhrjiz
+DoDLKvbdpyPHgRDx
+DoDLKvbdqYoIGpdY
+DoCkKvbdUQqPUuHm
+EPCkKvbdBraDTfXS
+DncKjvbdNrtWGeUp
+DncKjvbdJqZdnenF
+EPCjjvbdCWzdIePv
+DoDKjvbdrXPlDIxq
+EPDKjvbdauBgYLUI
+EPCjjvbdQmXbYnUz
+DoCjjvbdGGJqnJUR
+EPDLKvbdkVvnEBww
+EPCjjvbdTukoitBR
+DoCjjvbdRkZFtgLT
+DoDKjvbdEuyPpMie
+EPCkKvbdSLYfUgLT
+DnbjjvbdIwtBglQp
+DnbkKvbdznpQeDMY
+EOcKjvbdznpRFCkx
+EPDLKvbdtumwjQsA
+DoDLKvbdBhjajiGK
+DoDKjvbdhlFDmuDZ
+DnbkKvbdqquKnKaN
+DncLKvbdMowqVmfs
+EOcKjvbdqrUjnLAm
+EObjjvbdqwQMDIyR
+EPDKjvbdnCKXYPOV
+DnbkKvbdHffyyXxH
+DoCjjvbdlZSrTZGt
+DoDLKvbdznpRFDMY
+EPDKjvbdWWiXvDdg
+DoDKjvbdRWnEClID
+DnbjjvbdJcKCqKDY
+EPDKjvbdJbjDQicY
+DncLKvbdhaoDEwRR
+DncLKvbdvAdZSoEh
+DncLKvbdeEnrCWbj
+DoDKjvbdVvhwvDeH
+EOcKjvbdVAapsQqy
+EPCkKvbdxnTIYSiD
+EPCkKvbdrouoJbuf
+EObjjvbdePEsKtUS
+EPDLKvbdirziSkJz
+DnbjjvbdhaoCdvqR
+EPCkKvbdGZVVAdYC
+DncKjvbdtbbuWuoP
+DoCkKvbdLFehCBRV
+DoDKjvbdLZRJrztf
+EObkKvbdkHflGFmk
+EOcKjvbdJYUCIMQp
+EPDLKvbduCcVXWOo
+EPCkKvbdptTfqqkU
+DoDKjvbdGQATWgGZ
+DncKjvbdEztQeMCi
+EObkKvbdZtJJZETO
+DoCjjvbdZsiIyETO
+EObkKvbddndrjstS
+EOcLKvbddeOqbXDK
+DnbkKvbdCTBDUGXS
+EPDKjvbdQlwayOUz
+EPCjjvbdlqyUzTEJ
+DoDLKvbdhtydvrUb
+EOcKjvbdlZTSSyGt
+EOcKjvbdmJDtQuSB
+DnbjjvbdtSqsZZeD
+DoDLKvbdUaBpsRSZ
+EPDKjvbdLGFhBaRV
+DnbkKvbdSBcdkhxk
+DoCjjvbdDoDKkXDE
+DoDKjvbdwyhFfYFS
+EPDKjvbdOEctJIjd
+EPCjjvbdEObjkWcE
+EPDLKvbdhtzEvquC
+EObkKvbdZjShQHCG
+EPCjjvbdmIctQuRa
+EPCkKvbdVwIwucdg
+EOcLKvbdADRxJzJQ
+EOcLKvbdWWiXvEEg
+EPCjjvbdTAFIhBoE
+EPDLKvbdZLqdTnMN
+EPDLKvbdZQldhmEq
+EOcKjvbdLLBIWAJy
+DncLKvbdrMzKYlIJ
+EPCjjvbdzitoodSt
+EPDLKvbdLFehCAqV
+DoCkKvbdrMyiyMHi
+EPDKjvbdkVvmcaxX
+EOcKjvbdmpZxvKxb
+EPCkKvbdliDtRUrB
+DncLKvbdkxsRsYft
+EPDKjvbdTqROuVHm
+EPCjjvbdSQTgJedX
+EPDLKvbdHlBznXRL
+DncKjvbdQdDBQRDr
+EPDLKvbdliDsqVRa
+DoDKjvbdjgflFfOL
+EPDKjvbdeEoSCWbj
+DnbkKvbdfSBWzkcP
+EObkKvbdmIcspuSB
+EPCjjvbdvAdZTPEh
+DoCkKvbdIGfyxwxH
+DnbjjvbdWWiYWDeH
+EObkKvbdZQleImFR
+DncLKvbdQwNdCkgc
+EOcLKvbdQdDBPqES
+DnbjjvbdrpWPJbuf
+DoCkKvbdTulQKTaR
+DoDLKvbdeUAUASlv
+EPCjjvbdZQmFJNEq
+DncLKvbdVBBqSqSZ
+EOcKjvbdqceJPmvB
+DncLKvbdZtIiYcrn
+EOcLKvbdJSxaSmYM
+DoCkKvbdqqtkOLBN
+EObkKvbdgFkymfgA
+DnbjjvbdVqmwadlD
+DncLKvbdsBfNMGkZ
+EPDKjvbdEPDKjwCd
+EObjjvbdHDjvKBjK
+DncLKvbdCTAbsevr
+EObkKvbdFxuUaEXb
+DoCjjvbdcyyQYZQb
+EObjjvbdZsiIxdSn
+EPDLKvbdZQmEhmEq
+DnbkKvbdxnTIXriD
+DncKjvbdfHkVrORH
+EOcKjvbdddoSCXDK
+EPCkKvbdhanbdvpq
+EOcKjvbdRyihTDWA
+DnbjjvbdajkeoODA
+EOcLKvbdlhdTpuSB
+EPDLKvbdhgJbxuiu
+EPCjjvbdnHFXmNgZ
+EPCkKvbdpecdsvAh
+DnbkKvbdVZIUZjnn
+DncKjvbdbAvFGPpX
+DnbjjvbdkMalZeHP
+EOcLKvbdYSlAmUOx
+DoCjjvbdHDkWKCKK
+EPDLKvbdaRecHsek
+EPCjjvbdJXsagkqQ
+EObjjvbdRMwbZNtz
+EPCkKvbdrbGMlHKy
+DncLKvbdKfGICApu
+EPDLKvbdUtNTfLvK
+EPCkKvbdMJCMRYAS
+EOcLKvbdCJKbLJFj
+DoDKjvbdfpBzvcxI
+EObkKvbdYpldhmFR
+EOcLKvbdSPsfiecw
+DoCjjvbdHEKvKCKK
+DnbjjvbdUGzmkwVe
+DnbjjvbdfMfXGmJk
+DnbkKvbdZoOIeEyj
+EObkKvbdZnmhdeZj
+EOcKjvbdTkuoBVoJ
+EPCjjvbdGKdsChMu
+DoDLKvbdJYTahLpp
+EPCjjvbdbhmJkFwY
+DoDLKvbdkIHMGGOL
+EPDKjvbdZsiIxdSn
+EPCjjvbdMgCpNQUk
+DncLKvbdjblKqGtg
+DncLKvbdOYOuzdNt
+DncKjvbdTvMPjTaR
+EPDLKvbdiiehKNXr
+DoCjjvbdZdxGzghb
+DoDLKvbdeOdsKssr
+DoDLKvbddBsMrAUN
+DoCkKvbdxxIjBozL
+DoDKjvbddoErkUTr
+EOcLKvbdwzIFeweS
+DoDLKvbdREDBQRES
+EObkKvbdhlEdOUby
+DoCjjvbdNPxRWNgT
+DoDLKvbdZLqctNlN
+EObjjvbdbUbHXkUI
+DnbkKvbdhtydwSVC
+EPDKjvbdeUAUASmW
+EObjjvbdhgKDYvJu
+EOcLKvbdZnmhddyj
+DoDLKvbdUVlQKUAq
+DoDKjvbdDihJvXjA
+DnbkKvbdZLrETmlN
+EPCjjvbdxxJJbQZk
+EPCkKvbdrounjDVf
+DoCjjvbddiirVtzn
+DoDLKvbdmttyjiqf
+DncKjvbdfHjvSNpg
+DoCjjvbdmRxuZsEJ
+DoCkKvbdjAQGaQGj
+DncLKvbdnVUzLJrG
+EPCjjvbdLAjgNCXq
+DoDLKvbdqmZixlHi
+EPDLKvbdVUMsekvK
+EPDKjvbdrMzKZMIJ
+EPCkKvbdKDKCpicY
+EOcLKvbdwtmEqZMO
+EPDLKvbdmgFXlnGy
+DncKjvbdyTNhlqbH
+DncKjvbdnHFXlnHZ
+DoDLKvbdTqROuUgm
+DoDKjvbdRMwbZOUz
+EPDKjvbdRMwbYmtz
+DoDKjvbdZnmheEyj
+EPCkKvbdbBWEfPow
+DoDKjvbdQwNccLgc
+DoCjjvbdhtzFWqtb
+DoDKjvbdRotHKGEX
+DncKjvbdZsiJZETO
+EObjjvbdaNKbStlg
+DoCkKvbdsZlQTAhO
+EObjjvbdjhGlGGNk
+EObkKvbdQdDBQQcr
+DoDKjvbdMtrrLNAX
+EPCjjvbdRotHKGDw
+EPCjjvbdqZPIGqDx
+EOcLKvbdiGicZViu
+DnbjjvbdJvVGEFGi
+DoCkKvbdKNAEZfuB
+EPDLKvbdLZRJrzuG
+DnbkKvbdhytfLpnG
+EPDKjvbdRbEEkiYk
+EOcLKvbdcJMjLFvx
+DncKjvbdFfKRnItR
+DoDLKvbdegjurORH
+DnbjjvbdEPDKjvcE
+EPCjjvbdkHgLeenL
+DncLKvbdZnmheEzK
+DncKjvbdZjSgpHCG
+DoCkKvbdbBVdeoow
+DoDLKvbdZQmEhleR
+EPDLKvbdpxoHfpcx
+EPCkKvbdSPtGjGEX
+DncKjvbdRbDeLhxk
+EObkKvbdrpWOibvG
+DnbjjvbdfIKurNpg
+EPDLKvbdZyEKNbkr
+DoDLKvbdwXMAvBWV
+EOcLKvbdWWiXvDdg
+EOcKjvbdelfWfljL
+DncLKvbdjuvnEBxX
+DncLKvbdliDspuRa
+EObjjvbdVTlsekuj
+DoCjjvbderAvzlDP
+EPDKjvbdNeDtIhkE
+Dnbjjvbddwyssqez
+EObkKvbdGGKRnItR
+DoCkKvbdHbLzEzAD
+EPCkKvbdTvMPjUBR
+EObjjvbdTAEiIBoE
+DoCjjvbdRjxfUgLT
+DnbkKvbdnUuZkKRf
+EPDLKvbdjmBkydgP
+EObkKvbdNeDsiIjd
+DncKjvbdrounjDWG
+DnbjjvbdrWokbhxq
+DoDLKvbdsPvPKDWG
+DncKjvbdZdwfzgiC
+EOcLKvbdZLqdUNlN
+DoCjjvbdkDMLRHVH
+EPDKjvbdirziSjiz
+EObkKvbduDDUvuno
+DoDLKvbdkHgMGGOL
+DncLKvbdhkdcmuCy
+EObkKvbdCJLCLIej
+DnbkKvbdeFPRawCj
+DncKjvbdsQVoKDVf
+EPDLKvbdRXNccLhD
+EObkKvbdFxttaDxC
+EObkKvbdqrVKnKaN
+EPCjjvbddoEsKtUS
+EObjjvbdzaAOffbM
+DoCjjvbdWSNxBdlD
+EPCjjvbdqlzKYlIJ
+EOcLKvbdQdDApRDr
+DncKjvbdczZPwyRC
+EOcLKvbdtlXwBUBX
+EOcKjvbdmgFYNOGy
+DoCjjvbdKVtfEFGi
+EObkKvbdrNZjZLgi
+EOcKjvbdliETqVSB
+EOcKjvbdbVBgXkUI
+DncLKvbdNHDPmPtk
+DnbjjvbdjlakzEfo
+EOcKjvbdVUNTfLvK
+EPDKjvbdTXjkmzjx
+DncLKvbdrylQTBIO
+EPCkKvbdJpzEoGOF
+DncKjvbdFeiqmhtR
+DncLKvbdZnnJFFZj
+EPDLKvbdlrZUzTEJ
+EPDKjvbdLFfICBRV
+EPCjjvbdcyxpXyRC
+DoDLKvbdQdCaQQcr
+DncLKvbdZsiJZDsO
+EObjjvbdzQoNIjXA
+DncLKvbdVqmxBdlD
+DoDKjvbdRjxfUgLT
+EObjjvbdWIYVxHYz
+DoCkKvbdIGfzZXxH
+DncKjvbdxsNhlqag
+DoDKjvbdFWYopNJe
+EPDKjvbdVBCRTRSZ
+EPDKjvbdwyhFfXeS
+DoCjjvbdziuPocsU
+EPDKjvbdYSkaNUPY
+EObjjvbdznopdcLx
+EOcLKvbduMYWaUBX
+EPDKjvbdnPzZWKyC
+EObkKvbdZxcimbkr
+EObkKvbdBhjbKiFj
+EOcLKvbdjuwNdBww
+EPDKjvbdmbKWxOnV
+DoCkKvbdnHFYNNgZ
+DoDLKvbdrMzKYkhJ
+EOcLKvbdqdFIpNvB
+EPDKjvbdcScKtDjB
+EOcLKvbdygZMAMdw
+EOcLKvbdsCGNLgLZ
+DoDLKvbdaMkBsUlg
+DncKjvbdlZSqsYft
+DnbkKvbdnVUzLKRf
+DoCkKvbdnHFXlmgZ
+EPDKjvbdxZgfGYFS
+DoCkKvbdxwiKCPzL
+DnbkKvbdBcpAvKMf
+DoCjjvbddZyQXxpb
+DncLKvbdzQnmIjXA
+EPDKjvbdFWZQQMjF
+DnbjjvbdMgDQMpUk
+DncLKvbdOFDtIiKd
+DoDKjvbdKNAEZfta
+EOcKjvbdhyuGMQmf
+DnbjjvbdZnmhdeZj
+DncLKvbdhbOcFXRR
+EOcLKvbdvBEZSoEh
+EOcKjvbdYkrEUOLm
+EPCkKvbdNrtWGduQ
+EPDKjvbdZjSgpHCG
+EObkKvbdyzdmrHhh
+DoDLKvbdznpQdblY
+DncLKvbdZshhyDrn
+DnbkKvbdjvWmdCYX
+EOcLKvbdAMgxsWzY
+DnbjjvbdwzIGGXdr
+EPDKjvbdrNZixlIJ
+DoDKjvbdsQWOicVf
+DoDKjvbdjuvmdBxX
+EObkKvbdzHZMANFX
+DoDLKvbddjJqutzn
+EOcKjvbdwNWAMdFN
+DnbkKvbdTqRPUtgm
+EOcKjvbdVYgtZkOn
+EPDKjvbdNGcPlotk
+DnbjjvbdJbjDRJcY
+EPDLKvbdZtJIyESn
+DoDKjvbdtcCuXVoP
+DoCjjvbdZMSETmlN
+DoCjjvbdgGLzNfgA
+EPDKjvbdxKvcgzyf
+EObjjvbdrMzKZMIJ
+DncLKvbdMoxQumfs
+EPCjjvbdbhlikFvx
+DoDLKvbdRadFMJYk
+DnbjjvbdHgGzYxYH
+EObjjvbdVZHtZkOn
+DnbkKvbdakLfPNcA
+DoCjjvbdmfeXmOGy
+DoDLKvbdrRtjmjaN
+DnbjjvbdUxgsyjoO
+DnbjjvbdbhlikFvx
+EPDLKvbdRbEFMJYk
+EOcKjvbdRXNcblHc
+DnbkKvbdqmZixlHi
+DoCjjvbdrzLpTBIO
+DoCjjvbdILaznXRL
+EPDLKvbdRjyGVGkT
+EOcLKvbdehKurOQg
+DncLKvbdYkrDsnLm
+DoDKjvbdZisHpGaf
+DncLKvbdpyPIGpcx
+EOcLKvbdijFhKNYS
+EOcKjvbdMuSqkNAX
+EObjjvbdajlFnnDA
+EOcKjvbduLxXAsaX
+DnbjjvbdiiegjMwr
+EPCkKvbdiMEdNuCy
+EPCkKvbdqTtHSRkU
+EPCkKvbdIryBTNXl
+DncLKvbdFjdrcHlu
+EPDKjvbdZoOIeFZj
+DncLKvbdcbTNSATm
+DoDKjvbddePSCWcK
+DoDKjvbdZsiJYcsO
+DoDKjvbdpeceTuaI
+EOcKjvbdjhHMGFnL
+EOcLKvbdjcLkRGtg
+DnbjjvbdCJLCKiFj
+EPDLKvbdZsiIxdSn
+EObkKvbdVTlsekvK
+EObkKvbdCTAcTewS
+DoDLKvbdOYOuzcnU
+EPCkKvbdiUydwRuC
+DncLKvbdGQATXGey
+EPDLKvbdDjIJvXjA
+DncKjvbdpxoIHQdY
+EObkKvbdZMSDsmkm
+EOcLKvbdBvzchdov
+EOcLKvbdKRZeOenF
+DnbkKvbdwzIFfYEr
+DnbkKvbdSKyFuHKs
+EPDKjvbddCSlrATm
+EObkKvbdSCDeMIyL
+EPCjjvbdsCFllGjy
+DnbjjvbdHgGyyYYH
+DncKjvbdjKFgilwr
+DncLKvbdEvYoomJe
+EObkKvbdlhdTpuSB
+DoDKjvbdWWiYVceH
+DnbjjvbdLGGHbBQu
+EObkKvbdOXoVzcnU
+DnbjjvbdbsCjtDjB
+DnbjjvbdQwOECkhD
+DnbjjvbdMgComQVL
+DoCjjvbdRotGjFcw
+DnbjjvbdmajWxOmu
+EPCkKvbdbPfgDkzd
+Dnbjjvbdpxngfpcx
+DoCkKvbdBraCtGWr
+DncKjvbduDCtwWPP
+EPDLKvbdYzcFrKVy
+EObjjvbdbVBgXkTh
+DnbkKvbdyYIibPyk
+DncLKvbdUVlPitAq
+EObkKvbdbKlGOnDA
+DnbjjvbdrJAKFNPF
+EPDLKvbdLAjgMbYR
+DoCjjvbdSxLLmzjx
+DncKjvbdeEnqawCj
+EObkKvbdFWZQPmKF
+EOcKjvbdGdKvJbJj
+DnbkKvbdjcLjqHUg
+EPCjjvbdQvnDcLgc
+EPCkKvbddoFTLTtS
+DnbkKvbdZtIhyDrn
+EPDKjvbdBvzdIdpW
+EObjjvbdEYYLstUM
+EPCkKvbdyzdnSHiI
+EObjjvbdZLqdTmlN
+EPDLKvbdIHHZyXwg
+DoCkKvbdbVBfxKtI
+DnbkKvbdMpYRWOGs
+EOcKjvbdczYoxYqC
+EPCjjvbddwytTqez
+EPCjjvbduaDySoEh
+EObkKvbdTJZiqAAl
+EObjjvbdmoyyWLYb
+EPDKjvbdnPyxukZC
+EObjjvbdrWolDJZR
+DoCkKvbduCbtvvPP
+EPDLKvbdJbicQibx
+DncLKvbdHELVibJj
+DnbjjvbdKefHbAqV
+DncLKvbdsZkpTBHn
+DoDKjvbduCcVXWOo
+DnbkKvbdidkGtoAO
+DnbjjvbdrEFIonWB
+EPCkKvbdfpBzwEYI
+DncLKvbdwuNFRZMO
+EPDLKvbdrounjCvG
+DncLKvbdxxJJaoyk
+EPCjjvbdJmADzHUa
+EPDLKvbdqGEFTvBI
+EPDLKvbdyOShYTJD
+EPCjjvbdJutecdfi
+EPDLKvbdIMBznXQk
+DncKjvbdmoyxvKyC
+EPDLKvbdrXQMChyR
+DoCkKvbddwytUSFz
+DncKjvbdZjTHofbG
+EPDKjvbdGcjujCJj
+EPCkKvbdvBEYsOeI
+DncKjvbdCTAcUGWr
+EPCkKvbdmbKWwnnV
+DnbjjvbdpxnhHREY
+EObjjvbdlZTRsYft
+DoCjjvbdhkdcmtcZ
+EObjjvbdMfcPmPtk
+EPCkKvbdJXtCHkpp
+DnbjjvbdrSUjmkBN
+EOcLKvbdYSlBMtOx
+EObjjvbdznopdbkx
+DncLKvbdddoSCXDK
+DoCjjvbdOXnuzcnU
+EPCkKvbdZGwEAOsJ
+EOcKjvbdauCGwjtI
+EPDLKvbdNHDPmPuL
+EOcLKvbdNHCpMpUk
+DoCjjvbdmSYtysDi
+DncKjvbdFjeTDINV
+DncKjvbdNrtWHFUp
+EPCjjvbdmJETqUqa
+DncKjvbdEzsqEkcJ
+EOcLKvbdmoyyVjyC
+EOcLKvbdZMSETnMN
+EOcLKvbdBsAbtFvr
+EPCjjvbdJutfEFHJ
+DoCkKvbdiBoDEwRR
+EPDLKvbdZQmFImFR
+EPDLKvbdpfDdsuaI
+DnbkKvbdmbKXYPNu
+EObjjvbdjKGHjNXr
+EOcLKvbdpssgSRjt
+DoDLKvbdKRZePGOF
+DnbkKvbdfekymgHA
+DoDLKvbdiCOcFWqR
+DnbjjvbdiHJbyWKV
+DoDKjvbdsCGNMHKy
+DoCjjvbdGKeSbgmV
+DoDLKvbdkIGkfFnL
+DncKjvbdfILWRnRH
+DoDKjvbdGLEsChNV
+EPCjjvbdVrNxBeMD
+EPDKjvbdSLZGVHKs
+EPDLKvbdQlxByOUz
+EOcLKvbdMgDQNQVL
+DoDLKvbdrRtjnLAm
+EObjjvbdCIkBjhfK
+DncKjvbdDwwlTssl
+DoDLKvbdANIYsWzY
+DnbjjvbdxVMdqYkn
+DoCkKvbdzdynzdzQ
+DnbjjvbdxsNhmRag
+EObjjvbdzjVQPcrt
+DoCkKvbdbBWFFopX
+EPDKjvbdhfibxvKV
+DnbkKvbdegjvRmqH
+EPCjjvbdkNCMZdgP
+EOcLKvbdmtuZkJqf
+EObjjvbdemFvfljL
+DncLKvbdyYIibPyk
+EObjjvbdieKftoAO
+DncKjvbdvOszqKoU
+DncLKvbdVUNTelWK
+EOcKjvbdCDoaWKMf
+EPCkKvbdbsDKtDjB
+EPDLKvbdmSYuZsDi
+DncLKvbdwWlBWBWV
+EObjjvbdkVwOEBww
+EObkKvbdWSNwbFLc
+DnbjjvbdZRNFImEq
+DoDKjvbdrounjDVf
+EPDKjvbdCJKbKhej
+DncKjvbdsrrTYyeD
+DoCjjvbdQvnEDMHc
+DoCkKvbdGQASwGfZ
+EOcLKvbdfSBWzkbo
+DoDLKvbdRkZGVGkT
+EOcKjvbdyXhjCPzL
+EPCkKvbdbrbkTdJa
+EPDLKvbdsQVnibvG
+DnbjjvbdpyOgfpdY
+DoDLKvbdtunXiqTA
+EPDKjvbdqGDdsvAh
+DncKjvbdjEkHUoAO
+EPCjjvbdGQATXGfZ
+EOcKjvbdKDJcRKCx
+DncKjvbdhyuGMQnG
+DoCkKvbdYkrDsnMN
+DoCjjvbdaNKbSuMg
+EOcLKvbdrykpTAhO
+DnbkKvbdrSUkNkAm
+EPCjjvbdwzHeeweS
+DoDLKvbdSBdFMJYk
+DnbjjvbdqUUGrRjt
+DoDKjvbdzitoocrt
+EPDKjvbdxnShXriD
+DoCkKvbdVviXvEEg
+EObkKvbdFxuUaDxC
+EObkKvbdygZMAMeX
+DnbjjvbdiifHilxS
+EPDKjvbdZxcjODMS
+DoDLKvbdWWhxWEFH
+EPCjjvbdzoQQeClY
+EOcLKvbdptUHRqjt
+DoDKjvbdVviXudEg
+EPDLKvbdUQpnuVHm
+EPCjjvbdwzHfFweS
+EOcLKvbdZxcjNbkr
+EObkKvbdZnmhddyj
+DoDLKvbdvlvANDdm
+EOcKjvbdMfbolpVL
+EObjjvbdbAvFFpQX
+EOcKjvbdBdPaWJlf
+DncKjvbdqceIonWB
+DoCkKvbdtcDVWvOo
+DoCkKvbddoFTKssr
+DoDKjvbdaMkBruMg
+EPCjjvbdEuyPolie
+DnbkKvbdOEcsiJLE
+DncKjvbdHlBznWqL
+EPDKjvbdbhlijewY
+EObjjvbdfoazwDwh
+EOcLKvbdaNKbStlg
+DoCkKvbdqdEiQOWB
+DoCkKvbdTvLpKUBR
+DncKjvbdkNBkzFHP
+EObkKvbdFkErcHlu
+DoCkKvbdZshiYcrn
+EObjjvbdEJhJvYKA
+DnbkKvbdOTUWHFUp
+DoDLKvbdVhXvXfxz
+EPDLKvbdBdPaWKMf
+EObjjvbdFejRnJTq
+EPDLKvbdULvPBVoJ
+EPDKjvbdJzpFwdAN
+EPDKjvbdqwPkbiZR
+EPDLKvbdrEFIomua
+EOcLKvbdijFhJlxS
+DnbkKvbdYkrEUOLm
+DnbkKvbdIMBznXQk
+DncKjvbdZisHpHCG
+EPDLKvbdzjUopESt
+DnbjjvbdzjUpPcrt
+EPDKjvbdqZOgfpdY
+DoDKjvbduLxXAsaX
+EObkKvbdrMyiyMHi
+EPCkKvbdqTsfqrKt
+DoDKjvbdTfznMXVe
+EObkKvbddoErkUTr
+EOcLKvbdHELWKCJj
+DncLKvbdUVkpJtAq
+EPCjjvbdRMxBxmtz
+EPDKjvbdjEjftoAO
+EOcLKvbdYkrDsmkm
+DoDLKvbdajlFoNcA
+DoCjjvbdmJDtRUqa
+EPDKjvbdTqQoUuIN
+DnbkKvbdtcDUvvPP
+DncLKvbdrbGMlHLZ
+DnbkKvbdKfGHbApu
+DncLKvbdGFjRnIsq
+EPDLKvbdJzpGYEAN
+DoCjjvbdkySrSyHU
+EObjjvbdKVtfDdfi
+EPDKjvbdNrsugFUp
+DoCkKvbdNxOuzcmt
+DoDLKvbdDihJuxKA
+DnbkKvbdzdzOzdzQ
+DncKjvbdmSYuZrci
+EOcLKvbdptTfqqkU
+EPCkKvbdVUNTfLvK
+DoCkKvbdGdKujBjK
+DoCjjvbdzitopETU
+DoDKjvbdqvokbiYq
+EPDLKvbdGFjSOJTq
+DoDKjvbdliETqUrB
+DoDKjvbdZisIQGbG
+DoCjjvbdnQZyWLZC
+EOcLKvbdGdKujCJj
+EPCkKvbdaRfDIUGL
+EOcKjvbdauCHXjtI
+DnbkKvbdbQHHDkzd
+DoCjjvbddZxpYYpb
+EObkKvbdbBWEepPw
+DncKjvbdSLYfVGkT
+EObkKvbdVgxVxHYz
+DoCjjvbdfpBzwEYI
+DoDKjvbdmfdxMmfy
+DncKjvbdhancEwRR
+DnbkKvbdEASJMzXX
+EObjjvbdmfdwmNfy
+DnbjjvbdhbOcFXQq
+DoCjjvbdVgxVxGxz
+EPCkKvbdQcbaQQdS
+EPCjjvbdhbObeXRR
+EPDKjvbdePFSkUTr
+EPDLKvbdMoxQumgT
+DoCkKvbdIBkydzAD
+EOcLKvbdcasMrAUN
+DoCkKvbdUQqOttgm
+DnbkKvbdelevfljL
+EObjjvbdZeXfzgiC
+EPCjjvbdQYmAGrrK
+EObjjvbdxZhGFxFS
+EObjjvbdJuuGEEgJ
+DoDLKvbdEARhlyvw
+EPDKjvbdZdxGzhJC
+DoCkKvbdzRPMhiwA
+DoCkKvbdZxcinClS
+EOcKjvbdFyVVBEYC
+EOcLKvbdtbcUwVoP
+DncLKvbdlZSrTYft
+EObkKvbdaaVeGPow
+DncLKvbdEKIJvXjA
+DncLKvbdbhljKfWx
+EObkKvbdVhYVxGxz
+EPDKjvbdmpZxukZC
+DoDLKvbdnBivxOnV
+EObjjvbdRbEEkiZL
+EPCkKvbdZRNFIleR
+DoDLKvbdZyEJmblS
+DncKjvbdkIGkefNk
+EPDKjvbdRkZGVGjs
+DnbkKvbdiHJbyVjV
+EPDLKvbdFjeSbglu
+DncLKvbdqFcdtVaI
+EOcKjvbdGYuVAdYC
+DoCjjvbduaEZSneI
+DnbjjvbdKWVFdFHJ
+EObjjvbdGdLVjCJj
+DnbkKvbdpssgSSKt
+DoCjjvbdssRryZdc
+EPDKjvbdZisIQHCG
+EOcKjvbdCIjajhfK
+DoDKjvbdrafNMGjy
+EObkKvbdgQBzwEXh
+DnbjjvbdgQBzwDwh
+DncKjvbdCEQAvKMf
+EPCkKvbdiCOcFWpq
+EPDLKvbdLFfHbBQu
+EPCjjvbdJTYaSmXl
+EPCjjvbdRjyFuGkT
+DoCkKvbdjFKftoAO
+DncKjvbdmaiwXoNu
+DoCjjvbdVZITyjnn
+DoDLKvbdDxYLtUTl
+DnbjjvbdqvpLcJYq
+EOcLKvbdlqxuZsDi
+DoDKjvbdZshhyDsO
+DoCjjvbdGFjSOIsq
+DnbkKvbdcScKtEKB
+EPCjjvbdMpXqVmfs
+EPCjjvbduoTzpjoU
+DoDLKvbdYkqctNkm
+EObkKvbddoErjstS
+DnbjjvbduLxWaUAw
+DoCkKvbdRXODbkgc
+DoCjjvbdwzIGFweS
+DoCkKvbdZyEKOClS
+EObjjvbdiGjCxvJu
+EObkKvbdbiMijewY
+DoDKjvbdqrVKmkBN
+DoCkKvbdFyUuBEYC
+DoDLKvbdNsTufduQ
+DoDLKvbdEPCkKvcE
+DoDLKvbdNQYRWNgT
+DnbjjvbdNrtWGeUp
+DoCjjvbdPxmAGrqj
+EPDKjvbdKNAEZgVB
+EPDKjvbdmttzKjSG
+EPDKjvbdssSSxydc
+DoCjjvbdTlWPAuni
+EObjjvbdDHLegAzc
+EObjjvbdXnRAXtvU
+EObkKvbdKfFgaaQu
+EOcKjvbdhtzFXSUb
+EPCkKvbdJTZAsMwl
+EOcKjvbdQYmAGsSK
+DoCkKvbdjhHLeemk
+EOcLKvbdiifIJmYS
+EPDKjvbdLrWlzVQz
+DoCjjvbdxsOIlrBg
+EPDLKvbdNPxQvNfs
+DnbkKvbdIGfyxwxH
+DoCjjvbdjKFhKMwr
+DnbjjvbddjKSVtzn
+DoCjjvbdZoNiFEzK
+EPCjjvbdeFOqavcK
+DoDLKvbdEuxpQMie
+EObjjvbdZjShQHCG
+DoDLKvbdZMSDsmkm
+DoDLKvbdGYtuBEYC
+EPCjjvbdUaBprqRy
+EOcLKvbdmozZWLZC
+DncLKvbdUWLpKUBR
+EPCjjvbdqYnhHQcx
+DoDLKvbdUaBprpqy
+EPDKjvbdrzMQSaHn
+DnbjjvbdGdLWKCJj
+EObkKvbdfILVrNqH
+EPCjjvbdehKvRmqH
+EPDKjvbdOSsvGeVQ
+DncLKvbdxxJJaozL
+EPCjjvbdZLqctNkm
+EOcLKvbdZxcinCkr
+DncLKvbdkWWmcbXw
+DoDLKvbduCcVXWPP
+DncLKvbdyTNhlqbH
+DncKjvbdYTMAlsoY
+DoCkKvbdRosfjFcw
+EPDLKvbdDwxLsstM
+EOcKjvbdlZTRryHU
+DoCjjvbdNGbpMpVL
+EOcLKvbdYgWdAOri
+DoCjjvbdDxYLstTl
+EObjjvbdIwtBglRQ
+EOcKjvbdvPTzpkPU
+DoCjjvbduLxXAtBX
+DoCjjvbdiLeENuCy
+DnbjjvbdUaCRSqRy
+DnbjjvbdYpmEhleR
+EObjjvbdsPvOjDWG
+DoCkKvbdLFfICApu
+DncKjvbddxZstRez
+EPCkKvbdFyVVAdXb
+DoCjjvbdFyVVBDxC
+DoDLKvbdFeirNiTq
+EPCjjvbdxnSgxTIc
+EOcKjvbdAMgySwZx
+EObkKvbdkyTRryHU
+DoCkKvbdMRwMzUpz
+DnbjjvbdCWzdJEov
+DoCkKvbdUyITzLPO
+EPCkKvbdcSbjsdKB
+DoCkKvbdqceIonVa
+DoCkKvbdjmCMZeGo
+DncKjvbdfMewGljL
+EObkKvbdpfEEtVaI
+DoDLKvbdczZQYYqC
+DoDLKvbdRNXbYmtz
+EObjjvbdTvLojUBR
+EPCkKvbdtbcVXWPP
+DncLKvbdmSYuZrdJ
+DoDLKvbdTukpKUBR
+EPDLKvbdsQVoKCvG
+EPDLKvbdBraCtFvr
+EPDLKvbdZQmEiNEq
+EPCjjvbdrzLosAgn
+EPCjjvbdssRsZZdc
+DncKjvbdbAudepQX
+DncKjvbdcTDKscia
+DncLKvbdlqyVZsEJ
+EOcLKvbdbVCHXkTh
+EObkKvbdYTMBMsnx
+DnbjjvbdULvPAuoJ
+DoCjjvbddtAUASlv
+DoDKjvbdxUmEpxkn
+DncKjvbdQwOEDLgc
+DoCkKvbdSPsgKGDw
+DncKjvbdiCOcFXQq
+EPDKjvbdRkYfUfkT
+EObkKvbdKCjDRJcY
+DoCjjvbdZLqctOMN
+EPCjjvbdUWLpKTaR
+EPCjjvbdLqwMzVQz
+DnbjjvbdnBivxPNu
+EObkKvbdRpUHKFdX
+EPCjjvbdeATqNXif
+DoCjjvbdfILVrOQg
+DoDKjvbdNrtVfeUp
+EOcLKvbdNUrrKmAX
+EPCjjvbdrbFllHLZ
+DncKjvbdkDMLQgUg
+DoCkKvbdVvhwvDeH
+DnbjjvbdKeegaaRV
+DoDKjvbdcJMjKfXY
+DnbjjvbdZtJJYcrn
+DoDLKvbdyqOliJwA
+DoDLKvbdMgDPmPuL
+DoCkKvbdHffzZXxH
+DoCjjvbdZxdKNblS
+EPDKjvbdkDLjqGtg
+EPDKjvbdYzbeqjVy
+DncLKvbdTppnttgm
+EObkKvbdVYgtZjnn
+EPCjjvbdzaAOgHCM
+EOcKjvbdcyxoxZRC
+EPDLKvbdxnSgxTJD
+EObkKvbdfMfXHNJk
+EPDKjvbdunszpjoU
+EObkKvbdFfKRmhsq
+EOcLKvbdhtydwRtb
+DoDLKvbdYkrDsnLm
+EPDLKvbdGGKSOItR
+EPCkKvbduDCuXVno
+EPDLKvbdrEFJQOVa
+EPDLKvbdIjEAKQGd
+EObjjvbdIryArmYM
+DoDLKvbdYkqctOMN
+EPCkKvbdiZtekqOG
+DncKjvbdzdzOzeZp
+DoDLKvbdbiNKLFwY
+DnbkKvbdlhcsqUrB
+DnbkKvbdKyRJrzuG
+DoDKjvbdOFDtIiKd
+DnbjjvbdvvlBWBVu
+DnbkKvbdlrZUyrdJ
+EObkKvbdxZgeewdr
+DncKjvbdegkVrNpg
+DoCjjvbdrJAJeNPF
+EObjjvbdmfeXmOHZ
+DoCjjvbdNPwqVmfs
+DnbjjvbdnPzYvLZC
+EPDKjvbdZshiYcrn
+EOcLKvbdhgJcYvJu
+DoDLKvbdXrlAmToY
+DnbkKvbdwWlAvBVu
+DnbkKvbdjvWnEBww
+DoDLKvbdTYLLmzjx
+EOcKjvbdDihJuxKA
+DncLKvbdTfznLvue
+DoCjjvbdVgwvXgYz
+EObjjvbdsBfMkgKy
+EPCjjvbdUaBqTQrZ
+DnbjjvbdbhmJkGWx
+EPCjjvbdLBLGmCYR
+DoDKjvbdwjwEHzyf
+EPDLKvbdegkVrNpg
+DoCkKvbdJpzEnfOF
+EPCkKvbdFejSOItR
+DnbjjvbdTqQnuUhN
+EOcLKvbdUMVoAvOi
+EPCkKvbdSCEFLiZL
+EPCkKvbdnCKXYPNu
+EPDLKvbdZyEKNbkr
+DncLKvbdZisIQGaf
+EObjjvbdGLEsDHmV
+DoCjjvbdBcpAujNG
+EObjjvbdZRNFIleR
+DnbjjvbdVrOXaeLc
+EPCjjvbdHELViaij
+EOcLKvbdqcdhpNvB
+EPCkKvbdiZuFkqOG
+DoCkKvbdOSsufeVQ
+DoDLKvbduoTzpjnt
+EOcLKvbdTqRPUuHm
+DoDLKvbdCDpAuilf
+EOcKjvbdZMSDsnMN
+DoDLKvbdYqNFJMeR
+DnbkKvbdbAvFFpPw
+EOcKjvbdVqmwaeMD
+EPCkKvbdUyHsyjnn
+EPCjjvbdKeehBaQu
+DoCjjvbdZshiYdTO
+EObkKvbdTvMQJsaR
+EPCjjvbdjblKqHUg
+DnbkKvbdYlSDtOMN
+EObkKvbdrWpMCiZR
+EOcKjvbdUGzmlWue
+DncKjvbdFyUuAcwb
+EPCkKvbdLZQjSztf
+EPCjjvbdfjfzbfAE
+DncKjvbdFWZQQMie
+DoCjjvbdVgxVxHYz
+EOcKjvbdWWhxWEFH
+DoDLKvbdUWLoitAq
+DoDLKvbdzaAOffbM
+EOcLKvbdrXPkbiYq
+DoCkKvbdYzberKVy
+DncLKvbdIMBznWpk
+EPCkKvbdEPCkKwDE
+DnbkKvbdWWiYVcdg
+DoCkKvbdCWzchdpW
+EOcLKvbdjvXNcbYX
+EPDLKvbdSxLMNzjx
+DnbjjvbdhficYuiu
+DncLKvbdvmWAMdEm
+EObjjvbduaDyTOdh
+DncKjvbdwWlAvBWV
+DoDKjvbdVviYWDeH
+EOcKjvbdNsUWGdtp
+DoCjjvbdzjVPodTU
+EPCkKvbdmIcsptqa
+EPDLKvbdIHHZxxYH
+EPDLKvbdUyIUZkPO
+EObkKvbdCDpBWJlf
+EPDKjvbdWSNwaeMD
+DoCjjvbdACrXjZhp
+EPDLKvbdwuMdqYlO
+DnbjjvbdHlBznWpk
+DnbjjvbduaDyTPEh
+DnbjjvbdwuNFRZLn
+EObjjvbdajkfOnDA
+DnbkKvbdWWiYWEEg
+EPDLKvbdffLymgHA
+EOcLKvbdkDMKpfuH
+EPDLKvbdMoxQvOHT
+DnbkKvbdbKkenmcA
+DoCjjvbdhytfMRNf
+DoCjjvbdIsZAsNXl
+DoDKjvbdLiBkqYAS
+DncLKvbdyzdmrHiI
+DnbjjvbdemFvfmJk
+EOcLKvbdSCEEkiYk
+DoDKjvbdbiNKKevx
+DoDLKvbdaaVdeoow
+DnbjjvbdNGcQNPuL
+DncLKvbdQYmAGrrK
+EPDKjvbdrbGMkfjy
+EPCjjvbdZjShPfbG
+DnbjjvbdJmADyfuB
+DnbjjvbdhtzFWquC
+DnbjjvbdQvmdDMID
+DncLKvbdjvWnEBww
+EPCjjvbdxZgfGXdr
+EObkKvbdDihKWXjA
+EPCkKvbdZMSETnLm
+EPDKjvbdZLqcsnMN
+EObkKvbdqwPlDJZR
+DoDKjvbdZisIQGaf
+EObjjvbdjlalZeGo
+DncKjvbdxsOJMqag
+DoDKjvbdOFEUIhkE
+DoCkKvbdzitoodSt
+DncLKvbdVrNwaeMD
+DoCjjvbdezuyEiTw
+EPDKjvbdiCOcEvpq
+DoCjjvbdvvlAvAvV
+DnbjjvbdJuuFceHJ
+DoCjjvbdlYrrSyGt
+EPCkKvbdfILVrNqH
+DoDLKvbdxsOJNRbH
+DncKjvbdIwtBgkpp
+DnbkKvbdOTUWHEtp
+EPDKjvbdFejRnIsq
+DnbjjvbdVBCRTQrZ
+EPCjjvbdiMEcnUcZ
+EObkKvbdiZuGMRNf
+EOcKjvbdatbHYLTh
+DoCkKvbdmSZVZrdJ
+DoDKjvbdqTsgRqjt
+DoDLKvbdCEQBWKNG
+DnbjjvbdZtJJZESn
+DncLKvbdIHGzZXwg
+EPDLKvbdwtmFRZMO
+DoCjjvbdKDJbqJcY
+EObkKvbdatbHXkUI
+DnbkKvbdYqNEhleR
+EObjjvbdNHColotk
+EPDKjvbdegkWSNpg
+DoDLKvbdRjyFtfjs
+DoCjjvbddoEsKtUS
+EOcLKvbdsQWOjCvG
+DoCkKvbdvAcxsOeI
+EObjjvbdbAueGQQX
+EOcLKvbdxKwEHzzG
+DoDKjvbdqTtHSRkU
+EOcKjvbdOAIsUKSA
+EPCjjvbdWSNxCElD
+EPDLKvbdnCKWwoNu
+DncLKvbdEARiMzXX
+DoCkKvbdbAvEeoow
+EOcKjvbdhgJcYvJu
+DnbjjvbdTulPisaR
+DnbjjvbdIidAKQGd
+EPDKjvbdyOTIXrhc
+EPCkKvbdrbFmLgLZ
+EPCjjvbddeOqbXDK
+DncKjvbdRacdlJZL
+EOcLKvbdbsDKtDjB
+EPCjjvbdUyHtZkOn
+EObkKvbdyTOImSBg
+DncKjvbdtbbtwWPP
+EPDKjvbdKDKDRJcY
+EObjjvbdhanbeXQq
+EOcLKvbdvvlAuaWV
+EPDLKvbdVYgsyjoO
+EPDLKvbdKaKflawq
+EOcLKvbdCIjajiFj
+EObkKvbdUsmUGMWK
+EPDLKvbdIjEAJofd
+EOcLKvbdqBJFAWhE
+EPCkKvbdEJgivXjA
+DnbkKvbdYkqdTmkm
+EPCkKvbdliDsqUrB
+EObjjvbdKVtfEEfi
+EObkKvbdmgFYMmgZ
+EObjjvbdEARhlyvw
+DncKjvbdaRecHtGL
+DnbjjvbdNQYRVmfs
+EOcLKvbdFfKRnJTq
+DncLKvbdMgDQNQUk
+EObkKvbdHgGyyXwg
+EPCkKvbdCJKbKiFj
+EPCkKvbdBraDUGXS
+EPDLKvbdiMEcnVCy
+DoDLKvbdkCkkQfuH
+EOcLKvbdwtmFRZLn
+EPDKjvbdKefHbApu
+DnbkKvbdkxrqsZGt
+EPCkKvbdfIKvRmqH
+EOcKjvbdDnbkLWbd
+EPDLKvbdaRebhTek
+DoDLKvbdjuwODaxX
+DnbjjvbdREDBPpdS
+DncLKvbdjuwNcaww
+EOcKjvbdbiMjKevx
+EPDKjvbdqvpLcIyR
+EPCjjvbdijGIKMxS
+EPDLKvbdQmYCZNtz
+EObjjvbdCDpAvKMf
+EOcLKvbdJJdAKPgE
+DoDKjvbdUxgszLOn
+DnbjjvbdOEcshhjd
+DoCjjvbdUaCRSprZ
+EPCkKvbdxmrhYTJD
+EPDKjvbdICLydzAD
+EPCjjvbdKRZdoFme
+EObkKvbdNdctJIjd
+EPCjjvbdKVuFdEgJ
+EObjjvbdrXPlDIyR
+DoCkKvbdfMewGmKL
+DnbkKvbdIwsahMQp
+EOcLKvbdRaceMIxk
+EPCkKvbdcyxoxZQb
+EObjjvbdRkYeuGkT
+DncLKvbdbVBfwkTh
+EObjjvbdTppoVUhN
+EPCjjvbdhytfMROG
+EOcKjvbdUxgszKoO
+DoCjjvbdGLEsDHlu
+EObkKvbdegkVqmqH
+DncKjvbdkMbLyeGo
+DncKjvbdyzdmqghh
+EPCkKvbdGFiqnIsq
+EPDKjvbdpstGqqjt
+EPDKjvbdYkrDsmkm
+EPCkKvbdKaLGlbXq
+DoCkKvbdxwiJbPyk
+EPCkKvbdJcKDQibx
+EPCkKvbduDCuXWPP
+DnbjjvbdiGicZWKV
+DoCkKvbdsPunicWG
+DnbjjvbdKNAEZgVB
+EPDLKvbdnPyxujyC
+EObkKvbdJXsagkpp
+EObkKvbdNddUIiKd
+DnbjjvbdQwOEClID
+DnbkKvbdFVxpQMie
+EPCkKvbdVrNxBeLc
+EPCjjvbdUsmUGLuj
+EPDLKvbdGZVVBDwb
+DoCjjvbdmRyUyrdJ
+DncKjvbddZxoxZQb
+DnbjjvbdGKdsDINV
+EObjjvbdrafNLgKy
+DoCjjvbdJbjCqJbx
+DnbjjvbdlYsSTYgU
+DoCkKvbdQvnDblID
+DoDKjvbdssSTYzFD
+DncKjvbdmozZVkZC
+EPDKjvbdjbkkRGuH
+DoDLKvbdxmrgwriD
+DoDKjvbdfHkVrORH
+EPCkKvbdJuuFceHJ
+DoDKjvbdcbSlrATm
+EPCkKvbdeATpmXif
+DncLKvbdBiKajhej
+EPCkKvbdrNZixlIJ
+EPDLKvbdKVteceGi
+EObkKvbdzjVPodTU
+DoDLKvbdWSNxCEkc
+EOcKjvbdZxcimcLr
+EOcKjvbdZnnIeEyj
+DnbkKvbdmbKWxPOV
+EPCkKvbdZLrETmkm
+EPDKjvbdnUtyjiqf
+DoCkKvbdrWpLcJZR
+DoCkKvbdaMkCStmH
+DncLKvbdFVxpQMie
+EPCjjvbdrpWOicWG
+EOcKjvbdyOTIYShc
+EObkKvbdqrVLNkBN
+EOcLKvbdQvnDbkhD
+EOcLKvbdDigiuxKA
+DncLKvbddoErkTtS
+DoDKjvbdRWmdDLgc
+EPCjjvbdiHKDZVjV
+DnbkKvbdADSYKZiQ
+DnbkKvbdsPunibuf
+DoCjjvbdSPsfiedX
+EPDKjvbdJmAEZfta
+EOcKjvbdZMRcsnLm
+DoCkKvbdiLddOUcZ
+EObkKvbdqqtkOLAm
+DoDLKvbdYpmFImFR
+EObjjvbdVhYWXfxz
+DnbjjvbdMowqWNfs
+EObkKvbdVgwuwgYz
+DoDKjvbdDxYLsssl
+DnbjjvbdZtIiYcsO
+DnbkKvbdxwiKBpZk
+DoDKjvbdEuxpPmKF
+EOcKjvbdJcKDRKCx
+EObkKvbdUtNUFlWK
+EOcKjvbdjhHLfFnL
+DoCkKvbdSQTgKGDw
+DncLKvbdQccBQRDr
+DncLKvbdILazmwRL
+DoDKjvbdYTMBNUPY
+DoDLKvbdKaKfmCXq
+EPCjjvbdkIHMGGOL
+DnbjjvbdCIjbKhfK
+DnbkKvbdVgwuwfxz
+EPCjjvbdwtmFQxkn
+EPDLKvbdcyyQYZRC
+DoDKjvbdPyNAGsRj
+EObjjvbdSLYetgLT
+DoDLKvbdMRwNZuQz
+DncKjvbdFjdrcHlu
+DoCjjvbdZyDimbkr
+DnbkKvbdRXNdClID
+EObjjvbdEYYLtUTl
+EObkKvbdVqmxBdlD
+DoDLKvbdptTgRqkU
+EOcLKvbdBdPaWKMf
+EPCjjvbdiBncEvpq
+DoDLKvbdzQoNJKXA
+DoDKjvbdUQpoUtgm
+DnbkKvbdrzLpTBHn
+DoCjjvbdunszpkPU
+EPDLKvbdSZjHsCvA
+DncKjvbdRotHJfDw
+DnbkKvbdFejSOItR
+EOcKjvbdeFOrBwCj
+DoDLKvbdkVwNdCXw
+EPCkKvbdeOdrjtTr
+EPCjjvbdhuZdwRuC
+DnbkKvbdfILVqmqH
+DncKjvbdnPzYvLYb
+DncKjvbdHgGzZYXg
+DncKjvbdkVwNcaxX
+DoDLKvbdOAJSsjSA
+DncKjvbdOFDtJIjd
+EOcLKvbdVgwvYGxz
+EObkKvbdsQVnjDWG
+DoCjjvbdZjShQHCG
+DncKjvbdzoPpeCkx
+DoDLKvbdSLZFtfjs
+DnbkKvbdBsBCtFvr
+EOcLKvbdFyUuAcwb
+DnbjjvbdqUTfqrKt
+DoCjjvbdZxdJmcLr
+DncLKvbdmbJwYPOV
+EObjjvbdEObjkXDE
+EOcKjvbdaSFcIUGL
+EPCkKvbdqYoIHQcx
+EOcKjvbdfNGWgMjL
+DoCjjvbdbrcKtEKB
+EPCkKvbdvBDxsOdh
+DnbjjvbdtcCuXVoP
+DnbjjvbdrpWPKDVf
+EOcKjvbdwyhFfYFS
+EPCjjvbdnPyyWLZC
+EPDLKvbduMYXBUAw
+DoDKjvbduaDySoFI
+DoCjjvbdyXiKCPzL
+DncLKvbdGFjSOIsq
+DoDLKvbdeEoRbXDK
+DncLKvbdcTCjtDia
+DnbjjvbdnUuZjiqf
+DnbjjvbdjlakzFHP
+EOcLKvbdwWlBWAvV
+DnbkKvbdWWiXuceH
+EObkKvbdemGWfmKL
+EObkKvbdmuUykJrG
+DoCkKvbdmozYvKxb
+DncKjvbdQZNAGsSK
+EObjjvbdjblKpgUg
+DncKjvbdSZigsDWA
+EOcLKvbdZyEJmblS
+DoCjjvbdnCJwYOmu
+EPDKjvbdtkxWaTaX
+EPDKjvbdGZUuAcwb
+DoCkKvbdyfxlANEw
+EPCkKvbdTAFJIBnd
+DncKjvbdZLqctOMN
+DncKjvbdUMWPBWPJ
+EPCkKvbdDwwksstM
+EPDKjvbdEObjjvbd
+EObjjvbdWXJYWEEg
+DnbjjvbdpaIeAXIE
+DoCjjvbdqYoIHREY
+DnbjjvbdvmWAMceN
+EObkKvbdLFfHaaQu
+EOcLKvbdpaIeAWgd
+EPDLKvbdkCkkQgUg
+DnbjjvbdePErkTtS
+DnbkKvbdNGbomQVL
+DoDLKvbdEPCjkWcE
+DoCkKvbdehLWRnRH
+EOcKjvbdyXhibQZk
+EOcLKvbdZyEKOCkr
+DoCjjvbdkDLkRGtg
+DoDLKvbdkaNPNALA
+EObkKvbdrWpLbiYq
+DoDLKvbdfHkVqmqH
+DoDLKvbdEOcLKwCd
+DoDKjvbdrykpTBHn
+DncKjvbdxZgefYFS
+DnbkKvbdJpzFPFnF
+DoCkKvbdNGcPmPtk
+EPCjjvbdhzUelRNf
+EObkKvbdVTltFlWK
+DoCkKvbduaDxrneI
+EObkKvbdSQTgJfEX
+EOcKjvbdVhYVxHYz
+EOcKjvbdkCkkQgUg
+EObkKvbdqUUHSSLU
+EOcLKvbduLwwAtAw
+EPDKjvbdZLrETnMN
+EObkKvbdmttyjjRf
+DoDKjvbdYqMdiMdq
+DoCkKvbdkNBkzEfo
+DncKjvbdiLeDnUcZ
+DoDKjvbdZLrDsnLm
+EPCkKvbduVnYKRTA
+EPCjjvbdCIkCLJFj
+EPDKjvbdssRrxyeD
+DncKjvbdQwOEClHc
+EPCkKvbdwXLaWAuu
+EPCkKvbdUyHszKoO
+EPCkKvbdJYTagkqQ
+DoCkKvbdwuNFRYlO
+EPCjjvbdfHkWRmqH
+EOcKjvbddeOqbXCj
+EObkKvbdhficYujV
+EPCkKvbdmSYtzTEJ
+EPCjjvbdtkxWaTaX
+EPDLKvbdwygfGYEr
+EPDKjvbdmpZxvKyC
+DoCjjvbdpstGrSLU
+EPDKjvbdUtMtGLuj
+EOcKjvbdjlbLzFGo
+EObkKvbdkyTSTZGt
+EOcLKvbdLYpjSzuG
+EPDLKvbdyXhibQZk
+DncKjvbdptUHSRkU
+DnbjjvbdFfKRmhtR
+DoCjjvbdtbcUwVoP
+EPDKjvbdhyuFkpnG
+EPDLKvbdFpASwHFy
+EPCjjvbdRbDeLiYk
+DncLKvbdXmqAYUut
+EObjjvbdqlyjZLgi
+DoCjjvbdssSTYydc
+DnbkKvbdTIzJqABM
+EPCkKvbdxsOJNRag
+EPCjjvbdlhcspuSB
+EObkKvbdqUTgSRjt
+EOcKjvbdOEcshhkE
+EObjjvbdzjUpPdTU
+DnbkKvbdvwLaVaWV
+EPCjjvbdmoyyVkYb
+DoCkKvbdOFETiJKd
+EPCjjvbdeEnqawCj
+EObjjvbdmuUzKjRf
+EPDLKvbdVvhxVdFH
+EPCkKvbdaSGDHsek
+EPCjjvbdkySrTZHU
+EObjjvbdtAGqIABS
+EObkKvbdZyEJmblS
+DncKjvbdyTOJMrCH
+DncLKvbdFWYoolie
+DoDLKvbdTvMPjUAq
+EObjjvbdZLqctOLm
+DnbkKvbdmIctQuSB
+DoCkKvbdZGvdAPTJ
+DoCjjvbdkDMLRGuH
+DoDLKvbdnVUykKSG
+DoDKjvbdLGFhBaRV
+DncLKvbdxwiKBozL
+DncLKvbdWIYWXgYz
+DncLKvbdFkFSbglu
+DoDKjvbdIGgZxxXg
+DnbjjvbdEztRFMDJ
+DoDLKvbdZQldiNEq
+EOcLKvbdwWkaWAvV
+DoDKjvbdLBLHMawq
+DoDLKvbdkMbLzFGo
+EPDKjvbdREDAopcr
+DoCkKvbdZoNiEdyj
+EPDLKvbddneSkUUS
+DnbkKvbdSQUHJecw
+DoCjjvbdZshhxcrn
+DnbjjvbdRkZFuHLT
+EPDKjvbdwuNEqYkn
+DoDLKvbdemGXGmJk
+EOcLKvbdKWVGDeGi
+DoCkKvbdWSOXadkc
+EObjjvbdVTmTelWK
+DncKjvbdhkeDmuDZ
+EPCkKvbdRWnEDMID
+DnbjjvbdNQYRVnGs
+DnbkKvbdTfzmlWvF
+DoCkKvbdFpASvgGZ
+DoCjjvbdqTsfqqkU
+EObkKvbdUVkpKUAq
+DoDLKvbdrRtkNjaN
+EPCkKvbdrJAKEmOe
+DncKjvbdIGfyyYXg
+DnbjjvbdZLrDtNkm
+EObjjvbdiMEcmuCy
+DncKjvbdkyTSTZHU
+DncLKvbdBsAbtFvr
+DnbkKvbdrpWPKDWG
+DncKjvbdbBWFFoow
+DoDLKvbdxmsIXsJD
+DnbkKvbdehLWRnRH
+EObkKvbdiVZeXRuC
+DnbkKvbdOTUVfduQ
+DncLKvbdZjTIQHCG
+DoDLKvbdOSsugFVQ
+DoCjjvbdrafNLgKy
+EPDLKvbdNPxRVmgT
+EPDKjvbdHlBznXQk
+EPCkKvbdCEQBWKMf
+EObjjvbdtcDUwWOo
+DoCjjvbdZMSDtNlN
+DoDLKvbdvAcxrneI
+EObjjvbdIxUCILpp
+EOcKjvbdfSBWzkbo
+EObkKvbdShzKRAAl
+DnbjjvbdGZUuBDxC
+EObkKvbdqlzKYkhJ
+EPDKjvbdZyEKNbkr
+DoDLKvbdsrrTYzFD
+DoCkKvbdfSAvzkcP
+DnbjjvbdqlzKYlHi
+EPDKjvbdYTLaNToY
+EPCjjvbdjEjgUoAO
+EOcKjvbdTJZjRABM
+EObkKvbdYORAXtvU
+DoDLKvbdGKdrcHmV
+DoDLKvbdbrcLUEJa
+DncLKvbdqvpLcJZR
+DnbkKvbdFeiqnIsq
+EPDKjvbdZnnIeEzK
+EPCjjvbdnUtzLKRf
+DoDLKvbdDxXlUUTl
+DoDKjvbdiMEcnUby
+EObkKvbdYzbeqjWZ
+DncKjvbdTvLojUAq
+EOcLKvbdjuvmdBxX
+DnbjjvbdzoPpdcMY
+DoDKjvbdrovOibuf
+DoDKjvbdFWZPomJe
+DoDKjvbdqGDeUWBI
+DoCkKvbdWWiYVdEg
+EObkKvbdtvOXiqTA
+DnbjjvbdqZPIGpdY
+EObkKvbdLBKgNCYR
+DoCjjvbdLBKgNCYR
+EObjjvbdZsiJZESn
+DoCkKvbdTqROtuIN
+EPCjjvbdyfyMAMdw
+EOcLKvbdptTgSSLU
+DncLKvbdPxmAHTSK
+DnbjjvbdRkZFtfkT
+EPDLKvbdtlXvaUAw
+EPCkKvbdqBJFAWhE
+EPCkKvbdIidAJogE
+EPDLKvbdKQydoGOF
+EObkKvbdauCGwkTh
+EPCjjvbdNddUIiKd
+DoDLKvbdFfKRmhsq
+EPCkKvbdeEnqbXCj
+EObkKvbdJvVGDdfi
+DoDKjvbdWRmwaeLc
+EObkKvbdSCDeLiZL
+EPDKjvbdDoDLLWcE
+EPDLKvbdiMEcnUby
+DnbjjvbdLBLGmBxR
+EPCjjvbdZnmiEdyj
+EObjjvbdVhXuwgYz
+DncLKvbdUtNTfMVj
+EPDLKvbdKaKgMaxR
+DncKjvbdJcJbpicY
+DnbkKvbdSKyGVHLT
+DoDKjvbdzROlhjXA
+DnbkKvbdlrZUysEJ
+DoCkKvbdnQZyWLYb
+DoCjjvbdeFOqbWbj
+EOcLKvbdjgfkfGOL
+EObkKvbdiHJbyWKV
+DnbkKvbdGdLVibJj
+DoDKjvbdGLErcINV
+EPCjjvbdNGcPlpUk
+EOcKjvbdjFLGtoAO
+EOcKjvbdsBfMlGkZ
+EObjjvbdhtydvquC
+DoCjjvbdznpRFCkx
+DncLKvbdYSkaNUOx
+DoCjjvbdVvhxVdFH
+EPDLKvbdNeETiJLE
+DoDKjvbdcScLTdJa
+EOcLKvbdQwNdDLgc
+DoDLKvbdUMWPBWPJ
+DncKjvbdqFdEtVaI
+EObjjvbdhbPCeXRR
+DoCjjvbdKeehCApu
+DncKjvbdYNqAXuVt
+DoDLKvbdjmCLzFGo
+DoCkKvbdtlXwBUAw
+EObkKvbdwtmEqYlO
+EObjjvbdrovOjCvG
+EObkKvbdqrVLOLBN
+DoCjjvbdSBcdkhxk
+DncLKvbdrEEhomua
+EObkKvbdtbbtvuno
+EPDLKvbdZjShQGaf
+EPCjjvbdTAFJHbPE
+DnbjjvbdcScLTcia
+EObkKvbdbsDLUDia
+DnbkKvbdkyTSTYgU
+DncKjvbdySmhmSCH
+DoCjjvbdnBivxPNu
+DncKjvbdEXxLtTtM
+EObjjvbdZshhyESn
+DoDKjvbdkMbLzEfo
+EObjjvbdssRrxyeD
+DoDKjvbdcSbkTdKB
+EPDLKvbdHDjvJbKK
+DncLKvbdsQVnjCvG
+DnbjjvbdJSyBTMwl
+EOcLKvbddZxpYYqC
+EPCjjvbdrXQLcJZR
+DoCkKvbdnHEwlmfy
+EOcKjvbdGZUuBDwb
+EObjjvbdvOszqKnt
+EOcLKvbdRosgKFdX
+EPCjjvbdMpXqWNfs
+EPCkKvbdJbibqJcY
+DncKjvbdJvVFdEgJ
+EObkKvbdqwPkcIyR
+DnbkKvbdDwxMUTtM
+DncKjvbdtcDVXVno
+EPDLKvbdlZSrSxft
+DoCkKvbdKeehCApu
+EPDLKvbdQlxCYmtz
+EOcLKvbdYqNFJNFR
+DoCkKvbdnCKWwoOV
+EObjjvbdwzIFfYEr
+EOcKjvbdkDMLQfuH
+EPCjjvbdrSUjnLBN
+EPCkKvbdTfznMXVe
+EPCkKvbdZxdKNcMS
+DoCjjvbdJXsaglRQ
+DoCjjvbdNPwqWNgT
+DoCjjvbdLqwMzUpz
+EOcKjvbdCDoaWJlf
+DnbjjvbdlYsRsZGt
+DncKjvbdeOdsLUUS
+EOcKjvbdEvZQPmJe
+DoCkKvbdqBJFAXHd
+DnbjjvbdtkwwBUBX
+EObjjvbdLFfHaaQu
+DoDLKvbdbLMFoNcA
+EPDLKvbdiLdcnUby
+DnbkKvbdUQqPVUgm
+EOcLKvbdEOcLLXDE
+DoDKjvbdrEEhpOWB
+DncKjvbdkCkkQftg
+DncLKvbdMfbpNQUk
+DnbjjvbdTulQKUAq
+DoDLKvbdUtNUFkvK
+DncKjvbddndsKtTr
+EPDKjvbdliDsqVSB
+EPCkKvbdhbOcEvqR
+DoCkKvbdqceJQNua
+DoCkKvbdrWpLcIyR
+DncKjvbdrSVLNkAm
+DoDLKvbdyOShYTJD
+DncKjvbdyYJKBoyk
+DnbjjvbdZQldiNFR
+EPDLKvbdePEsKstS
+EPCjjvbdcScKtDia
+DncLKvbdxsOJNRbH
+EObjjvbdEYXlUUTl
+DoCkKvbdxUldqZMO
+EOcKjvbdRjxeuGkT
+EOcLKvbdqrVLNjaN
+DoCkKvbdDwwktUUM
+EOcLKvbdZQmEiNFR
+EPCkKvbdMSXMytpz
+DnbkKvbdnUtzKiqf
+DoCjjvbdREDAoqDr
+EPCjjvbdZyDinDMS
+EPCjjvbdiCPDEwRR
+EPCkKvbdmSZUzSci
+DoDKjvbdkWWmdCXw
+DnbkKvbdmJDsqVRa
+EPDKjvbdhzVGLpnG
+DoCkKvbdsPuoKDWG
+DoDLKvbdrylPsAgn
+EPCjjvbdsPuoJbuf
+EOcKjvbdrEFJQOVa
+EPCjjvbdEPDLLXCd
+DncKjvbdkVwOEBxX
+EPCkKvbdqGEFUWAh
+DncLKvbdtbcUvuno
+EOcKjvbdWIYWYGxz
+EPDLKvbdZLqcsmkm
+DoDKjvbdmaivwnnV
+DoCkKvbdOYPVzcmt
+DoCjjvbdVwIwvDeH
+DoCjjvbdYkrETmkm
+DoDKjvbdLFfHbAqV
+EObjjvbdkIHLefOL
+EPDKjvbdZjShPfaf
+DoCjjvbdehLWSORH
+DncLKvbdKfFgbBQu
+EObkKvbdsPunjDVf
+DncKjvbdiMEdNuCy
+DncKjvbdFfKSNhtR
+EOcKjvbdFVxpQNKF
+DncLKvbdfHkVrORH
+EObjjvbdKefIBaQu
+EPDKjvbduCbtvuoP
+EPCkKvbdGdLWKCKK
+DncLKvbdLAkGmBwq
+DncLKvbdZshiZESn
+DnbjjvbdySmhmSCH
+DoDKjvbdACqxJyiQ
+DncLKvbdmajXYOmu
+DnbjjvbdxVNFRZMO
+DnbjjvbdVqmxBdlD
+DnbkKvbdIGgZyYXg
+DncKjvbdddnrBvcK
+EPCjjvbdUGzmkwVe
+DncLKvbdaNLCTVNH
+DoCkKvbdWWhwucdg
+DncKjvbdkWWmcaxX
+DoDKjvbdaRfChUGL
+EPDLKvbdOEcsiJKd
+DoDLKvbdGLFTChMu
+EObjjvbdjmBkzFHP
+DncLKvbdrWokcJYq
+EObjjvbdDHMGHAzc
+EObkKvbdRyjITCvA
+DnbjjvbdWRnXbElD
+DoCjjvbdEARiNZvw
+DnbkKvbdRjyFtfjs
+DoCkKvbdMgDQNQVL
+DoDKjvbdCEPaWJmG
+DoCkKvbdUtNTfLuj
+DoDKjvbdNGcQMpVL
+DoDKjvbdZQmFImEq
+EObjjvbdyYIibPyk
+DoDLKvbdcSbjtDjB
+EPCjjvbdPxmAGsSK
+EPCjjvbdnUuZjirG
+EPCkKvbddijSVtzn
+EOcKjvbdxUmEqYlO
+EOcKjvbdxrmiNRag
+EPCkKvbdjmBlZeHP
+EOcKjvbdvBDySndh
+EObjjvbdliDsqVSB
+EOcKjvbdTvMQKUBR
+DncLKvbdRNXbYnUz
+DnbjjvbdyYIiaozL
+DoCkKvbdhbPDEwRR
+EPDKjvbdptUGrSLU
+DoDKjvbdFjeTChMu
+DnbkKvbdFVxoomJe
+EObkKvbdlYrrSyGt
+EPDLKvbdVZHszKnn
+DncLKvbdDwwktUUM
+DncLKvbdDnbkKvcE
+EPCkKvbdjJfHjMwr
+EPDKjvbdUtNTfMWK
+EObjjvbdbhlikGWx
+DncLKvbdKfFhCBQu
+DoDKjvbdVgwvXgYz
+EPDLKvbdiBoCdwRR
+EPDLKvbdzdzOzeZp
+EObkKvbdMoxRWNgT
+EPDKjvbdjvXNdBww
+EObkKvbdUtMsfLuj
+EOcLKvbdnUuZjjRf
+DnbkKvbduCbtwVoP
+EPDLKvbdGGKRmhsq
+EObkKvbdePEsLTtS
+DoCjjvbdSKyGUgLT
+EOcLKvbdRbDdlIyL
+DoDLKvbdNxPVzcnU
+EObjjvbdkCkkRGtg
+DncKjvbdVTmUFkvK
+DncKjvbdUsltFkuj
+EPDKjvbdSCEElJZL
+EOcKjvbdZxcjNcMS
+DoCjjvbdEJgjWYKA
+DncLKvbdREDBQRDr
+DncKjvbddoErjtUS
+EPDLKvbdADSYJyiQ
+EPDKjvbdatafxKsh
+EPDLKvbdkIGkeemk
+DoDLKvbdmRxtzSci
+DnbkKvbdTlWPAvPJ
+DncKjvbdjJegjMwr
+DoCkKvbdqTtHSSKt
+EOcKjvbdkMakzFHP
+DncLKvbddZyPwxpb
+DnbkKvbdTppnuUgm
+EObkKvbdnPyxukZC
+DoDKjvbdbiNJjewY
+EPDKjvbdJSyArlwl
+EPDLKvbdvvlBVaVu
+EOcLKvbdjJfIKMxS
+EPDLKvbdliETqVRa
+DoCkKvbdWXJXvEFH
+DncLKvbdiHKDZWKV
+EObkKvbdEXwktUUM
+EOcKjvbdRWnDcMID
+EPDLKvbdbhljKfWx
+DnbkKvbdVTlsfMVj
+DnbjjvbdZoOIdeZj
+DoDKjvbdDxYLtUTl
+EObjjvbdmIdTqUqa
+EPCjjvbdiZtekqNf
+DoDLKvbdMfcPmPtk
+EPDLKvbdKxpirztf
+DnbkKvbdEARhlzWw
+EOcKjvbdqiAJeMne
+DnbjjvbdUsltGMWK
+DnbkKvbdMoxRWNfs
+EPCjjvbdTqQntuIN
+EPDKjvbdLFfHbApu
+EOcLKvbdANIZSwZx
+DoCjjvbdSLZGUfjs
+DoDLKvbdJSyArlxM
+EOcLKvbddZxoxZRC
+DoDLKvbdRpTfjFcw
+EObjjvbdKefHbBRV
+EPCkKvbdjlakyeGo
+DoDLKvbdiBncFXRR
+EObkKvbdkHfkefOL
+DnbjjvbdfILVrORH
+DnbjjvbdbsDKtDia
+DoCjjvbdqiAKElne
+EObkKvbdEXxMTtUM
+DncKjvbdHfgZxxXg
+EPDKjvbdQvnDcMID
+DoDKjvbdCSaCsewS
+DncLKvbdSZigsDWA
+DnbkKvbdiUyeXSUb
+DnbkKvbdZRNFJMeR
+EPDKjvbdDxXlTstM
+EPCjjvbdkNBlZdfo
+DnbkKvbdhuZdvqtb
+DncLKvbdHDkWJajK
+EOcKjvbdhficZWKV
+DoDLKvbdxwiKCPyk
+EPDLKvbdZQleJMeR
+DoDLKvbdLrXMytpz
+DncKjvbdcTCjtEJa
+DnbkKvbdUMVnaWPJ
+DoCjjvbdnBjXYPOV
+EObjjvbduWNwjQsA
+DoCjjvbdRpUHJecw
+DnbkKvbdJYUBglQp
+EOcLKvbduoTzqKoU
+EObjjvbdZMRctNlN
+EObkKvbdziuPpESt
+DoDLKvbduLxWaTaX
+EOcLKvbdhgKDZWKV
+DnbkKvbdZQldhmFR
+EOcLKvbdcyyPxZQb
+EOcKjvbdRWnDcLgc
+DncLKvbdxZgfFweS
+EPCkKvbdyqOliJwA
+DnbjjvbdsPvPKCuf
+DoCjjvbdMgCpNQVL
+DncLKvbdOEdTiJKd
+EPDKjvbdEARiMyvw
+EOcLKvbdJbibqKDY
+DoCkKvbdeEnrCWbj
+DoCkKvbdGKdrcIMu
+DnbkKvbdUMWOaVoJ
+DoCkKvbdKaKgNCXq
+DnbkKvbdoAKztHdO
+EPDKjvbdDxXlUUTl
+EOcLKvbdFVxoomJe
+EOcKjvbdpyPHfpdY
+EPCjjvbdxwiJaoyk
+DoCkKvbdlqxtyrci
+EOcKjvbdfHkWRmpg
+DoCjjvbdkMalZdfo
+EPCjjvbdJpyePGOF
+DncLKvbdqUUHRqjt
+DoDLKvbdziuQPdSt
+DoDKjvbdBhjajiGK
+EPDKjvbdjcLjpftg
+EPDKjvbdVwJYWEFH
+DnbjjvbdNdcsiJLE
+DoCjjvbdQwODcLgc
+EOcLKvbdtkxXAtAw
+EPDKjvbdwMvANEEm
+DoCjjvbdqFdEsuaI
+EObjjvbdrSUjmjaN
+DoDLKvbdnGeYMnGy
+EOcLKvbdPyNAHTSK
+DnbkKvbdMowpvNgT
+DoCjjvbdGdLVibKK
+DoDLKvbdtcDVXVno
+EObkKvbdtlXwBUAw
+DoCjjvbdSPsgKGEX
+EPCjjvbdURQntuHm
+DncLKvbdrMyjZLgi
+EPDKjvbdwXMAvBVu
+EOcLKvbdRjxfUfkT
+DnbkKvbdGFjRnJTq
+DoCkKvbdbUbHYLTh
+EPDKjvbdoznEKxPA
+EPCjjvbdLiBlQxAS
+DncKjvbdfVzxPizs
+DnbjjvbdSKyFtgLT
+EPDKjvbdrXPlCiZR
+DncLKvbdhzVGLpnG
+EObjjvbdVwJYVdFH
+EPDKjvbdwXLaWBVu
+EPCjjvbdjhHMGFmk
+EObkKvbdKyQjSzuG
+DoCjjvbdmfeYNOHZ
+DoDLKvbdZirgofaf
+EOcLKvbdZoOIdeZj
+EPCkKvbdLFfHbApu
+EPCkKvbdjvWnEBww
+DoDKjvbdcScLUEKB
+DoCkKvbdkCkjqHUg
+DoDKjvbdyTNhmSBg
+DoCkKvbdkHgLfFnL
+EPCjjvbdzoQQdcLx
+DoCjjvbdOTTvHEtp
+EPCkKvbdznopeDLx
+EPCkKvbdGFjRmhtR
+EPCkKvbdUaCQrpqy
+EOcKjvbdnGeXmOHZ
+DoDKjvbdiCPDEwRR
+DoCjjvbdRbEFLiYk
+DncKjvbdRXOECkgc
+EPCjjvbdKWUedEgJ
+DncKjvbdDjIJvYKA
+DoDKjvbdyTOJNRbH
+DoCjjvbdePFTKtTr
+DoDKjvbdhtyeWrVC
+EPCkKvbdqvolCiZR
+DoDLKvbdapHHELzd
+EObjjvbdlhdUQtrB
+EOcKjvbdptUGrRkU
+EPCjjvbdqUTfqrLU
+EPCkKvbdcJMikGWx
+DoDKjvbdlhctRVRa
+EOcLKvbdANHyTXZx
+EPDKjvbdpssfqrKt
+EPCkKvbdFeiqnJTq
+DoCkKvbdxZgfGXdr
+EOcLKvbdRWmcblHc
+DncLKvbdjggMFemk
+DoDKjvbdKeegbBQu