You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2009/09/03 22:51:11 UTC

svn commit: r811116 - in /hadoop/hive/branches/branch-0.4: ./ ql/src/java/org/apache/hadoop/hive/ql/udf/ ql/src/test/org/apache/hadoop/hive/ql/udf/ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ shims/src/0.17/java/org/apache/hadoop/hive...

Author: namit
Date: Thu Sep  3 20:51:10 2009
New Revision: 811116

URL: http://svn.apache.org/viewvc?rev=811116&view=rev
Log:
HIVE-812. ant package should work with all versions of hadoop (Zheng Shao via namit)


Modified:
    hadoop/hive/branches/branch-0.4/CHANGES.txt
    hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMax.java
    hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMin.java
    hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java
    hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java
    hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java
    hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java
    hadoop/hive/branches/branch-0.4/ql/src/test/org/apache/hadoop/hive/ql/udf/UDAFTestMax.java
    hadoop/hive/branches/branch-0.4/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
    hadoop/hive/branches/branch-0.4/shims/src/0.17/java/org/apache/hadoop/hive/shims/Hadoop17Shims.java
    hadoop/hive/branches/branch-0.4/shims/src/0.18/java/org/apache/hadoop/hive/shims/Hadoop18Shims.java
    hadoop/hive/branches/branch-0.4/shims/src/0.19/java/org/apache/hadoop/hive/shims/Hadoop19Shims.java
    hadoop/hive/branches/branch-0.4/shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
    hadoop/hive/branches/branch-0.4/shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java

Modified: hadoop/hive/branches/branch-0.4/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/CHANGES.txt?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/CHANGES.txt (original)
+++ hadoop/hive/branches/branch-0.4/CHANGES.txt Thu Sep  3 20:51:10 2009
@@ -541,6 +541,8 @@
 
     HIVE-752. Bug in shimLoader for HWI server (Edward Capriolo via namit)
 
+    HIVE-812. ant package should work with all versions of hadoop (Zheng Shao via namit)
+
 Release 0.3.1 - Unreleased
 
   INCOMPATIBLE CHANGES

Modified: hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMax.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMax.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMax.java (original)
+++ hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMax.java Thu Sep  3 20:51:10 2009
@@ -22,6 +22,7 @@
 import org.apache.hadoop.hive.ql.exec.UDAFEvaluator;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.LongWritable;
@@ -245,7 +246,7 @@
         if (mEmpty) {
           mMax = new Text(o);
           mEmpty = false;
-        } else if (mMax.compareTo(o) < 0) {
+        } else if (ShimLoader.getHadoopShims().compareText(mMax, o) < 0) {
           mMax.set(o);
         }
       }

Modified: hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMin.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMin.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMin.java (original)
+++ hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFMin.java Thu Sep  3 20:51:10 2009
@@ -22,6 +22,7 @@
 import org.apache.hadoop.hive.ql.exec.UDAFEvaluator;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.LongWritable;
@@ -244,7 +245,7 @@
         if (mEmpty) {
           mMin = new Text(o);
           mEmpty = false;
-        } else if (mMin.compareTo(o) > 0) {
+        } else if (ShimLoader.getHadoopShims().compareText(mMin, o) > 0) {
           mMin.set(o);
         }
       }

Modified: hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java (original)
+++ hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java Thu Sep  3 20:51:10 2009
@@ -24,6 +24,7 @@
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
@@ -48,7 +49,7 @@
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r.set(a.compareTo(b) >= 0);
+      r.set(ShimLoader.getHadoopShims().compareText(a, b) >= 0);
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;

Modified: hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java (original)
+++ hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java Thu Sep  3 20:51:10 2009
@@ -24,6 +24,7 @@
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
@@ -48,7 +49,7 @@
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r.set(a.compareTo(b) <= 0);
+      r.set(ShimLoader.getHadoopShims().compareText(a, b) <= 0);
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;

Modified: hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java (original)
+++ hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java Thu Sep  3 20:51:10 2009
@@ -26,6 +26,7 @@
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
@@ -50,7 +51,7 @@
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r.set(a.compareTo(b) > 0);
+      r.set(ShimLoader.getHadoopShims().compareText(a, b) > 0);
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;

