diff --git a/README.md b/README.md index 72962698..0d895dd2 100644 --- a/README.md +++ b/README.md @@ -9,21 +9,21 @@ Java library and command-line application for converting Apache Spark ML pipelin * Feature extractors, transformers and selectors: * [`feature.Binarizer`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/Binarizer.html) * [`feature.Bucketizer`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/Bucketizer.html) - * [`feature.ChiSqSelectorModel`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/ChiSqSelectorModel.html) (the result of fitting a `feature.ChiSqSelector`) + * [`feature.ChiSqSelectorModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/ChiSqSelectorModel.html) (the result of fitting a `feature.ChiSqSelector`) * [`feature.ColumnPruner`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/ColumnPruner.html) * [`feature.CountVectorizerModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/CountVectorizerModel.html) (the result of fitting a `feature.CountVectorizer`) * [`feature.IDFModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/IDFModel.html) (the result of fitting a `feature.IDF`) * [`feature.ImputerModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/ImputerModel.html) (the result of fitting a `feature.Imputer`) * [`feature.IndexToString`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/IndexToString.html) - * [`feature.Interaction`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/Interaction.html) - * [`feature.MaxAbsScalerModel`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/MaxAbsScalerModel.html) (the result of fitting a `feature.MaxAbsScaler`) - * [`feature.MinMaxScalerModel`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/MinMaxScalerModel.html) (the result of fitting a `feature.MinMaxScaler`) + * [`feature.Interaction`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/Interaction.html) + * [`feature.MaxAbsScalerModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/MaxAbsScalerModel.html) (the result of fitting a `feature.MaxAbsScaler`) + * [`feature.MinMaxScalerModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/MinMaxScalerModel.html) (the result of fitting a `feature.MinMaxScaler`) * [`feature.NGram`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/NGram.html) * [`feature.OneHotEncoder`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/OneHotEncoder.html) * [`feature.OneHotEncoderModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/OneHotEncoderModel.html) (the result of fitting a `feature.OneHotEncoderEstimator`) * [`feature.PCAModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/PCAModel.html) (the result of fitting a `feature.PCA`) - * [`feature.QuantileDiscretizer`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/QuantileDiscretizer.html) - * [`feature.RegexTokenizer`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/RegexTokenizer.html) + * [`feature.QuantileDiscretizer`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/QuantileDiscretizer.html) + * [`feature.RegexTokenizer`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/RegexTokenizer.html) * [`feature.RFormulaModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/RFormulaModel.html) (the result of fitting a `feature.RFormula`) * [`feature.SQLTransformer`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/SQLTransformer.html) * [`feature.StandardScalerModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/StandardScalerModel.html) (the result of fitting a `feature.StandardScaler`) @@ -33,15 +33,15 @@ Java library and command-line application for converting Apache Spark ML pipelin * [`feature.VectorAssembler`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/VectorAssembler.html) * [`feature.VectorAttributeRewriter`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/VectorAttributeRewriter.html) * [`feature.VectorIndexerModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/VectorIndexerModel.html) (the result of fitting a `feature.VectorIndexer`) - * [`feature.VectorSlicer`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/VectorSlicer.html) + * [`feature.VectorSlicer`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/feature/VectorSlicer.html) * Prediction models: * [`classification.DecisionTreeClassificationModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/DecisionTreeClassificationModel.html) - * [`classification.GBTClassificationModel`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/GBTClassificationModel.html) + * [`classification.GBTClassificationModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/GBTClassificationModel.html) * [`classification.LogisticRegressionModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/LogisticRegressionModel.html) - * [`classification.MultilayerPerceptronClassificationModel`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/MultilayerPerceptronClassificationModel.html) - * [`classification.NaiveBayesModel`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/NaiveBayesModel.html) + * [`classification.MultilayerPerceptronClassificationModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/MultilayerPerceptronClassificationModel.html) + * [`classification.NaiveBayesModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/NaiveBayesModel.html) * [`classification.RandomForestClassificationModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/classification/RandomForestClassificationModel.html) - * [`clustering.KMeansModel`](http://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/clustering/KMeansModel.html) + * [`clustering.KMeansModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/clustering/KMeansModel.html) * [`regression.DecisionTreeRegressionModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/regression/DecisionTreeRegressionModel.html) * [`regression.GBTRegressionModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/regression/GBTRegressionModel.html) * [`regression.GeneralizedLinearRegressionModel`](https://spark.apache.org/docs/latest/api/java/org/apache/spark/ml/regression/GeneralizedLinearRegressionModel.html) @@ -66,7 +66,7 @@ Java library and command-line application for converting Apache Spark ML pipelin ## Library ## -JPMML-SparkML library JAR file (together with accompanying Java source and Javadocs JAR files) is released via [Maven Central Repository](http://repo1.maven.org/maven2/org/jpmml/). +JPMML-SparkML library JAR file (together with accompanying Java source and Javadocs JAR files) is released via [Maven Central Repository](https://repo1.maven.org/maven2/org/jpmml/). The current version is **1.4.6** (2 October, 2018). @@ -155,7 +155,7 @@ The downside of shading is that such relocated classes are incompatible with oth ## Example application ## -Enter the project root directory and build using [Apache Maven](http://maven.apache.org/): +Enter the project root directory and build using [Apache Maven](https://maven.apache.org/): ``` mvn clean install ``` @@ -198,7 +198,7 @@ JAXBUtil.marshalPMML(pmml, new StreamResult(System.out)); Please refer to the following resources for more ideas and code examples: -* [Converting Apache Spark ML pipeline models to PMML](http://openscoring.io/blog/2018/07/09/converting_sparkml_pipeline_pmml/) +* [Converting Apache Spark ML pipeline models to PMML](https://openscoring.io/blog/2018/07/09/converting_sparkml_pipeline_pmml/) ## Example application ## @@ -218,7 +218,7 @@ spark-submit --master local --class org.jpmml.sparkml.Main target/jpmml-sparkml- # License # -JPMML-SparkML is dual-licensed under the [GNU Affero General Public License (AGPL) version 3.0](http://www.gnu.org/licenses/agpl-3.0.html), and a commercial license. +JPMML-SparkML is dual-licensed under the [GNU Affero General Public License (AGPL) version 3.0](https://www.gnu.org/licenses/agpl-3.0.html), and a commercial license. # Additional information # diff --git a/pom.xml b/pom.xml index 02e61f59..5236acad 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ org.jpmml jpmml-converter - 1.3.3 + 1.3.4 @@ -91,13 +91,13 @@ org.jpmml pmml-evaluator - 1.4.3 + 1.4.4 test org.jpmml pmml-evaluator-test - 1.4.3 + 1.4.4 test diff --git a/src/main/java/org/jpmml/sparkml/DatasetUtil.java b/src/main/java/org/jpmml/sparkml/DatasetUtil.java new file mode 100644 index 00000000..18bc9e17 --- /dev/null +++ b/src/main/java/org/jpmml/sparkml/DatasetUtil.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2018 Villu Ruusmann + * + * This file is part of JPMML-SparkML + * + * JPMML-SparkML is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JPMML-SparkML 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with JPMML-SparkML. If not, see . + */ +package org.jpmml.sparkml; + +import java.util.Collections; +import java.util.concurrent.atomic.AtomicInteger; + +import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.Row; +import org.apache.spark.sql.SparkSession; +import org.apache.spark.sql.catalog.Catalog; +import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan; +import org.apache.spark.sql.execution.QueryExecution; +import org.apache.spark.sql.types.BooleanType; +import org.apache.spark.sql.types.DoubleType; +import org.apache.spark.sql.types.IntegralType; +import org.apache.spark.sql.types.StringType; +import org.apache.spark.sql.types.StructType; +import org.dmg.pmml.DataType; + +public class DatasetUtil { + + private DatasetUtil(){ + } + + static + public LogicalPlan createAnalyzedLogicalPlan(SparkSession sparkSession, StructType schema, String statement){ + String tableName = "sql2pmml_" + DatasetUtil.ID.getAndIncrement(); + + statement = statement.replace("__THIS__", tableName); + + Dataset dataset = sparkSession.createDataFrame(Collections.emptyList(), schema); + + dataset.createOrReplaceTempView(tableName); + + try { + QueryExecution queryExecution = sparkSession.sql(statement).queryExecution(); + + return queryExecution.analyzed(); + } finally { + Catalog catalog = sparkSession.catalog(); + + catalog.dropTempView(tableName); + } + } + + static + public DataType translateDataType(org.apache.spark.sql.types.DataType sparkDataType){ + + if(sparkDataType instanceof StringType){ + return DataType.STRING; + } else + + if(sparkDataType instanceof IntegralType){ + return DataType.INTEGER; + } else + + if(sparkDataType instanceof DoubleType){ + return DataType.DOUBLE; + } else + + if(sparkDataType instanceof BooleanType){ + return DataType.BOOLEAN; + } else + + { + throw new IllegalArgumentException("Expected string, integral, double or boolean type, got " + sparkDataType.typeName() + " type"); + } + } + + private static final AtomicInteger ID = new AtomicInteger(1); +} \ No newline at end of file diff --git a/src/main/java/org/jpmml/sparkml/ExpressionMapping.java b/src/main/java/org/jpmml/sparkml/ExpressionMapping.java deleted file mode 100644 index ab3f7afa..00000000 --- a/src/main/java/org/jpmml/sparkml/ExpressionMapping.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2018 Villu Ruusmann - * - * This file is part of JPMML-SparkML - * - * JPMML-SparkML is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * JPMML-SparkML 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 Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with JPMML-SparkML. If not, see . - */ -package org.jpmml.sparkml; - -import org.apache.spark.sql.catalyst.expressions.Expression; -import org.dmg.pmml.DataType; - -public class ExpressionMapping { - - private Expression from = null; - - private org.dmg.pmml.Expression to = null; - - private DataType dataType = null; - - - public ExpressionMapping(Expression from, org.dmg.pmml.Expression to, DataType dataType){ - setFrom(from); - setTo(to); - setDataType(dataType); - } - - public Expression getFrom(){ - return this.from; - } - - private void setFrom(Expression from){ - this.from = from; - } - - public org.dmg.pmml.Expression getTo(){ - return this.to; - } - - private void setTo(org.dmg.pmml.Expression to){ - this.to = to; - } - - public DataType getDataType(){ - return this.dataType; - } - - private void setDataType(DataType dataType){ - this.dataType = dataType; - } -} \ No newline at end of file diff --git a/src/main/java/org/jpmml/sparkml/ExpressionTranslator.java b/src/main/java/org/jpmml/sparkml/ExpressionTranslator.java index 056bdf36..443c3d92 100644 --- a/src/main/java/org/jpmml/sparkml/ExpressionTranslator.java +++ b/src/main/java/org/jpmml/sparkml/ExpressionTranslator.java @@ -18,17 +18,18 @@ */ package org.jpmml.sparkml; +import java.util.Iterator; import java.util.List; -import org.apache.spark.sql.catalyst.FunctionIdentifier; -import org.apache.spark.sql.catalyst.analysis.UnresolvedAlias; -import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute; -import org.apache.spark.sql.catalyst.analysis.UnresolvedFunction; import org.apache.spark.sql.catalyst.expressions.Add; +import org.apache.spark.sql.catalyst.expressions.Alias; import org.apache.spark.sql.catalyst.expressions.And; +import org.apache.spark.sql.catalyst.expressions.AttributeReference; import org.apache.spark.sql.catalyst.expressions.BinaryArithmetic; import org.apache.spark.sql.catalyst.expressions.BinaryComparison; import org.apache.spark.sql.catalyst.expressions.BinaryOperator; +import org.apache.spark.sql.catalyst.expressions.CaseWhen; +import org.apache.spark.sql.catalyst.expressions.Cast; import org.apache.spark.sql.catalyst.expressions.Divide; import org.apache.spark.sql.catalyst.expressions.EqualTo; import org.apache.spark.sql.catalyst.expressions.Expression; @@ -46,62 +47,57 @@ import org.apache.spark.sql.catalyst.expressions.Or; import org.apache.spark.sql.catalyst.expressions.Subtract; import org.apache.spark.sql.catalyst.expressions.UnaryExpression; -import org.apache.spark.sql.types.BooleanType; -import org.apache.spark.sql.types.DoubleType; -import org.apache.spark.sql.types.IntegralType; -import org.apache.spark.sql.types.StringType; +import org.apache.spark.sql.catalyst.expressions.UnaryMinus; import org.dmg.pmml.Apply; +import org.dmg.pmml.Constant; import org.dmg.pmml.DataType; import org.dmg.pmml.FieldName; import org.dmg.pmml.FieldRef; +import org.dmg.pmml.HasDataType; import org.jpmml.converter.PMMLUtil; +import org.jpmml.converter.visitors.ExpressionCompactor; +import scala.Option; +import scala.Tuple2; import scala.collection.JavaConversions; public class ExpressionTranslator { static - public ExpressionMapping translate(Expression expression, DataTypeResolver dataTypeResolver){ - - if(expression instanceof UnresolvedAlias){ - UnresolvedAlias unresolvedAlias = (UnresolvedAlias)expression; - - Expression child = unresolvedAlias.child(); + public org.dmg.pmml.Expression translate(Expression expression){ + return translate(expression, true); + } - return translate(child, dataTypeResolver); - } else + static + public org.dmg.pmml.Expression translate(Expression expression, boolean compact){ + org.dmg.pmml.Expression pmmlExpression = translateInternal(expression); - if(expression instanceof UnresolvedAttribute){ - UnresolvedAttribute unresolvedAttribute = (UnresolvedAttribute)expression; + if(compact){ + ExpressionCompactor expressionCompactor = new ExpressionCompactor(); - String name = unresolvedAttribute.name(); + expressionCompactor.applyTo(pmmlExpression); + } - return new ExpressionMapping(unresolvedAttribute, new FieldRef(FieldName.create(name)), dataTypeResolver.getDataType(name)); - } else + return pmmlExpression; + } - if(expression instanceof UnresolvedFunction){ - UnresolvedFunction unresolvedFunction = (UnresolvedFunction)expression; + static + private org.dmg.pmml.Expression translateInternal(Expression expression){ - FunctionIdentifier name = unresolvedFunction.name(); - List children = JavaConversions.seqAsJavaList(unresolvedFunction.children()); + if(expression instanceof Alias){ + Alias alias = (Alias)expression; - String identifier = name.identifier(); + Expression child = alias.child(); - if("IF".equalsIgnoreCase(identifier) && children.size() == 3){ - return translate(new If(children.get(0), children.get(1), children.get(2)), dataTypeResolver); - } else + return translateInternal(child); + } // End if - if("ISNOTNULL".equalsIgnoreCase(identifier) && children.size() == 1){ - return translate(new IsNotNull(children.get(0)), dataTypeResolver); - } else + if(expression instanceof AttributeReference){ + AttributeReference attributeReference = (AttributeReference)expression; - if("ISNULL".equalsIgnoreCase(identifier) && children.size() == 1){ - return translate(new IsNull(children.get(0)), dataTypeResolver); - } else + String name = attributeReference.name(); - { - throw new IllegalArgumentException(String.valueOf(unresolvedFunction)); - } - } // End if + return new FieldRef(FieldName.create(name)); + } else if(expression instanceof BinaryOperator){ BinaryOperator binaryOperator = (BinaryOperator)expression; @@ -111,27 +107,31 @@ public ExpressionMapping translate(Expression expression, DataTypeResolver dataT Expression left = binaryOperator.left(); Expression right = binaryOperator.right(); - DataType dataType; - if(expression instanceof And || expression instanceof Or){ - symbol = symbol.toLowerCase(); - dataType = DataType.BOOLEAN; + switch(symbol){ + case "&&": + symbol = "and"; + break; + case "||": + symbol = "or"; + break; + default: + throw new IllegalArgumentException(String.valueOf(binaryOperator)); + } } else if(expression instanceof Add || expression instanceof Divide || expression instanceof Multiply || expression instanceof Subtract){ BinaryArithmetic binaryArithmetic = (BinaryArithmetic)binaryOperator; - if((left.dataType()).acceptsType(right.dataType())){ - dataType = translateDataType(left.dataType()); - } else - - if((right.dataType()).acceptsType(left.dataType())){ - dataType = translateDataType(right.dataType()); - } else - - { - throw new IllegalArgumentException(String.valueOf(binaryArithmetic)); + switch(symbol){ + case "+": + case "/": + case "*": + case "-": + break; + default: + throw new IllegalArgumentException(String.valueOf(binaryArithmetic)); } } else @@ -157,15 +157,77 @@ public ExpressionMapping translate(Expression expression, DataTypeResolver dataT default: throw new IllegalArgumentException(String.valueOf(binaryComparison)); } - - dataType = DataType.BOOLEAN; } else { throw new IllegalArgumentException(String.valueOf(binaryOperator)); } - return new ExpressionMapping(binaryOperator, PMMLUtil.createApply(symbol, translateChild(left, dataTypeResolver), translateChild(right, dataTypeResolver)), dataType); + return PMMLUtil.createApply(symbol, translateInternal(left), translateInternal(right)); + } else + + if(expression instanceof CaseWhen){ + CaseWhen caseWhen = (CaseWhen)expression; + + List> branches = JavaConversions.seqAsJavaList(caseWhen.branches()); + + Option elseValue = caseWhen.elseValue(); + + Apply apply = null; + + Iterator> branchIt = branches.iterator(); + + Apply prevBranchApply = null; + + do { + Tuple2 branch = branchIt.next(); + + Expression predicate = branch._1(); + Expression value = branch._2(); + + Apply branchApply = PMMLUtil.createApply("if") + .addExpressions(translateInternal(predicate), translateInternal(value)); + + if(apply == null){ + apply = branchApply; + } // End if + + if(prevBranchApply != null){ + prevBranchApply.addExpressions(branchApply); + } + + prevBranchApply = branchApply; + } while(branchIt.hasNext()); + + if(elseValue.isDefined()){ + Expression value = elseValue.get(); + + prevBranchApply.addExpressions(translateInternal(value)); + } + + return apply; + } else + + if(expression instanceof Cast){ + Cast cast = (Cast)expression; + + Expression child = cast.child(); + + DataType dataType = DatasetUtil.translateDataType(cast.dataType()); + + org.dmg.pmml.Expression pmmlExpression = translateInternal(child); + + if(pmmlExpression instanceof HasDataType){ + HasDataType hasDataType = (HasDataType)pmmlExpression; + + hasDataType.setDataType(dataType); + + return pmmlExpression; + } else + + { + throw new IllegalArgumentException(String.valueOf(cast)); + } } else if(expression instanceof If){ @@ -176,16 +238,8 @@ public ExpressionMapping translate(Expression expression, DataTypeResolver dataT Expression trueValue = _if.trueValue(); Expression falseValue = _if.falseValue(); - if(!(trueValue.dataType()).sameType(falseValue.dataType())){ - throw new IllegalArgumentException(String.valueOf(_if)); - } - - DataType dataType = translateDataType(trueValue.dataType()); - - Apply apply = PMMLUtil.createApply("if", translateChild(predicate, dataTypeResolver)) - .addExpressions(translateChild(trueValue, dataTypeResolver), translateChild(falseValue, dataTypeResolver)); - - return new ExpressionMapping(_if, apply, dataType); + return PMMLUtil.createApply("if", translateInternal(predicate)) + .addExpressions(translateInternal(trueValue), translateInternal(falseValue)); } else if(expression instanceof In){ @@ -195,13 +249,13 @@ public ExpressionMapping translate(Expression expression, DataTypeResolver dataT List elements = JavaConversions.seqAsJavaList(in.list()); - Apply apply = PMMLUtil.createApply("isIn", translateChild(value, dataTypeResolver)); + Apply apply = PMMLUtil.createApply("isIn", translateInternal(value)); for(Expression element : elements){ - apply.addExpressions(translateChild(element, dataTypeResolver)); + apply.addExpressions(translateInternal(element)); } - return new ExpressionMapping(in, apply, DataType.BOOLEAN); + return apply; } else if(expression instanceof Literal){ @@ -209,9 +263,9 @@ public ExpressionMapping translate(Expression expression, DataTypeResolver dataT Object value = literal.value(); - DataType dataType = translateDataType(literal.dataType()); + DataType dataType = DatasetUtil.translateDataType(literal.dataType()); - return new ExpressionMapping(literal, PMMLUtil.createConstant(value, dataType), dataType); + return PMMLUtil.createConstant(value, dataType); } else if(expression instanceof Not){ @@ -219,7 +273,7 @@ public ExpressionMapping translate(Expression expression, DataTypeResolver dataT Expression child = not.child(); - return new ExpressionMapping(not, PMMLUtil.createApply("not", translateChild(child, dataTypeResolver)), DataType.BOOLEAN); + return PMMLUtil.createApply("not", translateInternal(child)); } else if(expression instanceof UnaryExpression){ @@ -228,57 +282,38 @@ public ExpressionMapping translate(Expression expression, DataTypeResolver dataT Expression child = unaryExpression.child(); if(expression instanceof IsNotNull){ - return new ExpressionMapping(unaryExpression, PMMLUtil.createApply("isNotMissing", translateChild(child, dataTypeResolver)), DataType.BOOLEAN); + return PMMLUtil.createApply("isNotMissing", translateInternal(child)); } else if(expression instanceof IsNull){ - return new ExpressionMapping(unaryExpression, PMMLUtil.createApply("isMissing", translateChild(child, dataTypeResolver)), DataType.BOOLEAN); + return PMMLUtil.createApply("isMissing", translateInternal(child)); } else - { - throw new IllegalArgumentException(String.valueOf(unaryExpression)); - } - } else + if(expression instanceof UnaryMinus){ + UnaryMinus unaryMinus = (UnaryMinus)unaryExpression; - { - throw new IllegalArgumentException(String.valueOf(expression)); - } - } - - static - private org.dmg.pmml.Expression translateChild(Expression expression, DataTypeResolver dataTypeResolver){ - ExpressionMapping expressionMapping = translate(expression, dataTypeResolver); - - return expressionMapping.getTo(); - } + org.dmg.pmml.Expression pmmlExpression = translateInternal(child); - static - private DataType translateDataType(org.apache.spark.sql.types.DataType sparkDataType){ + if(pmmlExpression instanceof Constant){ + Constant constant = (Constant)pmmlExpression; - if(sparkDataType instanceof StringType){ - return DataType.STRING; - } else + constant.setValue("-" + constant.getValue()); - if(sparkDataType instanceof IntegralType){ - return DataType.INTEGER; - } else + return constant; + } else - if(sparkDataType instanceof DoubleType){ - return DataType.DOUBLE; - } else + { + return PMMLUtil.createApply("*", PMMLUtil.createConstant(-1), pmmlExpression); + } + } else - if(sparkDataType instanceof BooleanType){ - return DataType.BOOLEAN; + { + throw new IllegalArgumentException(String.valueOf(unaryExpression)); + } } else { - throw new IllegalArgumentException("Expected string, integral, double or boolean type, got " + sparkDataType.typeName() + " type"); + throw new IllegalArgumentException(String.valueOf(expression)); } } - - static - public interface DataTypeResolver { - - DataType getDataType(String name); - } } \ No newline at end of file diff --git a/src/main/java/org/jpmml/sparkml/ModelConverter.java b/src/main/java/org/jpmml/sparkml/ModelConverter.java index c38ebbb1..3e402a91 100644 --- a/src/main/java/org/jpmml/sparkml/ModelConverter.java +++ b/src/main/java/org/jpmml/sparkml/ModelConverter.java @@ -85,7 +85,7 @@ public Schema encodeSchema(SparkMLEncoder encoder){ if(feature instanceof CategoricalFeature){ CategoricalFeature categoricalFeature = (CategoricalFeature)feature; - DataField dataField = encoder.getDataField(categoricalFeature.getName()); + DataField dataField = (DataField)categoricalFeature.getField(); label = new CategoricalLabel(dataField); } else diff --git a/src/main/java/org/jpmml/sparkml/PMMLBuilder.java b/src/main/java/org/jpmml/sparkml/PMMLBuilder.java index 8277ab7a..f3c55345 100644 --- a/src/main/java/org/jpmml/sparkml/PMMLBuilder.java +++ b/src/main/java/org/jpmml/sparkml/PMMLBuilder.java @@ -59,10 +59,8 @@ import org.dmg.pmml.PMML; import org.dmg.pmml.ResultFeature; import org.dmg.pmml.VerificationField; -import org.dmg.pmml.mining.MiningModel; import org.jpmml.converter.Feature; import org.jpmml.converter.ModelUtil; -import org.jpmml.converter.Schema; import org.jpmml.converter.mining.MiningModelUtil; import org.jpmml.model.MetroJAXBUtil; @@ -149,39 +147,14 @@ public PMML build(){ List postProcessorNames = new ArrayList<>(derivedFields.keySet()); postProcessorNames.removeAll(preProcessorNames); - org.dmg.pmml.Model rootModel; + org.dmg.pmml.Model model; if(models.size() == 1){ - rootModel = Iterables.getOnlyElement(models); + model = Iterables.getOnlyElement(models); } else if(models.size() > 1){ - List targetMiningFields = new ArrayList<>(); - - for(org.dmg.pmml.Model model : models){ - MiningSchema miningSchema = model.getMiningSchema(); - - List miningFields = miningSchema.getMiningFields(); - for(MiningField miningField : miningFields){ - MiningField.UsageType usageType = miningField.getUsageType(); - - switch(usageType){ - case PREDICTED: - case TARGET: - targetMiningFields.add(miningField); - break; - default: - break; - } - } - } - - MiningSchema miningSchema = new MiningSchema(targetMiningFields); - - MiningModel miningModel = MiningModelUtil.createModelChain(models, new Schema(null, Collections.emptyList())) - .setMiningSchema(miningSchema); - - rootModel = miningModel; + model = MiningModelUtil.createModelChain(models); } else { @@ -193,7 +166,7 @@ public PMML build(){ encoder.removeDerivedField(postProcessorName); - Output output = ModelUtil.ensureOutput(rootModel); + Output output = ModelUtil.ensureOutput(model); OutputField outputField = new OutputField(derivedField.getName(), derivedField.getDataType()) .setOpType(derivedField.getOpType()) @@ -203,7 +176,7 @@ public PMML build(){ output.addOutputFields(outputField); } - PMML pmml = encoder.encodePMML(rootModel); + PMML pmml = encoder.encodePMML(model); if((predictionColumns.size() > 0 || probabilityColumns.size() > 0) && (verification != null)){ Dataset dataset = verification.getDataset(); @@ -213,7 +186,7 @@ public PMML build(){ List inputColumns = new ArrayList<>(); - MiningSchema miningSchema = rootModel.getMiningSchema(); + MiningSchema miningSchema = model.getMiningSchema(); List miningFields = miningSchema.getMiningFields(); for(MiningField miningField : miningFields){ @@ -262,7 +235,7 @@ public PMML build(){ } } - rootModel.setModelVerification(ModelUtil.createModelVerification(data)); + model.setModelVerification(ModelUtil.createModelVerification(data)); } return pmml; diff --git a/src/main/java/org/jpmml/sparkml/TermFeature.java b/src/main/java/org/jpmml/sparkml/TermFeature.java index 4e88974d..a4894077 100644 --- a/src/main/java/org/jpmml/sparkml/TermFeature.java +++ b/src/main/java/org/jpmml/sparkml/TermFeature.java @@ -26,7 +26,6 @@ import org.dmg.pmml.Constant; import org.dmg.pmml.DataType; import org.dmg.pmml.DefineFunction; -import org.dmg.pmml.DerivedField; import org.dmg.pmml.FieldName; import org.dmg.pmml.FieldRef; import org.dmg.pmml.OpType; @@ -57,16 +56,7 @@ public TermFeature(PMMLEncoder encoder, DefineFunction defineFunction, Feature f @Override public ContinuousFeature toContinuousFeature(){ - PMMLEncoder encoder = ensureEncoder(); - - DerivedField derivedField = encoder.getDerivedField(getName()); - if(derivedField == null){ - Apply apply = createApply(); - - derivedField = encoder.createDerivedField(getName(), OpType.CONTINUOUS, getDataType(), apply); - } - - return new ContinuousFeature(encoder, derivedField); + return toContinuousFeature(getName(), getDataType(), () -> createApply()); } public WeightedTermFeature toWeightedTermFeature(Number weight){ diff --git a/src/main/java/org/jpmml/sparkml/feature/InteractionConverter.java b/src/main/java/org/jpmml/sparkml/feature/InteractionConverter.java index 4ff47fb8..f1231155 100644 --- a/src/main/java/org/jpmml/sparkml/feature/InteractionConverter.java +++ b/src/main/java/org/jpmml/sparkml/feature/InteractionConverter.java @@ -25,6 +25,7 @@ import org.apache.spark.ml.feature.Interaction; import org.dmg.pmml.DataType; import org.dmg.pmml.FieldName; +import org.jpmml.converter.CategoricalFeature; import org.jpmml.converter.Feature; import org.jpmml.converter.InteractionFeature; import org.jpmml.sparkml.FeatureConverter; @@ -40,7 +41,7 @@ public InteractionConverter(Interaction transformer){ public List encodeFeatures(SparkMLEncoder encoder){ Interaction transformer = getTransformer(); - String name = ""; + StringBuilder sb = new StringBuilder(); List result = new ArrayList<>(); @@ -50,14 +51,29 @@ public List encodeFeatures(SparkMLEncoder encoder){ List features = encoder.getFeatures(inputCol); + if(features.size() == 1){ + Feature feature = features.get(0); + + if(feature instanceof CategoricalFeature){ + CategoricalFeature categoricalFeature = (CategoricalFeature)feature; + + FieldName name = categoricalFeature.getName(); + + // XXX + inputCol = name.getValue(); + + features = OneHotEncoderConverter.encodeFeature(categoricalFeature.getEncoder(), categoricalFeature, categoricalFeature.getValues()); + } + } // End if + if(i == 0){ - name = inputCol; + sb.append(inputCol); result = features; } else { - name += (":" + inputCol); + sb.append(':').append(inputCol); List interactionFeatures = new ArrayList<>(); @@ -66,7 +82,7 @@ public List encodeFeatures(SparkMLEncoder encoder){ for(Feature left : result){ for(Feature right : features){ - interactionFeatures.add(new InteractionFeature(encoder, FieldName.create(name + "[" + index + "]"), DataType.DOUBLE, Arrays.asList(left, right))); + interactionFeatures.add(new InteractionFeature(encoder, FieldName.create(sb.toString() + "[" + index + "]"), DataType.DOUBLE, Arrays.asList(left, right))); index++; } diff --git a/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderConverter.java b/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderConverter.java index 413ed754..5e39d8dd 100644 --- a/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderConverter.java +++ b/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderConverter.java @@ -25,6 +25,7 @@ import org.jpmml.converter.BinaryFeature; import org.jpmml.converter.CategoricalFeature; import org.jpmml.converter.Feature; +import org.jpmml.converter.PMMLEncoder; import org.jpmml.sparkml.FeatureConverter; import org.jpmml.sparkml.SparkMLEncoder; import scala.Option; @@ -39,6 +40,8 @@ public OneHotEncoderConverter(OneHotEncoder transformer){ public List encodeFeatures(SparkMLEncoder encoder){ OneHotEncoder transformer = getTransformer(); + CategoricalFeature categoricalFeature = (CategoricalFeature)encoder.getOnlyFeature(transformer.getInputCol()); + boolean dropLast = true; Option dropLastOption = transformer.get(transformer.dropLast()); @@ -46,17 +49,20 @@ public List encodeFeatures(SparkMLEncoder encoder){ dropLast = (Boolean)dropLastOption.get(); } - CategoricalFeature categoricalFeature = (CategoricalFeature)encoder.getOnlyFeature(transformer.getInputCol()); - List values = categoricalFeature.getValues(); if(dropLast){ values = values.subList(0, values.size() - 1); } + return encodeFeature(encoder, categoricalFeature, values); + } + + static + public List encodeFeature(PMMLEncoder encoder, Feature feature, List values){ List result = new ArrayList<>(); for(String value : values){ - result.add(new BinaryFeature(encoder, categoricalFeature, value)); + result.add(new BinaryFeature(encoder, feature, value)); } return result; diff --git a/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderModelConverter.java b/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderModelConverter.java index ae5138f8..aaf94ab1 100644 --- a/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderModelConverter.java +++ b/src/main/java/org/jpmml/sparkml/feature/OneHotEncoderModelConverter.java @@ -53,11 +53,8 @@ public List encodeFeatures(SparkMLEncoder encoder){ values = values.subList(0, values.size() - 1); } - List binaryFeatures = new ArrayList<>(); - - for(String value : values){ - binaryFeatures.add(new BinaryFeature(encoder, categoricalFeature, value)); - } + // XXX + List binaryFeatures = (List)OneHotEncoderConverter.encodeFeature(encoder, categoricalFeature, values); result.add(new BinarizedCategoricalFeature(encoder, categoricalFeature.getName(), categoricalFeature.getDataType(), binaryFeatures)); } diff --git a/src/main/java/org/jpmml/sparkml/feature/RegexTokenizerConverter.java b/src/main/java/org/jpmml/sparkml/feature/RegexTokenizerConverter.java index e908bd8c..2aad0079 100644 --- a/src/main/java/org/jpmml/sparkml/feature/RegexTokenizerConverter.java +++ b/src/main/java/org/jpmml/sparkml/feature/RegexTokenizerConverter.java @@ -53,7 +53,7 @@ public List encodeFeatures(SparkMLEncoder encoder){ Feature feature = encoder.getOnlyFeature(transformer.getInputCol()); - Field field = encoder.getField(feature.getName()); + Field field = feature.getField(); if(transformer.getToLowercase()){ Apply apply = PMMLUtil.createApply("lowercase", feature.ref()); diff --git a/src/main/java/org/jpmml/sparkml/feature/SQLTransformerConverter.java b/src/main/java/org/jpmml/sparkml/feature/SQLTransformerConverter.java index d6bd08ee..1a21d873 100644 --- a/src/main/java/org/jpmml/sparkml/feature/SQLTransformerConverter.java +++ b/src/main/java/org/jpmml/sparkml/feature/SQLTransformerConverter.java @@ -23,14 +23,11 @@ import org.apache.spark.ml.feature.SQLTransformer; import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.catalyst.analysis.UnresolvedAlias; -import org.apache.spark.sql.catalyst.analysis.UnresolvedStar; import org.apache.spark.sql.catalyst.expressions.Alias; +import org.apache.spark.sql.catalyst.expressions.AttributeReference; import org.apache.spark.sql.catalyst.expressions.Expression; -import org.apache.spark.sql.catalyst.parser.ParseException; -import org.apache.spark.sql.catalyst.parser.ParserInterface; import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan; -import org.apache.spark.sql.internal.SessionState; +import org.apache.spark.sql.types.StructType; import org.dmg.pmml.DataType; import org.dmg.pmml.DerivedField; import org.dmg.pmml.FieldName; @@ -39,7 +36,7 @@ import org.jpmml.converter.ContinuousFeature; import org.jpmml.converter.Feature; import org.jpmml.converter.StringFeature; -import org.jpmml.sparkml.ExpressionMapping; +import org.jpmml.sparkml.DatasetUtil; import org.jpmml.sparkml.ExpressionTranslator; import org.jpmml.sparkml.FeatureConverter; import org.jpmml.sparkml.SparkMLEncoder; @@ -60,34 +57,27 @@ public List encodeFeatures(SparkMLEncoder encoder){ SparkSession sparkSession = SparkSession.builder() .getOrCreate(); - SessionState sessionState = sparkSession.sessionState(); + StructType schema = encoder.getSchema(); - ParserInterface parserInterface = sessionState.sqlParser(); + LogicalPlan logicalPlan = DatasetUtil.createAnalyzedLogicalPlan(sparkSession, schema, statement); - LogicalPlan logicalPlan; + List result = new ArrayList<>(); - try { - logicalPlan = parserInterface.parsePlan(statement); - } catch(ParseException pe){ - throw new IllegalArgumentException(pe); - } + List expressions = JavaConversions.seqAsJavaList(logicalPlan.expressions()); + for(Expression expression : expressions){ - ExpressionTranslator.DataTypeResolver dataTypeResolver = new ExpressionTranslator.DataTypeResolver(){ + if(expression instanceof AttributeReference){ + AttributeReference attributeReference = (AttributeReference)expression; - @Override - public DataType getDataType(String name){ - Feature feature = encoder.getOnlyFeature(name); + String name = attributeReference.name(); - return feature.getDataType(); + encoder.getOnlyFeature(name); } - }; - - List result = new ArrayList<>(); - List expressions = JavaConversions.seqAsJavaList(logicalPlan.expressions()); - for(Expression expression : expressions){ String name; + DataType dataType = DatasetUtil.translateDataType(expression.dataType()); + if(expression instanceof Alias){ Alias alias = (Alias)expression; @@ -96,34 +86,12 @@ public DataType getDataType(String name){ name = alias.name(); } else - if(expression instanceof UnresolvedAlias){ - UnresolvedAlias unresolvedAlias = (UnresolvedAlias)expression; - - expression = unresolvedAlias.child(); - - // XXX - name = "(" + (expression.toString()).replace("\'", "") + ")"; - } else - - if(expression instanceof UnresolvedStar){ - UnresolvedStar unresolvedStar = (UnresolvedStar)expression; - - List features = encoder.getSchemaFeatures(); - - result.addAll(features); - - continue; - } else - { - throw new IllegalArgumentException(String.valueOf(expression)); + name = "sql(" + expression.toString() + ")"; } - ExpressionMapping expressionMapping = ExpressionTranslator.translate(expression, dataTypeResolver); - OpType opType; - DataType dataType = expressionMapping.getDataType(); switch(dataType){ case STRING: opType = OpType.CATEGORICAL; @@ -139,7 +107,7 @@ public DataType getDataType(String name){ throw new IllegalArgumentException(); } - org.dmg.pmml.Expression pmmlExpression = expressionMapping.getTo(); + org.dmg.pmml.Expression pmmlExpression = ExpressionTranslator.translate(expression); DerivedField derivedField = encoder.createDerivedField(FieldName.create(name), opType, dataType, pmmlExpression); diff --git a/src/main/java/org/jpmml/sparkml/feature/StandardScalerModelConverter.java b/src/main/java/org/jpmml/sparkml/feature/StandardScalerModelConverter.java index b0735c46..fd455c5e 100644 --- a/src/main/java/org/jpmml/sparkml/feature/StandardScalerModelConverter.java +++ b/src/main/java/org/jpmml/sparkml/feature/StandardScalerModelConverter.java @@ -20,9 +20,11 @@ import java.util.ArrayList; import java.util.List; +import java.util.function.Supplier; import org.apache.spark.ml.feature.StandardScalerModel; import org.apache.spark.ml.linalg.Vector; +import org.dmg.pmml.Apply; import org.dmg.pmml.DataType; import org.dmg.pmml.DerivedField; import org.dmg.pmml.Expression; @@ -30,7 +32,6 @@ import org.dmg.pmml.OpType; import org.jpmml.converter.ContinuousFeature; import org.jpmml.converter.Feature; -import org.jpmml.converter.PMMLEncoder; import org.jpmml.converter.PMMLUtil; import org.jpmml.converter.ProductFeature; import org.jpmml.converter.ValueUtil; @@ -93,21 +94,14 @@ public List encodeFeatures(SparkMLEncoder encoder){ @Override public ContinuousFeature toContinuousFeature(){ - PMMLEncoder encoder = ensureEncoder(); - - DerivedField derivedField = encoder.getDerivedField(name); - if(derivedField == null){ + Supplier applySupplier = () -> { Feature feature = getFeature(); Number factor = getFactor(); - ContinuousFeature continuousFeature = feature.toContinuousFeature(); - - Expression expression = PMMLUtil.createApply("*", continuousFeature.ref(), PMMLUtil.createConstant(factor)); - - derivedField = encoder.createDerivedField(name, OpType.CONTINUOUS, DataType.DOUBLE, expression); - } + return PMMLUtil.createApply("*", (feature.toContinuousFeature()).ref(), PMMLUtil.createConstant(factor)); + }; - return new ContinuousFeature(encoder, derivedField); + return toContinuousFeature(name, DataType.DOUBLE, applySupplier); } }; } diff --git a/src/test/java/org/jpmml/sparkml/ClassificationTest.java b/src/test/java/org/jpmml/sparkml/ClassificationTest.java index 18c80d29..168529b1 100644 --- a/src/test/java/org/jpmml/sparkml/ClassificationTest.java +++ b/src/test/java/org/jpmml/sparkml/ClassificationTest.java @@ -40,7 +40,7 @@ public void evaluateGLMAudit() throws Exception { @Test public void evaluateLogisticRegressionAudit() throws Exception { - evaluate("LogisticRegression", "Audit", new PMMLEquivalence(5e-11, 1e-14)); + evaluate("LogisticRegression", "Audit", new PMMLEquivalence(5e-10, 5e-10)); } @Test diff --git a/src/test/java/org/jpmml/sparkml/ExpressionTranslatorTest.java b/src/test/java/org/jpmml/sparkml/ExpressionTranslatorTest.java index 2933c6e6..f2ec8349 100644 --- a/src/test/java/org/jpmml/sparkml/ExpressionTranslatorTest.java +++ b/src/test/java/org/jpmml/sparkml/ExpressionTranslatorTest.java @@ -21,17 +21,13 @@ import java.util.List; import org.apache.spark.sql.SparkSession; -import org.apache.spark.sql.catalyst.expressions.And; import org.apache.spark.sql.catalyst.expressions.Expression; -import org.apache.spark.sql.catalyst.expressions.If; -import org.apache.spark.sql.catalyst.expressions.Multiply; -import org.apache.spark.sql.catalyst.expressions.Or; -import org.apache.spark.sql.catalyst.parser.ParseException; -import org.apache.spark.sql.catalyst.parser.ParserInterface; import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan; -import org.apache.spark.sql.internal.SessionState; +import org.apache.spark.sql.types.DataTypes; +import org.apache.spark.sql.types.StructType; import org.dmg.pmml.Apply; -import org.dmg.pmml.DataType; +import org.dmg.pmml.Constant; +import org.dmg.pmml.FieldRef; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -43,80 +39,81 @@ public class ExpressionTranslatorTest { @Test public void translateLogicalExpression(){ - ExpressionTranslator.DataTypeResolver dataTypeResolver = new ExpressionTranslator.DataTypeResolver(){ + Apply apply = (Apply)translate("SELECT (isnull(x1) and not(isnotnull(x2))) FROM __THIS__"); - @Override - public DataType getDataType(String name){ - return DataType.DOUBLE; - } - }; + checkApply(apply, "and", Apply.class, Apply.class); - ExpressionMapping expressionMapping = translate("SELECT (isnull(x1) and not(isnotnull(x2))) FROM __THIS__", dataTypeResolver); + apply = (Apply)translate("SELECT ((x1 <= 0) or (x2 >= 0)) FROM __THIS__"); - checkExpressionMapping(expressionMapping, And.class, Apply.class, DataType.BOOLEAN); - - expressionMapping = translate("SELECT ((x1 <= x2) or (x1 >= x3)) FROM __THIS__", dataTypeResolver); - - checkExpressionMapping(expressionMapping, Or.class, Apply.class, DataType.BOOLEAN); + checkApply(apply, "or", Apply.class, Apply.class); } @Test public void translateArithmeticExpression(){ - ExpressionMapping expressionMapping = translate("SELECT 2 * ((0 + 1) / (0 - 1)) FROM __THIS__", null); + Apply apply = (Apply)translate("SELECT -((x1 - 1) / (x2 + 1)) FROM __THIS__"); + + List pmmlExpressions = checkApply(apply, "*", Constant.class, Apply.class); + + apply = (Apply)pmmlExpressions.get(1); - checkExpressionMapping(expressionMapping, Multiply.class, Apply.class, DataType.INTEGER); + checkApply(apply, "/", Apply.class, Apply.class); } @Test - public void translateIfExpression(){ - ExpressionTranslator.DataTypeResolver dataTypeResolver = new ExpressionTranslator.DataTypeResolver(){ + public void translateCaseWhenExpression(){ + Apply apply = (Apply)translate("SELECT (CASE WHEN x1 < 0 THEN x1 WHEN x2 > 0 THEN x2 ELSE 0 END) FROM __THIS__"); - @Override - public DataType getDataType(String name){ + List pmmlExpressions = checkApply(apply, "if", Apply.class, FieldRef.class, Apply.class); - if(("status").equals(name)){ - return DataType.INTEGER; - } + apply = (Apply)pmmlExpressions.get(0); - return DataType.DOUBLE; - } - }; + checkApply(apply, "lessThan", FieldRef.class, Constant.class); - ExpressionMapping expressionMapping = translate("SELECT if(status in (1, 2, 3), x1 < 0, x2 > 0)", dataTypeResolver); + apply = (Apply)pmmlExpressions.get(2); - checkExpressionMapping(expressionMapping, If.class, Apply.class, DataType.BOOLEAN); + checkApply(apply, "if", Apply.class, FieldRef.class, Constant.class); } - static - private ExpressionMapping translate(String statement, ExpressionTranslator.DataTypeResolver dataTypeResolver){ - SessionState sessionState = ExpressionTranslatorTest.sparkSession.sessionState(); + @Test + public void translateIfExpression(){ + Apply apply = (Apply)translate("SELECT if(status in (-1, 1), x1 != 0, x2 != 0) FROM __THIS__"); - ParserInterface parserInterface = sessionState.sqlParser(); + checkApply(apply, "if", Apply.class, Apply.class, Apply.class); + } - LogicalPlan logicalPlan; + static + private org.dmg.pmml.Expression translate(String statement){ + StructType schema = new StructType() + .add("flag", DataTypes.BooleanType) + .add("x1", DataTypes.DoubleType) + .add("x2", DataTypes.DoubleType) + .add("status", DataTypes.IntegerType); - try { - logicalPlan = parserInterface.parsePlan(statement); - } catch(ParseException pe){ - throw new IllegalArgumentException(pe); - } + LogicalPlan logicalPlan = DatasetUtil.createAnalyzedLogicalPlan(ExpressionTranslatorTest.sparkSession, schema, statement); List expressions = JavaConversions.seqAsJavaList(logicalPlan.expressions()); if(expressions.size() != 1){ throw new IllegalArgumentException(); } - return ExpressionTranslator.translate(expressions.get(0), dataTypeResolver); + return ExpressionTranslator.translate(expressions.get(0)); } static - private void checkExpressionMapping(ExpressionMapping expressionMapping, Class fromClazz, Class toClazz, DataType dataType){ - Expression from = expressionMapping.getFrom(); - org.dmg.pmml.Expression to = expressionMapping.getTo(); + private List checkApply(Apply apply, String function, Class... pmmlExpressionClazzes){ + assertEquals(function, apply.getFunction()); + + List pmmlExpressions = apply.getExpressions(); + assertEquals(pmmlExpressionClazzes.length, pmmlExpressions.size()); + + for(int i = 0; i < pmmlExpressionClazzes.length; i++){ + Class expressionClazz = pmmlExpressionClazzes[i]; + org.dmg.pmml.Expression pmmlExpression = pmmlExpressions.get(i); + + assertEquals(expressionClazz, pmmlExpression.getClass()); + } - assertEquals(fromClazz, from.getClass()); - assertEquals(toClazz, to.getClass()); - assertEquals(dataType, expressionMapping.getDataType()); + return pmmlExpressions; } @BeforeClass diff --git a/src/test/resources/csv/LogisticRegressionAudit.csv b/src/test/resources/csv/LogisticRegressionAudit.csv index f01ac202..6824f645 100644 --- a/src/test/resources/csv/LogisticRegressionAudit.csv +++ b/src/test/resources/csv/LogisticRegressionAudit.csv @@ -1,1900 +1,1900 @@ Adjusted,probability(0),probability(1) -0,0.9800380340966695,0.019961965903330582 -0,0.9888845221308427,0.011115477869157314 -0,0.9637054962900612,0.03629450370993892 -1,0.4086298384589275,0.5913701615410726 -1,0.31913355432673896,0.680866445673261 -0,0.920657341079807,0.0793426589201929 -1,0.19591506748515705,0.8040849325148429 -0,0.9080870235973572,0.09191297640264295 -0,0.9247480983285757,0.07525190167142426 -0,0.9841439011086307,0.01585609889136932 -0,0.9932693408048889,0.0067306591951111485 -0,0.9328533968490773,0.06714660315092275 -0,0.9985326066061374,0.00146739339386266 -0,0.9878848175827751,0.012115182417224906 -1,0.08716374811901424,0.9128362518809857 -0,0.9851009838138959,0.014899016186104116 -0,0.9885652994686464,0.01143470053135367 -0,0.8402626493188823,0.15973735068111772 -1,0.3467214094848356,0.6532785905151643 -1,0.48716779883019523,0.5128322011698049 -0,0.897957950429205,0.10204204957079495 -0,0.8130355771988,0.18696442280120004 -0,0.9981704475371553,0.0018295524628446276 -0,0.7341895447481084,0.2658104552518917 -0,0.9863992976221096,0.013600702377890354 -0,0.9237773655101,0.07622263448989997 -0,0.9442989581505415,0.05570104184945854 -0,0.6826429076502686,0.3173570923497314 -1,0.4069132173885389,0.5930867826114611 -0,0.7751632389180725,0.22483676108192752 -0,0.9184329452062213,0.08156705479377871 -0,0.5533419384921374,0.4466580615078626 -0,0.9957808179499551,0.004219182050044864 -0,0.9829839271269737,0.017016072873026387 -0,0.9661979132592631,0.03380208674073689 -0,0.9808914296955077,0.019108570304492433 -0,0.8511584557150326,0.14884154428496751 -0,0.8716024420529197,0.12839755794708038 -0,0.6965260955410789,0.30347390445892103 -0,0.9009666723894812,0.09903332761051876 -1,0.1123056890547006,0.8876943109452994 -0,0.9108336013201843,0.08916639867981573 -0,0.5931515472104996,0.4068484527895005 -0,0.9975940599141122,0.0024059400858878555 -0,0.8288025692924906,0.1711974307075094 -1,0.18894717601953115,0.8110528239804689 -0,0.9687007581174922,0.03129924188250779 -1,0.27582983694588037,0.7241701630541196 -0,0.9888931848351721,0.01110681516482785 -1,0.30078466967400114,0.6992153303259988 -0,0.9241459576478981,0.07585404235210197 -1,0.07977728291623151,0.9202227170837686 -1,0.46185910522817536,0.5381408947718245 -0,0.9984521248873823,0.0015478751126177673 -0,0.8396188572184402,0.1603811427815598 -0,0.8835431979998563,0.11645680200014377 -0,0.9645672968846963,0.035432703115303804 -0,0.9708785705910656,0.02912142940893445 -0,0.9826509062970048,0.017349093702995276 -0,0.54985244946917,0.45014755053083 -0,0.8813983502178571,0.11860164978214285 -0,0.999999997331698,2.6683019806452866E-9 -0,0.9562137696364682,0.043786230363531756 -1,0.4730612129106054,0.5269387870893946 -0,0.9762406620336979,0.02375933796630201 -0,0.977674944829478,0.02232505517052189 -1,0.17608918916926072,0.8239108108307392 -0,0.8995949265929848,0.10040507340701516 -0,0.9980944924152102,0.0019055075847898353 -0,0.9844978879082161,0.015502112091783756 -0,0.6443782707590394,0.35562172924096064 -1,0.08971180192320768,0.9102881980767924 -0,0.9950802898518378,0.004919710148162134 -0,0.6485795601304377,0.3514204398695623 -1,0.35273225342608633,0.6472677465739137 -0,0.9984950770357733,0.001504922964226549 -0,0.9984822707474149,0.001517729252585089 -1,0.06448504498907358,0.9355149550109265 -0,0.9518616624010457,0.04813833759895421 -0,0.9886901570888925,0.011309842911107404 -0,0.9805095106040965,0.019490489395903355 -0,0.8629038093953462,0.13709619060465383 -0,0.9911378381452471,0.008862161854752831 -1,0.19935747984663613,0.8006425201533638 -0,0.981377512533449,0.018622487466550965 -0,0.8756645797183527,0.12433542028164744 -0,0.9977153242205995,0.0022846757794004807 -0,0.5831467059581369,0.41685329404186305 -0,0.9944846514469482,0.005515348553051782 -0,0.9667331723113386,0.03326682768866147 -1,0.22958804087271562,0.7704119591272844 -0,0.5622002545747897,0.4377997454252102 -0,0.9952417072866722,0.004758292713327845 -1,0.10182584297556523,0.8981741570244347 -1,0.27628855048314704,0.723711449516853 -0,0.5122245517376859,0.487775448262314 -0,0.6793508266691206,0.32064917333087933 -0,0.5854751181497897,0.41452488185021025 -0,0.6002371658399113,0.3997628341600888 -0,0.5123668480970804,0.4876331519029196 -0,0.6963320062083843,0.3036679937916157 -0,0.7455386336886836,0.2544613663113165 -1,0.35144315444109936,0.6485568455589007 -0,0.9407669278748979,0.05923307212510213 -1,0.46082209151498565,0.5391779084850145 -0,0.9645403955079968,0.03545960449200328 -0,0.9957138393332993,0.0042861606667006745 -0,0.5179421052496987,0.4820578947503012 -0,0.9550789738211012,0.04492102617889878 -0,0.7437052917564413,0.25629470824355877 -0,0.9298777466739392,0.07012225332606077 -0,0.948578600444413,0.05142139955558702 -1,0.24420236455305,0.75579763544695 -0,0.9748797454013549,0.02512025459864513 -0,0.9815544616672359,0.018445538332764085 -1,0.41702167880254193,0.582978321197458 -0,0.950780550347473,0.049219449652526906 -0,0.998871461752997,0.001128538247002971 -1,0.3888467154263505,0.6111532845736495 -0,0.8029212241327583,0.19707877586724162 -0,0.997739230250343,0.0022607697496570653 -0,0.9989358126499738,0.0010641873500262563 -1,0.2124357822206572,0.7875642177793428 -0,0.9885257986768562,0.011474201323143847 -0,0.8822205095316484,0.11777949046835154 -0,0.9895885779114161,0.010411422088583864 -0,0.9976089609745404,0.002391039025459526 -1,0.2035133128348631,0.7964866871651369 -0,0.6158723682443954,0.38412763175560455 -0,0.890532074166167,0.10946792583383314 -0,0.980118371187093,0.019881628812907018 -0,0.6290426131719179,0.37095738682808216 -1,0.2232877217119613,0.7767122782880387 -0,0.8079202981512245,0.19207970184877557 -0,0.5233681562425281,0.4766318437574719 -0,0.9840723424300495,0.015927657569950432 -0,0.9770420778398351,0.02295792216016487 -0,0.9990660115435831,9.33988456416898E-4 -0,0.9962078581667664,0.003792141833233637 -0,0.9846045574659753,0.01539544253402461 -0,0.8554553969824051,0.14454460301759492 -0,0.9922697129120396,0.007730287087960498 -0,0.8404861652406407,0.1595138347593594 -0,0.965018444283109,0.03498155571689098 -0,0.8767641160007238,0.1232358839992762 -0,0.898003470399214,0.10199652960078599 -1,0.3124631029095798,0.6875368970904202 -0,0.8584991946166184,0.14150080538338164 -0,0.9934776192841914,0.006522380715808499 -1,0.22457376182713376,0.7754262381728662 -0,0.9138219769698972,0.08617802303010287 -1,0.26751627404569855,0.7324837259543014 -0,0.9367296003645376,0.06327039963546244 -0,0.9686350127247858,0.03136498727521415 -0,0.956849086719307,0.04315091328069291 -1,0.18809430329654683,0.8119056967034531 -0,0.6809145390511396,0.3190854609488605 -0,0.6729957542101884,0.32700424578981163 -0,0.5049367465188122,0.4950632534811879 -0,0.9056234598857479,0.09437654011425207 -0,0.5172847478927152,0.4827152521072849 -0,0.5199363860120162,0.4800636139879838 -0,0.6245587200215443,0.37544127997845556 -0,0.5400046727421858,0.45999532725781417 -0,0.9955589862115725,0.0044410137884275044 -1,0.2058015010767988,0.7941984989232013 -0,0.9999999997728828,2.2711715552395078E-10 -0,0.6688699173286426,0.3311300826713573 -1,0.3875416824053715,0.6124583175946285 -0,0.835252400363033,0.16474759963696697 -0,0.9999999991706248,8.293751323735217E-10 -0,0.9995654355174476,4.3456448255240246E-4 -0,0.9953201929288676,0.00467980707113227 -0,0.9730002789081486,0.026999721091851395 -0,0.9984156319934193,0.0015843680065807466 -0,0.8287039769873696,0.17129602301263044 -0,0.972016082097862,0.02798391790213785 -0,0.9054019958207485,0.0945980041792515 -1,0.07005945219302429,0.9299405478069758 -1,0.3835218367040469,0.6164781632959531 -0,0.9186014342193268,0.08139856578067313 -0,0.9924464300076029,0.007553569992397134 -0,0.9524874885451183,0.04751251145488163 -0,0.7508276811233671,0.2491723188766329 -0,0.5722586887302252,0.4277413112697747 -0,0.9738018802993874,0.026198119700612595 -0,0.9010693297012946,0.09893067029870534 -0,0.9999999995024011,4.97598796201861E-10 -1,0.1558300318728862,0.8441699681271138 -0,0.8910513025046207,0.10894869749537923 -0,0.9407077789576536,0.059292221042346493 -0,0.6783745406373131,0.32162545936268694 -0,0.9849505619602917,0.015049438039708134 -0,0.9999999999999996,4.720861642105316E-16 -0,0.8423016270014858,0.1576983729985142 -0,0.9387072032926025,0.06129279670739747 -0,0.9523061179268165,0.04769388207318357 -0,0.7420033852285431,0.2579966147714569 -0,0.9943269751269493,0.005673024873050574 -0,0.9941083701971021,0.005891629802898014 -0,0.7108055822908752,0.28919441770912474 -0,0.8744098622370226,0.12559013776297756 -0,0.5855715501588149,0.41442844984118515 -0,0.9990080440527361,9.91955947263927E-4 -0,0.8118062194249651,0.18819378057503486 -0,0.9921487741966486,0.00785122580335133 -1,0.10565538284027337,0.8943446171597267 -0,0.9767717891271017,0.023228210872898378 -0,0.9905237439445664,0.009476256055433606 -1,0.302995122466556,0.697004877533444 -0,0.9377131776712199,0.06228682232878016 -0,0.975881996575423,0.02411800342457712 -0,0.9628159538756405,0.03718404612435961 -0,0.9704426678096697,0.029557332190330365 -1,0.3767732640794995,0.6232267359205005 -0,0.9981402980512073,0.0018597019487927716 -0,0.9956445155563849,0.004355484443615138 -0,0.9942472085111932,0.005752791488806847 -0,0.9947548115923956,0.00524518840760436 -0,0.5448659689959803,0.45513403100401967 -0,0.7309753950257175,0.2690246049742826 -0,0.7619847297709614,0.23801527022903854 -0,0.9158460536353652,0.0841539463646348 -0,0.9787303797953903,0.021269620204609683 -0,0.7724412171649605,0.22755878283503947 -0,0.9989067121391555,0.001093287860844571 -0,0.6167950985963461,0.38320490140365393 -0,0.8655091771331141,0.1344908228668859 -0,0.801597506865371,0.198402493134629 -0,0.6854282122491016,0.31457178775089845 -0,0.5847682507073112,0.4152317492926888 -0,0.8173012113142112,0.1826987886857888 -0,0.9732972308624026,0.026702769137597518 -0,0.7454230111578378,0.2545769888421623 -0,0.9790193242956096,0.020980675704390404 -0,0.7865799000426305,0.21342009995736952 -1,0.2884343934088325,0.7115656065911675 -1,0.35942653674458197,0.6405734632554179 -0,0.9831803713654853,0.01681962863451476 -0,0.9909512374496535,0.009048762550346498 -1,0.12450090225715756,0.8754990977428424 -0,0.8118372056805178,0.1881627943194823 -0,0.9594860227479655,0.04051397725203463 -0,0.5247365108288098,0.4752634891711901 -1,0.4315337779070432,0.5684662220929568 -1,0.41704600554920024,0.5829539944507998 -0,0.8018150755209345,0.19818492447906547 -0,0.9549839343132359,0.045016065686764126 -1,0.0917112193335955,0.9082887806664045 -0,0.9204929562896056,0.07950704371039453 -0,0.7416290700377874,0.2583709299622125 -0,0.9944777160279548,0.005522283972045236 -0,0.6772619258305658,0.32273807416943423 -0,0.9305327610329548,0.06946723896704515 -0,0.98643823728495,0.013561762715050026 -1,0.4559125803605908,0.5440874196394092 -0,0.961214849766637,0.03878515023336302 -0,0.8203056681804417,0.17969433181955824 -1,0.43254784708774385,0.5674521529122561 -0,0.6514898807313854,0.3485101192686146 -1,0.3773012214191941,0.6226987785808059 -0,0.9385160765595679,0.06148392344043208 -0,0.8946210187026197,0.10537898129738038 -0,0.9740732815094423,0.025926718490557762 -0,0.9999999981380001,1.8619999435335319E-9 -0,0.9999998674548152,1.3254518470864585E-7 -0,0.5065616922308999,0.4934383077691001 -0,0.7043229176640904,0.2956770823359096 -0,0.9687966182857938,0.031203381714206287 -0,0.9979741090594965,0.0020258909405035646 -1,0.15429051169285776,0.8457094883071423 -0,0.8081620936286328,0.1918379063713672 -0,0.9700435672000834,0.029956432799916572 -0,0.6357202792848107,0.3642797207151894 -0,0.9399701180527251,0.06002988194727487 -0,0.5276127561278037,0.4723872438721963 -1,0.3418314223194193,0.6581685776805807 -1,0.22130162727543973,0.7786983727245603 -0,0.614473562395186,0.385526437604814 -1,0.13527054014888054,0.8647294598511195 -1,0.0712745377709311,0.9287254622290689 -1,0.2739470124065554,0.7260529875934446 -1,0.26344001100855396,0.736559988991446 -1,0.486603059516816,0.5133969404831841 -1,0.4989200459182044,0.5010799540817957 -0,0.9945064185163932,0.005493581483606918 -0,0.9954865187269059,0.004513481273094126 -0,0.845269725601971,0.15473027439802897 -0,0.991058803897041,0.00894119610295891 -0,0.9841375047092887,0.015862495290711393 -0,0.9393774780841951,0.06062252191580493 -0,0.9999999985547712,1.4452289032774294E-9 -1,0.1034644324190521,0.896535567580948 -0,0.9320836655083575,0.06791633449164233 -0,0.8922836232600635,0.10771637673993648 -0,0.9851953542272177,0.014804645772782307 -0,0.9732959165791824,0.02670408342081761 -0,0.928762484642699,0.071237515357301 -0,0.5660612463699453,0.43393875363005474 -0,0.9491498250528511,0.050850174947148975 -0,0.9962831044025703,0.0037168955974297173 -0,0.6569618767489228,0.34303812325107724 -0,0.5049157388577741,0.495084261142226 -0,0.9573422073362516,0.042657792663748466 -0,0.9806468305912358,0.019353169408764307 -1,0.11051292098088648,0.8894870790191134 -0,0.9999997542275145,2.4577248541204497E-7 -0,0.9793877295751268,0.020612270424873208 -0,0.9581129408114651,0.0418870591885349 -0,0.8870197703530633,0.11298022964693653 -0,0.9980050134013485,0.0019949865986515895 -0,0.9242597911641225,0.07574020883587747 -1,0.22099577010047436,0.7790042298995257 -0,0.9529336052132482,0.04706639478675187 -0,0.996794108397909,0.0032058916020909884 -0,0.9862854099167102,0.01371459008328983 -0,0.9964250479306747,0.003574952069325249 -0,0.735141282847286,0.2648587171527141 -0,0.9884763909399734,0.011523609060026573 -0,0.5086257047425069,0.4913742952574932 -0,0.984934586911334,0.015065413088666107 -1,0.2722201503770631,0.7277798496229368 -0,0.8328684957640673,0.1671315042359327 -0,0.9715233194567251,0.02847668054327493 -0,0.9735499873339065,0.02645001266609352 -1,0.3474460608488951,0.6525539391511048 -0,0.9741000937501149,0.025899906249885155 -0,0.9831319505498383,0.01686804945016178 -0,0.9731097115646826,0.026890288435317294 -0,0.6873789705640384,0.3126210294359615 -0,0.7578450871204518,0.2421549128795482 -1,0.129281811335127,0.870718188664873 -0,0.8395899038813895,0.16041009611861048 -0,0.7694302312329921,0.2305697687670078 -0,0.9352109843975579,0.06478901560244202 -0,0.9032665852753807,0.09673341472461923 -0,0.8704876693789968,0.12951233062100329 -0,0.991590293786384,0.008409706213616079 -0,0.9776743498064544,0.022325650193545543 -0,0.8512374128806738,0.14876258711932627 -1,0.0948181433194908,0.9051818566805091 -0,0.9941952413198443,0.005804758680155867 -0,0.5134781699588845,0.48652183004111543 -0,0.9779717804839358,0.02202821951606422 -0,0.8766326343787307,0.12336736562126929 -0,0.9801438411479153,0.01985615885208465 -0,0.8057293836075946,0.19427061639240537 -0,0.9850015736724256,0.01499842632757444 -0,0.992377796463944,0.007622203536055978 -0,0.8437445030552535,0.15625549694474658 -0,0.72591369969409,0.27408630030590997 -0,0.7557192985819341,0.24428070141806596 -0,0.9969327579024271,0.0030672420975729263 -0,0.9921209527806631,0.007879047219336905 -0,0.9547466870991018,0.045253312900898186 -0,0.7134621109552162,0.28653788904478383 -0,0.8454646656126548,0.15453533438734535 -0,0.9726383897872793,0.027361610212720697 -0,0.9853192966950755,0.014680703304924637 -0,0.951271756392539,0.048728243607460954 -0,0.8594921383279556,0.1405078616720445 -0,0.8338140539499098,0.16618594605009016 -0,0.9878096796011285,0.012190320398871425 -0,0.9776656228009563,0.02233437719904362 -0,0.8480836287739625,0.15191637122603746 -0,0.9983594535089891,0.0016405464910109625 -0,0.6681464069112351,0.33185359308876494 -0,0.7948733211957602,0.20512667880423996 -1,0.278599944600459,0.721400055399541 -0,0.5930978715997329,0.40690212840026707 -0,0.9663562026506689,0.03364379734933107 -0,0.9793173264756587,0.020682673524341336 -0,0.6132611020905122,0.3867388979094878 -0,0.999997932861777,2.067138222940708E-6 -0,0.7175276099280193,0.28247239007198066 -0,0.9331133287082547,0.06688667129174526 -0,0.9691627103831593,0.0308372896168407 -0,0.9046375580704635,0.09536244192953654 -0,0.9987672696610342,0.0012327303389657192 -0,0.9654531641092757,0.034546835890724305 -0,0.7719590455498794,0.2280409544501206 -0,0.9486462833971803,0.05135371660281966 -0,0.9993737652511723,6.262347488277871E-4 -0,0.7232098435756747,0.27679015642432514 -0,0.8184267864048884,0.18157321359511164 -1,0.23268208391447784,0.7673179160855221 -0,0.9887764241644392,0.011223575835560804 -0,0.8078885705622144,0.19211142943778556 -0,0.8221311108899608,0.1778688891100392 -0,0.9407493848831313,0.05925061511686863 -0,0.9863535708319765,0.013646429168023399 -0,0.6750137123216375,0.3249862876783625 -0,0.996274365249029,0.0037256347509709103 -0,0.9015506365075476,0.0984493634924523 -0,0.9886972841746078,0.011302715825392055 -1,0.15359764868176853,0.8464023513182315 -0,0.7095144402364799,0.29048555976352014 -0,0.9122074445299636,0.0877925554700365 -0,0.9650727978266733,0.03492720217332666 -0,0.9930123057406963,0.0069876942593037296 -0,0.9727865606419562,0.02721343935804377 -1,0.2405752991261032,0.7594247008738968 -0,0.9319911388048625,0.06800886119513742 -0,0.9913979016142441,0.008602098385755848 -0,0.9069849831178026,0.09301501688219736 -0,0.9470356877681965,0.05296431223180354 -0,0.9848874832531285,0.01511251674687154 -0,0.5788778856664378,0.4211221143335621 -0,0.5046387334187078,0.49536126658129215 -0,0.9392196188773091,0.060780381122690796 -0,0.9999999590870788,4.091292117366931E-8 -1,0.13895970200422442,0.8610402979957756 -0,0.9183155624467197,0.0816844375532802 -0,0.6976876369199762,0.3023123630800239 -0,0.9920683617158975,0.007931638284102639 -0,0.8581010949818577,0.14189890501814229 -0,0.996110881914227,0.003889118085772996 -0,0.7808806707384859,0.21911932926151412 -1,0.3948244555452573,0.6051755444547428 -0,0.9474220036871738,0.05257799631282618 -0,0.9800224178000924,0.019977582199907692 -1,0.19846546178274127,0.8015345382172587 -1,0.16071245165277445,0.8392875483472255 -1,0.23930118376124737,0.7606988162387526 -0,0.7384534631067377,0.2615465368932624 -0,0.9800576186498384,0.019942381350161645 -0,0.9673574918636936,0.03264250813630633 -1,0.30513844597164014,0.6948615540283599 -0,0.8623621767406845,0.13763782325931537 -0,0.7804156949037888,0.21958430509621119 -0,0.9186921786775551,0.08130782132244481 -0,0.7714958798194045,0.22850412018059554 -0,0.8309408896155166,0.16905911038448335 -0,0.7977316713671457,0.20226832863285424 -1,0.17125848395373608,0.828741516046264 -0,0.9786760049311024,0.021323995068897518 -0,0.8534258779277936,0.1465741220722064 -0,0.9974888815670768,0.002511118432923085 -0,0.6478943745579452,0.35210562544205487 -0,0.7603908070985587,0.2396091929014413 -0,0.9657300169241219,0.03426998307587827 -0,0.9977386362245945,0.00226136377540556 -0,0.6746947553064112,0.3253052446935889 -1,0.33430387075215334,0.6656961292478466 -1,0.17006827819611586,0.8299317218038841 -0,0.9993457848050273,6.542151949725414E-4 -1,0.27022733645637254,0.7297726635436276 -1,0.12248095382960357,0.8775190461703964 -0,0.9726473321816077,0.027352667818392323 -0,0.9838019005105504,0.0161980994894496 -0,0.9897733502442463,0.010226649755753813 -0,0.9769797456240605,0.023020254375939606 -0,0.672521646590186,0.3274783534098141 -0,0.940717974742173,0.0592820252578271 -0,0.9999996033609863,3.9663901378305205E-7 -0,0.920343918989999,0.07965608101000102 -0,0.7649180551804159,0.23508194481958422 -1,0.22155922476930495,0.7784407752306951 -1,0.2266918094171095,0.7733081905828906 -0,0.9980300069250923,0.001969993074907779 -1,0.2785633326714383,0.7214366673285617 -0,0.9207668883646299,0.07923311163537008 -0,0.5693218014942242,0.4306781985057758 -0,0.8670971313363455,0.13290286866365458 -0,0.9820685014118513,0.01793149858814866 -0,0.7713874802206693,0.22861251977933064 -0,0.982498021921144,0.017501978078855916 -0,0.9378752691708039,0.06212473082919604 -0,0.966359380576395,0.033640619423605 -1,0.3947139893734025,0.6052860106265975 -0,0.9408945053285065,0.05910549467149344 -0,0.7632833573318024,0.23671664266819756 -0,0.9314921177997905,0.0685078822002095 -0,0.9983866192134351,0.0016133807865648883 -0,0.8341675714602172,0.16583242853978272 -1,0.04619380734591024,0.9538061926540898 -1,0.4978012577751404,0.5021987422248596 -1,0.42450825977425316,0.5754917402257468 -0,0.627172702202826,0.37282729779717405 -0,0.9960971892159667,0.003902810784033295 -0,0.8821300225570738,0.11786997744292622 -0,0.9993300153257904,6.699846742096438E-4 -1,0.48248600502077815,0.5175139949792218 -0,0.7290928931325495,0.27090710686745045 -1,0.3198603744294526,0.6801396255705474 -1,0.3507879078366058,0.6492120921633943 -0,0.9685776478362896,0.03142235216371031 -0,0.6440704172395377,0.35592958276046227 -0,0.8631955219959859,0.1368044780040141 -0,0.9606268419964867,0.039373158003513264 -1,0.3533875176492637,0.6466124823507362 -0,0.9088920013172204,0.09110799868277965 -0,0.9798537122116616,0.020146287788338452 -1,0.41362980868783816,0.5863701913121617 -0,0.6748545526670374,0.32514544733296263 -0,0.7018113344816649,0.2981886655183351 -1,0.19055525874824986,0.8094447412517501 -0,0.9950868023013818,0.004913197698618118 -0,0.9985841931542441,0.0014158068457559671 -0,0.7732094814115541,0.2267905185884459 -0,0.8386856822842443,0.16131431771575555 -0,0.8633802815978412,0.13661971840215878 -0,0.9784370264873234,0.02156297351267665 -0,0.9360420631067998,0.06395793689320019 -0,0.9741647835021676,0.02583521649783227 -0,0.595852570115922,0.404147429884078 -0,0.9854817965087564,0.014518203491243586 -0,0.9580289227543977,0.04197107724560244 -0,0.9924256817791779,0.007574318220822045 -1,0.3001090906542764,0.6998909093457236 -0,0.5069300243475472,0.49306997565245275 -0,0.9894719134188779,0.010528086581122156 -0,0.9719978371532723,0.028002162846727716 -0,0.6475035769453827,0.3524964230546173 -0,0.999999409477259,5.905227411408175E-7 -0,0.9836797745607876,0.016320225439212317 -0,0.9721113493930744,0.027888650606925476 -0,0.9922561331634291,0.007743866836570895 -0,0.9599276900123841,0.04007230998761586 -1,0.18905947418083502,0.8109405258191651 -1,0.050580290949983425,0.9494197090500166 -0,0.6895973080010892,0.3104026919989108 -0,0.9105192536678286,0.08948074633217147 -0,0.7533151727182897,0.2466848272817102 -0,0.9978854640876231,0.002114535912376951 -0,0.7998279185155486,0.20017208148445143 -0,0.752333283140447,0.24766671685955294 -0,0.8693928448793228,0.13060715512067728 -0,0.7373809085939373,0.2626190914060627 -0,0.9999999586658092,4.133419069681734E-8 -0,0.9482772642034518,0.05172273579654816 -0,0.9614521252650245,0.038547874734975465 -0,0.5121072743092974,0.4878927256907026 -0,0.997884321369095,0.0021156786309050584 -0,0.9810041207347969,0.018995879265203124 -0,0.6798409020772948,0.3201590979227053 -0,0.9200929077036311,0.07990709229636893 -0,0.8348360969935891,0.1651639030064109 -0,0.9753978503409865,0.024602149659013473 -0,0.9864166526510177,0.013583347348982151 -0,0.9364902793343985,0.06350972066560145 -0,0.867665042990562,0.132334957009438 -1,0.2365834045730868,0.7634165954269132 -0,0.790472857971062,0.2095271420289379 -1,0.1505851932636323,0.8494148067363677 -0,0.9938948458053443,0.00610515419465567 -0,0.9938345631480839,0.006165436851916148 -1,0.1799029777766076,0.8200970222233924 -0,0.9749002923448726,0.025099707655127427 -1,0.4760735114964039,0.523926488503596 -0,0.6603544297380626,0.3396455702619375 -0,0.8744211355122545,0.12557886448774538 -0,0.8823085711231554,0.11769142887684465 -0,0.9938450886762904,0.006154911323709649 -0,0.9063977239420036,0.09360227605799636 -0,0.7977224926571685,0.20227750734283145 -1,0.4139006067307171,0.5860993932692828 -0,0.7476966774380713,0.2523033225619286 -0,0.8228685712149248,0.17713142878507512 -1,0.2002925690611888,0.7997074309388111 -0,0.9641629979853679,0.03583700201463214 -0,0.928851193428721,0.07114880657127894 -1,0.15153664147074095,0.8484633585292591 -1,0.10079289163231393,0.8992071083676861 -1,0.45713577402146865,0.5428642259785313 -0,0.819858708813695,0.18014129118630495 -1,0.17323715076183221,0.8267628492381678 -0,0.9731848618832633,0.02681513811673672 -0,0.9602412039359698,0.039758796064030134 -0,0.7906222915231095,0.20937770847689063 -0,0.843626431707866,0.15637356829213406 -0,0.8014328613522376,0.19856713864776246 -0,0.9982599967569187,0.0017400032430813087 -0,0.9384572028240105,0.06154279717598957 -0,0.9850106417058347,0.01498935829416531 -1,0.18145538663885918,0.8185446133611408 -0,0.9889387371250616,0.011061262874938482 -0,0.7735159890456955,0.22648401095430448 -0,0.9952355721745361,0.004764427825464015 -0,0.6890850710985549,0.31091492890144506 -0,0.9941915159845652,0.005808484015434762 -0,0.9912532330066659,0.00874676699333418 -0,0.9875714002489491,0.012428599751050994 -0,0.5821597793038693,0.41784022069613064 -0,0.5580398428999038,0.4419601571000961 -0,0.9695319701760783,0.030468029823921654 -0,0.6873903760136417,0.3126096239863583 -0,0.9330552849399896,0.06694471506001051 -0,0.8370379045612008,0.16296209543879928 -0,0.9386431474396023,0.06135685256039772 -0,0.9833990099909858,0.016600990009014247 -1,0.3351559659818958,0.6648440340181042 -0,0.6991551229601808,0.30084487703981927 -0,0.7170444008952852,0.28295559910471485 -0,0.9992068736417454,7.931263582545119E-4 -0,0.883996911511393,0.11600308848860702 -1,0.3323990443099591,0.667600955690041 -1,0.48612648960500043,0.5138735103949995 -0,0.6425979587049261,0.3574020412950739 -1,0.26906197624288036,0.7309380237571197 -0,0.9803649695360532,0.01963503046394674 -0,0.9535570592357826,0.046442940764217386 -0,0.9707169033791215,0.029283096620878555 -1,0.47216742988074806,0.527832570119252 -0,0.9767654234658658,0.023234576534134143 -0,0.9559525777820245,0.044047422217975515 -0,0.9303414615117536,0.0696585384882464 -0,0.6946253571430798,0.3053746428569202 -0,0.7586363752146846,0.24136362478531534 -0,0.9404351716539573,0.05956482834604269 -0,0.9554707879885634,0.04452921201143644 -1,0.2441557087982462,0.7558442912017538 -0,0.8146888619187627,0.18531113808123723 -0,0.9040326973158144,0.09596730268418575 -0,0.8619966187804035,0.13800338121959654 -0,0.9726947169774398,0.027305283022560047 -0,0.97887579790937,0.02112420209063004 -0,0.9526449548287992,0.04735504517120083 -0,0.6820384964734134,0.3179615035265866 -0,0.9999999997323901,2.676100086063003E-10 -0,0.9029743812848147,0.09702561871518536 -0,0.9774187759033632,0.02258122409663668 -0,0.9284348459578278,0.07156515404217231 -0,0.8353655484729758,0.16463445152702413 -1,0.4283206822525817,0.5716793177474183 -0,0.9894031984611167,0.010596801538883278 -0,0.9904092413769786,0.00959075862302134 -0,0.9942972937612437,0.005702706238756302 -0,0.9678533638703926,0.03214663612960736 -0,0.9999996808525732,3.1914742681601654E-7 -0,0.8432780815869251,0.15672191841307498 -0,0.9999999999771261,2.2873974673659872E-11 -0,0.6724932264379154,0.3275067735620845 -0,0.5279940668886686,0.47200593311133143 -0,0.9416902881007932,0.0583097118992068 -0,0.7789221189980521,0.22107788100194797 -0,0.9118077857434963,0.08819221425650368 -0,0.7571826123842624,0.2428173876157375 -0,0.9999995685624915,4.31437508457567E-7 -0,0.8927400178883009,0.107259982111699 -0,0.8417572202010074,0.15824277979899257 -1,0.01925024433312171,0.9807497556668783 -0,0.9976451593354991,0.002354840664500872 -0,0.9939197710492632,0.006080228950736686 -0,0.8271529154695653,0.1728470845304347 -0,0.9390425494634662,0.06095745053653373 -0,0.9905986511234851,0.009401348876514804 -0,0.9701061090602814,0.029893890939718646 -0,0.5255003390186388,0.4744996609813612 -1,0.06497285250277103,0.9350271474972289 -0,0.9670235192419231,0.03297648075807702 -0,0.9992021701088959,7.978298911040493E-4 -0,0.9046668345237847,0.09533316547621527 -1,0.01963676655254327,0.9803632334474567 -0,0.9828633246770551,0.017136675322944835 -0,0.9729663253546894,0.027033674645310597 -1,0.09851754503012106,0.9014824549698789 -1,0.2604309016807204,0.7395690983192795 -0,0.8470139670387425,0.15298603296125746 -0,0.8980899435782803,0.10191005642171963 -0,0.7721701789413083,0.2278298210586917 -0,0.9547323000643795,0.04526769993562065 -0,0.9899320366306817,0.010067963369318277 -0,0.9999999998263829,1.736172304627871E-10 -0,0.831419521101735,0.16858047889826505 -0,0.9738788585241698,0.026121141475830358 -1,0.2241573401172829,0.7758426598827171 -0,0.9999999719449234,2.8055076695019875E-8 -1,0.10419840635933622,0.8958015936406637 -0,0.889415511042144,0.11058448895785596 -0,0.976518911489591,0.023481088510408935 -0,0.8909334740166187,0.10906652598338122 -1,0.4691887586008848,0.5308112413991152 -0,0.9966840245981328,0.003315975401867338 -0,0.9999966337300505,3.3662699493690103E-6 -0,0.9958442482557689,0.004155751744231 -0,0.7527171497691856,0.24728285023081434 -1,0.1497363457702786,0.8502636542297214 -0,0.9712016845551098,0.02879831544489015 -0,0.9885244733905901,0.011475526609409927 -0,0.9807500547406645,0.01924994525933565 -1,0.4502328669099079,0.5497671330900921 -0,0.990030915358623,0.009969084641377092 -0,0.999999933432137,6.656786292844897E-8 -0,0.8602113057041446,0.1397886942958555 -0,0.6141609988014866,0.38583900119851344 -0,0.993456538939606,0.006543461060394105 -0,0.9994943841323684,5.056158676315326E-4 -1,0.4780428700163925,0.5219571299836074 -0,0.9120000284128192,0.08799997158718074 -1,0.39338887351817187,0.6066111264818281 -0,0.9323482909906268,0.06765170900937321 -0,0.999999998423927,1.5760729366035778E-9 -0,0.9968041593759023,0.00319584062409786 -0,0.9927898132363073,0.007210186763692732 -0,0.5515820599184054,0.4484179400815945 -0,0.8669779974900319,0.13302200250996807 -0,0.930077553662559,0.06992244633744105 -0,0.9494288468722112,0.0505711531277888 -0,0.6300057784754103,0.36999422152458966 -1,0.05562364250397066,0.9443763574960293 -1,0.4765181085238648,0.5234818914761352 -0,0.8747552777571884,0.1252447222428116 -0,0.5277718222174675,0.47222817778253245 -0,0.8696896050570123,0.13031039494298763 -0,0.9326589103652486,0.0673410896347514 -0,0.8682832274036293,0.1317167725963707 -0,0.6581683459416687,0.3418316540583312 -1,0.27301687915760475,0.7269831208423952 -1,0.27584099260219835,0.7241590073978016 -0,0.7904614843291772,0.2095385156708229 -0,0.6600119444594398,0.3399880555405602 -0,0.9904387300428813,0.009561269957118772 -1,0.36471152090378456,0.6352884790962154 -1,0.42594305560939283,0.5740569443906072 -1,0.2513824007120864,0.7486175992879136 -0,0.9936671584286869,0.0063328415713130096 -0,0.9951159876905147,0.004884012309485442 -0,0.9848629266047269,0.015137073395273102 -0,0.9999999755249801,2.447501974910019E-8 -0,0.7745663866967534,0.22543361330324665 -0,0.9618579450545661,0.03814205494543386 -0,0.9999999997564699,2.435300274769808E-10 -0,0.9747334839812113,0.02526651601878876 -0,0.9551160484263846,0.04488395157361543 -1,0.3510513574208757,0.6489486425791243 -1,0.3766243678627385,0.6233756321372614 -0,0.9988825781059197,0.001117421894080259 -1,0.31036789776847984,0.6896321022315202 -0,0.9788939364686318,0.021106063531368253 -0,0.7043842898662133,0.2956157101337867 -0,0.6130979005710177,0.3869020994289824 -0,0.9999999972154603,2.7845397611768937E-9 -0,0.8423732001174498,0.15762679988255024 -0,0.9801998135100493,0.019800186489950602 -1,0.470850513214446,0.5291494867855541 -0,0.8045484972531819,0.1954515027468181 -1,0.1928694808893262,0.8071305191106738 -0,0.5332207144992103,0.46677928550078984 -1,0.17301002152000627,0.8269899784799938 -0,0.9857283288488273,0.014271671151172557 -0,0.9925573573858106,0.0074426426141893775 -1,0.36333926421915386,0.6366607357808461 -1,0.3140131717312436,0.6859868282687563 -0,0.9901439308790573,0.009856069120942673 -0,0.9749109159659346,0.0250890840340654 -0,0.99999999995977,4.023001402951083E-11 -0,0.9308067313020886,0.0691932686979114 -0,0.9562830399398172,0.04371696006018268 -0,0.7694916748850159,0.230508325114984 -0,0.9914595138346639,0.00854048616533616 -0,0.9963273496109832,0.003672650389016665 -0,0.9982822810066475,0.0017177189933525793 -0,0.9985330227215763,0.0014669772784238198 -0,0.5333449057835772,0.4666550942164228 -0,0.5402622184433106,0.4597377815566895 -1,0.18607925499905142,0.8139207450009486 -1,0.3740674437356977,0.6259325562643023 -0,0.999184998758243,8.15001241757105E-4 -0,0.7201847847753703,0.2798152152246297 -0,0.7623523490143027,0.23764765098569715 -0,0.5062558613361265,0.4937441386638734 -0,0.979822165735194,0.020177834264805926 -0,0.996594386289088,0.0034056137109120814 -0,0.9681039287121878,0.03189607128781216 -0,0.9981383576432332,0.0018616423567667008 -1,0.3505403455578673,0.6494596544421327 -1,0.06659701752324608,0.9334029824767539 -1,0.2836314498789015,0.7163685501210986 -0,0.9721947897503834,0.02780521024961663 -0,0.5471351744927017,0.4528648255072984 -0,0.758335691183334,0.24166430881666603 -0,0.6786027910119763,0.32139720898802365 -0,0.7809692081727937,0.2190307918272062 -0,0.9064047455169366,0.09359525448306336 -1,0.30289217276593516,0.697107827234065 -0,0.5776209023792124,0.4223790976207876 -0,0.9723077144106278,0.02769228558937228 -0,0.973672988199741,0.026327011800258975 -0,0.8576753348004327,0.14232466519956732 -0,0.9835401515668857,0.01645984843311423 -0,0.9931011470413481,0.006898852958651946 -0,0.9914400054670922,0.008559994532907702 -0,0.9964549504915043,0.003545049508495622 -1,2.4033051257619377E-6,0.9999975966948743 -0,0.9578287899082613,0.04217121009173878 -0,0.6144932278763106,0.3855067721236894 -1,0.3609473095741005,0.6390526904258995 -0,0.9996058128483489,3.941871516509633E-4 -0,0.9936688498919793,0.006331150108020734 -0,0.9999999963542365,3.6457635443241517E-9 -1,0.12158517569975938,0.8784148243002406 -1,0.2299684552663871,0.7700315447336129 -0,0.9730573489950055,0.026942651004994406 -0,0.9808298156399085,0.019170184360091568 -0,0.9958031898658767,0.004196810134123379 -0,0.9249495970771681,0.075050402922832 -0,0.900081168916277,0.09991883108372297 -0,0.9886980348532078,0.011301965146792027 -0,0.6490798258505017,0.3509201741494983 -0,0.6140302974009783,0.38596970259902175 -0,0.987203181763967,0.012796818236033063 -1,0.24363597371963586,0.7563640262803641 -0,0.9888627048120031,0.011137295187996813 -0,0.8439640171567452,0.1560359828432548 -0,0.6405996294078367,0.3594003705921634 -0,0.9748396628506858,0.02516033714931423 -0,0.9749792338433785,0.025020766156621525 -0,0.5409448690142679,0.45905513098573214 -0,0.8803550859998689,0.119644914000131 -0,0.9344688882936875,0.06553111170631255 -0,0.9389222734493486,0.06107772655065139 -1,0.42862080895108123,0.5713791910489188 -1,0.2587079005833741,0.7412920994166259 -0,0.5672342074133225,0.4327657925866774 -0,0.9867671634957589,0.013232836504241088 -0,0.7288197868293878,0.2711802131706123 -0,0.8472066199990888,0.1527933800009113 -0,0.9346205032644426,0.06537949673555753 -0,0.9984132535461532,0.0015867464538468071 -0,0.766025448580042,0.23397455141995802 -0,0.9903949784937988,0.009605021506201282 -0,0.91337713024309,0.08662286975691014 -0,0.8428824241976104,0.1571175758023896 -0,0.9961855625828261,0.0038144374171738896 -0,0.9189782092908222,0.08102179070917778 -1,0.4553810715225857,0.5446189284774142 -0,0.9865687798112748,0.013431220188725208 -0,0.5688151839650343,0.4311848160349658 -0,0.9989228678770858,0.0010771321229142191 -0,0.978040498057373,0.021959501942627066 -0,0.9919891184606592,0.00801088153934088 -0,0.9921856542423181,0.007814345757681954 -1,0.2592425701716197,0.7407574298283802 -0,0.7660293098481853,0.2339706901518148 -0,0.7540182621393938,0.2459817378606062 -0,0.9886606307584573,0.011339369241542682 -0,0.9638287489620889,0.036171251037911106 -1,0.18699179882601294,0.8130082011739871 -0,0.9899681058754313,0.010031894124568794 -0,0.9993241682100575,6.758317899424239E-4 -1,0.07007010571083933,0.9299298942891607 -0,0.9934158127175571,0.006584187282443052 -0,0.9104480629385185,0.08955193706148154 -0,0.9983319499831763,0.0016680500168236685 -0,0.9287131267213417,0.0712868732786583 -1,0.23645578583161497,0.763544214168385 -1,0.4958481132972042,0.5041518867027958 -1,0.39984092256295234,0.6001590774370477 -1,0.11756154298678943,0.8824384570132106 -0,0.6300418661567536,0.3699581338432464 -0,0.9675969704860945,0.03240302951390547 -1,0.2596425793765757,0.7403574206234242 -0,0.9752545247272234,0.024745475272776592 -0,0.8781227200963398,0.12187727990366015 -0,0.6997347893772969,0.30026521062270306 -1,0.435413762511047,0.5645862374889531 -1,0.43486009001064413,0.5651399099893558 -0,0.9593321233620912,0.04066787663790892 -1,0.2885001039929295,0.7114998960070705 -0,0.8883265812606745,0.11167341873932542 -1,0.2465861646781116,0.7534138353218883 -1,0.18415282670131602,0.8158471732986841 -1,0.24722205259074564,0.7527779474092544 -0,0.9571853348419044,0.04281466515809565 -0,0.7298715148224454,0.27012848517755456 -1,0.1968255006180578,0.8031744993819422 -0,0.9984297993621827,0.0015702006378173889 -0,0.9999996962120877,3.0378791220224684E-7 -1,0.2083377177202431,0.7916622822797569 -0,0.9583512162886948,0.04164878371130529 -0,0.9895234907316472,0.010476509268352826 -0,0.9938981338145038,0.006101866185496291 -0,0.7537853312033536,0.24621466879664636 -0,0.9429629777668184,0.05703702223318161 -1,0.3665745816396343,0.6334254183603657 -0,0.8830668941716607,0.1169331058283393 -0,0.9621337567937184,0.037866243206281625 -0,0.7721654392913971,0.22783456070860283 -0,0.9766030664790988,0.023396933520901168 -0,0.9601654765345722,0.03983452346542777 -0,0.9313673442817588,0.06863265571824119 -0,0.9579732953498592,0.04202670465014066 -0,0.947310998467526,0.0526890015324739 -1,0.4402522752379296,0.5597477247620704 -0,0.9744461153346266,0.02555388466537352 -0,0.7857483851188882,0.21425161488111172 -0,0.9466122581692393,0.053387741830760595 -0,0.8434546617525696,0.15654533824743036 -0,0.9356222203684849,0.06437777963151513 -1,0.038614461180360715,0.9613855388196393 -1,0.137571418175106,0.862428581824894 -0,0.9860048353817532,0.013995164618246852 -1,0.1756218073764497,0.8243781926235504 -0,0.9698423944274505,0.03015760557254963 -0,0.6484552432000732,0.3515447567999267 -1,0.11067487241890714,0.8893251275810928 -0,0.6411305812720286,0.3588694187279714 -0,0.9937288622071075,0.006271137792892387 -0,0.9999997982469481,2.0175305187659995E-7 -0,0.9728453829882361,0.027154617011763915 -0,0.9911288248230291,0.008871175176970855 -1,0.25636825866152635,0.7436317413384737 -0,0.9986282729742478,0.0013717270257520941 -0,0.9534677997833563,0.04653220021664383 -0,0.8752668271490626,0.12473317285093738 -1,0.04450704638406668,0.9554929536159333 -0,0.6247444865704553,0.37525551342954455 -0,0.5731298285274631,0.426870171472537 -0,0.9942238808752294,0.00577611912477068 -0,0.9980201384772546,0.0019798615227454254 -0,0.8559490317400082,0.14405096825999172 -0,0.9808705415167017,0.01912945848329833 -0,0.9206531406759163,0.0793468593240836 -0,0.9549075712056386,0.04509242879436136 -1,0.40051648758058184,0.5994835124194181 -0,0.6517549984549559,0.3482450015450441 -1,0.15783458029605832,0.8421654197039418 -0,0.9977153660695933,0.0022846339304067164 -0,0.9819895617016233,0.018010438298376754 -0,0.6392531760821821,0.3607468239178178 -0,0.9985356712751455,0.0014643287248546088 -0,0.9148898350771656,0.08511016492283441 -0,0.8346694531847899,0.1653305468152101 -0,0.9943201733058588,0.005679826694141161 -1,0.07924058690595955,0.9207594130940404 -1,0.24023256348054522,0.7597674365194549 -0,0.9999999538003256,4.619967440894956E-8 -0,0.9985553999718185,0.001444600028181447 -1,0.4155879881568958,0.5844120118431042 -1,0.45966266087495805,0.5403373391250419 -0,0.9999998966527726,1.033472274225366E-7 -0,0.992432164697007,0.007567835302992927 -0,0.7481000723735063,0.2518999276264937 -0,0.5584794107344704,0.44152058926552956 -0,0.8220641397391663,0.17793586026083372 -0,0.9983859251263975,0.0016140748736026536 -0,0.5692419700716235,0.43075802992837653 -0,0.9745524232007693,0.02544757679923074 -0,0.9902559040556319,0.00974409594436802 -1,0.4785883432775256,0.5214116567224745 -1,0.32965553386886326,0.6703444661311367 -0,0.9987221577736046,0.0012778422263954254 -0,0.9921481451451607,0.00785185485483942 -0,0.9999999663335726,3.3666427405166364E-8 -0,0.5664125609753475,0.4335874390246525 -0,0.9983247037292386,0.001675296270761237 -0,0.9999999831229981,1.6877002042928503E-8 -0,0.8286073581303498,0.1713926418696503 -0,0.9999999965031403,3.496859677839112E-9 -1,0.08474348472325476,0.9152565152767452 -0,0.9986800240171677,0.0013199759828322886 -0,0.9250951001220521,0.07490489987794792 -1,0.49012900076521443,0.5098709992347856 -0,0.8113013307101228,0.18869866928987722 -1,0.23288762784117428,0.7671123721588257 -0,0.9740994127335009,0.025900587266498996 -0,0.926228926527268,0.07377107347273214 -1,0.2956377304298285,0.7043622695701715 -0,0.9884069018734216,0.011593098126578313 -0,0.983855255711507,0.016144744288493003 -0,0.9529776860617848,0.04702231393821511 -1,0.33404732683289606,0.6659526731671038 -0,0.9383435092259437,0.06165649077405637 -1,0.22721471903514187,0.7727852809648581 -1,0.4581705407173269,0.5418294592826731 -1,0.30426732285227204,0.695732677147728 -1,0.23984524450604597,0.7601547554939541 -0,0.9908272449021689,0.009172755097831034 -0,0.8617783415859401,0.13822165841405976 -0,0.9999999947206577,5.279342313264718E-9 -0,0.852113634067333,0.14788636593266694 -0,0.9919573281919476,0.008042671808052477 -0,0.9505962385393395,0.04940376146066045 -0,0.9926899451079383,0.007310054892061757 -0,0.5431239964575294,0.45687600354247054 -0,0.6863817222245366,0.3136182777754633 -0,0.9810318900994772,0.01896810990052272 -1,0.2512846398667028,0.7487153601332972 -0,0.9842664272154872,0.015733572784512952 -0,0.8917471884581407,0.10825281154185937 -0,0.7359235717486993,0.26407642825130073 -0,0.9321967134473624,0.06780328655263752 -1,0.3537541832319104,0.6462458167680896 -0,0.9870952064816476,0.012904793518352362 -0,0.9632411993711071,0.03675880062889294 -0,0.9203296894520345,0.07967031054796554 -1,0.46943053715015226,0.5305694628498479 -0,0.9320568092648331,0.06794319073516694 -1,0.34884482676582446,0.6511551732341755 -0,0.9859573908964081,0.014042609103591817 -0,0.9833605241163146,0.01663947588368531 -0,0.6840262716530465,0.3159737283469535 -1,0.18216536115985305,0.817834638840147 -0,0.9942560863068336,0.005743913693166318 -0,0.9708870283428537,0.029112971657146335 -0,0.8240496224059441,0.1759503775940558 -0,0.9820163627328561,0.017983637267143866 -1,0.09278283077820249,0.9072171692217974 -1,0.32461637647449976,0.6753836235255002 -0,0.9920409192478326,0.007959080752167478 -0,0.8176419239431397,0.18235807605686036 -0,0.99380148039139,0.006198519608610003 -0,0.954865270714383,0.04513472928561702 -0,0.9726264002958208,0.027373599704179227 -0,0.5114461567223096,0.4885538432776903 -0,0.7044188384785153,0.2955811615214848 -0,0.8116949457002399,0.18830505429976 -0,0.9999999999395426,6.045749411583367E-11 -0,0.9906822495063009,0.009317750493699128 -0,0.5696075868232258,0.43039241317677424 -0,0.7142091182478391,0.285790881752161 -0,0.7757741738824473,0.2242258261175528 -0,0.6441403047422191,0.3558596952577809 -0,0.9940705239353348,0.005929476064665135 -1,0.07260749985492844,0.9273925001450715 -0,0.9800071113069443,0.019992888693055648 -0,0.9611912751238618,0.038808724876138276 -0,0.5366404662660627,0.46335953373393723 -0,0.6394506495345714,0.36054935046542863 -0,0.9999999999328248,6.717522905930846E-11 -0,0.512756713899464,0.4872432861005361 -0,0.7666997615226158,0.23330023847738426 -0,0.9947115519699359,0.005288448030064259 -1,0.44416703008317704,0.555832969916823 -0,0.9989017878911414,0.0010982121088586657 -0,0.8103927886771024,0.1896072113228976 -0,0.7716301181655006,0.22836988183449933 -1,0.3510242631284745,0.6489757368715254 -0,0.7972376399521597,0.20276236004784037 -0,0.8852082062732781,0.1147917937267218 -0,0.9389784534475676,0.06102154655243253 -0,0.9820339477064625,0.017966052293537635 -0,0.785135356449094,0.2148646435509059 -1,0.39229534689633416,0.607704653103666 -0,0.5827693288798959,0.41723067112010404 -1,0.26781769857166166,0.7321823014283384 -0,0.9866884185251452,0.013311581474854927 -0,0.8257619644634983,0.1742380355365017 -1,0.13503852209627598,0.8649614779037241 -0,0.9776046448374943,0.022395355162505726 -0,0.9587672324969243,0.041232767503075626 -0,0.8832176603098939,0.11678233969010617 -0,0.9416484355813055,0.05835156441869446 -1,0.4289485702532792,0.5710514297467209 -0,0.9890959976637598,0.01090400233624026 -0,0.9976233508887803,0.0023766491112196387 -1,0.48344415123552825,0.5165558487644718 -0,0.9348545229286828,0.06514547707131729 -0,0.9943438982167161,0.005656101783283857 -0,0.9926912323594917,0.007308767640508345 -0,0.9912788943717084,0.008721105628291682 -0,0.9831526758343407,0.01684732416565921 -0,0.99218956343529,0.007810436564710068 -0,0.9848233589908237,0.015176641009176305 -0,0.9582579575834623,0.04174204241653766 -0,0.926227190388521,0.07377280961147897 -0,0.9986844595168559,0.0013155404831441053 -0,0.5108019653225956,0.4891980346774044 -1,0.4279459994362373,0.5720540005637627 -0,0.8943020881169214,0.10569791188307875 -1,0.016393219002472037,0.9836067809975281 -0,0.9985556635589597,0.0014443364410402174 -1,0.3798815245454321,0.6201184754545678 -0,0.9982980592971422,0.001701940702857664 -0,0.9763850726139855,0.023614927386014336 -0,0.999999990648165,9.351834949688968E-9 -0,0.9531128178675304,0.04688718213246962 -0,0.5932391572018705,0.4067608427981295 -0,0.9922071166269321,0.007792883373068006 -0,0.9982384375444706,0.0017615624555293414 -0,0.5124595944250248,0.48754040557497524 -1,0.4793628046804631,0.5206371953195369 -0,0.9978107512349313,0.002189248765068773 -0,0.9942232769265862,0.005776723073413898 -0,0.7449498971231483,0.2550501028768517 -1,0.1675819244528546,0.8324180755471453 -1,0.07732683360188757,0.9226731663981125 -0,0.9895405443043764,0.010459455695623695 -1,0.25999043476604944,0.7400095652339506 -0,0.9938060708781375,0.006193929121862401 -0,0.998418654769148,0.0015813452308519494 -0,0.9963182581987656,0.0036817418012344105 -0,0.7500609334084047,0.2499390665915952 -0,0.9977899135477788,0.0022100864522212145 -1,0.19537538241596622,0.8046246175840337 -0,0.9577085961191047,0.042291403880895265 -0,0.7416148066372422,0.2583851933627577 -0,0.7744922655778725,0.22550773442212743 -0,0.8906173922348268,0.10938260776517325 -1,0.3363036095407269,0.6636963904592731 -0,0.9912870450073219,0.008712954992678063 -0,0.7591346153472154,0.24086538465278462 -0,0.9999999988666011,1.133398849341973E-9 -0,0.9411165792889069,0.05888342071109319 -0,0.9920512033918248,0.007948796608175152 -1,0.2300092460003763,0.7699907539996237 -0,0.9977333797612664,0.0022666202387335447 -1,0.31310016032477694,0.686899839675223 -0,0.839469093097562,0.16053090690243804 -0,0.5762243750984896,0.4237756249015105 -1,0.036176362712561916,0.9638236372874381 -0,0.9419257191482225,0.05807428085177744 -0,0.9925745218934546,0.00742547810654541 -0,0.509070497572342,0.490929502427658 -0,0.9964336169821609,0.0035663830178389966 -0,0.8988518990117469,0.10114810098825308 -0,0.9363667722640133,0.06363322773598669 -0,0.9933167352439504,0.006683264756049669 -0,0.7881885813838719,0.21181141861612798 -0,0.6286795199861555,0.37132048001384454 -0,0.9791955363369959,0.02080446366300411 -0,0.7153337848865623,0.28466621511343776 -1,0.05247450249293808,0.9475254975070619 -0,0.9770301759910693,0.02296982400893059 -0,0.9857016081373838,0.014298391862616121 -0,0.7093380562123814,0.2906619437876186 -0,0.9754234398273479,0.024576560172651963 -0,0.9454048979006117,0.05459510209938834 -0,0.9786281247408323,0.021371875259167696 -0,0.9967017622783602,0.0032982377216399174 -0,0.7748142786222818,0.2251857213777181 -0,0.6977853550753935,0.30221464492460653 -0,0.9207669779855369,0.07923302201446311 -1,0.15384396698457076,0.8461560330154292 -1,0.24620521454200733,0.7537947854579926 -0,0.5097459393072832,0.49025406069271676 -0,0.9277601568765086,0.07223984312349137 -0,0.6480550047069599,0.35194499529304 -0,0.7741695416688568,0.22583045833114318 -0,0.9999999523369161,4.766308389189155E-8 -0,0.9659648917253545,0.03403510827464553 -0,0.9977733812720392,0.002226618727960958 -1,0.06500137040123277,0.9349986295987672 -0,0.9784701734674636,0.021529826532536572 -1,0.4614175717191281,0.5385824282808718 -0,0.9568594893542033,0.043140510645796805 -1,0.3893539437746731,0.6106460562253269 -0,0.7558474078253711,0.2441525921746289 -0,0.9551253665417155,0.044874633458284414 -1,0.2935615099796811,0.7064384900203189 -0,0.9576648952167387,0.042335104783261183 -1,4.7128400737422185E-6,0.9999952871599264 -0,0.8462469004499928,0.1537530995500071 -0,0.8846409317029291,0.11535906829707085 -0,0.9703706901846313,0.029629309815368713 -0,0.8805948708388336,0.11940512916116645 -0,0.9986748942885014,0.0013251057114986278 -0,0.9416036048230744,0.05839639517692559 -0,0.9897811386148478,0.010218861385152043 -0,0.9999999214556761,7.854432394067487E-8 -0,0.9981057400172747,0.0018942599827253149 -0,0.6690084832102127,0.33099151678978733 -0,0.6696318292693366,0.3303681707306633 -0,0.9885654854615976,0.011434514538402286 -0,0.9889987296620489,0.011001270337951006 -0,0.9559042513817417,0.04409574861825822 -0,0.9980929318083788,0.0019070681916211704 -0,0.8376692963408945,0.16233070365910554 -0,0.5589432261652834,0.4410567738347166 -0,0.778456597834146,0.221543402165854 -0,0.843870606167988,0.1561293938320119 -1,0.1274619861546449,0.8725380138453551 -0,0.9500267994764667,0.04997320052353327 -0,0.9695900959948569,0.030409904005143148 -0,0.7716810306431272,0.2283189693568728 -0,0.9785715689562735,0.021428431043726617 -0,0.9923185385722795,0.007681461427720598 -0,0.5215699851993228,0.4784300148006772 -0,0.9970953623191172,0.0029046376808827194 -1,0.16425580454348698,0.8357441954565129 -0,0.95689408680621,0.04310591319379 -0,0.7380593413924922,0.26194065860750787 -0,0.804772444120305,0.19522755587969504 -0,0.9833444093608196,0.01665559063918053 -0,0.997586476916349,0.0024135230836508617 -0,0.8650273982112514,0.1349726017887486 -1,0.10770941431966606,0.892290585680334 -1,0.22957288493163472,0.7704271150683653 -0,0.5568027653799613,0.4431972346200386 -0,0.9540759423320769,0.045924057667923124 -0,0.846727551245868,0.15327244875413207 -0,0.999999998664248,1.335751869851878E-9 -0,0.8428735384615313,0.1571264615384687 -1,0.14012445252804548,0.8598755474719545 -0,0.7633136349215036,0.2366863650784963 -0,0.9999999967656541,3.2343459589495186E-9 -0,0.9916579047771442,0.0083420952228558 -0,0.9975705569571813,0.002429443042818646 -0,0.99602080040851,0.003979199591489902 -0,0.9590782172272947,0.04092178277270529 -0,0.9992371545271979,7.628454728021499E-4 -1,0.2874444005574386,0.7125555994425613 -0,0.9973236735293883,0.002676326470611705 -0,0.9973291615672868,0.0026708384327133127 -0,0.9928075601023327,0.0071924398976671465 -0,0.998974622788928,0.001025377211071945 -0,0.703655576622694,0.2963444233773061 -0,0.9954498823911695,0.004550117608830459 -0,0.9782848859063689,0.021715114093631235 -0,0.9792290185159473,0.020770981484052525 -0,0.606745765162195,0.393254234837805 -0,0.9558996331564641,0.04410036684353599 -0,0.9775570906720243,0.02244290932797568 -0,0.9818808429287963,0.01811915707120372 -0,0.8886133797977102,0.11138662020228984 -0,0.745819721437393,0.254180278562607 -0,0.9562547546966909,0.043745245303309185 -0,0.9984243290451348,0.0015756709548651968 -0,0.7948044101140266,0.20519558988597345 -1,0.4433988814361523,0.5566011185638478 -0,0.9902732468528922,0.009726753147107666 -0,0.9337911389951243,0.06620886100487561 -0,0.9928512373566505,0.007148762643349573 -0,0.9862526218914512,0.013747378108548711 -1,0.2287191407121385,0.7712808592878615 -0,0.6224906573572397,0.3775093426427603 -1,0.19312702474556884,0.8068729752544311 -0,0.968302489702376,0.031697510297624014 -0,0.9337607641979635,0.06623923580203643 -1,0.2771000464711674,0.7228999535288325 -0,0.7786684189359421,0.22133158106405784 -0,0.9977677295197268,0.002232270480273067 -0,0.9788018200163797,0.021198179983620342 -0,0.6821951543373137,0.3178048456626863 -1,0.3280930507949283,0.6719069492050717 -0,0.9693936566660486,0.0306063433339513 -0,0.9928015298942128,0.007198470105787281 -1,0.40576828810501114,0.5942317118949888 -0,0.991813899398359,0.008186100601640989 -0,0.6880596868161645,0.3119403131838355 -0,0.5711131560978835,0.42888684390211657 -0,0.9357510922016365,0.06424890779836341 -0,0.9472604967210336,0.05273950327896629 -0,0.9680711379719243,0.031928862028075655 -0,0.9920639447740431,0.007936055225956858 -1,0.09511502026478647,0.9048849797352134 -1,0.2889010919328227,0.7110989080671772 -0,0.9955625140147689,0.004437485985231042 -0,0.984661567671318,0.015338432328682072 -0,0.9999999999106199,8.938016697588592E-11 -0,0.7677602482182402,0.2322397517817598 -1,0.10321147751879546,0.8967885224812046 -0,0.8686956822098444,0.1313043177901555 -0,0.792778157492049,0.207221842507951 -0,0.9929456091121426,0.007054390887857452 -0,0.835730306367968,0.16426969363203206 -1,0.31308160119125716,0.6869183988087428 -0,0.5043731238366957,0.4956268761633042 -0,0.8517421333182148,0.14825786668178523 -1,0.3306233808822498,0.6693766191177503 -0,0.9999699472910177,3.0052708982309177E-5 -0,0.9611604062041686,0.03883959379583143 -1,0.10713539518165718,0.8928646048183428 -0,0.8222631377632591,0.17773686223674098 -0,0.9196818784472816,0.08031812155271853 -0,0.8539122099921668,0.14608779000783326 -0,0.8455655678649182,0.15443443213508184 -0,0.736799212748055,0.2632007872519449 -1,0.24424543507372695,0.755754564926273 -1,0.35285236596558794,0.6471476340344121 -0,0.9938571089588619,0.00614289104113815 -0,0.8881502788882971,0.11184972111170297 -0,0.6639030963112332,0.3360969036887667 -0,0.9833023289720705,0.016697671027929604 -1,0.04569290260944128,0.9543070973905589 -1,0.39225906138899225,0.6077409386110078 -0,0.9972298366074023,0.0027701633925977126 -1,0.2715116687094405,0.7284883312905595 -0,0.9880759152977029,0.011924084702297092 -0,0.996368932602612,0.0036310673973881154 -0,0.9580058745600468,0.0419941254399531 -0,0.7087549463735922,0.29124505362640785 -0,0.9613863581165586,0.038613641883441456 -0,0.555730325859387,0.444269674140613 -0,0.7201496112113761,0.27985038878862395 -0,0.9809319506010287,0.019068049398971266 -0,0.9772669779568585,0.022733022043141506 -0,0.8276510921814316,0.17234890781856843 -0,0.9354556221090197,0.06454437789098032 -0,0.98076957119578,0.019230428804219907 -0,0.999999999180514,8.194859925772118E-10 -1,0.42658368595907287,0.5734163140409272 -0,0.8414924279593475,0.1585075720406525 -0,0.6058113111212113,0.3941886888787887 -0,0.7229288399106233,0.27707116008937677 -0,0.8134221011512488,0.1865778988487512 -0,0.9481532104993329,0.051846789500667206 -0,0.999999745086222,2.549137779848584E-7 -1,0.39459794308216917,0.6054020569178309 -0,0.9841176557957357,0.015882344204264178 -0,0.9713448674262318,0.028655132573768078 -1,0.02883924720942421,0.9711607527905759 -0,0.9920859732528968,0.00791402674710312 -0,0.995321496521749,0.004678503478251021 -0,0.9418782477516306,0.05812175224836948 -0,0.9463997046194602,0.05360029538053978 -0,0.9552569925618075,0.04474300743819243 -0,0.9442832133613339,0.055716786638665985 -0,0.8485368546243504,0.15146314537564964 -0,0.8658809578314419,0.1341190421685581 -0,0.7190127930146826,0.2809872069853174 -0,0.9685850971045864,0.03141490289541351 -0,0.6808370806307831,0.31916291936921687 -0,0.9993598611744795,6.401388255204361E-4 -0,0.9870896844823113,0.012910315517688615 -0,0.9999999944823694,5.517630634105798E-9 -1,0.12649945657077458,0.8735005434292253 -0,0.5237629426633793,0.4762370573366206 -0,0.9800682522330509,0.019931747766949056 -0,0.9999999996671687,3.3283121713377604E-10 -0,0.9366214897534098,0.06337851024659018 -0,0.9983329141074039,0.0016670858925961565 -0,0.9981608460260456,0.0018391539739543495 -0,0.9704553748979124,0.029544625102087524 -0,0.9673208256123996,0.03267917438760032 -0,0.9693762658475847,0.03062373415241532 -0,0.6975030369227208,0.30249696307727925 -1,0.18581634761720203,0.8141836523827979 -0,0.8283991608042252,0.17160083919577473 -0,0.8245106559279255,0.1754893440720745 -0,0.9750943658339135,0.024905634166086394 -0,0.9962284015045665,0.0037715984954334036 -0,0.9339705339470502,0.06602946605294985 -0,0.7960829084975546,0.2039170915024453 -0,0.9905951764161852,0.009404823583814934 -0,0.9917018617029586,0.008298138297041473 -1,0.3928550306463864,0.6071449693536136 -0,0.7829029620271144,0.21709703797288565 -0,0.7767734623503796,0.22322653764962044 -0,0.873863826069563,0.1261361739304369 -0,0.9984268309291608,0.0015731690708390886 -0,0.9857411602352372,0.01425883976476294 -0,0.9867753624515172,0.013224637548482692 -0,0.9913079489869467,0.008692051013053287 -0,0.9920572950620365,0.007942704937963427 -1,0.4473550096044519,0.5526449903955482 -0,0.9209303948610078,0.07906960513899224 -0,0.9941690617335778,0.005830938266422252 -0,0.9830463688117191,0.0169536311882808 -0,0.8671506854361147,0.13284931456388538 -0,0.996973005512879,0.0030269944871209272 -1,0.13779834520700027,0.8622016547929997 -0,0.8479382769177942,0.15206172308220584 -0,0.9058352653951669,0.09416473460483317 -0,0.531929131008994,0.46807086899100603 -0,0.9999998744730085,1.255269914945641E-7 -1,0.05474346868327327,0.9452565313167267 -0,0.9939920969984382,0.006007903001561815 -1,0.1860600667148001,0.8139399332851999 -0,0.9999998239509992,1.760490008363994E-7 -0,0.9751321174705633,0.0248678825294368 -0,0.8366927825627102,0.16330721743728982 -0,0.8983964427046875,0.10160355729531245 -0,0.778499273767489,0.2215007262325111 -0,0.9081489374597731,0.09185106254022696 -0,0.9976615610584454,0.0023384389415545014 -0,0.8036904895437315,0.1963095104562685 -0,0.9655906782516493,0.0344093217483507 -0,0.994771415738816,0.005228584261183995 -0,0.5555675236715234,0.4444324763284766 -0,0.9999999841327634,1.5867236633481722E-8 -0,0.8092227903426921,0.1907772096573079 -0,0.9132814472712245,0.08671855272877549 -0,0.9999999092993077,9.070069237687521E-8 -0,0.6962066539653069,0.30379334603469305 -0,0.9929902311936841,0.007009768806315871 -1,0.1808184425183134,0.8191815574816866 -0,0.967930890743476,0.032069109256523926 -1,0.03422696017418194,0.965773039825818 -0,0.9832033844255044,0.016796615574495535 -0,0.9889467764642599,0.011053223535740092 -1,0.47087616161602136,0.5291238383839787 -0,0.969758285395418,0.030241714604581995 -1,0.2567944861613982,0.7432055138386017 -0,0.680543049148149,0.3194569508518509 -0,0.8739514551459636,0.12604854485403638 -0,0.7962598822399547,0.20374011776004528 -1,0.08669148553938205,0.913308514460618 -0,0.9552162915119734,0.0447837084880267 -0,0.9373988845060801,0.06260111549391982 -0,0.843589212927401,0.15641078707259903 -0,0.8128879210987802,0.18711207890121992 -0,0.9821825253586943,0.017817474641305682 -0,0.9610156062558555,0.03898439374414458 -0,0.9930961821772386,0.006903817822761486 -0,0.9894725748780286,0.010527425121971277 -0,0.9773384120946341,0.02266158790536583 -0,0.9705753350736219,0.029424664926378033 -0,0.8312437928894508,0.16875620711054914 -0,0.8680750991918949,0.13192490080810512 -0,0.9718519902013347,0.02814800979866527 -0,0.9766239699591133,0.023376030040886776 -0,0.6698604117628264,0.33013958823717365 -1,0.4883165862454421,0.511683413754558 -0,0.9987176051846476,0.0012823948153522797 -0,0.9916560860997985,0.008343913900201484 -0,0.9384211431387952,0.06157885686120474 -1,0.2083864884902253,0.7916135115097747 -0,0.6822583988561699,0.3177416011438301 -0,0.7827875377192579,0.21721246228074212 -1,0.07083512791506891,0.9291648720849311 -0,0.8088688700854963,0.1911311299145037 -1,0.2951534511501687,0.7048465488498313 -0,0.9999999998552225,1.44777425832336E-10 -0,0.6975540375408464,0.30244596245915356 -0,0.9668659561847888,0.03313404381521127 -0,0.981560027397555,0.01843997260244509 -0,0.8819436273566683,0.1180563726433317 -0,0.9009644578619619,0.09903554213803804 -0,0.999999999921992,7.80081105966232E-11 -0,0.7430773963433112,0.2569226036566888 -0,0.97032078232176,0.02967921767823998 -0,0.870509832162135,0.12949016783786513 -1,0.05270546815155187,0.9472945318484481 -0,0.5462092248845548,0.4537907751154452 -0,0.9902896183664979,0.009710381633502248 -0,0.990304720805432,0.009695279194568019 -0,0.9886201779912304,0.011379822008769757 -0,0.9617919292137158,0.03820807078628427 -0,0.910556731848019,0.0894432681519811 -0,0.814944248177632,0.18505575182236803 -0,0.7985371009802669,0.20146289901973313 -0,0.5358690978083054,0.4641309021916946 -0,0.9944993580987507,0.005500641901249346 -0,0.5027504128937598,0.4972495871062403 -0,0.6699893679999777,0.33001063200002234 -0,0.8946249657431985,0.10537503425680139 -0,0.999355220037308,6.447799626919166E-4 -0,0.854900666205966,0.14509933379403397 -0,0.9573873806573944,0.042612619342605636 -0,0.9825929226733888,0.017407077326611224 -0,0.8640409704888653,0.1359590295111346 -1,0.2974866707916,0.7025133292083999 -0,0.8759290850558481,0.12407091494415193 -0,0.9859173427101311,0.01408265728986878 -0,0.991418448335049,0.008581551664950969 -0,0.7297529739955687,0.2702470260044313 -0,0.9029640935526599,0.09703590644734006 -0,0.9569598579087761,0.04304014209122381 -0,0.820525816703845,0.179474183296155 -0,0.9924875491608686,0.0075124508391314375 -0,0.9160159933080939,0.08398400669190609 -0,0.7057917930505803,0.29420820694941974 -0,0.946804722147772,0.05319527785222799 -0,0.9444327118341848,0.055567288165815375 -0,0.9976138685539375,0.002386131446062512 -1,0.3865239353254548,0.6134760646745452 -0,0.9999999999920168,7.983203479929982E-12 -0,0.9563275581874074,0.04367244181259252 -0,0.8401981647176786,0.15980183528232142 -1,0.2038930629197595,0.7961069370802405 -1,0.47767345704256414,0.522326542957436 -1,0.3705254510248867,0.6294745489751133 -0,0.768414792497637,0.23158520750236308 -0,0.5727056480150879,0.4272943519849121 -0,0.7356992223264984,0.2643007776735016 -0,0.8749425099470434,0.12505749005295672 -0,0.6447185874275624,0.3552814125724375 -0,0.9986495442104735,0.0013504557895264175 -0,0.9978861171233713,0.0021138828766286443 -1,0.2702021374360713,0.7297978625639286 -0,0.9329237358597683,0.0670762641402317 -0,0.8579882231272561,0.14201177687274386 -0,0.9785537598527885,0.02144624014721155 -0,0.9933572853005406,0.006642714699459492 -1,0.20308928995686468,0.7969107100431353 -1,0.4052757681340448,0.5947242318659551 -1,0.20466442189726575,0.7953355781027343 -1,0.27039112342041755,0.7296088765795825 -0,0.7729321813181804,0.22706781868181958 -0,0.9785376961229358,0.021462303877064243 -0,0.9666286985353681,0.03337130146463177 -0,0.8096489032305263,0.1903510967694737 -0,0.9985085385951001,0.0014914614048998891 -1,0.37895187317463636,0.6210481268253637 -1,0.022616405971253542,0.9773835940287465 -0,0.9703118696127265,0.029688130387273415 -0,0.9901110550630441,0.009888944936955765 -0,0.9941177559378466,0.005882244062153475 -0,0.8181081484584871,0.18189185154151277 -0,0.9665315889178835,0.03346841108211647 -1,0.3420228605059053,0.6579771394940948 -1,0.0743065742752654,0.9256934257247347 -0,0.799457177673306,0.20054282232669396 -0,0.9560274366904447,0.04397256330955547 -0,0.9692555160689126,0.030744483931087415 -1,0.20419969390598464,0.7958003060940153 -1,0.48070438943122096,0.519295610568779 -0,0.9993538849556735,6.461150443266137E-4 -0,0.9999999994911664,5.088336647166514E-10 -0,0.995531859474191,0.004468140525809054 -0,0.8081424725010562,0.19185752749894386 -0,0.9791037679666051,0.020896232033394874 -1,0.4863526079440025,0.5136473920559975 -0,0.8096866975225452,0.19031330247745484 -1,0.4192522293511854,0.5807477706488147 -0,0.9980921032478263,0.0019078967521737984 -0,0.91817266299035,0.08182733700965004 -0,0.5729704169664561,0.4270295830335438 -0,0.845193721499536,0.15480627850046394 -0,0.9894342993289884,0.010565700671011442 -1,0.2915392199514449,0.7084607800485552 -0,0.6890672813758932,0.31093271862410676 -0,0.6510943993125153,0.34890560068748466 -0,0.6490811053066946,0.3509188946933054 -1,0.3027713786566215,0.6972286213433785 -0,0.9744622404252496,0.02553775957475031 -0,0.8466745957152025,0.1533254042847974 -0,0.9937705372819489,0.0062294627180511175 -0,0.9290150796409471,0.07098492035905281 -0,0.7935566207989526,0.20644337920104747 -1,0.18928579838166654,0.8107142016183335 -0,0.6874984751113096,0.31250152488869043 -0,0.9999999969185298,3.081470216336158E-9 -0,0.9281008662126375,0.0718991337873625 -0,0.9371350769599678,0.06286492304003233 -0,0.8733205974810072,0.12667940251899276 -1,0.32342073298197666,0.6765792670180233 -0,0.9923345217355642,0.007665478264435737 -0,0.9892641461797316,0.010735853820268395 -0,0.9938198296140371,0.006180170385962833 -0,0.8044571246093815,0.1955428753906185 -1,0.24020938102557082,0.7597906189744291 -0,0.9108736579057083,0.08912634209429177 -0,0.9353338205620745,0.06466617943792553 -0,0.9887117753558003,0.01128822464419965 -0,0.9544221956759384,0.0455778043240616 -1,0.022244053199650365,0.9777559468003497 -0,0.8853876126904441,0.11461238730955596 -0,0.8536201647032536,0.1463798352967463 -0,0.9824298448029142,0.01757015519708577 -0,0.8316667042466523,0.16833329575334757 -0,0.8561160601734562,0.14388393982654374 -0,0.7682596266741449,0.2317403733258551 -0,0.6559532507320014,0.3440467492679986 -0,0.9929585541330035,0.00704144586699655 -1,0.4068890748375498,0.5931109251624502 -1,0.28157870002576585,0.7184212999742341 -0,0.9954174739319301,0.004582526068069847 -0,0.9688074343162655,0.031192565683734626 -0,0.6718960988722974,0.32810390112770266 -0,0.8296102734664512,0.17038972653354875 -0,0.7336537034195956,0.26634629658040443 -0,0.9980853263796556,0.001914673620344246 -0,0.9811657046766831,0.018834295323316808 -0,0.9900461083650904,0.009953891634909463 -0,0.9916237956762417,0.00837620432375819 -0,0.955194465825974,0.044805534174025954 -0,0.6335865947503699,0.36641340524963006 -0,0.9268624685140008,0.07313753148599927 -1,0.45881104918524623,0.5411889508147537 -0,0.8457043910337536,0.15429560896624633 -1,0.3490302363724548,0.6509697636275452 -0,0.7797030271748681,0.22029697282513194 -0,0.9889026466114997,0.01109735338850025 -0,0.8125699345958388,0.18743006540416116 -0,0.8720101353152311,0.12798986468476892 -0,0.9841095367323055,0.015890463267694444 -0,0.8846395283061299,0.11536047169387002 -1,0.2792330048183105,0.7207669951816894 -0,0.9795186298516105,0.020481370148389366 -0,0.9892504643869877,0.010749535613012336 -0,0.7517849034861984,0.2482150965138015 -0,0.7844688224372448,0.21553117756275517 -1,0.3166201926066097,0.6833798073933903 -0,0.9827219299111984,0.017278070088801518 -1,0.348487652810682,0.651512347189318 -0,0.640377099457426,0.35962290054257395 -0,0.7437703375102357,0.2562296624897643 -0,0.8888958005509096,0.11110419944909042 -0,0.99917601250658,8.239874934201912E-4 -0,0.707907360816747,0.292092639183253 -1,0.47370798151495735,0.5262920184850426 -0,0.9343498681001805,0.06565013189981964 -0,0.9443021506857419,0.05569784931425813 -0,0.7596548679965152,0.24034513200348487 -0,0.9615105023402474,0.0384894976597527 -0,0.9734484328738633,0.026551567126136644 -0,0.9999999084253519,9.157464817589689E-8 -0,0.9165961722983418,0.0834038277016583 -0,0.7445154884031165,0.25548451159688346 -0,0.9977547616817652,0.002245238318234726 -1,0.2183123964935349,0.781687603506465 -0,0.855393059040998,0.14460694095900198 -0,0.999330579533149,6.694204668511107E-4 -0,0.8820158203899158,0.11798417961008417 -0,0.9924516149857259,0.007548385014274157 -0,0.8820207063115649,0.11797929368843497 -0,0.9992911133219707,7.08886678029331E-4 -0,0.9974593761710443,0.0025406238289557236 -0,0.9930218810777438,0.0069781189222563106 -0,0.993363215011012,0.006636784988987941 -0,0.7527344312890341,0.24726556871096597 -0,0.5756602033603228,0.4243397966396772 -0,0.9944257202234019,0.005574279776597947 -0,0.9999939935159066,6.006484093488502E-6 -0,0.9044626038771864,0.0955373961228136 -0,0.6284990594200706,0.37150094057992933 -0,0.537704708769146,0.46229529123085406 -0,0.7279946404248729,0.27200535957512717 -0,0.9951575252054192,0.004842474794580743 -0,0.8087984893685748,0.19120151063142524 -0,0.9740402417037647,0.025959758296235366 -0,0.9943228870564689,0.005677112943531083 -0,0.9780320142643665,0.021967985735633473 -1,0.4365786656450901,0.5634213343549099 -0,0.7129479363576727,0.2870520636423274 -0,0.9911703425949999,0.008829657405000142 -0,0.8756823179952803,0.12431768200471968 -0,0.7128148942877952,0.28718510571220474 -0,0.5552268639603353,0.44477313603966484 -0,0.5450495302870699,0.45495046971293013 -0,0.9999858762004717,1.4123799528327644E-5 -0,0.9945896616041303,0.005410338395869689 -0,0.7615179070518131,0.23848209294818687 -0,0.6568029214430048,0.34319707855699527 -1,0.05366432264424708,0.9463356773557529 -0,0.9675070497418672,0.03249295025813272 -0,0.8731787096649043,0.12682129033509565 -1,0.24658133981493024,0.7534186601850698 -0,0.9297425970645704,0.07025740293542951 -0,0.9745506715188208,0.025449328481179152 -0,0.6779292200202998,0.3220707799797002 -0,0.7439184667809102,0.2560815332190897 -0,0.97165227326946,0.028347726730540118 -0,0.7547820307466371,0.24521796925336298 -0,0.8956889411391554,0.10431105886084453 -0,0.9940499207965097,0.005950079203490353 -0,0.8203018802157949,0.1796981197842051 -0,0.9751889593123155,0.024811040687684485 -0,0.9368147269009495,0.06318527309905053 -0,0.9999999999073339,9.266604031018675E-11 -0,0.9186621442255557,0.08133785577444441 -0,0.9954285420980834,0.004571457901916532 -0,0.8535033598001287,0.14649664019987127 -0,0.5141037672442736,0.4858962327557264 -0,0.7074814607810423,0.2925185392189577 -0,0.9532706920813783,0.04672930791862173 -0,0.6213845077227625,0.37861549227723745 -0,0.9929949619107736,0.007005038089226471 -0,0.9696543008305237,0.030345699169476242 -0,0.7587615023950358,0.24123849760496419 -0,0.6663484519972799,0.3336515480027201 -0,0.9422834514806175,0.057716548519382335 -0,0.5930190149675936,0.40698098503240643 -1,0.25689336574897154,0.7431066342510284 -0,0.7166642071034038,0.2833357928965961 -0,0.8414178184718831,0.15858218152811687 -0,0.8800560690554526,0.11994393094454738 -0,0.8627223536728214,0.13727764632717862 -0,0.9354194098655483,0.06458059013445175 -0,0.9973851180726128,0.0026148819273872775 -0,0.9443110871627828,0.05568891283721721 -0,0.870605341105017,0.12939465889498294 -1,0.10895456473285266,0.8910454352671474 -0,0.9225023247751857,0.07749767522481436 -0,0.7597633523528713,0.24023664764712876 -0,0.8732441939936837,0.1267558060063163 -0,0.758149249687318,0.241850750312682 -0,0.7988930716524624,0.2011069283475377 -0,0.9791641039483272,0.020835896051672843 -1,0.22978938950223224,0.7702106104977677 -0,0.9980531968515418,0.0019468031484581904 -0,0.950622544247736,0.049377455752263995 -0,0.7519203498931418,0.2480796501068581 -1,0.3028940637150493,0.6971059362849508 -1,0.1971765805552644,0.8028234194447356 -0,0.6505824552516328,0.34941754474836717 -0,0.5273476307215801,0.47265236927841986 -1,0.07769604437287182,0.9223039556271282 -0,0.6865554142363525,0.31344458576364753 -0,0.9889685355727408,0.011031464427259286 -0,0.6377641439733699,0.3622358560266301 -1,0.14333973699025318,0.8566602630097468 -0,0.8453067126305748,0.1546932873694253 -1,0.3533667953807719,0.6466332046192281 -0,0.9983868269953753,0.0016131730046246803 -0,0.9989853160531299,0.0010146839468700528 -0,0.7594820104434542,0.2405179895565457 -0,0.9196521437971347,0.08034785620286541 -0,0.993541990524025,0.006458009475975024 -1,0.2613614859258816,0.7386385140741184 -0,0.9741145810753463,0.025885418924653587 -0,0.988506596807576,0.011493403192423866 -0,0.8594911456936212,0.14050885430637874 -0,0.8725769913865037,0.1274230086134964 -0,0.8565152405103135,0.14348475948968661 -0,0.9793257245523284,0.02067427544767158 -0,0.9999998910468685,1.0895313154259691E-7 -0,0.9999999971648164,2.8351837373705478E-9 -1,0.47415533002452603,0.525844669975474 -0,0.6244759140303114,0.3755240859696886 -0,0.9999999996607722,3.392278586901582E-10 -0,0.9830467983836922,0.016953201616307798 -0,0.9354519104596402,0.06454808954035975 -0,0.5550729401296611,0.4449270598703389 -0,0.9363850784646746,0.0636149215353255 -0,0.501598806304506,0.49840119369549396 -0,0.9466262801275808,0.05337371987241925 -0,0.8316981264431209,0.168301873556879 -1,0.2682701496485516,0.7317298503514483 -0,0.7254045284784201,0.2745954715215799 -0,0.9341627404520539,0.06583725954794598 -0,0.934894498814496,0.065105501185504 -1,0.08805480035598164,0.9119451996440184 -0,0.9375076492332831,0.062492350766716886 -0,0.9978146538085295,0.0021853461914705117 -0,0.8450032890138076,0.15499671098619244 -0,0.9988669588773703,0.0011330411226296167 -0,0.8422397762196581,0.157760223780342 -0,0.5397479211853883,0.46025207881461183 -0,0.8899166389818,0.11008336101820004 -0,0.9999999999758211,2.4178801639486747E-11 -0,0.9999999999359119,6.408802088020885E-11 -0,0.8835462306436515,0.11645376935634856 -1,0.29783878429994354,0.7021612157000564 -0,0.9977671655486857,0.0022328344513144116 -0,0.5917885868559012,0.40821141314409887 -0,0.7011996665837075,0.2988003334162924 -0,0.9077526428653601,0.09224735713463994 -0,0.6719355040551325,0.3280644959448676 -0,0.8776018081625199,0.1223981918374801 -0,0.9570248911535394,0.04297510884646059 -0,0.943128558348844,0.056871441651155964 -1,0.1721582024977973,0.8278417975022027 -0,0.770586712986576,0.22941328701342406 -1,0.05364691208319768,0.9463530879168023 -0,0.8435186545743368,0.15648134542566317 -0,0.8525443315221881,0.14745566847781189 -0,0.7013326210400919,0.29866737895990814 -0,0.9674136995546733,0.03258630044532683 -0,0.5309185875409748,0.4690814124590253 -1,0.47237953465072385,0.5276204653492762 -0,0.7095170968034074,0.2904829031965927 -0,0.6714904448715022,0.32850955512849783 -0,0.9983785417801629,0.0016214582198370968 -0,0.9597028378143234,0.04029716218567664 -0,0.9845439677691215,0.015456032230878592 -0,0.9860409662077553,0.013959033792244776 -0,0.6404810048545867,0.3595189951454134 -0,0.9976549816557069,0.002345018344293165 -0,0.8768599299455115,0.12314007005448846 -0,0.9318492776769429,0.06815072232305716 -0,0.9728716889892948,0.027128311010705133 -1,0.13223528807988894,0.8677647119201111 -1,0.44466155368936133,0.5553384463106387 -0,0.9702562002763259,0.02974379972367404 -1,0.016427804138739278,0.9835721958612608 -0,0.9477574531919819,0.052242546808018195 -0,0.9724588746288741,0.02754112537112592 -0,0.6857055773021973,0.31429442269780267 -0,0.9850752712897688,0.014924728710231146 -1,0.30183669725986656,0.6981633027401335 -0,0.9978103134531757,0.0021896865468243125 -0,0.9222162350447435,0.07778376495525656 -0,0.9980491728522568,0.0019508271477431721 -0,0.9425988446863155,0.05740115531368449 -0,0.999999998217526,1.7824738381340184E-9 -0,0.9822846988568248,0.01771530114317513 -1,0.39608860205603924,0.6039113979439606 -0,0.8357938739575792,0.16420612604242085 -0,0.9340570914014327,0.06594290859856726 -0,0.9581311800256483,0.04186881997435163 -0,0.9845061177518662,0.015493882248133627 -0,0.9495859779157536,0.05041402208424635 -0,0.6572843300598448,0.34271566994015534 -0,0.8394975232104653,0.16050247678953472 -0,0.6936398073006371,0.30636019269936293 -1,0.24254393407641264,0.7574560659235874 -0,0.7441793276296802,0.25582067237031975 -0,0.7115769758037802,0.2884230241962198 -1,0.3154832420491824,0.6845167579508176 -0,0.9914500106558375,0.008549989344162512 -0,0.9640480008965037,0.03595199910349639 -1,0.12258817632224053,0.8774118236777595 -1,0.3197056203573419,0.680294379642658 -1,0.2792983515073381,0.7207016484926618 -0,0.9938013548752247,0.006198645124775364 -0,0.95158271160366,0.04841728839633981 -1,0.10747941216352357,0.8925205878364765 -0,0.9999999999634597,3.654029480011346E-11 -0,0.9999999603519723,3.9648027720172397E-8 -0,0.7161891657590673,0.2838108342409326 -0,0.9307279053737901,0.06927209462620983 -0,0.9838033905414929,0.016196609458507028 -0,0.8761345230453287,0.12386547695467122 -1,0.38733256508599423,0.6126674349140058 -1,0.45986310105133293,0.5401368989486671 -1,0.4452332157917829,0.5547667842082171 -0,0.9406189231100016,0.05938107688999837 -0,0.9774038746346152,0.022596125365384703 -0,0.9999999967432363,3.256763724087117E-9 -1,0.10941693135752678,0.8905830686424733 -0,0.9999999599988016,4.000119820648903E-8 -0,0.5897360922612823,0.4102639077387177 -0,0.9940217283437233,0.005978271656276846 -0,0.8273338316981768,0.1726661683018232 -1,0.24997284719888518,0.7500271528011148 -0,0.9933705676178384,0.006629432382161586 -0,0.939959208638667,0.06004079136133308 -0,0.972204629081874,0.02779537091812607 -1,0.34677210311344675,0.6532278968865532 -1,0.2438837221681317,0.7561162778318683 -0,0.7892276345311063,0.2107723654688936 -1,0.4499012946728721,0.5500987053271279 -1,0.20986664963205817,0.7901333503679417 -0,0.99443517934817,0.005564820651829897 -0,0.7704884374697252,0.22951156253027483 -0,0.8359847345524929,0.16401526544750714 -0,0.9970919161463807,0.0029080838536193546 -1,0.4723130823208425,0.5276869176791575 -0,0.8421686281807447,0.15783137181925533 -0,0.9862519848116235,0.013748015188376572 -0,0.9935856929908164,0.006414307009183464 -0,0.9382861733835686,0.06171382661643135 -0,0.9706060869420707,0.029393913057929284 -0,0.6301861328699266,0.3698138671300734 -0,0.9193716247330015,0.08062837526699844 -0,0.6403135735646219,0.359686426435378 -0,0.7823084928122085,0.21769150718779157 -0,0.9999999630669225,3.69330773448326E-8 -0,0.7765587136311125,0.22344128636888755 -1,0.45006640726831465,0.5499335927316853 -0,0.9406745223227392,0.05932547767726089 -0,0.698680723353361,0.3013192766466391 -1,0.1932267011001615,0.8067732988998385 -0,0.9933256772158521,0.0066743227841479505 -0,0.8982256932982364,0.10177430670176361 -0,0.7169362700348758,0.2830637299651242 -0,0.872598027730848,0.12740197226915193 -0,0.9926611554062441,0.007338844593755796 -1,0.31079868587096393,0.6892013141290361 -1,0.2153461471658148,0.7846538528341852 -1,0.46872162654145433,0.5312783734585458 -0,0.5340129036616462,0.46598709633835367 -0,0.6781243668296878,0.32187563317031215 -0,0.5120828847043297,0.48791711529567033 -0,0.9999999994090898,5.909102558285395E-10 -0,0.9773329392902003,0.022667060709799836 -0,0.9981463630950035,0.001853636904996619 -0,0.9829684462614406,0.017031553738559357 -0,0.9881592862254296,0.011840713774570416 -0,0.9522953539539798,0.0477046460460201 -0,0.988252492570181,0.011747507429819079 -0,0.7728846935925374,0.22711530640746255 -0,0.9042648680437797,0.09573513195622017 -1,0.14627015161671722,0.8537298483832828 -0,0.9353214349901077,0.06467856500989236 -1,0.21607036543328118,0.7839296345667189 -0,0.8433633612172707,0.15663663878272932 -0,0.7573235688461079,0.24267643115389206 -0,0.8323401815916162,0.16765981840838382 -0,0.9703002237557582,0.029699776244241846 -0,0.9741244722138939,0.025875527786106186 -1,0.43247296979876837,0.5675270302012316 -0,0.9387421232706518,0.06125787672934827 -1,0.476812583802595,0.523187416197405 -0,0.9960936330112657,0.003906366988734269 -1,0.2989443108085948,0.7010556891914053 -0,0.999369831053986,6.30168946013967E-4 -1,0.46120059855888235,0.5387994014411176 -0,0.6856019830864879,0.31439801691351216 -0,0.997979939836407,0.002020060163593043 -0,0.9690223308432552,0.030977669156744776 -0,0.9916254559279563,0.008374544072043666 -0,0.8746539761220877,0.12534602387791224 -0,0.9999998338438111,1.6615618897155046E-7 -0,0.9504749871874708,0.04952501281252922 -0,0.8353873170007595,0.16461268299924045 -1,0.4408172711694789,0.5591827288305211 -0,0.7815224128783426,0.2184775871216574 -1,0.47240652793709587,0.5275934720629042 -1,0.468818510191855,0.5311814898081451 -0,0.5475730538784326,0.4524269461215675 -0,0.998479968811664,0.0015200311883358918 -0,0.955038638850272,0.044961361149728006 -1,0.36119397596835834,0.6388060240316417 -0,0.7188558544805372,0.2811441455194627 -0,0.9993244693396374,6.75530660362699E-4 -0,0.9211809057903997,0.07881909420960033 -0,0.693451927282211,0.30654807271778906 -0,0.9999999940365436,5.9634562605040176E-9 -1,0.1951273906724662,0.8048726093275338 -0,0.9999993193851398,6.80614860226571E-7 -0,0.855842589607118,0.14415741039288188 -0,0.9984626312483483,0.0015373687516516683 -0,0.8907894450831705,0.10921055491682964 -0,0.9976609822405524,0.0023390177594476195 -0,0.944164875980162,0.05583512401983805 -0,0.9170216936873089,0.08297830631269111 -1,0.10814294206177864,0.8918570579382215 -0,0.9993914351209296,6.085648790702019E-4 -0,0.6921566731203456,0.3078433268796544 -0,0.5906861650562932,0.40931383494370677 -0,0.5064328618666999,0.4935671381333001 -1,0.4327042754311503,0.5672957245688497 -0,0.9250025589721322,0.07499744102786772 -0,0.9939549913360649,0.006045008663935127 +0,0.8944069847981663,0.10559301520183378 +0,0.9999992666563813,7.333436187566166E-7 +0,0.9399891395787372,0.06001086042126292 +0,0.7159516210844812,0.2840483789155189 +1,0.3675906841834502,0.6324093158165499 +0,0.7860882074977754,0.21391179250222456 +1,0.1602968862886549,0.8397031137113452 +0,0.9999809007139123,1.9099286087517694E-5 +0,0.9884869274034367,0.01151307259656337 +0,0.994079055332559,0.005920944667440934 +0,0.9992613705959793,7.38629404020566E-4 +0,0.9999951062072883,4.893792711620928E-6 +0,0.9987065741041143,0.001293425895885709 +0,0.9948892080741064,0.005110791925893665 +1,0.1484981479689264,0.8515018520310735 +0,0.9562343786398596,0.0437656213601403 +0,0.9839742300680421,0.016025769931957805 +0,0.745666541893958,0.254333458106042 +0,0.5340315311364616,0.4659684688635384 +0,0.5105594113537267,0.4894405886462733 +0,0.9804630171261164,0.01953698287388365 +0,0.7532072297324249,0.246792770267575 +0,0.9966137739736014,0.0033862260263986667 +0,0.7698352671433598,0.2301647328566402 +0,0.9999692329327737,3.0767067226180554E-5 +0,0.9728778186399626,0.02712218136003752 +0,0.9752167707507287,0.0247832292492714 +0,0.6184880273611431,0.381511972638857 +1,0.26621601099737013,0.7337839890026299 +0,0.8096245996044724,0.1903754003955276 +0,0.9999974341719503,2.5658280497023903E-6 +0,0.7561898550682586,0.24381014493174133 +0,0.9998824716516058,1.1752834839418316E-4 +0,0.9858765179709175,0.014123482029082658 +0,0.9744663452926076,0.025533654707392342 +0,0.9999960597504183,3.940249581757711E-6 +0,0.8824406499571088,0.11755935004289117 +0,0.8422342187029674,0.15776578129703248 +0,0.8099931578038074,0.19000684219619263 +0,0.9843620067071441,0.015637993292855885 +1,0.1995432116656004,0.8004567883343996 +0,0.8272856548810441,0.17271434511895592 +1,0.3238791745717611,0.6761208254282389 +0,0.9999999727563164,2.7243683732579407E-8 +0,0.9123343452904402,0.08766565470955973 +1,0.3359024800535814,0.6640975199464185 +0,0.9910043935405122,0.008995606459487873 +1,0.34016137267736907,0.659838627322631 +0,0.999999997159569,2.8404310294080076E-9 +0,0.5633390209868414,0.43666097901315853 +0,0.9855756164422016,0.014424383557798372 +1,0.08332027317011267,0.9166797268298872 +1,0.33594784713224735,0.6640521528677525 +0,0.9986027655857852,0.001397234414214901 +0,0.7553757599725839,0.2446242400274161 +0,0.8686691249360535,0.13133087506394642 +0,0.9626467067922024,0.037353293207797594 +0,0.9075630164611321,0.09243698353886784 +0,0.977084921486413,0.022915078513587064 +0,0.5338145562381619,0.46618544376183807 +0,0.9674541236150646,0.032545876384935564 +0,0.9999974707126238,2.5292873761917624E-6 +0,0.9999986638415362,1.3361584637427257E-6 +0,0.6371617665446627,0.3628382334553373 +0,0.9387116958561103,0.06128830414388975 +0,0.9878331201851982,0.012166879814801685 +1,0.2034659374526468,0.7965340625473533 +0,0.9294389666614333,0.07056103333856666 +0,0.9999999825324851,1.746751480599351E-8 +0,0.9917496437257431,0.008250356274256729 +0,0.7099098763584218,0.2900901236415781 +0,0.8955085049977624,0.10449149500223767 +0,0.952757437261094,0.047242562738906035 +0,0.7593515678366463,0.24064843216335366 +1,0.2491540335210043,0.7508459664789957 +0,0.9978419800538714,0.0021580199461287038 +0,0.9999171771820028,8.282281799725476E-5 +1,0.14788077074736541,0.8521192292526346 +0,0.9649964724785276,0.035003527521472406 +0,0.9704599093221848,0.02954009067781527 +0,0.9845536309698997,0.015446369030100215 +0,0.9999972106202288,2.789379771263438E-6 +0,0.9781220095489098,0.02187799045109016 +1,0.20749151386100564,0.7925084861389943 +0,0.9967167796994436,0.003283220300556408 +0,0.8644790261462639,0.1355209738537361 +0,0.9999999178657634,8.213423666451497E-8 +0,0.6636962336218869,0.33630376637811316 +0,0.9839201403351926,0.01607985966480743 +0,0.9999817022070076,1.829779299253022E-5 +1,0.13807733976920067,0.8619226602307993 +0,0.5970983115802303,0.40290168841976975 +0,0.9662120082346115,0.03378799176538851 +1,0.08373762567578072,0.9162623743242192 +1,0.42634577292617787,0.5736542270738222 +0,0.5845143010392524,0.4154856989607477 +0,0.762139795447514,0.237860204552486 +0,0.5590137457351622,0.4409862542648378 +1,0.2886579271925336,0.7113420728074664 +1,0.1677953172734237,0.8322046827265762 +0,0.5189263255631378,0.48107367443686216 +0,0.7805331074610216,0.2194668925389785 +1,0.4753767822370474,0.5246232177629525 +0,0.8923809796293493,0.10761902037065074 +0,0.8699944137006046,0.13000558629939535 +0,0.942849198556522,0.057150801443478 +0,0.9148428605934619,0.08515713940653806 +1,0.4967614013312051,0.503238598668795 +0,0.996284439529591,0.003715560470409028 +0,0.6052286864163537,0.3947713135836462 +0,0.8963406002418505,0.10365939975814958 +0,0.9366536702066083,0.06334632979339169 +1,0.10778876813734575,0.8922112318626543 +0,0.9935106514985015,0.006489348501498605 +0,0.9764602615940584,0.023539738405941566 +0,0.5835155871114416,0.4164844128885585 +0,0.8671577050263412,0.13284229497365882 +0,0.998611733154673,0.0013882668453270134 +1,0.30931665048223733,0.6906833495177628 +0,0.7640944509343764,0.23590554906562367 +0,0.9999999979929295,2.007070558254389E-9 +0,0.9990076987357296,9.92301264270417E-4 +1,0.46182330508549946,0.5381766949145006 +0,0.9620461641576565,0.0379538358423435 +1,0.21730566159434098,0.782694338405659 +0,0.9999990134024715,9.865975283133382E-7 +0,0.9999999999280682,7.19317451707586E-11 +1,0.22195267593032914,0.7780473240696709 +0,0.6530972621006211,0.34690273789937887 +0,0.9981137138821157,0.0018862861178843649 +0,0.9957314556730796,0.004268544326920297 +0,0.7253441430219315,0.2746558569780685 +1,0.2023075141194741,0.7976924858805259 +1,0.34400685005140536,0.6559931499485946 +0,0.8403172988639771,0.15968270113602295 +0,0.9767264259593688,0.023273574040631274 +0,0.9958136230283731,0.004186376971626961 +0,0.9999984945365121,1.5054634878120099E-6 +0,0.9986740784903837,0.001325921509616178 +0,0.9794032641685784,0.020596735831421756 +0,0.7811714108131107,0.2188285891868893 +0,0.999999985981955,1.401804506193252E-8 +0,0.6713370424225531,0.3286629575774469 +0,0.8908972013952888,0.1091027986047111 +0,0.9861286741663732,0.013871325833626899 +0,0.9641423562097897,0.035857643790210336 +1,0.38991446934824747,0.6100855306517525 +0,0.7658656749518615,0.23413432504813833 +0,0.9999866177921257,1.3382207874182143E-5 +1,0.20517325071431736,0.7948267492856826 +0,0.6928605202845375,0.30713947971546246 +1,0.3254286184157308,0.6745713815842692 +0,0.8637472457033711,0.13625275429662886 +0,0.9749460557119107,0.025053944288089162 +0,0.996590522864292,0.003409477135707973 +1,0.2259259648056566,0.7740740351943435 +1,0.33141953610706276,0.6685804638929372 +0,0.6783391581887366,0.3216608418112635 +1,0.4682306834383241,0.5317693165616759 +0,0.9312409934637563,0.06875900653624362 +0,0.6289893088975446,0.37101069110245544 +0,0.6699166662334306,0.33008333376656934 +0,0.593796938365025,0.406203061634975 +1,3.745593967436289E-7,0.9999996254406034 +0,0.9978233800472699,0.0021766199527301273 +1,0.2524322718244572,0.7475677281755428 +0,0.9999999971578601,2.8421397481014408E-9 +0,0.68252935822896,0.31747064177104006 +0,0.5945875243345016,0.4054124756654984 +0,0.9123387891642747,0.08766121083572524 +0,0.9999966624794256,3.337520574392397E-6 +0,0.9999870084647174,1.299153528264388E-5 +0,0.9999832215391993,1.6778460800716992E-5 +0,0.9242296459679813,0.07577035403201876 +0,0.9980607000005463,0.0019392999994536245 +0,0.7707797049719041,0.22922029502809596 +0,0.8956681153671009,0.10433188463289923 +0,0.9291351321579935,0.07086486784200648 +1,0.07737738589407722,0.9226226141059228 +1,0.3490119552260832,0.6509880447739168 +0,0.9999718702064527,2.8129793547269977E-5 +0,0.9997933126403455,2.0668735965434688E-4 +0,0.9833613549847006,0.016638645015299526 +0,0.721975102024241,0.27802489797575897 +0,0.6949608870457422,0.3050391129542578 +0,0.9511943175906219,0.04880568240937823 +0,0.9999966885884004,3.3114115995374204E-6 +0,0.9990902750057233,9.097249942766249E-4 +1,0.12457850415541333,0.8754214958445866 +0,0.9113127183996129,0.0886872816003871 +0,0.9822371317427039,0.017762868257296064 +0,0.6991639628211358,0.3008360371788642 +0,0.9960635091474233,0.0039364908525767305 +0,0.9999999820053619,1.7994638081180793E-8 +0,0.8229558830193446,0.17704411698065525 +0,0.9369077930344047,0.06309220696559525 +0,0.9566776007283538,0.04332239927164609 +1,0.33310363244628144,0.6668963675537186 +0,0.9999999417720523,5.822794771812085E-8 +0,0.989201749854924,0.010798250145076014 +0,0.7725317835012165,0.22746821649878343 +0,0.9759246934783156,0.024075306521684464 +0,0.5391081763777935,0.4608918236222065 +0,0.9982931529128861,0.0017068470871138789 +0,0.7048851870227113,0.2951148129772887 +0,0.9928695908858205,0.007130409114179465 +1,0.1333761075679782,0.8666238924320219 +0,0.96788222448541,0.03211777551459003 +0,0.967650699860301,0.032349300139699035 +1,0.24741293343060444,0.7525870665693956 +0,0.9120819323220563,0.08791806767794381 +0,0.9575329659273221,0.04246703407267797 +0,0.9964610459206077,0.0035389540793922306 +0,0.9818166966282144,0.018183303371785548 +1,0.4594108690055019,0.5405891309944981 +0,0.9999998751036155,1.248963844236696E-7 +0,0.9999999216891097,7.831089040894493E-8 +0,0.9999753565197772,2.4643480222838252E-5 +0,0.9961740762542991,0.003825923745700776 +1,0.390591677800757,0.609408322199243 +0,0.7179405261448131,0.2820594738551868 +0,0.6213763233101128,0.37862367668988717 +0,0.9999917892866176,8.210713382445486E-6 +0,0.9872387376592152,0.012761262340784776 +1,0.43559120219199804,0.564408797808002 +0,0.9998404900846184,1.595099153815818E-4 +0,0.8987723415260563,0.10122765847394359 +0,0.7803488463477475,0.21965115365225255 +0,0.9187433050962978,0.0812566949037022 +0,0.7011564634235891,0.298843536576411 +0,0.5647894823670977,0.4352105176329023 +0,0.7668122932308212,0.23318770676917872 +0,0.9691335967178002,0.03086640328219976 +0,0.8490837046096207,0.1509162953903793 +0,0.9933232596617568,0.006676740338243207 +0,0.8212133668362784,0.17878663316372165 +0,0.5758017899405287,0.4241982100594714 +1,0.4174591067669874,0.5825408932330127 +0,0.9924290782766445,0.0075709217233555105 +0,0.989941088931146,0.010058911068853963 +1,0.16648389420928847,0.8335161057907116 +0,0.8091344037003962,0.1908655962996038 +0,0.984046825683356,0.0159531743166441 +0,0.9040269380670084,0.09597306193299165 +0,0.521527067845801,0.47847293215419895 +1,0.3524135063252042,0.6475864936747957 +0,0.9103209341924507,0.08967906580754922 +0,0.9868172010374247,0.013182798962575449 +1,0.10014395732347506,0.8998560426765249 +0,0.8335284578000193,0.16647154219998073 +0,0.6032341498231613,0.39676585017683874 +0,0.999996779004922,3.2209950780691517E-6 +0,0.7199583948346872,0.2800416051653128 +0,0.999999965041736,3.4958263921146976E-8 +0,0.9931233540955537,0.006876645904446199 +1,0.24567780825996968,0.7543221917400305 +0,0.953120337692824,0.04687966230717598 +0,0.9890738538332887,0.010926146166711273 +0,0.7513068157210424,0.24869318427895754 +0,0.6197045864856472,0.3802954135143528 +0,0.8152128347956211,0.1847871652043789 +0,0.9561094111211271,0.04389058887887294 +0,0.999999278153542,7.21846458123171E-7 +0,0.9904534988895065,0.009546501110493408 +0,0.9925942973786738,0.007405702621326141 +0,0.5683787994613344,0.4316212005386656 +0,0.6048466999295377,0.39515330007046234 +0,0.5517837080144286,0.4482162919855715 +0,0.9904460057040041,0.00955399429599588 +0,0.8280658408946847,0.1719341591053153 +1,0.34024472240080167,0.6597552775991982 +1,0.18361314898432565,0.8163868510156744 +0,0.9999883955690544,1.1604430945589492E-5 +0,0.5696940594385893,0.4303059405614108 +0,0.999999542034432,4.579655681120574E-7 +1,0.24298524642795244,0.7570147535720475 +1,0.3858348626859965,0.6141651373140035 +1,0.21846907264756027,0.7815309273524397 +0,0.7122413374530209,0.28775866254697907 +1,0.24054217820370108,0.759457821796299 +0,0.6263121431814505,0.3736878568185495 +0,0.6109177414222977,0.3890822585777023 +1,0.3242394132583149,0.675760586741685 +0,0.5882739120461012,0.41172608795389876 +1,0.49922069765766,0.50077930234234 +0,0.9982171179640171,0.0017828820359827835 +0,0.9952999136119168,0.004700086388083123 +0,0.8727654993983709,0.12723450060162908 +0,0.9917013221681228,0.008298677831877125 +0,0.9727589214206129,0.027241078579387186 +0,0.93337401397003,0.06662598602997012 +0,0.9947058489376785,0.005294151062321408 +1,0.1269742977029986,0.8730257022970014 +0,0.9147936878216898,0.08520631217831028 +0,0.9364006133853678,0.06359938661463216 +0,0.9686582408820053,0.0313417591179947 +0,0.9452334167903784,0.054766583209621515 +0,0.9943746089943045,0.005625391005695532 +1,0.4259306157525893,0.5740693842474108 +0,0.944334007113012,0.05566599288698806 +0,0.9970348571130706,0.0029651428869293217 +0,0.6686658396294045,0.33133416037059554 +1,0.2801434796820438,0.7198565203179562 +0,0.9668720497925567,0.0331279502074432 +0,0.9998998025653494,1.0019743465062174E-4 +1,0.19270048256732292,0.807299517432677 +0,0.9999999974805027,2.519497253863718E-9 +0,0.9065307506625552,0.09346924933744487 +0,0.9664642752224186,0.033535724777581453 +0,0.9998359779424224,1.6402205757753627E-4 +0,0.9999961110623918,3.888937608182636E-6 +0,0.9492644706870617,0.050735529312938225 +1,0.24111736113540005,0.7588826388646 +0,0.9999997224331396,2.7756686043618243E-7 +0,0.9999986355095174,1.3644904825215243E-6 +0,0.9824635201883556,0.017536479811644464 +0,0.9999657606751051,3.423932489484042E-5 +0,0.6773915206924563,0.32260847930754366 +0,0.9989602882415457,0.001039711758454288 +0,0.8566673223009608,0.14333267769903915 +0,0.9515968365209739,0.048403163479026 +1,0.218355558599626,0.7816444414003739 +0,0.7446409091599944,0.2553590908400057 +0,0.9062996474035603,0.09370035259643966 +0,0.9583865912406024,0.041613408759397605 +1,0.30396551043064807,0.696034489569352 +0,0.966404949113957,0.03359505088604288 +0,0.973493163107686,0.026506836892313895 +0,0.9517092925240245,0.04829070747597554 +0,0.7259876425033918,0.2740123574966082 +0,0.9352859424700273,0.06471405752997274 +1,4.806407901365001E-26,1.0 +0,0.8623973024041166,0.13760269759588337 +0,0.9840677003687096,0.0159322996312904 +0,0.9770826627106387,0.022917337289361402 +0,0.8760570853676215,0.1239429146323785 +0,0.8890903237284595,0.11090967627154051 +0,0.9999931414443022,6.8585556979299596E-6 +1,2.0113362590850904E-5,0.9999798866374092 +0,0.7071632321293786,0.29283676787062146 +1,0.17928377002151036,0.8207162299784897 +0,0.9999975249284518,2.475071548151244E-6 +1,0.33259445831311285,0.6674055416868871 +0,0.9652430979240061,0.03475690207599394 +0,0.8942343485687009,0.10576565143129914 +0,0.9883929877050575,0.011607012294942657 +0,0.7617274591968742,0.2382725408031258 +0,0.9993467013972107,6.53298602789184E-4 +0,0.9999816127914062,1.838720859391409E-5 +0,0.875923709978762,0.12407629002123795 +0,0.6907218925688329,0.309278107431167 +0,0.636764523496363,0.363235476503637 +0,0.9854125545987773,0.014587445401222749 +0,0.9999983458501724,1.65414982761335E-6 +0,0.9720576084029373,0.027942391597062625 +0,0.7420606510970826,0.2579393489029175 +0,0.7975548623267646,0.2024451376732354 +0,0.9802819667208889,0.019718033279111122 +0,0.9774032840761505,0.02259671592384954 +0,0.9999999995646396,4.3536046591050193E-10 +0,0.8155143155601389,0.18448568443986102 +0,0.8055421523097809,0.19445784769021912 +0,0.9864149710416185,0.013585028958381434 +0,0.9444501415358899,0.05554985846411013 +0,0.8982271152824842,0.10177288471751578 +0,0.9999999998803157,1.1968416142484357E-10 +0,0.6569433004793567,0.34305669952064344 +0,0.6256588869821581,0.3743411130178419 +1,0.3188582927750005,0.6811417072249994 +0,0.6957229740077292,0.3042770259922708 +0,0.963122087040668,0.036877912959331995 +0,0.9457422895172181,0.05425771048278186 +1,0.49475467303662596,0.5052453269633741 +0,0.9999910800993795,8.919900620538742E-6 +0,0.6903631268604251,0.3096368731395748 +0,0.7804247365694106,0.2195752634305894 +0,0.9860907827895187,0.013909217210481255 +0,0.9931125070059369,0.0068874929940631775 +0,0.9999262577102753,7.374228972464086E-5 +0,0.995434584670645,0.004565415329355047 +0,0.8362252222475298,0.16377477775247007 +0,0.9701576291889725,0.029842370811027485 +0,0.9999999999998483,1.516989012543949E-13 +0,0.5859257094248328,0.4140742905751672 +0,0.6540721313437351,0.34592786865626496 +1,0.22993672425129738,0.7700632757487026 +0,0.9938504431530634,0.006149556846936497 +0,0.6691132611559081,0.3308867388440919 +0,0.8099957891794496,0.19000421082055038 +0,0.999983672675963,1.632732403707842E-5 +0,0.9997254049603144,2.745950396855191E-4 +1,0.4057728139034967,0.5942271860965034 +0,0.9999868087233664,1.3191276633450564E-5 +1,4.826020077216602E-4,0.9995173979922783 +0,0.9999994578368774,5.421631225607862E-7 +1,0.30457199861288375,0.6954280013871162 +0,0.5341062435585678,0.4658937564414321 +0,0.9557296458943197,0.04427035410568014 +0,0.9513344388973602,0.048665561102639705 +0,0.9864505195896253,0.01354948041037474 +0,0.9917243345877857,0.008275665412214169 +1,9.284929899165729E-6,0.9999907150701007 +0,0.9999935608013244,6.439198675534082E-6 +0,0.9860135015271952,0.013986498472804861 +0,0.9999987909115142,1.2090884858223257E-6 +0,0.9463772776271717,0.05362272237282816 +0,0.9961107428270877,0.0038892571729123556 +0,0.6119060449199809,0.3880939550800192 +0,0.8513636083091884,0.1486363916908115 +0,0.9711896472938017,0.02881035270619834 +0,0.9151522142439327,0.08484778575606727 +1,0.2673233629311083,0.7326766370688917 +0,0.9999991058796202,8.941203798222332E-7 +0,0.7595762689684527,0.2404237310315473 +0,0.9959528674178026,0.004047132582197259 +0,0.6826066049544695,0.31739339504553055 +0,0.9999998344564617,1.6554353834805064E-7 +0,0.8805134483316532,0.11948655166834685 +1,0.3371735472068877,0.6628264527931124 +0,0.9782368472023133,0.021763152797686723 +0,0.9566020641259044,0.04339793587409563 +1,0.22216145018294484,0.7778385498170551 +1,0.245312456698207,0.754687543301793 +1,0.20171539217718015,0.7982846078228198 +0,0.9039186258747683,0.0960813741252317 +0,0.9271972710571653,0.07280272894283478 +0,0.9999979169429457,2.083057054260751E-6 +0,0.5760234733800536,0.42397652661994645 +0,0.686668495820585,0.3133315041794151 +0,0.8272647748771632,0.17273522512283684 +0,0.7908071895357918,0.20919281046420826 +0,0.6794317742778848,0.3205682257221152 +0,0.7163016652813259,0.2836983347186741 +0,0.8693884680091445,0.1306115319908555 +1,0.25220747570523716,0.7477925242947628 +0,0.9509629899937634,0.0490370100062367 +0,0.999988731715396,1.1268284603919722E-5 +0,0.9999995346776982,4.653223017803771E-7 +0,0.6575143722659663,0.3424856277340336 +0,0.7104614931593899,0.2895385068406101 +0,0.9999992381621285,7.618378714179764E-7 +0,0.9979672079573931,0.002032792042606919 +0,0.6943486936961049,0.30565130630389514 +1,0.4174659985254299,0.58253400147457 +1,0.387037540654954,0.612962459345046 +0,0.9998561133801885,1.438866198115722E-4 +0,0.5602634069371782,0.43973659306282176 +1,0.23499421732006986,0.7650057826799301 +0,0.9935995637934062,0.006400436206593774 +0,0.9981087891248069,0.0018912108751931718 +0,0.9375868015363494,0.062413198463650614 +0,0.9937999712338799,0.006200028766120061 +0,0.6897323617482751,0.3102676382517249 +0,0.9631525008972903,0.036847499102709715 +0,0.9999915762814,8.423718600044352E-6 +0,0.978381481732871,0.021618518267129135 +0,0.6038676475683483,0.3961323524316516 +1,0.1507937518072155,0.8492062481927845 +1,0.22003908120187315,0.7799609187981269 +0,0.9974006730185945,0.0025993269814056415 +1,0.2633052962984688,0.7366947037015312 +0,0.7208191092262123,0.2791808907737877 +0,0.5212320671910942,0.4787679328089058 +0,0.8694878683324652,0.13051213166753484 +0,0.9756184479971455,0.024381552002854627 +0,0.8914907228839672,0.10850927711603267 +0,0.9983137528699586,0.0016862471300414764 +0,0.974732763414161,0.02526723658583901 +0,0.9466953904418324,0.05330460955816771 +1,0.45099842990152383,0.5490015700984762 +0,0.9773738875321974,0.022626112467802502 +0,0.8239891948495135,0.17601080515048656 +0,0.9773460417642804,0.022653958235719578 +0,0.9999999983556398,1.6443602898651255E-9 +0,0.9999931903128928,6.809687107277898E-6 +1,0.27299029274938,0.72700970725062 +0,0.5857751343697025,0.4142248656302975 +1,0.3165615071706529,0.6834384928293472 +0,0.6403610778148545,0.3596389221851455 +0,0.9995832131941805,4.1678680581938273E-4 +0,0.9995410253803849,4.5897461961514133E-4 +0,0.9993084943369468,6.915056630532564E-4 +0,0.5626312215048567,0.43736877849514333 +0,0.7620495556969832,0.23795044430301684 +1,0.23994859745290237,0.7600514025470976 +1,0.40954922270542027,0.5904507772945798 +0,0.9911621197803766,0.008837880219623409 +0,0.623125884662944,0.37687411533705595 +0,0.9684521733614081,0.031547826638591965 +0,0.9963820765647318,0.0036179234352682068 +0,0.7468058567949494,0.2531941432050506 +0,0.9552998592411834,0.04470014075881657 +0,0.9540405246819886,0.045959475318011415 +1,0.38601644807000524,0.6139835519299948 +0,0.62798925389073,0.37201074610927004 +0,0.6227033626167546,0.37729663738324526 +1,0.18067267835881365,0.8193273216411864 +0,0.9894973223607749,0.010502677639225083 +0,0.9990174798150788,9.825201849212287E-4 +0,0.8005564329164716,0.19944356708352837 +0,0.8654527397432451,0.13454726025675484 +0,0.6540861018582079,0.3459138981417921 +0,0.9099341792763315,0.09006582072366867 +0,0.9958652517923274,0.004134748207672505 +0,0.9820074961876293,0.01799250381237066 +0,0.5567182605053632,0.44328173949463684 +0,0.9983925343982468,0.0016074656017531685 +0,0.9999438826917204,5.6117308279542374E-5 +0,0.9811190905368082,0.018880909463191865 +1,0.1203514623253346,0.8796485376746653 +1,0.17761737612596276,0.8223826238740373 +0,0.997247275141976,0.002752724858023936 +0,0.9833414001851105,0.016658599814889524 +1,0.2241157905717922,0.7758842094282078 +0,0.9999996570115637,3.429884363870627E-7 +0,0.9451718008430342,0.05482819915696577 +0,0.9521235996952986,0.04787640030470141 +0,0.9896549868275188,0.010345013172481229 +0,0.9391417362101183,0.06085826378988172 +1,0.15111835773153864,0.8488816422684614 +1,0.0802006684983607,0.9197993315016394 +0,0.7525537442083664,0.2474462557916336 +0,0.970733758152314,0.029266241847685993 +0,0.8758165348472762,0.12418346515272372 +0,0.9999999834568716,1.654312838864919E-8 +0,0.7467004353726437,0.2532995646273563 +0,0.8373947712523672,0.1626052287476328 +0,0.9563409749390787,0.04365902506092136 +0,0.9989814411944872,0.0010185588055128863 +0,0.7429343308517903,0.2570656691482098 +0,0.9958777916794455,0.004122208320554701 +0,0.9972838125410065,0.0027161874589935234 +1,0.2047824937285147,0.7952175062714854 +0,0.9909060962901113,0.00909390370988866 +0,0.9788458418106853,0.021154158189314678 +0,0.9449767854275791,0.05502321457242089 +0,0.9486002200746945,0.051399779925305616 +0,0.8976405534538564,0.1023594465461436 +0,0.977168461000265,0.022831538999734974 +0,0.9750967904288691,0.024903209571130906 +0,0.9999957185466644,4.281453335540778E-6 +0,0.9999963754651198,3.6245348800888365E-6 +1,0.27273825485029246,0.7272617451497075 +0,0.8375285237877527,0.16247147621224733 +1,0.19543940752755617,0.8045605924724437 +0,0.9999980652575635,1.93474243655706E-6 +0,0.9999996000091219,3.999908781219396E-7 +1,0.225068152771883,0.774931847228117 +0,0.9576607793045605,0.04233922069543957 +0,0.6507991447452153,0.34920085525478467 +1,0.4673099714027807,0.5326900285972193 +0,0.9279657023307354,0.07203429766926459 +0,0.9999957465522081,4.253447791809342E-6 +0,0.9993341906090975,6.658093909026026E-4 +0,0.6985044437824771,0.3014955562175229 +0,0.7874376451838632,0.2125623548161369 +1,0.29837682831660484,0.701623171683395 +0,0.941821177747525,0.058178822252474865 +0,0.7366359850841326,0.26336401491586736 +0,0.5302551651266428,0.46974483487335705 +0,0.9328952181703958,0.06710478182960418 +0,0.9999946700463154,5.329953684747752E-6 +1,0.2394970989749144,0.7605029010250856 +1,0.15671333336821053,0.8432866666317894 +0,0.6222030321752379,0.37779696782476213 +1,0.4875720825598069,0.512427917440193 +1,0.17303822119206025,0.8269617788079398 +0,0.9999806296817089,1.9370318291124437E-5 +0,0.9815547827572767,0.018445217242723296 +0,0.6632767432022826,0.33672325679771753 +0,0.8452315697384878,0.15476843026151219 +0,0.9948124753592492,0.005187524640750822 +0,0.9952498458295621,0.004750154170438029 +0,0.9911229311737457,0.008877068826254284 +0,0.9985113204391354,0.001488679560864727 +1,0.19941582749629452,0.8005841725037055 +0,0.9995472534061203,4.5274659387978207E-4 +0,0.9803702143584224,0.019629785641577528 +0,0.9833613735593113,0.01663862644068864 +0,0.6689000182918964,0.3310999817081036 +0,0.9989402335262026,0.0010597664737973707 +0,0.9738664139504265,0.026133586049573495 +0,0.9999977953018192,2.2046981806671913E-6 +0,0.6467339473879548,0.35326605261204513 +0,0.9999996964126463,3.035873537699402E-7 +0,0.9844701753126023,0.0155298246873978 +0,0.6575466277454545,0.3424533722545456 +0,0.9524746642731642,0.047525335726835836 +0,0.8303871010274606,0.16961289897253942 +0,0.964309967189512,0.03569003281048807 +0,0.9944221439219609,0.005577856078039138 +1,0.281772269205075,0.718227730794925 +0,0.6047486305088652,0.3952513694911349 +0,0.9999999781809674,2.18190325187835E-8 +0,0.9992446243772982,7.55375622701822E-4 +0,0.9481944815725406,0.05180551842745935 +1,0.38734869544336337,0.6126513045566366 +1,0.2408996845160091,0.7591003154839909 +0,0.6223144343089472,0.37768556569105277 +1,0.15665393548391082,0.8433460645160891 +0,0.9992748339158471,7.251660841527271E-4 +0,0.9905866426235755,0.00941335737642442 +0,0.9792800308366179,0.02071996916338219 +1,0.4918680923046847,0.5081319076953152 +0,0.9998256973733365,1.74302626663536E-4 +0,0.9999913062513829,8.693748617139829E-6 +0,0.9545731968514566,0.045426803148543415 +0,0.999997845331987,2.154668013094348E-6 +0,0.8391541919937022,0.16084580800629766 +0,0.8746973991560997,0.12530260084390032 +0,0.9999999551699945,4.483000544147144E-8 +1,0.17051441793616157,0.8294855820638384 +0,0.5642874320822721,0.4357125679177279 +0,0.9755602319128732,0.024439768087126855 +0,0.9999988472729445,1.152727055458777E-6 +0,0.9999962579248401,3.7420751598626187E-6 +0,0.9848397270666601,0.015160272933339861 +0,0.9537045425413468,0.046295457458653044 +0,0.737910150755062,0.26208984924493794 +0,0.9999999870393141,1.296068587726306E-8 +0,0.7757595175170322,0.2242404824829678 +0,0.9333799238208741,0.06662007617912585 +0,0.8899643965642549,0.11003560343574507 +0,0.9612007026460933,0.03879929735390688 +1,0.32879763791475863,0.6712023620852414 +0,0.9994250179103712,5.749820896287816E-4 +0,0.9894307250645479,0.010569274935452252 +0,0.9917392132844833,0.008260786715516612 +0,0.9661871546993084,0.03381284530069171 +0,0.8898874832282495,0.11011251677175049 +0,0.9999994817025584,5.182974416215034E-7 +0,0.9999998019254398,1.9807456006908874E-7 +0,0.9795246476749196,0.020475352325080323 +0,0.6595971304210576,0.34040286957894234 +0,0.8394872136415584,0.1605127863584416 +1,0.34548743126675585,0.6545125687332441 +0,0.8511577149823804,0.14884228501761967 +0,0.8489764136177124,0.15102358638228763 +0,0.9990937392182688,9.062607817312107E-4 +0,0.7568492516785306,0.24315074832146943 +0,0.823358052895736,0.17664194710426392 +1,0.03556458667281979,0.9644354133271802 +0,0.9999999996938185,3.0618155251038635E-10 +0,0.9924609039222047,0.007539096077795361 +0,0.7865738938139193,0.21342610618608066 +0,0.9649833954088368,0.035016604591163215 +0,0.9900998371734735,0.009900162826526466 +0,0.9777578734928839,0.02224212650711614 +1,0.4349714969172107,0.5650285030827892 +1,0.07424574977269882,0.9257542502273013 +0,0.9783629252653101,0.021637074734689874 +0,0.9943783181060534,0.005621681893946756 +0,0.8306748228572567,0.16932517714274328 +1,0.019137882284750895,0.9808621177152491 +0,0.9906644969493275,0.009335503050672525 +0,0.9769712085183354,0.02302879148166448 +1,0.17131300703761884,0.8286869929623811 +1,0.10874462676189436,0.8912553732381057 +0,0.8186786050707897,0.18132139492921034 +0,0.8335720161733298,0.1664279838266702 +0,0.9172412137905344,0.08275878620946553 +0,0.9932836578740507,0.006716342125949174 +0,0.9666551952528651,0.03334480474713489 +0,0.9999993144459794,6.85554020500622E-7 +0,0.7974284845449584,0.20257151545504157 +0,0.9909274474063995,0.00907255259360056 +1,0.24366669586094386,0.7563333041390561 +0,0.9253028697283389,0.07469713027166115 +1,0.1393255558236531,0.8606744441763469 +0,0.9555015953379021,0.04449840466209785 +0,0.9997169912774981,2.8300872250193953E-4 +0,0.8577391781797808,0.1422608218202192 +1,0.49277967602205575,0.5072203239779443 +0,0.997464651500496,0.0025353484995040004 +0,0.9999926858212147,7.3141787854032874E-6 +0,0.9999962855437479,3.7144562519881825E-6 +0,0.680145434791685,0.31985456520831496 +1,2.4794236443413755E-26,1.0 +0,0.9437441484740814,0.056255851525918506 +0,0.9845971207743274,0.01540287922567261 +0,0.9642279694635577,0.03577203053644227 +0,0.519962824808827,0.48003717519117295 +0,0.9989119649276572,0.0010880350723427605 +0,0.9999967891397236,3.2108602764164843E-6 +0,0.6548132091812847,0.34518679081871523 +0,0.7336037955170016,0.26639620448299844 +0,0.9999995863844987,4.1361550121286124E-7 +0,0.9999988543383416,1.145661658353924E-6 +0,0.6455244516551976,0.35447554834480244 +0,0.8873478980616758,0.11265210193832428 +1,0.32733834429513387,0.6726616557048661 +0,0.9999925040949835,7.495905016579241E-6 +0,0.9999966207017897,3.3792982101035376E-6 +0,0.9999999997915561,2.0844401905790903E-10 +0,0.9927495282024598,0.007250471797540233 +0,0.551885106815825,0.448114893184175 +0,0.9825511660087578,0.01744883399124214 +0,0.8875514779819459,0.11244852201805403 +0,0.9828895161049641,0.017110483895035784 +0,0.5846246667116833,0.4153753332883167 +1,0.014401226586168126,0.985598773413832 +0,0.6662890420336524,0.33371095796634764 +0,0.8164540323706434,0.18354596762935657 +1,0.43110890252519757,0.5688910974748024 +0,0.849565107766917,0.15043489223308307 +0,0.9396496996874216,0.06035030031257825 +0,0.8700580839282682,0.12994191607173172 +0,0.6317679585393996,0.36823204146060046 +1,0.2691178637639241,0.7308821362360759 +1,0.31357019216125576,0.6864298078387442 +0,0.8437766261768158,0.15622337382318427 +0,0.7151258683024097,0.28487413169759035 +0,0.9999884761919456,1.1523808054350267E-5 +0,0.5980342285947216,0.40196577140527845 +1,0.07204824692518225,0.9279517530748177 +1,0.06953365027178814,0.9304663497282119 +0,0.9904432454992879,0.009556754500712064 +0,0.998402150259263,0.0015978497407370129 +0,0.9985099064844211,0.0014900935155788442 +0,0.9901471112219044,0.009852888778095524 +0,0.5876016121183057,0.4123983878816943 +0,0.9999983473316676,1.652668332523833E-6 +0,0.9999994071023424,5.928976576603343E-7 +0,0.9910561841656167,0.008943815834383265 +0,0.9707806885613335,0.02921931143866644 +1,0.40018151332461,0.5998184866753901 +0,0.5467842654226088,0.4532157345773911 +0,0.999999991538565,8.461435129963304E-9 +1,0.3362720157445529,0.663727984255447 +0,0.9999904775568692,9.522443130723641E-6 +0,0.7657114893242021,0.23428851067579798 +1,0.4561339470733157,0.5438660529266843 +0,0.9999913671930155,8.632806984610613E-6 +0,0.7344019791586351,0.26559802084136486 +0,0.9566591276878214,0.043340872312178695 +0,0.8801299958324664,0.11987000416753361 +1,0.37530850471932553,0.6246914952806745 +1,0.17033444058267305,0.829665559417327 +0,0.608621513102843,0.39137848689715715 +1,0.20870754954792706,0.791292450452073 +0,0.9841595892737816,0.015840410726218484 +0,0.998707395229343,0.0012926047706568909 +1,0.20017305371675687,0.7998269462832431 +1,0.06652263070773079,0.9334773692922693 +0,0.9993931696775304,6.068303224695378E-4 +0,0.9771667820030643,0.022833217996935787 +0,0.9999999954240748,4.5759251412544155E-9 +0,0.6971319155777655,0.3028680844222345 +0,0.99999772547526,2.274524740055619E-6 +0,0.802481011463779,0.197518988536221 +0,0.999999960391206,3.960879397278356E-8 +0,0.9999999985908226,1.4091775274804695E-9 +0,0.9989900068772948,0.0010099931227051874 +0,0.9997880056410481,2.1199435895192904E-4 +0,0.7030947211205641,0.29690527887943585 +0,0.6114961174595707,0.38850388254042934 +1,0.1732063109434763,0.8267936890565236 +0,0.7092869945054047,0.2907130054945953 +0,0.9991441680864274,8.558319135725882E-4 +0,0.6884806055605441,0.31151939443945587 +0,0.9860098802352205,0.013990119764779525 +0,0.5764616561734452,0.4235383438265548 +0,0.9445428705982151,0.05545712940178496 +0,0.9999846407965284,1.535920347155264E-5 +0,0.9975488472990888,0.0024511527009112013 +0,0.9990862372884441,9.13762711555911E-4 +1,0.33688665792874667,0.6631133420712533 +1,0.11553487641822113,0.8844651235817789 +1,0.2041817649734277,0.7958182350265722 +0,0.9835109556847562,0.016489044315243725 +0,0.5398994471201776,0.46010055287982254 +0,0.8337992275448971,0.16620077245510279 +0,0.9999904472144427,9.55278555714542E-6 +0,0.7575322326512557,0.2424677673487444 +0,0.9795316668898272,0.020468333110172817 +1,0.2953021813767372,0.7046978186232628 +1,0.35239228682200036,0.6476077131779996 +0,0.9831581815346223,0.016841818465377672 +0,0.9899909974067217,0.010009002593278329 +0,0.8331590842723023,0.16684091572769758 +0,0.9993516591692145,6.48340830785477E-4 +0,0.9999999987552237,1.244776271689672E-9 +0,0.999987595524026,1.240447597386142E-5 +0,0.9987728908301263,0.0012271091698735578 +1,0.1857725503821948,0.8142274496178052 +0,0.9999984791076489,1.5208923510734494E-6 +0,0.6610958000903968,0.3389041999096033 +1,0.22779900030585173,0.7722009996941482 +0,0.9999999979080763,2.0919238213187803E-9 +0,0.9928401162701215,0.0071598837298785115 +0,0.9773773586342538,0.022622641365746158 +1,0.1498959151031347,0.8501040848968653 +1,0.2320435189783662,0.7679564810216338 +0,0.9829201828217146,0.017079817178285522 +0,0.9949448132337453,0.0050551867662546515 +0,0.9983751644682084,0.001624835531791578 +0,0.9762661888971701,0.023733811102829974 +0,0.8731096407088875,0.1268903592911124 +0,0.9999998923586249,1.0764137505260899E-7 +0,0.5542733270380235,0.4457266729619766 +1,0.43624628349426875,0.5637537165057311 +0,0.998157387034813,0.0018426129651870065 +1,0.18332093049996273,0.8166790695000372 +0,0.99851172438305,0.0014882756169500608 +0,0.7111354997992977,0.28886450020070237 +0,0.6507254302542245,0.34927456974577553 +0,0.9941739230760717,0.005826076923928353 +0,0.9868855174733268,0.013114482526673321 +1,0.4452576538998708,0.5547423461001292 +0,0.9217752974348805,0.07822470256511944 +0,0.9666891876612272,0.03331081233877276 +0,0.9572561213032416,0.042743878696758476 +0,0.5510756810524842,0.44892431894751583 +1,0.31677705415667023,0.6832229458433298 +1,0.1533235398663042,0.8466764601336958 +0,0.9745466430193206,0.025453356980679426 +0,0.7301044076070818,0.2698955923929181 +0,0.9690012210673583,0.030998778932641628 +0,0.9077836430447617,0.09221635695523847 +0,0.9981589889900762,0.0018410110099237344 +1,7.757910234957195E-7,0.9999992242089765 +0,0.9756297377248822,0.024370262275117894 +0,0.9999870675006469,1.2932499353022525E-5 +0,0.9407734807447818,0.05922651925521808 +0,0.9999178086203211,8.219137967905241E-5 +0,0.9283520697574694,0.07164793024253051 +1,0.21390037367709594,0.7860996263229041 +0,0.9967599316843503,0.0032400683156497434 +0,0.5463038798479369,0.453696120152063 +0,0.9986281147551767,0.0013718852448232704 +0,0.9981070571502998,0.001892942849700101 +0,0.9719094898640271,0.028090510135972874 +0,0.9950140015435059,0.004985998456494092 +1,1.2409825350712082E-25,1.0 +0,0.9999572132450202,4.278675497975924E-5 +0,0.7163921035134061,0.28360789648659385 +0,0.9522376429365043,0.047762357063495874 +0,0.9829992852602215,0.017000714739778468 +0,0.5169733575273958,0.4830266424726042 +0,0.9999999970239717,2.976028240222933E-9 +0,0.9998176538902294,1.8234610977061312E-4 +1,0.10151813459202512,0.8984818654079749 +0,0.9855192652174967,0.014480734782503318 +0,0.9999884623105543,1.1537689445816039E-5 +0,0.9987106536087335,0.0012893463912666122 +0,0.9999973585309782,2.641469021822243E-6 +1,0.1877484933801146,0.8122515066198854 +0,0.9999698866013261,3.0113398673768126E-5 +1,0.15443049623648542,0.8455695037635146 +1,0.11479105917191051,0.8852089408280895 +0,0.6794761545965172,0.32052384540348283 +0,0.9044459085002685,0.09555409149973146 +1,0.2429827104464842,0.7570172895535158 +0,0.934465407172015,0.06553459282798496 +0,0.917469366239751,0.08253063376024902 +0,0.6486140504279007,0.3513859495720994 +1,0.40820135014306297,0.5917986498569371 +0,0.8638996045653826,0.13610039543461744 +0,0.8991643641423307,0.10083563585766943 +1,0.29213267482290795,0.7078673251770922 +0,0.5541387903893721,0.4458612096106279 +1,0.2590983625054076,0.7409016374945924 +1,0.11101120961280665,0.8889887903871933 +1,0.21088614563658015,0.7891138543634199 +0,0.9317465909436577,0.06825340905634228 +0,0.8000775204508079,0.19992247954919198 +1,0.20829222314325108,0.791707776856749 +0,0.9969051745036759,0.003094825496324123 +0,0.8077538988735489,0.19224610112645107 +1,0.263282307235779,0.7367176927642209 +0,0.9720275309673744,0.027972469032625555 +0,0.9828095491414854,0.017190450858514592 +0,0.9999995752049305,4.247950694601173E-7 +0,0.9999925711124018,7.428887598157368E-6 +0,0.9555382413541095,0.044461758645890546 +1,0.4318971624803386,0.5681028375196614 +0,0.926002675117145,0.07399732488285497 +0,0.9260291535481652,0.07397084645183484 +0,0.8340533681372417,0.1659466318627582 +0,0.9991678427103017,8.321572896983138E-4 +0,0.9715120203283136,0.028487979671686446 +0,0.8121391588851103,0.18786084111488957 +0,0.9962361063091609,0.0037638936908390387 +0,0.902519583455161,0.09748041654483894 +1,0.41953647872364863,0.5804635212763514 +0,0.9470598401753704,0.05294015982462957 +0,0.9999970468210728,2.9531789271524645E-6 +0,0.9999885623681377,1.143763186233524E-5 +0,0.7764877509855428,0.22351224901445715 +0,0.817502519479922,0.18249748052007797 +1,0.03161918560110813,0.9683808143988918 +1,0.3280458090539783,0.6719541909460217 +0,0.9997520733206021,2.4792667939775446E-4 +1,0.08625793256354246,0.9137420674364575 +0,0.9964022826349331,0.003597717365066809 +1,0.33286453179343656,0.6671354682065634 +1,0.1461793310091522,0.8538206689908477 +1,0.23005094871062498,0.769949051289375 +0,0.9948540634738195,0.005145936526180431 +0,0.7484106428097834,0.2515893571902165 +0,0.9999983130133712,1.6869866289381456E-6 +0,0.9999999480727053,5.192729473390347E-8 +1,0.3161750170450739,0.6838249829549261 +0,0.9995363838691186,4.6361613088151393E-4 +0,0.9999964346129671,3.5653870330651653E-6 +0,0.8390304842411308,0.16096951575886917 +1,0.04470198968438424,0.9552980103156157 +0,0.811693712600302,0.18830628739969793 +0,0.905916956722119,0.09408304327788104 +0,0.9973549061149671,0.0026450938850329907 +0,0.9985764186215578,0.0014235813784422196 +0,0.9331435727549111,0.06685642724508895 +0,0.9993374975779049,6.625024220951493E-4 +0,0.8344280311277235,0.16557196887227657 +0,0.9660711258859616,0.03392887411403842 +1,0.4635438666324936,0.5364561333675065 +0,0.83563821750229,0.16436178249771008 +1,0.1463135689623921,0.853686431037608 +0,0.9864011068210238,0.013598893178976085 +0,0.9641631725764497,0.03583682742355036 +0,0.6526068220959714,0.3473931779040287 +0,0.999909717820119,9.02821798811172E-5 +0,0.9999633190393705,3.6680960629458034E-5 +0,0.9677415874283395,0.03225841257166039 +0,0.9996106437326054,3.893562673945666E-4 +1,0.11257825082872486,0.8874217491712753 +1,0.1493963419477718,0.8506036580522282 +0,0.8059714945443034,0.1940285054556965 +0,0.9999994640432212,5.35956778738215E-7 +1,0.3920693877485781,0.6079306122514219 +0,0.6753707328968609,0.3246292671031391 +0,0.9999956564028862,4.343597113824714E-6 +0,0.9712926071857461,0.028707392814253888 +0,0.5054664158242705,0.49453358417572935 +1,0.20492772990314548,0.7950722700968545 +0,0.9474137483425653,0.052586251657434684 +0,0.9997917995220781,2.0820047792203313E-4 +1,0.46676686934282785,0.5332331306571721 +0,0.977399799701324,0.022600200298676036 +0,0.9794894550170812,0.020510544982918714 +0,0.6065767618043262,0.3934232381956738 +1,0.27829796905452764,0.7217020309454724 +0,0.998519768198112,0.0014802318018880265 +0,0.9867707649591398,0.013229235040860099 +0,0.9453978830518481,0.05460211694815188 +0,0.9999732983735672,2.6701626432768052E-5 +0,0.9934859641525857,0.006514035847414361 +0,0.9999960536249421,3.946375057933037E-6 +0,0.5141161134901899,0.48588388650980996 +0,0.9999918819312902,8.11806870986985E-6 +1,0.06410200425336944,0.9358979957466305 +0,0.9996656985008168,3.343014991832245E-4 +0,0.9622288512503898,0.03777114874961008 +0,0.5060285973048059,0.49397140269519413 +0,0.59747329715753,0.40252670284247 +1,0.2137432755265365,0.7862567244734634 +0,0.9110228935230692,0.08897710647693079 +0,0.9027346326112432,0.0972653673887567 +1,0.15622132006101047,0.8437786799389895 +0,0.9999993907772694,6.092227305421776E-7 +0,0.8471856629232312,0.15281433707676875 +0,0.9659727555356347,0.03402724446436528 +0,0.655802498300339,0.344197501699661 +0,0.9879966747994527,0.012003325200547343 +1,0.1700208997219894,0.8299791002780106 +0,0.5427455899276411,0.4572544100723589 +0,0.7071703317745839,0.2928296682254161 +1,0.2445152922169732,0.7554847077830268 +0,0.9974727464052834,0.0025272535947165023 +0,0.9102805019510789,0.08971949804892111 +0,0.9606609353153981,0.039339064684601875 +0,0.901164897974422,0.09883510202557791 +0,0.9909174202444939,0.009082579755506226 +0,0.6790510404006137,0.3209489595993863 +0,0.9803096553146996,0.019690344685300332 +0,0.744018988776061,0.25598101122393907 +0,0.7079830800294757,0.29201691997052426 +0,0.9717526374362493,0.028247362563750635 +1,0.19065248448607267,0.8093475155139273 +0,0.942409160136182,0.057590839863818 +0,0.926341314495181,0.07365868550481904 +0,0.6162924289988679,0.38370757100113206 +0,0.8832977285864243,0.11670227141357571 +1,0.4886185112670557,0.5113814887329443 +0,0.9875789758913505,0.012421024108649443 +0,0.9701537919996103,0.029846208000389753 +0,0.9732019365836599,0.026798063416340105 +1,0.3828730650389367,0.6171269349610633 +0,0.9271495663727229,0.07285043362727707 +1,0.17838849940290202,0.8216115005970981 +0,0.9999994639025002,5.360974999516127E-7 +0,0.9493519586807856,0.05064804131921435 +1,0.2724777774143862,0.7275222225856138 +1,0.12526645814412474,0.8747335418558752 +0,0.999991275682706,8.724317294044725E-6 +0,0.986266605195808,0.01373339480419209 +0,0.6041866308933206,0.3958133691066794 +0,0.9765674227409794,0.02343257725902072 +1,0.21111957967555853,0.7888804203244414 +0,0.5228516989650956,0.47714830103490435 +0,0.9849102354425895,0.015089764557410441 +0,0.9019381336865738,0.09806186631342609 +0,0.9859386220432864,0.01406137795671358 +0,0.9620156990935068,0.037984300906493254 +0,0.9670777859432674,0.03292221405673244 +0,0.649118802240426,0.350881197759574 +0,0.7575932279759481,0.24240677202405192 +0,0.9621819895554183,0.037818010444581614 +0,1.0,5.2642834837465026E-17 +0,0.9736027291800632,0.026397270819936765 +1,0.3004995752917679,0.6995004247082321 +0,0.5852446208093642,0.4147553791906358 +1,0.4652713380634063,0.5347286619365937 +1,0.45890435269127644,0.5410956473087236 +0,0.9959632940705351,0.004036705929464916 +1,0.07406419614430718,0.9259358038556929 +0,0.9996951869764243,3.0481302357565876E-4 +0,0.9999991775274552,8.224725448705413E-7 +1,0.14808119023875946,0.8519188097612405 +0,0.6289266443513765,0.3710733556486235 +0,0.999999854741304,1.4525869601968925E-7 +1,0.36589168728379884,0.6341083127162013 +0,0.5942729247572855,0.40572707524271445 +0,0.9999993254693067,6.745306932748184E-7 +1,0.39394885030852905,0.6060511496914709 +0,0.9999999981864802,1.81351974836048E-9 +0,0.9103609663665129,0.08963903363348721 +0,0.9407617940097991,0.0592382059902009 +1,0.3954576387987433,0.6045423612012567 +0,0.5991533467435618,0.4008466532564383 +0,0.9611714070577082,0.0388285929422918 +0,0.9961195355532096,0.0038804644467903262 +0,0.9977992376483648,0.0022007623516352905 +0,0.9247005424467027,0.07529945755329714 +1,0.1799206910142585,0.8200793089857414 +1,0.17714829585583808,0.822851704144162 +1,0.12526216589699948,0.8747378341030004 +0,0.996411017153578,0.003588982846422049 +0,0.8576906606333844,0.14230933936661558 +1,0.21981683244356975,0.7801831675564302 +0,0.9999143081351061,8.569186489393839E-5 +0,0.9080928227255654,0.0919071772744347 +0,0.7331455950520271,0.26685440494797286 +0,0.9999932654507461,6.734549253926944E-6 +1,0.4877778682335023,0.5122221317664977 +0,0.9952477732454317,0.004752226754568385 +0,0.9955840106346985,0.0044159893653014605 +0,0.6425191591395613,0.3574808408604387 +0,0.7969201893640387,0.20307981063596123 +0,0.9760611751982476,0.023938824801752356 +0,0.9646161920288205,0.03538380797117951 +0,0.9840264283670788,0.015973571632921235 +0,0.9321750778338175,0.06782492216618244 +0,0.9992209445426404,7.79055457359518E-4 +0,0.9589484094290073,0.04105159057099277 +0,0.9415842252507425,0.05841577474925752 +0,0.7339304160380308,0.2660695839619691 +0,0.9811881052206574,0.018811894779342715 +1,0.25262552892101897,0.747374471078981 +0,0.7856484389058533,0.2143515610941467 +1,2.690516851034358E-13,0.9999999999997309 +1,0.02420802617424722,0.9757919738257529 +0,0.9992939185907111,7.060814092888572E-4 +0,0.5386726980463855,0.4613273019536144 +0,0.9990231412076317,9.7685879236832E-4 +0,0.9574158019035763,0.04258419809642363 +0,0.9229793621394277,0.07702063786057238 +0,0.9859276110711409,0.014072388928859078 +0,0.5486207783785604,0.45137922162143956 +0,0.9555291830406617,0.04447081695933835 +0,0.997917321628066,0.002082678371933862 +1,0.4763137397080598,0.5236862602919402 +0,0.9457396934591513,0.05426030654084859 +0,0.9999995019733989,4.980266010311022E-7 +0,0.9978676022252909,0.002132397774709023 +0,0.8105467364777139,0.1894532635222861 +1,0.3080721709013805,0.6919278290986195 +1,4.756745454477319E-6,0.9999952432545456 +0,0.9999158046663922,8.419533360776137E-5 +1,0.3351266185386859,0.664873381461314 +0,0.9987206538691368,0.0012793461308632044 +0,0.9987784068689148,0.0012215931310851503 +0,0.999997235211759,2.764788240976352E-6 +0,0.9583489443364591,0.04165105566354085 +0,0.9999999906188403,9.381159756757081E-9 +1,0.18631838812600549,0.8136816118739946 +0,0.9349243811434159,0.0650756188565842 +0,0.7889705912036423,0.21102940879635773 +0,0.8140386519737771,0.18596134802622294 +0,0.9762652965398143,0.023734703460185757 +1,0.07911512614711683,0.9208848738528833 +0,0.9828017976468938,0.017198202353106134 +0,0.7988676491147617,0.20113235088523831 +0,0.9999988435376321,1.1564623679003152E-6 +0,0.9927544333515235,0.007245566648476551 +0,0.9957279484834587,0.004272051516541199 +1,0.24753830849800693,0.752461691501993 +0,0.9934775055357153,0.006522494464284645 +1,0.320647293026139,0.6793527069738611 +0,0.7575936800433106,0.24240631995668932 +1,0.47091830329493695,0.529081696705063 +1,0.2164656939807284,0.7835343060192717 +0,0.9072389739363366,0.09276102606366335 +0,0.9999998126677572,1.873322427598796E-7 +0,0.8537878665061367,0.1462121334938633 +0,0.999541228549037,4.5877145096284667E-4 +0,0.8818997147151417,0.11810028528485836 +0,0.9122781478612816,0.08772185213871844 +0,0.9999967087805591,3.2912194408121214E-6 +1,0.4493296064397667,0.5506703935602333 +0,0.7756138646920518,0.22438613530794813 +0,0.974697127416629,0.025302872583370987 +0,0.8972134621837932,0.10278653781620685 +1,0.06178240866372343,0.9382175913362766 +0,0.9945868482983804,0.005413151701619762 +0,0.9769248932898844,0.023075106710115572 +0,0.6527026697864025,0.3472973302135976 +0,0.9439435838300784,0.05605641616992164 +0,0.9599204033668475,0.040079596633152435 +0,0.949466564744763,0.05053343525523697 +0,0.9908700192078694,0.00912998079213062 +0,0.8930662548283327,0.10693374517166743 +0,0.9795092345402301,0.020490765459769848 +0,0.7413193209300876,0.2586806790699123 +1,0.15857071065724537,0.8414292893427546 +1,0.23910496530007005,0.7608950346999299 +0,0.686011896172547,0.313988103827453 +0,0.9074288191616314,0.0925711808383686 +0,0.7006987917843943,0.29930120821560574 +0,0.8334297576990018,0.16657024230099815 +0,0.9999970701399118,2.929860088147861E-6 +0,0.973832841030277,0.026167158969723037 +0,0.9818649282022219,0.01813507179777807 +1,0.1660396410831865,0.8339603589168135 +0,0.9707213525568336,0.0292786474431665 +1,0.2911745739734589,0.7088254260265411 +0,0.9031747554496377,0.09682524455036226 +1,0.15734523015920743,0.8426547698407926 +0,0.8262482902162754,0.17375170978372445 +0,0.9946280965211333,0.005371903478866714 +0,0.7660963316009527,0.23390366839904725 +0,0.9691819039646998,0.03081809603530022 +0,0.700616681943555,0.299383318056445 +0,0.9818891532123543,0.018110846787645664 +0,0.9668172058745578,0.033182794125442255 +0,0.981928994449581,0.018071005550419003 +0,0.8626086371282117,0.13739136287178833 +0,0.998874248477359,0.001125751522641003 +0,0.9005837661496136,0.0994162338503865 +0,0.9959807090354372,0.0040192909645627595 +0,0.9944136265275754,0.005586373472424586 +0,0.9978117322670713,0.002188267732928824 +0,0.7264317564579481,0.27356824354205195 +1,0.4751945404617556,0.5248054595382444 +0,0.9965058852235078,0.003494114776492185 +0,0.9940000256845456,0.0059999743154543796 +0,0.9845825397008499,0.015417460299150244 +0,0.9935742182722098,0.0064257817277902675 +0,0.8880840715825523,0.11191592841744766 +0,0.8523709295228208,0.1476290704771793 +0,0.7762414691548292,0.2237585308451708 +0,0.9999717743242696,2.822567573027538E-5 +1,0.1617046995495668,0.8382953004504331 +0,0.929920377301169,0.07007962269883089 +0,0.9810746447067316,0.018925355293268543 +1,0.4541388798100367,0.5458611201899634 +0,0.9768042232734088,0.02319577672659133 +0,0.9834969975275991,0.016503002472400927 +0,0.8304971281255905,0.1695028718744095 +0,0.9999999921282626,7.871737387698127E-9 +1,0.18827496678397768,0.8117250332160224 +0,0.9896744428202819,0.010325557179718005 +0,0.6987196218452322,0.3012803781547678 +0,0.7950164159480136,0.2049835840519863 +0,0.9745660159797932,0.02543398402020678 +0,0.9999999925152981,7.484701925015578E-9 +0,0.8294750629081311,0.17052493709186892 +1,0.1790619609748494,0.8209380390251506 +1,0.21541042003281968,0.7845895799671803 +1,0.28753660510149054,0.7124633948985094 +0,0.9929888572190991,0.007011142780900789 +0,0.9999940103059297,5.989694070343443E-6 +0,0.9999935703991376,6.429600862380207E-6 +0,0.9748580996319829,0.02514190036801725 +1,0.2760327650343889,0.723967234965611 +0,0.7772175719441718,0.22278242805582807 +0,0.9999878490706738,1.2150929326077019E-5 +0,0.9940200131991506,0.005979986800849286 +0,0.999204080999877,7.959190001228788E-4 +0,0.9976659834621017,0.002334016537898478 +0,0.9853376104857291,0.014662389514270888 +0,0.9971888488643917,0.002811151135608245 +1,0.22579895302640499,0.774201046973595 +0,0.99904735876203,9.526412379700984E-4 +0,0.9999999999995506,4.49512081466664E-13 +0,0.9999999948424776,5.1575224712132E-9 +0,0.9990067063859136,9.93293614086473E-4 +0,0.5087241517298903,0.4912758482701098 +0,0.9990647560234183,9.352439765818171E-4 +0,0.9832511822111486,0.016748817788851456 +0,0.9609264747173419,0.03907352528265811 +0,0.7364263770820467,0.2635736229179533 +0,0.9133052575581253,0.08669474244187471 +0,0.9600466902312101,0.03995330976878981 +0,0.9419039339056798,0.05809606609432024 +0,0.828886992741098,0.17111300725890197 +0,0.7783248744747736,0.22167512552522653 +0,0.9729254834701284,0.02707451652987162 +0,0.9994728247054163,5.27175294583725E-4 +0,0.7382788036145094,0.2617211963854906 +1,0.444763525559472,0.5552364744405279 +0,0.9999999393526161,6.064738394276785E-8 +0,0.9996003064448598,3.9969355514025387E-4 +0,0.9999995769710297,4.2302897035855743E-7 +0,0.9999943752980617,5.624701938377783E-6 +1,0.17924740828984212,0.8207525917101579 +0,0.5720543521108631,0.42794564788913697 +1,0.10204908504297017,0.8979509149570298 +0,0.9503376464482972,0.049662353551702766 +0,0.8010938396869507,0.19890616031304933 +1,0.2730341039129043,0.7269658960870956 +0,0.7293318735925397,0.2706681264074603 +0,0.9999998988911276,1.0110887241016077E-7 +0,0.9753541816346262,0.02464581836537377 +0,0.6951512050751892,0.30484879492481076 +0,0.6834715683976789,0.31652843160232114 +0,0.9802125004104358,0.019787499589564186 +0,0.999999796991979,2.0300802091575594E-7 +0,0.658591679599181,0.34140832040081903 +0,0.9991066584632214,8.933415367786331E-4 +0,0.6719084293245099,0.32809157067549016 +0,0.9114734899223564,0.08852651007764366 +0,0.8914195369874951,0.1085804630125049 +0,0.9336134386369322,0.06638656136306766 +0,0.9987793760991694,0.00122062390083044 +0,0.9689118814558264,0.031088118544173458 +1,0.07134005777293352,0.9286599422270665 +1,0.3746843063580012,0.6253156936419988 +0,0.9983089088352072,0.0016910911647929118 +0,0.9999994647250309,5.352749692213296E-7 +0,0.9999936076395816,6.392360418496439E-6 +0,0.8086599692738077,0.19134003072619235 +1,0.21957060563681263,0.7804293943631874 +0,0.9905577017735003,0.009442298226499736 +0,0.715779632070234,0.284220367929766 +0,0.9992656506743411,7.343493256589107E-4 +1,0.4629906893885434,0.5370093106114566 +1,0.4119885832375374,0.5880114167624626 +0,0.8681468779306941,0.1318531220693058 +0,0.8458819300585957,0.15411806994140428 +1,0.1648822193065015,0.8351177806934985 +0,0.9982104444090659,0.001789555590934036 +0,0.9634002843076215,0.0365997156923784 +1,0.11296030060632398,0.887039699393676 +0,0.5845095619314157,0.4154904380685844 +0,0.9310291063312551,0.06897089366874483 +0,0.7331508932918545,0.26684910670814554 +0,0.7487702312605012,0.25122976873949876 +0,0.5775120015212533,0.42248799847874674 +1,0.35630333230471184,0.6436966676952881 +1,0.4053607731370044,0.5946392268629956 +0,0.9999042154274391,9.578457256077576E-5 +0,0.7411151165035009,0.2588848834964991 +0,0.705763686630876,0.29423631336912404 +0,0.9743558846059434,0.025644115394056675 +1,0.035969062501209056,0.964030937498791 +0,0.5803314581562133,0.41966854184378666 +0,0.9999999421859955,5.7814004396149136E-8 +0,0.523318377853598,0.47668162214640203 +0,0.949021669162675,0.05097833083732484 +0,0.999721130772581,2.7886922741908064E-4 +0,0.9753616519638865,0.024638348036113672 +1,0.3911550792479023,0.6088449207520976 +0,0.9999838565462045,1.6143453795557817E-5 +1,0.17319598664525504,0.826804013354745 +0,0.9346363505901913,0.06536364940980872 +0,0.9663204366284757,0.03367956337152425 +0,0.9780264984941894,0.02197350150581064 +0,0.9903617560248391,0.009638243975160856 +0,0.9492085543582505,0.050791445641749665 +0,0.9999988411192468,1.1588807533246415E-6 +0,0.999998526638671,1.473361329137447E-6 +1,0.41537326998057716,0.5846267300194229 +0,0.7820944558876857,0.21790554411231441 +0,0.7984135187465338,0.2015864812534662 +0,0.7371115052202387,0.2628884947797614 +1,0.48329334519999156,0.5167066548000084 +0,0.8566338746811523,0.14336612531884776 +0,0.5073021560435611,0.49269784395643884 +1,0.15993308935733436,0.8400669106426657 +0,0.9324610100334842,0.06753898996651564 +0,0.9522300624794855,0.04776993752051457 +1,0.06607735416061152,0.9339226458393886 +0,0.999999999988201,1.1799106156586384E-11 +0,0.9922032045016952,0.007796795498304793 +0,0.7870894805263883,0.2129105194736118 +0,0.9959698911777629,0.004030108822237211 +0,0.9762517241466923,0.023748275853307882 +0,0.9340276121847282,0.06597238781527194 +0,0.8290835494076132,0.1709164505923868 +0,0.8533944538518128,0.14660554614818716 +0,0.6486594167672314,0.3513405832327687 +0,0.9999824993054613,1.750069453868999E-5 +0,0.5415847581179694,0.4584152418820306 +0,0.9999999999792337,2.076617017403097E-11 +0,0.9939338943470796,0.006066105652920518 +0,0.9999999412606367,5.873936321104668E-8 +1,0.15965786497245837,0.8403421350275417 +1,0.21746257518835618,0.7825374248116438 +0,0.9985922118412619,0.0014077881587380593 +0,0.9999984244027367,1.5755972632299507E-6 +0,0.9761891465750644,0.023810853424935604 +0,0.9978302738983579,0.0021697261016421117 +0,0.9981240456335974,0.0018759543664027536 +0,0.9385289983584078,0.06147100164159216 +0,0.948608753445412,0.05139124655458798 +0,0.9857157666143156,0.014284233385684299 +0,0.8079650345499939,0.19203496545000612 +1,0.43374336135332303,0.566256638646677 +0,0.8179632335786362,0.1820367664213638 +0,0.73654407862062,0.26345592137938006 +0,0.9673832511154663,0.03261674888453368 +0,0.9999222440136066,7.775598639334346E-5 +0,0.7763726100478607,0.22362738995213916 +0,0.9999713389325896,2.8661067410492595E-5 +0,0.9941069559808816,0.005893044019118341 +0,0.9868272389793243,0.0131727610206756 +1,0.30179899653087316,0.6982010034691268 +0,0.7629078456904093,0.23709215430959082 +0,0.7505523713787509,0.24944762862124908 +0,0.9000697708352714,0.09993022916472862 +0,0.9905655648934965,0.009434435106503524 +0,0.9900830341565158,0.009916965843484199 +0,0.9996929429244354,3.070570755645211E-4 +0,0.9999976023906811,2.3976093187487816E-6 +0,0.9996819103932565,3.180896067434525E-4 +0,0.5106889782143959,0.4893110217856042 +0,0.938311068056261,0.06168893194373901 +0,0.9983097764292195,0.0016902235707806138 +0,0.9878422623499624,0.01215773765003769 +0,0.7323602872110018,0.26763971278899823 +0,0.9996210328170309,3.789671829690673E-4 +1,0.2511496620090413,0.7488503379909587 +0,0.8993374945701607,0.10066250542983947 +0,0.7566954465260277,0.2433045534739723 +0,0.560796475161245,0.439203524838755 +0,0.8491293745597428,0.15087062544025714 +1,0.044139050709036454,0.9558609492909637 +0,0.9920333772264841,0.007966622773515937 +1,0.23289974767074392,0.7671002523292562 +0,0.9999998651084878,1.34891512119616E-7 +0,0.9999986653065729,1.3346934270846039E-6 +0,0.8897385190428554,0.11026148095714466 +0,0.8851361210085293,0.11486387899147063 +0,0.8230417503788626,0.17695824962113738 +0,0.9761668754523724,0.023833124547627683 +0,0.9999996931925563,3.0680744375564875E-7 +0,0.9238652649963853,0.07613473500361453 +0,0.9999876206536886,1.2379346311306944E-5 +0,0.9871449186603093,0.012855081339690681 +0,0.5975464102482336,0.40245358975176637 +0,0.9697416532728408,0.030258346727159203 +0,0.9428100173044965,0.05718998269550348 +0,0.9832970970899951,0.01670290291000486 +0,0.999993675024943,6.324975056972125E-6 +0,0.7501200797566151,0.24987992024338485 +0,0.9999960334569437,3.966543056394799E-6 +1,0.1711738670660563,0.8288261329339437 +0,0.9888197529961297,0.011180247003870275 +1,0.02921382465206163,0.9707861753479383 +0,0.9989595539503047,0.0010404460496952345 +0,0.9871378983799861,0.012862101620013817 +1,0.33102026984044886,0.6689797301595513 +0,0.9611708156215139,0.03882918437848613 +1,0.12012003187176522,0.8798799681282348 +0,0.5914639177494869,0.408536082250513 +0,0.8568151498695538,0.1431848501304463 +0,0.8147779701259612,0.18522202987403882 +0,0.7041879905905618,0.2958120094094382 +0,0.8572766927529961,0.1427233072470039 +0,0.9775073337846881,0.022492666215311923 +0,0.8976724516159059,0.10232754838409405 +1,0.4393758923812185,0.5606241076187815 +0,0.9965786736921979,0.0034213263078021476 +0,0.9228991947010915,0.07710080529890863 +0,0.9920667609100124,0.00793323908998757 +0,0.9999194919952195,8.050800478053305E-5 +0,0.9071946876709739,0.09280531232902615 +0,0.9357855085985373,0.0642144914014627 +0,0.9814726759223371,0.018527324077662752 +0,0.9814511392391364,0.018548860760863504 +0,0.980988437357877,0.019011562642123142 +0,0.9707775777532948,0.029222422246705373 +0,0.8916004266056533,0.10839957339434662 +0,0.5482531086220914,0.4517468913779086 +0,0.9994111968423712,5.888031576287705E-4 +0,0.9694422349196232,0.03055776508037666 +0,0.9280727470969403,0.0719272529030598 +1,0.17378990362821356,0.8262100963717866 +0,0.7015505138303564,0.29844948616964356 +0,0.6156642733985407,0.3843357266014593 +1,0.05721859667074231,0.9427814033292576 +0,0.8476733870140903,0.15232661298590966 +1,0.28459565281958316,0.7154043471804169 +0,0.9999981398285384,1.860171461592295E-6 +0,0.605150940181842,0.3948490598181579 +0,0.999999298624131,7.013758689756186E-7 +0,0.9629603196722459,0.03703968032775401 +0,0.7800487675657265,0.21995123243427345 +0,0.9228831587479134,0.07711684125208665 +0,0.9999809073538198,1.909264618015723E-5 +0,0.6796330413169591,0.3203669586830408 +0,0.9492384190414422,0.05076158095855784 +0,0.891341416722675,0.10865858327732511 +1,0.03620525596911845,0.9637947440308815 +0,0.7381955795097928,0.26180442049020725 +0,0.9972170384612452,0.002782961538754844 +0,0.9928016307195411,0.007198369280458941 +0,0.9999893458056753,1.0654194324724162E-5 +0,0.9470745233541378,0.05292547664586225 +0,0.9829084315838863,0.01709156841611381 +0,0.7671623546316337,0.2328376453683663 +0,0.7896641778003285,0.21033582219967145 +1,0.25778280529101044,0.7422171947089896 +0,0.9684932869262898,0.031506713073710314 +1,0.48716059787558647,0.5128394021244135 +0,0.6578294301034906,0.3421705698965094 +0,0.9000834410393236,0.0999165589606764 +0,0.9999991993630906,8.006369095598411E-7 +0,0.7137877698248561,0.2862122301751438 +0,0.9639616270676657,0.03603837293233421 +0,0.9885417359853163,0.011458264014683877 +0,0.9209858899252926,0.07901411007470746 +1,0.42746358811123797,0.5725364118887619 +0,0.9245514316178014,0.07544856838219849 +0,0.9772680598574913,0.022731940142508636 +0,0.9737085097857604,0.026291490214239537 +0,0.8309403153253954,0.16905968467460458 +0,0.9535399300242132,0.04646006997578675 +0,0.9716119012913963,0.02838809870860365 +1,0.4027404679338533,0.5972595320661468 +0,0.9798479057288267,0.020152094271173124 +0,0.959368585035646,0.040631414964354046 +0,0.6638944357154327,0.3361055642845674 +0,0.9603501492825383,0.03964985071746186 +0,0.983105735410534,0.016894264589465937 +0,0.9999999999977152,2.2848294507414173E-12 +1,0.3905292701703336,0.6094707298296663 +0,0.9999925868124216,7.413187578282513E-6 +0,0.9274749410115085,0.07252505898849151 +0,0.908635056147724,0.09136494385227596 +1,0.12475901303280938,0.8752409869671907 +0,0.7889230925549573,0.21107690744504268 +1,0.3762762004735857,0.6237237995264143 +1,0.48427712452614774,0.5157228754738522 +0,0.6062035214435738,0.3937964785564261 +0,0.7502643757379143,0.24973562426208581 +0,0.9930648664678733,0.006935133532126773 +0,0.6956663075528935,0.30433369244710645 +0,0.9999994107339303,5.892660696616293E-7 +0,0.9869925395305327,0.01300746046946724 +1,0.2757596606718711,0.724240339328129 +0,0.8749005618186529,0.12509943818134697 +0,0.7733147612601105,0.22668523873988947 +0,0.9891947180708893,0.010805281929110636 +0,0.997270373779902,0.0027296262200979427 +1,0.22054484656584936,0.7794551534341506 +1,0.3703999391374745,0.6296000608625255 +1,0.21949489296924826,0.7805051070307517 +1,0.15943960014471073,0.8405603998552893 +0,0.604113180020712,0.39588681997928793 +0,0.9843190601687655,0.015680939831234624 +0,0.771679041996269,0.228320958003731 +0,0.8721688982049284,0.1278311017950716 +0,0.9999996032498197,3.9675018036488096E-7 +1,0.4773754303173173,0.5226245696826827 +1,0.034017089918365766,0.9659829100816343 +0,0.9252765167010116,0.07472348329898842 +0,0.9721266512558454,0.02787334874415469 +0,0.9687687702113078,0.031231229788692267 +0,0.8393298327088239,0.16067016729117614 +0,0.9745188864577364,0.025481113542263657 +0,0.7990766366707484,0.20092336332925173 +1,0.13208231063665515,0.8679176893633449 +0,0.9999910464307215,8.953569278582823E-6 +0,0.965754902628402,0.03424509737159785 +0,0.9377952076635507,0.062204792336449245 +1,0.17857350152080062,0.8214264984791995 +0,0.8136453390274991,0.18635466097250084 +0,0.9999999326668118,6.733318820604074E-8 +0,0.999999999939591,6.040908278366081E-11 +0,0.9980647173381987,0.0019352826618012913 +0,0.5697265875961743,0.43027341240382566 +0,0.9869821852703993,0.013017814729600664 +1,0.21615259996407585,0.7838474000359241 +0,0.5959880994450253,0.4040119005549747 +1,0.35348977127365094,0.6465102287263491 +0,0.9999436098782697,5.639012173036089E-5 +0,0.9442131503185508,0.05578684968144926 +1,0.4808032715387884,0.5191967284612117 +0,0.8757511056617575,0.12424889433824246 +0,0.9999999999921292,7.870807873883044E-12 +1,0.2514189359854091,0.7485810640145909 +0,0.7841694479643136,0.21583055203568646 +0,0.7225645594146425,0.2774354405853576 +0,0.6692445637025299,0.33075543629747 +0,0.5769162895197046,0.4230837104802953 +0,0.9960833694615099,0.003916630538490097 +0,0.8011940861873766,0.1988059138126234 +0,0.9897896237650119,0.010210376234988189 +0,0.9992683264432001,7.316735567999442E-4 +0,0.6267082883714874,0.3732917116285126 +0,0.5254313038795266,0.4745686961204734 +0,0.6678250652617235,0.3321749347382766 +0,0.9999941776559195,5.8223440805000315E-6 +0,0.8442468563606773,0.15575314363932274 +0,0.9881847703656768,0.01181522963432324 +0,0.8599806845053294,0.14001931549467064 +1,0.3750888151446725,0.6249111848553274 +0,0.9999514992885425,4.8500711457560034E-5 +0,0.9999756116444287,2.4388355571233347E-5 +0,0.9999998387146227,1.61285377291478E-7 +0,0.7723527467798895,0.22764725322011045 +1,5.925686798635058E-6,0.9999940743132013 +0,0.9571431411045038,0.042856858895496244 +0,0.9125545943356242,0.08744540566437585 +0,0.9762542383156628,0.02374576168433716 +0,0.9886369805520697,0.011363019447930384 +1,0.046892978024336084,0.953107021975664 +0,0.820915677011485,0.17908432298851498 +0,0.851929072679888,0.14807092732011187 +0,0.9999877331467192,1.2266853280891095E-5 +0,0.8312256912349725,0.1687743087650274 +0,0.840682231415982,0.15931776858401794 +0,0.7448252976587416,0.25517470234125833 +0,0.6554106876141869,0.3445893123858131 +0,0.989939031423359,0.010060968576641002 +1,0.33720184327130326,0.6627981567286968 +1,0.4614777756881872,0.5385222243118127 +0,0.998071970082484,0.001928029917515961 +0,0.974874577126132,0.02512542287386794 +0,0.9532701042640671,0.04672989573593296 +0,0.8165527052774314,0.18344729472256857 +0,0.6777177294366771,0.32228227056332287 +0,0.9999999995466187,4.533813660509558E-10 +0,0.9595806118770123,0.040419388122987746 +0,0.9864500549590266,0.01354994504097338 +0,0.999972090026271,2.7909973729089066E-5 +0,0.9542817446958056,0.045718255304194384 +1,0.3372990349389042,0.6627009650610959 +0,0.9600457909087369,0.039954209091263224 +0,0.9999956651250115,4.334874988379196E-6 +0,0.9919069127712044,0.008093087228795594 +0,0.5142256181449648,0.4857743818550352 +0,0.5676391451559639,0.43236085484403614 +0,0.926359242235944,0.07364075776405599 +0,0.972754423436608,0.027245576563392045 +0,0.7963767439919022,0.20362325600809777 +0,0.9809450846468636,0.019054915353136567 +0,0.9002422197954181,0.09975778020458195 +1,0.2584400423610991,0.7415599576389008 +0,0.9999997251798536,2.7482014648366224E-7 +0,0.9999989939930443,1.0060069557462118E-6 +0,0.7668698345342055,0.23313016546579438 +0,0.6850302309083471,0.3149697690916528 +1,0.47652967967879,0.52347032032121 +0,0.999997159953184,2.840046816000347E-6 +1,0.2863966330072743,0.7136033669927258 +0,0.7050736982133444,0.29492630178665563 +0,0.7916747991182367,0.2083252008817633 +1,0.4886989714909174,0.5113010285090825 +0,0.9978645600080269,0.0021354399919730344 +0,0.7673815560573306,0.2326184439426694 +0,0.5268159605849442,0.47318403941505593 +0,0.9850685710046359,0.01493142899536411 +0,0.9478149725746814,0.052185027425318664 +0,0.7350745046520778,0.26492549534792215 +0,0.9710896778612559,0.028910322138744036 +0,0.994062357926692,0.005937642073307944 +0,0.7191348712184402,0.2808651287815598 +0,0.9052128848745028,0.09478711512549731 +0,0.657759083947604,0.342240916052396 +0,0.9992723663749801,7.276336250199129E-4 +1,0.09576028613567522,0.9042397138643248 +0,0.8638104879456645,0.13618951205433558 +0,0.9992907416821177,7.09258317882209E-4 +0,0.8125159047580841,0.18748409524191598 +0,0.9879292784075472,0.012070721592452932 +0,0.8633245161623782,0.13667548383762193 +0,1.0,1.1094514630740182E-18 +0,0.9943590201058277,0.005640979894172341 +0,0.9896965385456469,0.010303461454353253 +0,0.9935763483941644,0.006423651605835498 +0,0.9028072759058302,0.09719272409416985 +0,0.7140389451721781,0.28596105482782186 +0,0.9994557621845436,5.442378154565635E-4 +0,0.9999842881907183,1.5711809281728988E-5 +0,0.802429181100655,0.19757081889934502 +0,0.6927675938269832,0.30723240617301684 +1,0.33030930524005014,0.6696906947599499 +0,0.7225301072105227,0.2774698927894773 +0,0.9993543659726405,6.45634027359433E-4 +0,0.7294815710374881,0.2705184289625119 +0,0.9832345235439234,0.0167654764560766 +0,0.9994742254935471,5.25774506452852E-4 +0,0.9426025028481149,0.05739749715188503 +1,0.4060921643060584,0.5939078356939417 +0,0.5538430634961694,0.4461569365038306 +0,0.9931293178777344,0.0068706821222655964 +0,0.7195887206539463,0.28041127934605364 +0,0.6395425453100622,0.3604574546899379 +0,0.536676426070807,0.46332357392919293 +0,0.7075463897769662,0.29245361022303384 +0,0.9987339239063925,0.001266076093607488 +0,0.9997672615958397,2.3273840416015643E-4 +0,0.8428965190398143,0.15710348096018567 +0,0.7583724561800554,0.24162754381994458 +1,0.12431116804593079,0.8756888319540692 +0,0.9521660679546199,0.04783393204538024 +0,0.599117113977573,0.400882886022427 +1,0.162952961567641,0.8370470384323591 +0,0.9508371592781758,0.0491628407218242 +0,0.9996590864068466,3.409135931532787E-4 +0,0.6687988650484804,0.33120113495151965 +0,0.9999843695180938,1.563048190620211E-5 +0,0.7823644395547988,0.2176355604452012 +0,0.7908890400387716,0.20911095996122842 +0,0.98534227777143,0.014657722228569965 +0,0.9985472199816772,0.00145278001832286 +0,0.9322176182497702,0.06778238175022983 +0,0.9610764218546609,0.03892357814533905 +0,0.9316716652472921,0.06832833475270786 +0,0.9999969267630356,3.0732369643049817E-6 +0,0.9526351910897138,0.04736480891028604 +0,0.9669080956031839,0.03309190439681615 +0,0.7213095881924517,0.27869041180754833 +1,0.18631404465065735,0.8136859553493427 +0,0.8035856129577038,0.1964143870422962 +0,0.9126864790550406,0.0873135209449593 +0,0.7971061951393638,0.2028938048606362 +0,0.9656180708197866,0.03438192918021337 +0,0.9628286896461317,0.03717131035386836 +0,0.7947551138548147,0.20524488614518532 +0,0.6381528277167186,0.36184717228328145 +0,0.9718562450643836,0.028143754935616244 +1,0.46909009267419755,0.5309099073258025 +1,0.30352336665711765,0.6964766333428823 +1,0.49080175946878873,0.5091982405312113 +0,0.7212021910662184,0.2787978089337817 +0,0.9999972092549166,2.790745083371719E-6 +0,0.8100713960329045,0.1899286039670956 +0,0.954322850019619,0.04567714998038086 +0,0.9999969745291591,3.0254708407244632E-6 +0,0.999978314188981,2.1685811019024077E-5 +0,0.8812693920880549,0.118730607911945 +1,1.5651138580593666E-5,0.9999843488614194 +0,0.9839604403656693,0.016039559634330656 +0,0.7970841501899395,0.2029158498100605 +0,0.9272747521041537,0.07272524789584633 +0,0.662763316999422,0.33723668300057796 +0,0.7822829610070385,0.2177170389929614 +0,0.9970338866326762,0.002966113367323689 +1,0.28391500119943797,0.7160849988005621 +0,0.9999225422877906,7.745771220938319E-5 +0,0.9440559278085379,0.055944072191462225 +0,0.7776432818524452,0.22235671814755478 +1,0.24365654010769155,0.7563434598923084 +1,0.24441263337494734,0.7555873666250527 +0,0.6640701987156342,0.3359298012843657 +1,0.4409016767144366,0.5590983232855633 +1,0.06558892445933656,0.9344110755406634 +0,0.6049586535562157,0.39504134644378425 +0,0.9504891032889738,0.049510896711026105 +1,0.3204186413465278,0.6795813586534722 +1,0.06284043366014137,0.9371595663398586 +0,0.7719467784926917,0.2280532215073083 +1,0.40194824578551663,0.5980517542144833 +0,0.999999523443819,4.765561809751643E-7 +0,1.0,1.5535316678140475E-20 +0,0.6952189887574303,0.3047810112425698 +0,0.8920318905664265,0.10796810943357345 +0,0.9913757219304011,0.008624278069598843 +0,0.5126540634436679,0.4873459365563321 +0,0.9845614527570319,0.015438547242967964 +0,0.9988668885325861,0.0011331114674140354 +0,0.7265444527494437,0.2734555472505563 +0,0.9150289640519821,0.08497103594801797 +0,0.8025667733014484,0.1974332266985516 +0,0.9779936797515772,0.022006320248422716 +0,0.9999967322881781,3.2677118220145406E-6 +0,0.9999925054798321,7.494520168055019E-6 +1,0.23718975041358492,0.7628102495864152 +0,0.6763896307949865,0.32361036920501357 +0,0.999993511529867,6.488470132904125E-6 +0,0.9877646952207016,0.012235304779298293 +0,0.9881271738069087,0.011872826193091225 +1,0.33637764126035996,0.66362235873964 +0,0.9720028958066064,0.02799710419339368 +1,0.07691987997138927,0.9230801200286107 +0,0.970781569910812,0.02921843008918787 +0,0.9495331091200029,0.0504668908799971 +1,0.30247597246725383,0.6975240275327461 +0,0.6638969909443633,0.3361030090556367 +0,0.9083553611513026,0.09164463884869754 +0,0.9198510528734944,0.08014894712650564 +1,0.11578244423579483,0.8842175557642051 +0,0.9929302064823826,0.007069793517617342 +0,1.0,1.6739176808269497E-18 +0,0.9340789594852195,0.06592104051478061 +0,0.9999988952529245,1.1047470755383546E-6 +0,0.8704819971156424,0.12951800288435752 +0,0.6887865080109163,0.3112134919890837 +0,0.8536633359290179,0.14633666407098214 +0,0.9999958170704425,4.18292955750525E-6 +0,0.9999999999717,2.8300014678508236E-11 +0,0.9418008377780178,0.05819916222198218 +1,0.2730804605386991,0.726919539461301 +0,0.9999999976091429,2.3908570768242654E-9 +0,0.7382091943319385,0.26179080566806134 +0,0.6189238411274622,0.38107615887253776 +0,0.926968287821242,0.07303171217875791 +0,0.5625371551058889,0.4374628448941112 +0,0.9322540850144103,0.06774591498558977 +0,0.9805075030612362,0.019492496938763697 +0,0.9355682562663088,0.0644317437336912 +1,0.22640383224256827,0.7735961677574317 +0,0.6145032031923378,0.3854967968076623 +1,0.115509426563896,0.884490573436104 +0,0.848937683878754,0.15106231612124604 +0,0.7219037577583107,0.2780962422416892 +0,0.650502286608531,0.3494977133914689 +0,0.9504374253014652,0.049562574698534693 +1,0.23430876488673805,0.765691235113262 +0,0.5435681908270635,0.45643180917293646 +0,0.6700556353332732,0.3299443646667269 +0,0.6981468409631578,0.3018531590368421 +0,0.9999999971594113,2.840588575032493E-9 +0,0.8583113660716841,0.141688633928316 +0,0.9845208543472026,0.015479145652797439 +0,0.9999040847293652,9.591527063473122E-5 +0,0.6627982138070165,0.33720178619298347 +0,0.9999999999596978,4.030224936351957E-11 +0,0.8596081148850556,0.14039188511494452 +0,0.8345163929410108,0.16548360705898915 +0,0.984550702148694,0.015449297851306049 +1,0.12451766556464373,0.8754823344353562 +1,0.21155242927975312,0.7884475707202468 +0,0.9572847862766471,0.04271521372335276 +1,0.005435303248298406,0.9945646967517016 +0,0.9999994899181281,5.100818720134988E-7 +0,0.9999935867957969,6.41320420320501E-6 +0,0.7965515020413388,0.2034484979586612 +0,0.9976578606773004,0.0023421393226996058 +1,0.2803763416697538,0.7196236583302462 +0,0.9978041241930931,0.002195875806906833 +0,0.9999993477174762,6.522825238172325E-7 +0,0.9992733448300872,7.266551699126765E-4 +0,0.815965819457444,0.18403418054255605 +0,0.9999946774132592,5.322586740807357E-6 +0,0.9965946966533753,0.0034053033466246467 +0,0.5578701524137536,0.44212984758624646 +0,0.8411779503687595,0.1588220496312405 +0,0.8549876264906467,0.14501237350935325 +0,0.9647304877259177,0.03526951227408223 +0,0.9984297601235543,0.0015702398764456606 +0,0.9384522451867743,0.06154775481322577 +0,0.6361335684201793,0.3638664315798207 +0,0.8998569179042039,0.10014308209579614 +0,0.9519390940365876,0.04806090596341242 +1,0.1189849317292807,0.8810150682707193 +1,0.46593982062472145,0.5340601793752786 +0,0.6868362385953007,0.3131637614046992 +0,0.5551285190083276,0.44487148099167234 +0,0.9724055637714808,0.027594436228519172 +0,0.9999756283815516,2.4371618448416574E-5 +1,0.20422189116029227,0.7957781088397077 +1,0.41078292080539447,0.5892170791946055 +1,0.1282936830436878,0.8717063169563123 +0,0.9728017064950252,0.02719829350497475 +0,0.9117534434076509,0.08824655659234903 +1,0.11578045874221785,0.8842195412577821 +0,0.9999913109067432,8.689093256799904E-6 +0,0.8453836493851682,0.15461635061483187 +1,0.2804708554468385,0.7195291445531615 +0,0.9889769884322122,0.011023011567787852 +0,0.946001621220544,0.05399837877945602 +0,0.8390368794793629,0.16096312052063716 +0,0.6111093933529226,0.3888906066470774 +1,0.39119104990967385,0.6088089500903262 +0,0.601697305771079,0.39830269422892095 +0,0.9594535596569749,0.04054644034302522 +0,0.9999994300869157,5.699130844388148E-7 +0,0.999995282173783,4.717826217052062E-6 +1,0.16810746039164787,0.8318925396083521 +0,0.9999935554631023,6.444536897654867E-6 +0,0.7248449374724001,0.27515506252759997 +0,0.9950537801657472,0.004946219834252816 +0,0.6113007550073993,0.38869924499260067 +1,0.13623637083928697,0.863763629160713 +0,0.9966573233219022,0.003342676678097847 +0,0.942365056959216,0.057634943040783974 +0,0.9558536191361967,0.04414638086380325 +1,0.3189038650733274,0.6810961349266725 +1,0.1857488179985152,0.8142511820014848 +0,0.865566337756408,0.13443366224359196 +0,0.513052548633648,0.4869474513663519 +1,0.18935844200772595,0.810641557992274 +0,0.9999888016825877,1.119831741225325E-5 +0,0.8259036691696172,0.17409633083038276 +0,0.749076956677814,0.250923043322186 +0,0.9947717214705903,0.005228278529409659 +0,0.8253837479968893,0.1746162520031107 +0,0.8261637349257933,0.17383626507420666 +0,0.998831682959308,0.0011683170406920202 +0,0.9946497112808999,0.00535028871910022 +0,0.9837915502192802,0.01620844978071984 +0,0.8414985035582332,0.15850149644176686 +0,0.8458225579141561,0.15417744208584394 +0,0.8372418597948009,0.16275814020519905 +0,0.972503003083878,0.027496996916122052 +0,0.6656731564871197,0.33432684351288033 +0,0.9999909718879482,9.028112051824757E-6 +0,0.5673014033329616,0.4326985966670384 +0,0.6042072562976035,0.39579274370239653 +0,0.979884350411797,0.02011564958820297 +0,0.7433126591954927,0.2566873408045073 +1,0.15064190918104278,0.8493580908189572 +0,0.9999999989922723,1.0077275681671466E-9 +0,0.5939417299773961,0.4060582700226039 +0,0.783257066843208,0.216742933156792 +0,0.8326698239302506,0.16733017606974943 +0,0.9984287707061866,0.0015712292938133317 +1,0.43383989418225016,0.5661601058177499 +1,0.2557426592853586,0.7442573407146413 +0,0.5776785008217312,0.4223214991782688 +1,0.43782465225714184,0.562175347742858 +0,0.5837863326925747,0.4162136673074253 +0,0.8758493122793258,0.12415068772067422 +0,0.9999986277604315,1.3722395684530594E-6 +0,0.9817780455987875,0.018221954401212666 +0,0.9994735809684749,5.264190315251563E-4 +0,0.9999999999464457,5.35542524833162E-11 +0,0.9700298393778961,0.029970160622103875 +0,0.9727501583227918,0.027249841677208286 +0,0.9999628047224922,3.7195277507929876E-5 +1,0.44970612514162667,0.5502938748583732 +0,0.8627793574101517,0.13722064258984837 +1,0.14476741927421455,0.8552325807257855 +0,0.9733163928602738,0.026683607139726166 +1,0.37109380277021314,0.6289061972297869 +0,0.9414028860495088,0.05859711395049108 +1,0.4870432979409125,0.5129567020590876 +0,0.6495676619912415,0.35043233800875845 +0,0.950457664860846,0.049542335139153924 +0,0.9832242365338417,0.016775763466158385 +1,0.3973414377703059,0.6026585622296942 +0,0.9341915180669426,0.06580848193305734 +1,0.2754977959395773,0.7245022040604228 +0,0.9878061703606484,0.012193829639351639 +1,7.263556624454099E-6,0.9999927364433755 +0,0.9999999931137391,6.886260946365166E-9 +0,0.6394130692812244,0.36058693071877546 +0,0.7069706081573564,0.2930293918426437 +0,0.9999999693023263,3.06976736154309E-8 +0,0.9975837447645222,0.0024162552354777766 +0,0.9999959172965057,4.082703494389851E-6 +0,0.7367286874963893,0.26327131250361074 +0,0.9999953376361179,4.6623638820227366E-6 +0,0.9846655754435899,0.015334424556410186 +0,0.7621820286335612,0.23781797136643884 +1,0.4167298757027196,0.5832701242972804 +0,0.8961147644282602,0.10388523557173977 +0,0.6123811505078928,0.38761884949210723 +1,0.16092350245503928,0.8390764975449607 +0,0.7937952180429311,0.20620478195706898 +0,0.9875402676797871,0.012459732320212859 +0,0.9407219203869852,0.05927807961301471 +1,0.3659778171366032,0.6340221828633968 +0,0.8311135759783569,0.1688864240216432 +0,0.9996245002328221,3.7549976717790985E-4 +0,0.978415673866985,0.02158432613301508 +0,0.7171764225546228,0.28282357744537723 +0,0.9999999629577774,3.704222266421655E-8 +1,0.12523681324915523,0.8747631867508447 +0,0.9999996361714025,3.6382859746113875E-7 +0,0.9769743544818048,0.023025645518195303 +0,0.997820201748056,0.0021797982519440096 +0,0.7160248315511062,0.28397516844889376 +0,0.9979529985340723,0.0020470014659277874 +0,0.9859756735294155,0.014024326470584434 +0,0.9028596934852232,0.0971403065147769 +1,0.14230876760009092,0.857691232399909 +0,0.9999999560964469,4.390355297825839E-8 +0,0.715997992541686,0.28400200745831405 +0,0.579433343760986,0.420566656239014 +0,0.614484900806284,0.38551509919371596 +1,0.3763477932722022,0.6236522067277979 +0,0.9636479378812042,0.0363520621187959 +0,0.9864518354555702,0.013548164544429753 diff --git a/src/test/resources/pipeline/LogisticRegressionAudit.zip b/src/test/resources/pipeline/LogisticRegressionAudit.zip index 807901e1..980d59a9 100644 Binary files a/src/test/resources/pipeline/LogisticRegressionAudit.zip and b/src/test/resources/pipeline/LogisticRegressionAudit.zip differ