Modified: hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java (original)
+++ hadoop/hive/branches/branch-0.4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java Thu Sep  3 20:51:10 2009
@@ -26,6 +26,7 @@
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
@@ -50,7 +51,7 @@
     if ((a == null) || (b == null)) {
       r = null;
     } else {
-      r.set(a.compareTo(b) < 0);
+      r.set(ShimLoader.getHadoopShims().compareText(a, b) < 0);
     }
     // LOG.info("evaluate(" + a + "," + b + ")=" + r);
     return r;

Modified: hadoop/hive/branches/branch-0.4/ql/src/test/org/apache/hadoop/hive/ql/udf/UDAFTestMax.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/ql/src/test/org/apache/hadoop/hive/ql/udf/UDAFTestMax.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/ql/src/test/org/apache/hadoop/hive/ql/udf/UDAFTestMax.java (original)
+++ hadoop/hive/branches/branch-0.4/ql/src/test/org/apache/hadoop/hive/ql/udf/UDAFTestMax.java Thu Sep  3 20:51:10 2009
@@ -22,6 +22,7 @@
 import org.apache.hadoop.hive.ql.exec.UDAFEvaluator;
 import org.apache.hadoop.hive.serde2.io.DoubleWritable;
 import org.apache.hadoop.hive.serde2.io.ShortWritable;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.FloatWritable;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.LongWritable;
@@ -245,7 +246,7 @@
         if (mEmpty) {
           mMax = new Text(o);
           mEmpty = false;
-        } else if (mMax.compareTo(o) < 0) {
+        } else if (ShimLoader.getHadoopShims().compareText(mMax, o) < 0) {
           mMax.set(o);
         }
       }

Modified: hadoop/hive/branches/branch-0.4/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java (original)
+++ hadoop/hive/branches/branch-0.4/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorUtils.java Thu Sep  3 20:51:10 2009
@@ -38,6 +38,7 @@
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.ShortObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
+import org.apache.hadoop.hive.shims.ShimLoader;
 import org.apache.hadoop.io.Text;
 
 /**
@@ -429,7 +430,8 @@
               Text t2 = (Text)poi2.getPrimitiveWritableObject(o2);
               return t1 == null
                      ? (t2 == null ? 0 : -1)
-                     : (t2 == null ? 1 : t1.compareTo(t2));
+                     : (t2 == null ? 1 : 
+                       ShimLoader.getHadoopShims().compareText(t1, t2));
             } else {
               String s1 = (String)poi1.getPrimitiveJavaObject(o1);
               String s2 = (String)poi2.getPrimitiveJavaObject(o2);

Modified: hadoop/hive/branches/branch-0.4/shims/src/0.17/java/org/apache/hadoop/hive/shims/Hadoop17Shims.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/shims/src/0.17/java/org/apache/hadoop/hive/shims/Hadoop17Shims.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/shims/src/0.17/java/org/apache/hadoop/hive/shims/Hadoop17Shims.java (original)
+++ hadoop/hive/branches/branch-0.4/shims/src/0.17/java/org/apache/hadoop/hive/shims/Hadoop17Shims.java Thu Sep  3 20:51:10 2009
@@ -20,6 +20,7 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.Text;
 import org.apache.hadoop.dfs.MiniDFSCluster;
 import org.apache.hadoop.mapred.InputFormat;
 import org.apache.hadoop.mapred.JobClient;
@@ -75,4 +76,18 @@
       cluster.shutdown();
     }
   }
+
+  /**
+   * We define this function here to make the code compatible between
+   * hadoop 0.17 and hadoop 0.20.
+   *
+   * Hive binary that compiled Text.compareTo(Text) with hadoop 0.20 won't
+   * work with hadoop 0.17 because in hadoop 0.20, Text.compareTo(Text) is
+   * implemented in org.apache.hadoop.io.BinaryComparable, and Java compiler
+   * references that class, which is not available in hadoop 0.17.
+   */
+  public int compareText(Text a, Text b) {
+    return a.compareTo(b);
+  }
+
 }

Modified: hadoop/hive/branches/branch-0.4/shims/src/0.18/java/org/apache/hadoop/hive/shims/Hadoop18Shims.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/shims/src/0.18/java/org/apache/hadoop/hive/shims/Hadoop18Shims.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/shims/src/0.18/java/org/apache/hadoop/hive/shims/Hadoop18Shims.java (original)
+++ hadoop/hive/branches/branch-0.4/shims/src/0.18/java/org/apache/hadoop/hive/shims/Hadoop18Shims.java Thu Sep  3 20:51:10 2009
@@ -20,6 +20,7 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.Text;
 import org.apache.hadoop.dfs.MiniDFSCluster;
 import org.apache.hadoop.mapred.InputFormat;
 import org.apache.hadoop.mapred.JobClient;
@@ -76,4 +77,18 @@
       cluster.shutdown();
     }
   }
-}
\ No newline at end of file
+
+  /**
+   * We define this function here to make the code compatible between
+   * hadoop 0.17 and hadoop 0.20.
+   *
+   * Hive binary that compiled Text.compareTo(Text) with hadoop 0.20 won't
+   * work with hadoop 0.17 because in hadoop 0.20, Text.compareTo(Text) is
+   * implemented in org.apache.hadoop.io.BinaryComparable, and Java compiler
+   * references that class, which is not available in hadoop 0.17.
+   */
+  public int compareText(Text a, Text b) {
+    return a.compareTo(b);
+  }
+
+}

Modified: hadoop/hive/branches/branch-0.4/shims/src/0.19/java/org/apache/hadoop/hive/shims/Hadoop19Shims.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/shims/src/0.19/java/org/apache/hadoop/hive/shims/Hadoop19Shims.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/shims/src/0.19/java/org/apache/hadoop/hive/shims/Hadoop19Shims.java (original)
+++ hadoop/hive/branches/branch-0.4/shims/src/0.19/java/org/apache/hadoop/hive/shims/Hadoop19Shims.java Thu Sep  3 20:51:10 2009
@@ -20,6 +20,7 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.Text;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.hadoop.mapred.InputFormat;
 import org.apache.hadoop.mapred.JobClient;
@@ -76,4 +77,18 @@
       cluster.shutdown();
     }
   }
-}
\ No newline at end of file
+
+  /**
+   * We define this function here to make the code compatible between
+   * hadoop 0.17 and hadoop 0.20.
+   *
+   * Hive binary that compiled Text.compareTo(Text) with hadoop 0.20 won't
+   * work with hadoop 0.17 because in hadoop 0.20, Text.compareTo(Text) is
+   * implemented in org.apache.hadoop.io.BinaryComparable, and Java compiler
+   * references that class, which is not available in hadoop 0.17.
+   */
+  public int compareText(Text a, Text b) {
+    return a.compareTo(b);
+  }
+
+}

Modified: hadoop/hive/branches/branch-0.4/shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java (original)
+++ hadoop/hive/branches/branch-0.4/shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java Thu Sep  3 20:51:10 2009
@@ -20,6 +20,7 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.Text;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.hadoop.mapred.InputFormat;
 import org.apache.hadoop.mapred.JobClient;
@@ -73,4 +74,18 @@
       cluster.shutdown();
     }
   }
-}
\ No newline at end of file
+
+  /**
+   * We define this function here to make the code compatible between
+   * hadoop 0.17 and hadoop 0.20.
+   *
+   * Hive binary that compiled Text.compareTo(Text) with hadoop 0.20 won't
+   * work with hadoop 0.17 because in hadoop 0.20, Text.compareTo(Text) is
+   * implemented in org.apache.hadoop.io.BinaryComparable, and Java compiler
+   * references that class, which is not available in hadoop 0.17.
+   */
+  public int compareText(Text a, Text b) {
+    return a.compareTo(b);
+  }
+
+}

Modified: hadoop/hive/branches/branch-0.4/shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.4/shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java?rev=811116&r1=811115&r2=811116&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.4/shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java (original)
+++ hadoop/hive/branches/branch-0.4/shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java Thu Sep  3 20:51:10 2009
@@ -20,6 +20,7 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.Text;
 import org.apache.hadoop.mapred.InputFormat;
 import org.apache.hadoop.mapred.JobClient;
 import org.apache.hadoop.mapred.JobConf;
@@ -78,4 +79,16 @@
     public FileSystem getFileSystem() throws IOException;
     public void shutdown() throws IOException;
   }
+
+  /**
+   * We define this function here to make the code compatible between
+   * hadoop 0.17 and hadoop 0.20.
+   *
+   * Hive binary that compiled Text.compareTo(Text) with hadoop 0.20 won't
+   * work with hadoop 0.17 because in hadoop 0.20, Text.compareTo(Text) is
+   * implemented in org.apache.hadoop.io.BinaryComparable, and Java compiler
+   * references that class, which is not available in hadoop 0.17.
+   */
+  public int compareText(Text a, Text b);
+
 }