diff --git a/develop/82a3b752-d0c6-4b7c-acf3-b14f6dfcf191/coverage.cobertura.xml b/develop/82a3b752-d0c6-4b7c-acf3-b14f6dfcf191/coverage.cobertura.xml
new file mode 100644
index 00000000..850a93df
--- /dev/null
+++ b/develop/82a3b752-d0c6-4b7c-acf3-b14f6dfcf191/coverage.cobertura.xml
@@ -0,0 +1,48574 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/develop/Itinero.Geo_AttributesTableExtensions.html b/develop/Itinero.Geo_AttributesTableExtensions.html
index 5e94e58e..09b5ac80 100644
--- a/develop/Itinero.Geo_AttributesTableExtensions.html
+++ b/develop/Itinero.Geo_AttributesTableExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
-Tag: | 212_7960533257 |
+Tag: | 213_7960582184 |
Metrics
@@ -82,7 +82,7 @@
| | 39 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Geo_CoordinateExtensions.html b/develop/Itinero.Geo_CoordinateExtensions.html
index f5a0165a..12736d17 100644
--- a/develop/Itinero.Geo_CoordinateExtensions.html
+++ b/develop/Itinero.Geo_CoordinateExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 6) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -72,7 +72,7 @@
/home
| | 30 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Geo_RouteExtensions.html b/develop/Itinero.Geo_RouteExtensions.html
index 02ca7308..ffcce856 100644
--- a/develop/Itinero.Geo_RouteExtensions.html
+++ b/develop/Itinero.Geo_RouteExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 3) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -65,7 +65,7 @@
/home/runn
| | 24 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Geo_RoutingNetworkEnumerator.html b/develop/Itinero.Geo_RoutingNetworkEnumerator.html
index e56d5e00..e38ea94d 100644
--- a/develop/Itinero.Geo_RoutingNetworkEnumerator.html
+++ b/develop/Itinero.Geo_RoutingNetworkEnumerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 13 |
Total branches: | 16 |
Branch coverage: | 81.2% (13 of 16) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -165,7 +165,7 @@
/
| | 118 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Geo_RoutingNetworkExtensions.html b/develop/Itinero.Geo_RoutingNetworkExtensions.html
index 9cf46048..363858e7 100644
--- a/develop/Itinero.Geo_RoutingNetworkExtensions.html
+++ b/develop/Itinero.Geo_RoutingNetworkExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 50% (6 of 12) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -94,7 +94,7 @@
/
| | 50 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Geo_RoutingNetworkStream.html b/develop/Itinero.Geo_RoutingNetworkStream.html
index 38d7fa31..bd3885a3 100644
--- a/develop/Itinero.Geo_RoutingNetworkStream.html
+++ b/develop/Itinero.Geo_RoutingNetworkStream.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 76.9% (10 of 13) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -79,7 +79,7 @@
/home
| | 36 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_DataProvider.html b/develop/Itinero.IO.Osm.Tiles_DataProvider.html
index ec952e41..62899c45 100644
--- a/develop/Itinero.IO.Osm.Tiles_DataProvider.html
+++ b/develop/Itinero.IO.Osm.Tiles_DataProvider.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 22 |
Branch coverage: | 0% (0 of 22) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -237,7 +237,7 @@
/home/
| | 189 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_DataProviderSettings.html b/develop/Itinero.IO.Osm.Tiles_DataProviderSettings.html
index 2fbadc2f..9aa5d13d 100644
--- a/develop/Itinero.IO.Osm.Tiles_DataProviderSettings.html
+++ b/develop/Itinero.IO.Osm.Tiles_DataProviderSettings.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 2) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -61,7 +61,7 @@
| | 19 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_DownloadHelper.html b/develop/Itinero.IO.Osm.Tiles_DownloadHelper.html
index c0161b69..48995a69 100644
--- a/develop/Itinero.IO.Osm.Tiles_DownloadHelper.html
+++ b/develop/Itinero.IO.Osm.Tiles_DownloadHelper.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -86,7 +86,7 @@
| | 44 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_Extensions.html b/develop/Itinero.IO.Osm.Tiles_Extensions.html
index d238a30d..4ef4a37f 100644
--- a/develop/Itinero.IO.Osm.Tiles_Extensions.html
+++ b/develop/Itinero.IO.Osm.Tiles_Extensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 4 |
Branch coverage: | 0% (0 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -69,7 +69,7 @@
/home/ru
| | 26 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_GlobalIdMap.html b/develop/Itinero.IO.Osm.Tiles_GlobalIdMap.html
index 99007bfc..2704e0f9 100644
--- a/develop/Itinero.IO.Osm.Tiles_GlobalIdMap.html
+++ b/develop/Itinero.IO.Osm.Tiles_GlobalIdMap.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 6 |
Total branches: | 10 |
Branch coverage: | 60% (6 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -152,7 +152,7 @@
/home/r
| | 104 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_RouterDbExtensions.html b/develop/Itinero.IO.Osm.Tiles_RouterDbExtensions.html
index bcd5b1c8..1199c449 100644
--- a/develop/Itinero.IO.Osm.Tiles_RouterDbExtensions.html
+++ b/develop/Itinero.IO.Osm.Tiles_RouterDbExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -65,7 +65,7 @@
| | 23 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_StreamExtensions.html b/develop/Itinero.IO.Osm.Tiles_StreamExtensions.html
index 9fdc51f8..e5306f54 100644
--- a/develop/Itinero.IO.Osm.Tiles_StreamExtensions.html
+++ b/develop/Itinero.IO.Osm.Tiles_StreamExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 21 |
Total branches: | 108 |
Branch coverage: | 19.4% (21 of 108) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -743,7 +743,7 @@
/h
| | 667 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_TagMapper.html b/develop/Itinero.IO.Osm.Tiles_TagMapper.html
index 54f29297..579e269d 100644
--- a/develop/Itinero.IO.Osm.Tiles_TagMapper.html
+++ b/develop/Itinero.IO.Osm.Tiles_TagMapper.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 8 |
Branch coverage: | 0% (0 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -82,7 +82,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_TagMapperConfig.html b/develop/Itinero.IO.Osm.Tiles_TagMapperConfig.html
index 5312334f..387a4c63 100644
--- a/develop/Itinero.IO.Osm.Tiles_TagMapperConfig.html
+++ b/develop/Itinero.IO.Osm.Tiles_TagMapperConfig.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 3) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -67,7 +67,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_TagMapperConfigParser.html b/develop/Itinero.IO.Osm.Tiles_TagMapperConfigParser.html
index 030dc0a2..47357924 100644
--- a/develop/Itinero.IO.Osm.Tiles_TagMapperConfigParser.html
+++ b/develop/Itinero.IO.Osm.Tiles_TagMapperConfigParser.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 18 |
Branch coverage: | 0% (0 of 18) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -127,7 +127,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_Tile.html b/develop/Itinero.IO.Osm.Tiles_Tile.html
index cc0cf4c4..c49bc136 100644
--- a/develop/Itinero.IO.Osm.Tiles_Tile.html
+++ b/develop/Itinero.IO.Osm.Tiles_Tile.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -240,7 +240,7 @@
/home/runner/w
| | 181 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_TileParser.html b/develop/Itinero.IO.Osm.Tiles_TileParser.html
index bc58c86b..80382456 100644
--- a/develop/Itinero.IO.Osm.Tiles_TileParser.html
+++ b/develop/Itinero.IO.Osm.Tiles_TileParser.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 88 |
Branch coverage: | 0% (0 of 88) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -399,7 +399,7 @@
/
| | 354 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm.Tiles_TileRange.html b/develop/Itinero.IO.Osm.Tiles_TileRange.html
index 5c1f7c96..ad6258eb 100644
--- a/develop/Itinero.IO.Osm.Tiles_TileRange.html
+++ b/develop/Itinero.IO.Osm.Tiles_TileRange.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 10 |
Branch coverage: | 0% (0 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -159,7 +159,7 @@
/home/run
| | 104 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_AttributesExtensions.html b/develop/Itinero.IO.Osm_AttributesExtensions.html
index a5673007..a3a5d82c 100644
--- a/develop/Itinero.IO.Osm_AttributesExtensions.html
+++ b/develop/Itinero.IO.Osm_AttributesExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -60,7 +60,7 @@
| | 18 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_CompleteOsmGeoExtensions.html b/develop/Itinero.IO.Osm_CompleteOsmGeoExtensions.html
index fb0723be..ccb84d2a 100644
--- a/develop/Itinero.IO.Osm_CompleteOsmGeoExtensions.html
+++ b/develop/Itinero.IO.Osm_CompleteOsmGeoExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -60,7 +60,7 @@
| | 18 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_CompleteOsmGeoPreprocessor.html b/develop/Itinero.IO.Osm_CompleteOsmGeoPreprocessor.html
index ed3ee5c1..160efb4f 100644
--- a/develop/Itinero.IO.Osm_CompleteOsmGeoPreprocessor.html
+++ b/develop/Itinero.IO.Osm_CompleteOsmGeoPreprocessor.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 21 |
Total branches: | 26 |
Branch coverage: | 80.7% (21 of 26) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -168,7 +168,7 @@
| | 118 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_DataProviderSettings.html b/develop/Itinero.IO.Osm_DataProviderSettings.html
index ad743c18..5967b58e 100644
--- a/develop/Itinero.IO.Osm_DataProviderSettings.html
+++ b/develop/Itinero.IO.Osm_DataProviderSettings.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (2 of 2) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -62,7 +62,7 @@
/ho
| | 20 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_GlobalEdgeIdExtensions.html b/develop/Itinero.IO.Osm_GlobalEdgeIdExtensions.html
index 51e665c0..51bd3f29 100644
--- a/develop/Itinero.IO.Osm_GlobalEdgeIdExtensions.html
+++ b/develop/Itinero.IO.Osm_GlobalEdgeIdExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 6 |
Branch coverage: | 33.3% (2 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -90,7 +90,7 @@
| | 44 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_NetworkRestriction.html b/develop/Itinero.IO.Osm_NetworkRestriction.html
index cc716a42..97dbdec9 100644
--- a/develop/Itinero.IO.Osm_NetworkRestriction.html
+++ b/develop/Itinero.IO.Osm_NetworkRestriction.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 2 |
Branch coverage: | 50% (1 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -115,7 +115,7 @@
| | 67 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_NodeIndex.html b/develop/Itinero.IO.Osm_NodeIndex.html
index e40691f5..74940878 100644
--- a/develop/Itinero.IO.Osm_NodeIndex.html
+++ b/develop/Itinero.IO.Osm_NodeIndex.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 16 |
Branch coverage: | 0% (0 of 16) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -190,7 +190,7 @@
/ho
| | 140 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmBarrier.html b/develop/Itinero.IO.Osm_OsmBarrier.html
index 89578091..8dc6ccf9 100644
--- a/develop/Itinero.IO.Osm_OsmBarrier.html
+++ b/develop/Itinero.IO.Osm_OsmBarrier.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 10) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -81,7 +81,7 @@
| | 37 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmBarrierExtensions.html b/develop/Itinero.IO.Osm_OsmBarrierExtensions.html
index d5720524..0a945e7b 100644
--- a/develop/Itinero.IO.Osm_OsmBarrierExtensions.html
+++ b/develop/Itinero.IO.Osm_OsmBarrierExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 10 |
Branch coverage: | 0% (0 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -92,7 +92,7 @@
| | 50 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmBarrierParser.html b/develop/Itinero.IO.Osm_OsmBarrierParser.html
index ea1295a6..ecb9eb64 100644
--- a/develop/Itinero.IO.Osm_OsmBarrierParser.html
+++ b/develop/Itinero.IO.Osm_OsmBarrierParser.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 6 |
Branch coverage: | 66.6% (4 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -85,7 +85,7 @@
| | 42 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmGeoTagsPreprocessor.html b/develop/Itinero.IO.Osm_OsmGeoTagsPreprocessor.html
index 9a3042b1..b4c772b2 100644
--- a/develop/Itinero.IO.Osm_OsmGeoTagsPreprocessor.html
+++ b/develop/Itinero.IO.Osm_OsmGeoTagsPreprocessor.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 5 |
Total branches: | 6 |
Branch coverage: | 83.3% (5 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -100,7 +100,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmStreamSourceExtensions.html b/develop/Itinero.IO.Osm_OsmStreamSourceExtensions.html
index 2026b783..385d77b3 100644
--- a/develop/Itinero.IO.Osm_OsmStreamSourceExtensions.html
+++ b/develop/Itinero.IO.Osm_OsmStreamSourceExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 68.7% (11 of 16) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -98,7 +98,7 @@
| | 55 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmTurnRestriction.html b/develop/Itinero.IO.Osm_OsmTurnRestriction.html
index 5e42364b..0a2a0aed 100644
--- a/develop/Itinero.IO.Osm_OsmTurnRestriction.html
+++ b/develop/Itinero.IO.Osm_OsmTurnRestriction.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 4 |
Branch coverage: | 100% (4 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -140,7 +140,7 @@
| | 91 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmTurnRestrictionExtensions.html b/develop/Itinero.IO.Osm_OsmTurnRestrictionExtensions.html
index a28a069b..735dd39d 100644
--- a/develop/Itinero.IO.Osm_OsmTurnRestrictionExtensions.html
+++ b/develop/Itinero.IO.Osm_OsmTurnRestrictionExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 56 |
Total branches: | 112 |
Branch coverage: | 50% (56 of 112) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -392,7 +392,7 @@
| | 342 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_OsmTurnRestrictionParser.html b/develop/Itinero.IO.Osm_OsmTurnRestrictionParser.html
index f1753340..93bd2cdb 100644
--- a/develop/Itinero.IO.Osm_OsmTurnRestrictionParser.html
+++ b/develop/Itinero.IO.Osm_OsmTurnRestrictionParser.html
@@ -22,10 +22,10 @@
< Summary
Coverable lines: | 142 |
Total lines: | 253 |
Line coverage: | 64.7% (92 of 142) |
---|
-
Covered branches: | 47 |
---|
-
Total branches: | 86 |
---|
-
Branch coverage: | 54.6% (47 of 86) |
---|
-
Tag: | 212_7960533257 |
---|
+
Covered branches: | 48 |
---|
+
Total branches: | 88 |
---|
+
Branch coverage: | 54.5% (48 of 88) |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -36,7 +36,7 @@
Metrics
.ctor(...) | 100% | 6 | 100% |
Trim() | 0% | 20 | 0% |
IsRestriction(...) | 40.9% | 22 | 43.9% |
-
TryParse(...) | 84.21% | 38 | 91.11% |
+
TryParse(...) | 82.5% | 40 | 91.11% |
File(s)
@@ -238,7 +238,7 @@
| 3 | 192 | | var vias = new List<Way>(); |
| 3 | 193 | | var tos = new List<Way>(); |
| 3 | 194 | | long? viaNodeId = null; |
- | 27 | 195 | | foreach (var m in relation.Members) |
+ | 27 | 195 | | foreach (var m in relation.Members ?? ArraySegment<RelationMember>.Empty) |
| 9 | 196 | | { |
| 9 | 197 | | if (m == null) return new Result<bool>("not all members set"); |
| 9 | 198 | | if (m.Role != "via" && m.Role != "from" && m.Role != "to") continue; |
@@ -299,7 +299,7 @@ | | 253 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_QuickSort.html b/develop/Itinero.IO.Osm_QuickSort.html
index 890f9354..43d10e25 100644
--- a/develop/Itinero.IO.Osm_QuickSort.html
+++ b/develop/Itinero.IO.Osm_QuickSort.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 42 |
Branch coverage: | 0% (0 of 42) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -244,7 +244,7 @@
/ho
| | 194 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_RelationTagsPreprocessor.html b/develop/Itinero.IO.Osm_RelationTagsPreprocessor.html
index eb624254..e6dde702 100644
--- a/develop/Itinero.IO.Osm_RelationTagsPreprocessor.html
+++ b/develop/Itinero.IO.Osm_RelationTagsPreprocessor.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 15 |
Total branches: | 16 |
Branch coverage: | 93.7% (15 of 16) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -146,7 +146,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_RouterDbExtensions.html b/develop/Itinero.IO.Osm_RouterDbExtensions.html
index babf6bc5..6fa01fc5 100644
--- a/develop/Itinero.IO.Osm_RouterDbExtensions.html
+++ b/develop/Itinero.IO.Osm_RouterDbExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 7 |
Total branches: | 10 |
Branch coverage: | 70% (7 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -107,7 +107,7 @@
/home
| | 65 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_RouterDbStreamTarget.html b/develop/Itinero.IO.Osm_RouterDbStreamTarget.html
index 71d5dfb4..16af34fe 100644
--- a/develop/Itinero.IO.Osm_RouterDbStreamTarget.html
+++ b/develop/Itinero.IO.Osm_RouterDbStreamTarget.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 34 |
Total branches: | 82 |
Branch coverage: | 41.4% (34 of 82) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -332,7 +332,7 @@
/ho
| | 284 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_RoutingTagsFilter.html b/develop/Itinero.IO.Osm_RoutingTagsFilter.html
index 998e4137..a76cff13 100644
--- a/develop/Itinero.IO.Osm_RoutingTagsFilter.html
+++ b/develop/Itinero.IO.Osm_RoutingTagsFilter.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 35 |
Total branches: | 50 |
Branch coverage: | 70% (35 of 50) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -137,7 +137,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_StandaloneNetworkTileWriterExtensions.html b/develop/Itinero.IO.Osm_StandaloneNetworkTileWriterExtensions.html
index 7abd0ee1..9c57c11d 100644
--- a/develop/Itinero.IO.Osm_StandaloneNetworkTileWriterExtensions.html
+++ b/develop/Itinero.IO.Osm_StandaloneNetworkTileWriterExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 125 |
Total branches: | 172 |
Branch coverage: | 72.6% (125 of 172) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -456,7 +456,7 @@
| | 413 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_TagsFilter.html b/develop/Itinero.IO.Osm_TagsFilter.html
index b0d8a9de..77395ef5 100644
--- a/develop/Itinero.IO.Osm_TagsFilter.html
+++ b/develop/Itinero.IO.Osm_TagsFilter.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (3 of 3) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -112,7 +112,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_UniqueIdMap_1.html b/develop/Itinero.IO.Osm_UniqueIdMap_1.html
index 51fd3b7c..ec8c1bb4 100644
--- a/develop/Itinero.IO.Osm_UniqueIdMap_1.html
+++ b/develop/Itinero.IO.Osm_UniqueIdMap_1.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 16 |
Branch coverage: | 0% (0 of 16) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -206,7 +206,7 @@
/
| | 154 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.IO.Osm_UnsignedNodeIndex.html b/develop/Itinero.IO.Osm_UnsignedNodeIndex.html
index 443153c2..7e436152 100644
--- a/develop/Itinero.IO.Osm_UnsignedNodeIndex.html
+++ b/develop/Itinero.IO.Osm_UnsignedNodeIndex.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 90 |
Branch coverage: | 0% (0 of 90) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -536,7 +536,7 @@
| | 475 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_AllGenerators.html b/develop/Itinero.Instructions_AllGenerators.html
index 1bc6ad36..121ca68c 100644
--- a/develop/Itinero.Instructions_AllGenerators.html
+++ b/develop/Itinero.Instructions_AllGenerators.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (10 of 10) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -63,7 +63,7 @@
| | 22 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_BaseInstruction.html b/develop/Itinero.Instructions_BaseInstruction.html
index 69706da7..a91a1637 100644
--- a/develop/Itinero.Instructions_BaseInstruction.html
+++ b/develop/Itinero.Instructions_BaseInstruction.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 2 |
Branch coverage: | 50% (1 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -147,7 +147,7 @@
| | 97 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_BaseInstructionGenerator.html b/develop/Itinero.Instructions_BaseInstructionGenerator.html
index be282c7f..104976d1 100644
--- a/develop/Itinero.Instructions_BaseInstructionGenerator.html
+++ b/develop/Itinero.Instructions_BaseInstructionGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -61,7 +61,7 @@
| | 18 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_Box_1.html b/develop/Itinero.Instructions_Box_1.html
index 4c9c0b62..9acfd540 100644
--- a/develop/Itinero.Instructions_Box_1.html
+++ b/develop/Itinero.Instructions_Box_1.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (1 of 1) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -73,7 +73,7 @@
/home/runne
| | 32 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_ConditionalToText.html b/develop/Itinero.Instructions_ConditionalToText.html
index 248fb662..0eac7632 100644
--- a/develop/Itinero.Instructions_ConditionalToText.html
+++ b/develop/Itinero.Instructions_ConditionalToText.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 3 |
Total branches: | 6 |
Branch coverage: | 50% (3 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -86,7 +86,7 @@
| | 43 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_ConfigurationParser.html b/develop/Itinero.Instructions_ConfigurationParser.html
index bfd945e2..d7af56d4 100644
--- a/develop/Itinero.Instructions_ConfigurationParser.html
+++ b/develop/Itinero.Instructions_ConfigurationParser.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 31 |
Total branches: | 42 |
Branch coverage: | 73.8% (31 of 42) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -294,7 +294,7 @@
| | 246 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_EndInstruction.html b/develop/Itinero.Instructions_EndInstruction.html
index 9de9b8ab..4a403fb4 100644
--- a/develop/Itinero.Instructions_EndInstruction.html
+++ b/develop/Itinero.Instructions_EndInstruction.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 78.5% (11 of 14) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -81,7 +81,7 @@
| | 38 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_EndInstructionGenerator.html b/develop/Itinero.Instructions_EndInstructionGenerator.html
index 79683c27..9641a446 100644
--- a/develop/Itinero.Instructions_EndInstructionGenerator.html
+++ b/develop/Itinero.Instructions_EndInstructionGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -54,7 +54,7 @@
| | 11 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_FollowAlongGenerator.html b/develop/Itinero.Instructions_FollowAlongGenerator.html
index 9136e090..b3ceb306 100644
--- a/develop/Itinero.Instructions_FollowAlongGenerator.html
+++ b/develop/Itinero.Instructions_FollowAlongGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 11 |
Total branches: | 16 |
Branch coverage: | 68.7% (11 of 16) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -117,7 +117,7 @@
| | 74 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_FollowAlongInstruction.html b/develop/Itinero.Instructions_FollowAlongInstruction.html
index 78323a83..c2e22334 100644
--- a/develop/Itinero.Instructions_FollowAlongInstruction.html
+++ b/develop/Itinero.Instructions_FollowAlongInstruction.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (3 of 3) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -57,7 +57,7 @@
| | 16 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_FollowBendGenerator.html b/develop/Itinero.Instructions_FollowBendGenerator.html
index 6e759f8b..c53dcabe 100644
--- a/develop/Itinero.Instructions_FollowBendGenerator.html
+++ b/develop/Itinero.Instructions_FollowBendGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 19 |
Total branches: | 28 |
Branch coverage: | 67.8% (19 of 28) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -181,7 +181,7 @@
| | 137 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_FollowBendInstruction.html b/develop/Itinero.Instructions_FollowBendInstruction.html
index 299a6136..d01d9046 100644
--- a/develop/Itinero.Instructions_FollowBendInstruction.html
+++ b/develop/Itinero.Instructions_FollowBendInstruction.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (4 of 4) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -59,7 +59,7 @@
| | 18 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_IRouteAndBaseInstructionsExtensions.html b/develop/Itinero.Instructions_IRouteAndBaseInstructionsExtensions.html
index 4b550b79..8e193351 100644
--- a/develop/Itinero.Instructions_IRouteAndBaseInstructionsExtensions.html
+++ b/develop/Itinero.Instructions_IRouteAndBaseInstructionsExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 6 |
Branch coverage: | 16.6% (1 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -106,7 +106,7 @@
| | 63 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_IRouteAndInstructionsExtensions.html b/develop/Itinero.Instructions_IRouteAndInstructionsExtensions.html
index d73f654e..49788986 100644
--- a/develop/Itinero.Instructions_IRouteAndInstructionsExtensions.html
+++ b/develop/Itinero.Instructions_IRouteAndInstructionsExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 17 |
Total branches: | 18 |
Branch coverage: | 94.4% (17 of 18) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -144,7 +144,7 @@
| | 102 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_IndexedRoute.html b/develop/Itinero.Instructions_IndexedRoute.html
index f7a62184..c867ff00 100644
--- a/develop/Itinero.Instructions_IndexedRoute.html
+++ b/develop/Itinero.Instructions_IndexedRoute.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 18 |
Total branches: | 26 |
Branch coverage: | 69.2% (18 of 26) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -258,7 +258,7 @@
/hom
| | 205 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_Instruction.html b/develop/Itinero.Instructions_Instruction.html
index 5ab0d74e..4717747a 100644
--- a/develop/Itinero.Instructions_Instruction.html
+++ b/develop/Itinero.Instructions_Instruction.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (7 of 7) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -70,7 +70,7 @@
/home
| | 27 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_IntersectionInstruction.html b/develop/Itinero.Instructions_IntersectionInstruction.html
index 14f0bc44..4491456b 100644
--- a/develop/Itinero.Instructions_IntersectionInstruction.html
+++ b/develop/Itinero.Instructions_IntersectionInstruction.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 60% (6 of 10) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -79,7 +79,7 @@
| | 37 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_IntersectionInstructionGenerator.html b/develop/Itinero.Instructions_IntersectionInstructionGenerator.html
index 682dff48..0cd8e859 100644
--- a/develop/Itinero.Instructions_IntersectionInstructionGenerator.html
+++ b/develop/Itinero.Instructions_IntersectionInstructionGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 6 |
Branch coverage: | 66.6% (4 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -97,7 +97,7 @@
| | 54 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_LinearInstructionListGenerator.html b/develop/Itinero.Instructions_LinearInstructionListGenerator.html
index d9a2add9..8e163f36 100644
--- a/develop/Itinero.Instructions_LinearInstructionListGenerator.html
+++ b/develop/Itinero.Instructions_LinearInstructionListGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 7 |
Total branches: | 8 |
Branch coverage: | 87.5% (7 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -116,7 +116,7 @@
| | 72 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RoundaboutInstruction.html b/develop/Itinero.Instructions_RoundaboutInstruction.html
index e9ba6729..faeadd19 100644
--- a/develop/Itinero.Instructions_RoundaboutInstruction.html
+++ b/develop/Itinero.Instructions_RoundaboutInstruction.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (7 of 7) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -84,7 +84,7 @@
| | 41 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RoundaboutInstructionGenerator.html b/develop/Itinero.Instructions_RoundaboutInstructionGenerator.html
index 727de02e..e951d31a 100644
--- a/develop/Itinero.Instructions_RoundaboutInstructionGenerator.html
+++ b/develop/Itinero.Instructions_RoundaboutInstructionGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 10 |
Total branches: | 10 |
Branch coverage: | 100% (10 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -96,7 +96,7 @@
| | 53 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RouteAndBaseInstructions.html b/develop/Itinero.Instructions_RouteAndBaseInstructions.html
index bc549d82..f4fa770f 100644
--- a/develop/Itinero.Instructions_RouteAndBaseInstructions.html
+++ b/develop/Itinero.Instructions_RouteAndBaseInstructions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (10 of 10) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -88,7 +88,7 @@
| | 44 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RouteAndInstructions.html b/develop/Itinero.Instructions_RouteAndInstructions.html
index ecfa2a97..0405ed5b 100644
--- a/develop/Itinero.Instructions_RouteAndInstructions.html
+++ b/develop/Itinero.Instructions_RouteAndInstructions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (7 of 7) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -75,7 +75,7 @@
| | 32 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RouteExtensions.2.html b/develop/Itinero.Instructions_RouteExtensions.2.html
index 2b41436d..c35e9c34 100644
--- a/develop/Itinero.Instructions_RouteExtensions.2.html
+++ b/develop/Itinero.Instructions_RouteExtensions.2.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 5 |
Total branches: | 6 |
Branch coverage: | 83.3% (5 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -75,7 +75,7 @@
| | 33 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RouteExtensions.html b/develop/Itinero.Instructions_RouteExtensions.html
index 5fdcb4cc..c5d07299 100644
--- a/develop/Itinero.Instructions_RouteExtensions.html
+++ b/develop/Itinero.Instructions_RouteExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -67,7 +67,7 @@
/
| | 25 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RouteInstructionGenerator.html b/develop/Itinero.Instructions_RouteInstructionGenerator.html
index c20d7108..8035ba64 100644
--- a/develop/Itinero.Instructions_RouteInstructionGenerator.html
+++ b/develop/Itinero.Instructions_RouteInstructionGenerator.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 10) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -76,7 +76,7 @@
| | 34 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_RouteInstructionGeneratorSettings.html b/develop/Itinero.Instructions_RouteInstructionGeneratorSettings.html
index 7d8df6a2..3ee93dda 100644
--- a/develop/Itinero.Instructions_RouteInstructionGeneratorSettings.html
+++ b/develop/Itinero.Instructions_RouteInstructionGeneratorSettings.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 6 |
Branch coverage: | 16.6% (1 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -147,7 +147,7 @@
| | 99 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_StartInstruction.html b/develop/Itinero.Instructions_StartInstruction.html
index 2ebb6446..786feaa0 100644
--- a/develop/Itinero.Instructions_StartInstruction.html
+++ b/develop/Itinero.Instructions_StartInstruction.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 2 |
Branch coverage: | 50% (1 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -100,7 +100,7 @@
| | 53 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_StartInstructionGenerator.html b/develop/Itinero.Instructions_StartInstructionGenerator.html
index 64b0401e..02ff14f9 100644
--- a/develop/Itinero.Instructions_StartInstructionGenerator.html
+++ b/develop/Itinero.Instructions_StartInstructionGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -59,7 +59,7 @@
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_SubstituteText.html b/develop/Itinero.Instructions_SubstituteText.html
index 97d1ce0b..4d3fec7a 100644
--- a/develop/Itinero.Instructions_SubstituteText.html
+++ b/develop/Itinero.Instructions_SubstituteText.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 39 |
Total branches: | 55 |
Branch coverage: | 70.9% (39 of 55) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -189,7 +189,7 @@
| | 144 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_TurnGenerator.html b/develop/Itinero.Instructions_TurnGenerator.html
index 2ca14ead..4f017666 100644
--- a/develop/Itinero.Instructions_TurnGenerator.html
+++ b/develop/Itinero.Instructions_TurnGenerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 10 |
Total branches: | 14 |
Branch coverage: | 71.4% (10 of 14) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -112,7 +112,7 @@
| | 69 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_TurnInstruction.html b/develop/Itinero.Instructions_TurnInstruction.html
index d144e754..d86da46b 100644
--- a/develop/Itinero.Instructions_TurnInstruction.html
+++ b/develop/Itinero.Instructions_TurnInstruction.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (4 of 4) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -54,7 +54,7 @@
| | 13 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Instructions_Utils.html b/develop/Itinero.Instructions_Utils.html
index 24eea820..acb67e5f 100644
--- a/develop/Itinero.Instructions_Utils.html
+++ b/develop/Itinero.Instructions_Utils.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 4 |
Branch coverage: | 100% (4 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -74,7 +74,7 @@
/home/runne
| | 32 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Profiles.Lua_LuaProfile.html b/develop/Itinero.Profiles.Lua_LuaProfile.html
index d3e0b0bd..712dfad3 100644
--- a/develop/Itinero.Profiles.Lua_LuaProfile.html
+++ b/develop/Itinero.Profiles.Lua_LuaProfile.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 38 |
Total branches: | 50 |
Branch coverage: | 76% (38 of 50) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -191,7 +191,7 @@
/home/r
| | 143 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Profiles.Lua_LuaTableExtensions.html b/develop/Itinero.Profiles.Lua_LuaTableExtensions.html
index c9c463fa..3ca43f49 100644
--- a/develop/Itinero.Profiles.Lua_LuaTableExtensions.html
+++ b/develop/Itinero.Profiles.Lua_LuaTableExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 9 |
Total branches: | 16 |
Branch coverage: | 56.2% (9 of 16) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -86,7 +86,7 @@
| | 43 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero.Profiles.Lua_OsmProfiles.html b/develop/Itinero.Profiles.Lua_OsmProfiles.html
index 0627c647..d04e771d 100644
--- a/develop/Itinero.Profiles.Lua_OsmProfiles.html
+++ b/develop/Itinero.Profiles.Lua_OsmProfiles.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 2 |
Branch coverage: | 50% (1 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -100,7 +100,7 @@
/ho
| | 53 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_AlternativeRouteCostFunction.html b/develop/Itinero_AlternativeRouteCostFunction.html
index 6dc7c609..738eee82 100644
--- a/develop/Itinero_AlternativeRouteCostFunction.html
+++ b/develop/Itinero_AlternativeRouteCostFunction.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 3 |
Total branches: | 4 |
Branch coverage: | 75% (3 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -84,7 +84,7 @@
| | 41 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_AlternativeRouteSettings.html b/develop/Itinero_AlternativeRouteSettings.html
index 28838160..10028e97 100644
--- a/develop/Itinero_AlternativeRouteSettings.html
+++ b/develop/Itinero_AlternativeRouteSettings.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 3) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -74,7 +74,7 @@
| | 31 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ArrayBaseExtensions.2.html b/develop/Itinero_ArrayBaseExtensions.2.html
index d0030948..ee8f42c6 100644
--- a/develop/Itinero_ArrayBaseExtensions.2.html
+++ b/develop/Itinero_ArrayBaseExtensions.2.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 4 |
Branch coverage: | 100% (4 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -75,7 +75,7 @@
| | 33 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ArrayBaseExtensions.html b/develop/Itinero_ArrayBaseExtensions.html
index 44e221ab..99a7bd25 100644
--- a/develop/Itinero_ArrayBaseExtensions.html
+++ b/develop/Itinero_ArrayBaseExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (5 of 5) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -54,7 +54,7 @@
| | 13 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_AttributeExtensions.html b/develop/Itinero_AttributeExtensions.html
index f321f52d..98922bc9 100644
--- a/develop/Itinero_AttributeExtensions.html
+++ b/develop/Itinero_AttributeExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 8 |
Total branches: | 34 |
Branch coverage: | 23.5% (8 of 34) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -267,7 +267,7 @@
| | 217 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_AttributeSetDictionaryIndex.html b/develop/Itinero_AttributeSetDictionaryIndex.html
index ef1b7bc4..999c1ac1 100644
--- a/develop/Itinero_AttributeSetDictionaryIndex.html
+++ b/develop/Itinero_AttributeSetDictionaryIndex.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 18 |
Total branches: | 20 |
Branch coverage: | 90% (18 of 20) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -190,7 +190,7 @@
| | 142 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_AttributeSetEqualityComparer.html b/develop/Itinero_AttributeSetEqualityComparer.html
index c66d6741..5bb4414a 100644
--- a/develop/Itinero_AttributeSetEqualityComparer.html
+++ b/develop/Itinero_AttributeSetEqualityComparer.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 7 |
Total branches: | 10 |
Branch coverage: | 70% (7 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -97,7 +97,7 @@
| | 53 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_AttributeSetMap.html b/develop/Itinero_AttributeSetMap.html
index 9f950d0b..ab4167d5 100644
--- a/develop/Itinero_AttributeSetMap.html
+++ b/develop/Itinero_AttributeSetMap.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -88,7 +88,7 @@
/home/
| | 43 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_BinaryHeap_1.html b/develop/Itinero_BinaryHeap_1.html
index 3677fda5..13c17b1e 100644
--- a/develop/Itinero_BinaryHeap_1.html
+++ b/develop/Itinero_BinaryHeap_1.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 15 |
Total branches: | 20 |
Branch coverage: | 75% (15 of 20) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -234,7 +234,7 @@
| | 185 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_BitCoder.html b/develop/Itinero_BitCoder.html
index a5dd1c21..89e3c369 100644
--- a/develop/Itinero_BitCoder.html
+++ b/develop/Itinero_BitCoder.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 73 |
Total branches: | 84 |
Branch coverage: | 86.9% (73 of 84) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -527,7 +527,7 @@
/home/
| | 468 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_BitCoderStream.html b/develop/Itinero_BitCoderStream.html
index 67b13c9e..c31e261f 100644
--- a/develop/Itinero_BitCoderStream.html
+++ b/develop/Itinero_BitCoderStream.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 31 |
Total branches: | 108 |
Branch coverage: | 28.7% (31 of 108) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -733,7 +733,7 @@
/home/runner
| | 658 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_BoundaryEdgeId.html b/develop/Itinero_BoundaryEdgeId.html
index 5a4e13e5..68ea13a6 100644
--- a/develop/Itinero_BoundaryEdgeId.html
+++ b/develop/Itinero_BoundaryEdgeId.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 75% (3 of 4) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -53,7 +53,7 @@
| | 11 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_BoundaryOrLocalEdgeId.html b/develop/Itinero_BoundaryOrLocalEdgeId.html
index 8b86e552..04651ac5 100644
--- a/develop/Itinero_BoundaryOrLocalEdgeId.html
+++ b/develop/Itinero_BoundaryOrLocalEdgeId.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 50% (5 of 10) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -81,7 +81,7 @@
| | 37 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_DataHelpers.html b/develop/Itinero_DataHelpers.html
index b031b8d6..ae6110d1 100644
--- a/develop/Itinero_DataHelpers.html
+++ b/develop/Itinero_DataHelpers.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 8 |
Branch coverage: | 50% (4 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -95,7 +95,7 @@
| | 49 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_DataUseNotifier.html b/develop/Itinero_DataUseNotifier.html
index c4d50147..e7cbfa8a 100644
--- a/develop/Itinero_DataUseNotifier.html
+++ b/develop/Itinero_DataUseNotifier.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 4 |
Branch coverage: | 50% (2 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -97,7 +97,7 @@
/hom
| | 51 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_DefaultProfile.html b/develop/Itinero_DefaultProfile.html
index 218d6401..647c0974 100644
--- a/develop/Itinero_DefaultProfile.html
+++ b/develop/Itinero_DefaultProfile.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 3 |
Total branches: | 4 |
Branch coverage: | 75% (3 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -88,7 +88,7 @@
/home/
| | 43 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Dijkstra.2.html b/develop/Itinero_Dijkstra.2.html
index db85fe07..5a72c98f 100644
--- a/develop/Itinero_Dijkstra.2.html
+++ b/develop/Itinero_Dijkstra.2.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 112 |
Total branches: | 140 |
Branch coverage: | 80% (112 of 140) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -507,7 +507,7 @@
| | 460 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Dijkstra.html b/develop/Itinero_Dijkstra.html
index 8c63f46b..4c15e55f 100644
--- a/develop/Itinero_Dijkstra.html
+++ b/develop/Itinero_Dijkstra.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 79 |
Total branches: | 100 |
Branch coverage: | 79% (79 of 100) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -424,7 +424,7 @@
| | 379 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_DirectionCalculator.html b/develop/Itinero_DirectionCalculator.html
index 8b15b7f1..8c0e6680 100644
--- a/develop/Itinero_DirectionCalculator.html
+++ b/develop/Itinero_DirectionCalculator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 7 |
Total branches: | 86 |
Branch coverage: | 8.1% (7 of 86) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -253,7 +253,7 @@
| | 207 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_EdgeEnumerator_1.html b/develop/Itinero_EdgeEnumerator_1.html
index 08097482..cd0b4a7b 100644
--- a/develop/Itinero_EdgeEnumerator_1.html
+++ b/develop/Itinero_EdgeEnumerator_1.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 16 |
Total branches: | 20 |
Branch coverage: | 80% (16 of 20) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -303,7 +303,7 @@
| | 239 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_EdgeFactor.html b/develop/Itinero_EdgeFactor.html
index 58333fbf..54dedfb1 100644
--- a/develop/Itinero_EdgeFactor.html
+++ b/develop/Itinero_EdgeFactor.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 4 |
Branch coverage: | 0% (0 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -142,7 +142,7 @@
/home/runn
| | 89 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_EdgeFactorCache.html b/develop/Itinero_EdgeFactorCache.html
index 072dc6eb..4a2cc61f 100644
--- a/develop/Itinero_EdgeFactorCache.html
+++ b/develop/Itinero_EdgeFactorCache.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 6 |
Branch coverage: | 33.3% (2 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -89,7 +89,7 @@
| | 45 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_EdgeId.html b/develop/Itinero_EdgeId.html
index bb0b7479..7a5b0b40 100644
--- a/develop/Itinero_EdgeId.html
+++ b/develop/Itinero_EdgeId.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 8 |
Branch coverage: | 50% (4 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -200,7 +200,7 @@
/home/runner/wo
| | 145 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_EdgeSearch.html b/develop/Itinero_EdgeSearch.html
index 1339fb1e..45c50083 100644
--- a/develop/Itinero_EdgeSearch.html
+++ b/develop/Itinero_EdgeSearch.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 70 |
Total branches: | 118 |
Branch coverage: | 59.3% (70 of 118) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -454,7 +454,7 @@
| | 408 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ElevationHandler.html b/develop/Itinero_ElevationHandler.html
index f46f1a65..dc977553 100644
--- a/develop/Itinero_ElevationHandler.html
+++ b/develop/Itinero_ElevationHandler.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 2 |
Branch coverage: | 50% (1 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -80,7 +80,7 @@
| | 36 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ElevationHandlerExtensions.html b/develop/Itinero_ElevationHandlerExtensions.html
index 6a47dc4c..d52cb376 100644
--- a/develop/Itinero_ElevationHandlerExtensions.html
+++ b/develop/Itinero_ElevationHandlerExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 7 |
Total branches: | 8 |
Branch coverage: | 87.5% (7 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -87,7 +87,7 @@
| | 44 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Extensions.html b/develop/Itinero_Extensions.html
index 1992ee15..0d86566e 100644
--- a/develop/Itinero_Extensions.html
+++ b/develop/Itinero_Extensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 4 |
Branch coverage: | 100% (4 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -59,7 +59,7 @@
| | 16 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_GeoExtensions.html b/develop/Itinero_GeoExtensions.html
index 7fd30dd0..1508242c 100644
--- a/develop/Itinero_GeoExtensions.html
+++ b/develop/Itinero_GeoExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 39 |
Total branches: | 96 |
Branch coverage: | 40.6% (39 of 96) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -615,7 +615,7 @@
/home/runner
| | 555 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_GeoJsonExtensions.html b/develop/Itinero_GeoJsonExtensions.html
index 5ba8376d..1ee7f751 100644
--- a/develop/Itinero_GeoJsonExtensions.html
+++ b/develop/Itinero_GeoJsonExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -170,7 +170,7 @@
| | 122 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_GlobalEdgeIdSet.html b/develop/Itinero_GlobalEdgeIdSet.html
index 866c06b7..ad91744f 100644
--- a/develop/Itinero_GlobalEdgeIdSet.html
+++ b/develop/Itinero_GlobalEdgeIdSet.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -108,7 +108,7 @@
/home/run
| | 61 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_GlobalNetworkManager.html b/develop/Itinero_GlobalNetworkManager.html
index d4851b89..f34de556 100644
--- a/develop/Itinero_GlobalNetworkManager.html
+++ b/develop/Itinero_GlobalNetworkManager.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 7) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -69,7 +69,7 @@
/hom
| | 26 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_GlobalVertexIdSet.html b/develop/Itinero_GlobalVertexIdSet.html
index d3938fd6..8f436bd0 100644
--- a/develop/Itinero_GlobalVertexIdSet.html
+++ b/develop/Itinero_GlobalVertexIdSet.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -107,7 +107,7 @@
/home/r
| | 60 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ICostFunctionExtensions.2.html b/develop/Itinero_ICostFunctionExtensions.2.html
index 37a4987a..e9f34ddf 100644
--- a/develop/Itinero_ICostFunctionExtensions.2.html
+++ b/develop/Itinero_ICostFunctionExtensions.2.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (8 of 8) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -57,7 +57,7 @@
| | 16 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ICostFunctionExtensions.html b/develop/Itinero_ICostFunctionExtensions.html
index 6761397d..f884b922 100644
--- a/develop/Itinero_ICostFunctionExtensions.html
+++ b/develop/Itinero_ICostFunctionExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -68,7 +68,7 @@
| | 26 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IEdgeEnumeratorExtensions.html b/develop/Itinero_IEdgeEnumeratorExtensions.html
index bd123201..a9fd9102 100644
--- a/develop/Itinero_IEdgeEnumeratorExtensions.html
+++ b/develop/Itinero_IEdgeEnumeratorExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 14 |
Total branches: | 42 |
Branch coverage: | 33.3% (14 of 42) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -230,7 +230,7 @@
| | 185 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IHasSourceExtensions.html b/develop/Itinero_IHasSourceExtensions.html
index def2bab4..13d8e1b9 100644
--- a/develop/Itinero_IHasSourceExtensions.html
+++ b/develop/Itinero_IHasSourceExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 20.5% (7 of 34) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -142,7 +142,7 @@
/
| | 96 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IHasSourcesExtensions.html b/develop/Itinero_IHasSourcesExtensions.html
index a93d1954..f4aa204b 100644
--- a/develop/Itinero_IHasSourcesExtensions.html
+++ b/develop/Itinero_IHasSourcesExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 42) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -150,7 +150,7 @@
| | 104 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRoutePositionExtensions.html b/develop/Itinero_IRoutePositionExtensions.html
index 9b4469a5..e04f07c5 100644
--- a/develop/Itinero_IRoutePositionExtensions.html
+++ b/develop/Itinero_IRoutePositionExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 50 |
Branch coverage: | 0% (0 of 50) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -753,7 +753,7 @@
/home/runner/work
| | 693 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterExtensions.html b/develop/Itinero_IRouterExtensions.html
index f26fc0d9..be2e224f 100644
--- a/develop/Itinero_IRouterExtensions.html
+++ b/develop/Itinero_IRouterExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 8 |
Total branches: | 28 |
Branch coverage: | 28.5% (8 of 28) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -275,7 +275,7 @@
/hom
| | 224 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterManyToManyExtensions.html b/develop/Itinero_IRouterManyToManyExtensions.html
index ba8c2108..63644f37 100644
--- a/develop/Itinero_IRouterManyToManyExtensions.html
+++ b/develop/Itinero_IRouterManyToManyExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -126,7 +126,7 @@
| | 82 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterManyToOneExtensions.html b/develop/Itinero_IRouterManyToOneExtensions.html
index 1b3f79f5..f1e211aa 100644
--- a/develop/Itinero_IRouterManyToOneExtensions.html
+++ b/develop/Itinero_IRouterManyToOneExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 12 |
Branch coverage: | 0% (0 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -133,7 +133,7 @@
| | 89 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterOneToManyExtensions.html b/develop/Itinero_IRouterOneToManyExtensions.html
index e732aea8..8b32e66b 100644
--- a/develop/Itinero_IRouterOneToManyExtensions.html
+++ b/develop/Itinero_IRouterOneToManyExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 12 |
Branch coverage: | 0% (0 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -133,7 +133,7 @@
| | 89 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterOneToOneExtensions.2.html b/develop/Itinero_IRouterOneToOneExtensions.2.html
index a47630f9..694bc70d 100644
--- a/develop/Itinero_IRouterOneToOneExtensions.2.html
+++ b/develop/Itinero_IRouterOneToOneExtensions.2.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 3 |
Total branches: | 6 |
Branch coverage: | 50% (3 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -107,7 +107,7 @@
| | 63 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterOneToOneExtensions.html b/develop/Itinero_IRouterOneToOneExtensions.html
index 8bc53056..737147d1 100644
--- a/develop/Itinero_IRouterOneToOneExtensions.html
+++ b/develop/Itinero_IRouterOneToOneExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 9) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -57,7 +57,7 @@
| | 16 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterOneToOneWithAlternativesExtensions.html b/develop/Itinero_IRouterOneToOneWithAlternativesExtensions.html
index e6b238ed..507e94b7 100644
--- a/develop/Itinero_IRouterOneToOneWithAlternativesExtensions.html
+++ b/develop/Itinero_IRouterOneToOneWithAlternativesExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 36 |
Branch coverage: | 0% (0 of 36) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -218,7 +218,7 @@
| | 174 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IRouterWeightsExtensions.html b/develop/Itinero_IRouterWeightsExtensions.html
index 47b7ce30..c28e8568 100644
--- a/develop/Itinero_IRouterWeightsExtensions.html
+++ b/develop/Itinero_IRouterWeightsExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 12) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -91,7 +91,7 @@
| | 47 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ISnapperExtensions.html b/develop/Itinero_ISnapperExtensions.html
index c49ac107..49148379 100644
--- a/develop/Itinero_ISnapperExtensions.html
+++ b/develop/Itinero_ISnapperExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 3 |
Total branches: | 12 |
Branch coverage: | 25% (3 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -134,7 +134,7 @@
/h
| | 88 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IslandBuilder.html b/develop/Itinero_IslandBuilder.html
index 53a3c7a1..60a7f3b6 100644
--- a/develop/Itinero_IslandBuilder.html
+++ b/develop/Itinero_IslandBuilder.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 76 |
Total branches: | 116 |
Branch coverage: | 65.5% (76 of 116) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -334,7 +334,7 @@
| | 291 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IslandBuilderExtensions.html b/develop/Itinero_IslandBuilderExtensions.html
index 151564b6..f0191e6b 100644
--- a/develop/Itinero_IslandBuilderExtensions.html
+++ b/develop/Itinero_IslandBuilderExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -65,7 +65,7 @@
| | 22 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IslandLabelGraph.html b/develop/Itinero_IslandLabelGraph.html
index ba43594e..d2b6b9d2 100644
--- a/develop/Itinero_IslandLabelGraph.html
+++ b/develop/Itinero_IslandLabelGraph.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 53 |
Total branches: | 96 |
Branch coverage: | 55.2% (53 of 96) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -400,7 +400,7 @@
| | 337 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IslandLabels.html b/develop/Itinero_IslandLabels.html
index b2fb9032..2b0f9b63 100644
--- a/develop/Itinero_IslandLabels.html
+++ b/develop/Itinero_IslandLabels.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 68 |
Total branches: | 96 |
Branch coverage: | 70.8% (68 of 96) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -365,7 +365,7 @@
| | 313 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Islands.html b/develop/Itinero_Islands.html
index ef1c1c12..845a086a 100644
--- a/develop/Itinero_Islands.html
+++ b/develop/Itinero_Islands.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 4 |
Branch coverage: | 0% (0 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -172,7 +172,7 @@
/
| | 124 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_IslandsExtensions.html b/develop/Itinero_IslandsExtensions.html
index cec8709c..27f347ba 100644
--- a/develop/Itinero_IslandsExtensions.html
+++ b/develop/Itinero_IslandsExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 8 |
Branch coverage: | 0% (0 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -63,7 +63,7 @@
| | 21 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Logger.html b/develop/Itinero_Logger.html
index b0801d87..9e596235 100644
--- a/develop/Itinero_Logger.html
+++ b/develop/Itinero_Logger.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 4 |
Branch coverage: | 50% (2 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -138,7 +138,7 @@
/home/runner/wo
| | 92 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_LruCacheItem_2.html b/develop/Itinero_LruCacheItem_2.html
index d74e012a..78a64a08 100644
--- a/develop/Itinero_LruCacheItem_2.html
+++ b/develop/Itinero_LruCacheItem_2.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 5) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -108,7 +108,7 @@
| | 67 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_LruCache_2.html b/develop/Itinero_LruCache_2.html
index 4bb29d05..fb705ff2 100644
--- a/develop/Itinero_LruCache_2.html
+++ b/develop/Itinero_LruCache_2.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 4 |
Branch coverage: | 0% (0 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -113,7 +113,7 @@
| | 67 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_NetworkTile.html b/develop/Itinero_NetworkTile.html
index 665729d3..be8dd1d6 100644
--- a/develop/Itinero_NetworkTile.html
+++ b/develop/Itinero_NetworkTile.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 230 |
Total branches: | 278 |
Branch coverage: | 82.7% (230 of 278) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -1585,7 +1585,7 @@
| | 329 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_NetworkTileEnumerator.html b/develop/Itinero_NetworkTileEnumerator.html
index 99da9ae0..269dda5e 100644
--- a/develop/Itinero_NetworkTileEnumerator.html
+++ b/develop/Itinero_NetworkTileEnumerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 57 |
Total branches: | 100 |
Branch coverage: | 57% (57 of 100) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -532,7 +532,7 @@
| | 464 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_NetworkTileExtensions.html b/develop/Itinero_NetworkTileExtensions.html
index 52c542c9..295622e7 100644
--- a/develop/Itinero_NetworkTileExtensions.html
+++ b/develop/Itinero_NetworkTileExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -69,7 +69,7 @@
| | 27 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_OrderCoder.html b/develop/Itinero_OrderCoder.html
index 4612e882..fb4b2e0e 100644
--- a/develop/Itinero_OrderCoder.html
+++ b/develop/Itinero_OrderCoder.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 16 |
Total branches: | 18 |
Branch coverage: | 88.8% (16 of 18) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -105,7 +105,7 @@
/h
| | 62 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Path.html b/develop/Itinero_Path.html
index 4dc0ebe6..b53a96bf 100644
--- a/develop/Itinero_Path.html
+++ b/develop/Itinero_Path.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 20 |
Total branches: | 56 |
Branch coverage: | 35.7% (20 of 56) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -342,7 +342,7 @@
/home/runner/
| | 283 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_PathExtensions.html b/develop/Itinero_PathExtensions.html
index ceacb75e..8ba0a764 100644
--- a/develop/Itinero_PathExtensions.html
+++ b/develop/Itinero_PathExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 8 |
Total branches: | 62 |
Branch coverage: | 12.9% (8 of 62) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -276,7 +276,7 @@
/ho
| | 226 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_PathTree.html b/develop/Itinero_PathTree.html
index 633b6c13..eaf23d1c 100644
--- a/develop/Itinero_PathTree.html
+++ b/develop/Itinero_PathTree.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 12 |
Branch coverage: | 16.6% (2 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -280,7 +280,7 @@
| | 225 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_PathTreeExtensions.html b/develop/Itinero_PathTreeExtensions.html
index ebefb0d4..766c6258 100644
--- a/develop/Itinero_PathTreeExtensions.html
+++ b/develop/Itinero_PathTreeExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 7 |
Total branches: | 10 |
Branch coverage: | 70% (7 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -142,7 +142,7 @@
| | 96 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Profile.html b/develop/Itinero_Profile.html
index b6722bf6..5be3c15b 100644
--- a/develop/Itinero_Profile.html
+++ b/develop/Itinero_Profile.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -111,7 +111,7 @@
/home/runner/
| | 67 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ProfileCached.html b/develop/Itinero_ProfileCached.html
index 068c2555..b566c0fa 100644
--- a/develop/Itinero_ProfileCached.html
+++ b/develop/Itinero_ProfileCached.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 5 |
Total branches: | 6 |
Branch coverage: | 83.3% (5 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -103,7 +103,7 @@
/home/r
| | 60 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ProfileCostFunction.html b/develop/Itinero_ProfileCostFunction.html
index 3705225e..a2c6680f 100644
--- a/develop/Itinero_ProfileCostFunction.html
+++ b/develop/Itinero_ProfileCostFunction.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 12 |
Total branches: | 14 |
Branch coverage: | 85.7% (12 of 14) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -98,7 +98,7 @@
| | 55 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ProfileCostFunctionCached.html b/develop/Itinero_ProfileCostFunctionCached.html
index 3af86e2d..4f6bded0 100644
--- a/develop/Itinero_ProfileCostFunctionCached.html
+++ b/develop/Itinero_ProfileCostFunctionCached.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 12 |
Total branches: | 24 |
Branch coverage: | 50% (12 of 24) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -133,7 +133,7 @@
| | 90 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ProfileEdgeTypeSetMinimizer.html b/develop/Itinero_ProfileEdgeTypeSetMinimizer.html
index a08604ee..d971ef48 100644
--- a/develop/Itinero_ProfileEdgeTypeSetMinimizer.html
+++ b/develop/Itinero_ProfileEdgeTypeSetMinimizer.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 26 |
Branch coverage: | 0% (0 of 26) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -216,7 +216,7 @@
| | 169 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ProfileExtensions.html b/develop/Itinero_ProfileExtensions.html
index 79229ede..b9ecf9f7 100644
--- a/develop/Itinero_ProfileExtensions.html
+++ b/develop/Itinero_ProfileExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -61,7 +61,7 @@
/ho
| | 19 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_ProfilesEdgeTypeMap.html b/develop/Itinero_ProfilesEdgeTypeMap.html
index 753372dd..ae5a3736 100644
--- a/develop/Itinero_ProfilesEdgeTypeMap.html
+++ b/develop/Itinero_ProfilesEdgeTypeMap.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -94,7 +94,7 @@
| | 50 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RelativeDirection.html b/develop/Itinero_RelativeDirection.html
index ba0d2585..3504b4e1 100644
--- a/develop/Itinero_RelativeDirection.html
+++ b/develop/Itinero_RelativeDirection.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 2) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -59,7 +59,7 @@
| | 17 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RestrictionExtensions.html b/develop/Itinero_RestrictionExtensions.html
index e91809a7..4f802f8f 100644
--- a/develop/Itinero_RestrictionExtensions.html
+++ b/develop/Itinero_RestrictionExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 11 |
Total branches: | 12 |
Branch coverage: | 91.6% (11 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -97,7 +97,7 @@
| | 55 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Result_1.html b/develop/Itinero_Result_1.html
index ea35cdb2..e7ddc805 100644
--- a/develop/Itinero_Result_1.html
+++ b/develop/Itinero_Result_1.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 12 |
Branch coverage: | 16.6% (2 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -193,7 +193,7 @@
/home/runner/work/rout
| | 140 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Route.html b/develop/Itinero_Route.html
index d335ae7c..2c8cbe6d 100644
--- a/develop/Itinero_Route.html
+++ b/develop/Itinero_Route.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 41.6% (25 of 60) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -764,7 +764,7 @@
/home/runner/work
| | 693 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouteBuilder.html b/develop/Itinero_RouteBuilder.html
index 5de60b2d..576deee6 100644
--- a/develop/Itinero_RouteBuilder.html
+++ b/develop/Itinero_RouteBuilder.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 30 |
Total branches: | 34 |
Branch coverage: | 88.2% (30 of 34) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -61,7 +61,7 @@
/h
| | 15 | | public class RouteBuilder : IRouteBuilder |
| | 16 | | { |
| | 17 | | private readonly Func<IEnumerable<(string, string)>, bool, double, RoutingNetworkEdgeEnumerator, IEnumerable<(string |
- | 4 | 18 | | private static readonly ThreadLocal<RouteBuilder> DefaultLazy = new(() => new RouteBuilder()); |
+ | 3 | 18 | | private static readonly ThreadLocal<RouteBuilder> DefaultLazy = new(() => new RouteBuilder()); |
| | 19 | |
|
| | 20 | | /// <summary> |
| | 21 | | /// Gets the default instance (for the local thread). |
@@ -78,10 +78,10 @@ /h
| | 32 | | /// - distance: the length we are travelling on the edge |
| | 33 | | /// - edgeEnumerator: the current edgeEnumerator |
| | 34 | | /// </param> |
- | 3 | 35 | | public RouteBuilder(Func<IEnumerable<(string, string)>, bool, double, RoutingNetworkEdgeEnumerator, IEnumerable<(str |
- | 3 | 36 | | { |
- | 3 | 37 | | _calculateExtraAttributes = calculateExtraAttributes; |
- | 3 | 38 | | } |
+ | 2 | 35 | | public RouteBuilder(Func<IEnumerable<(string, string)>, bool, double, RoutingNetworkEdgeEnumerator, IEnumerable<(str |
+ | 2 | 36 | | { |
+ | 2 | 37 | | _calculateExtraAttributes = calculateExtraAttributes; |
+ | 2 | 38 | | } |
| | 39 | |
|
| | 40 | | /// <inheritdoc /> |
| | 41 | | public Result<Route> Build(RoutingNetwork routingNetwork, Profile profile, Path path) |
@@ -277,7 +277,7 @@ /h
| | 231 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouteEnumerator.html b/develop/Itinero_RouteEnumerator.html
index 5cee3f82..d376405e 100644
--- a/develop/Itinero_RouteEnumerator.html
+++ b/develop/Itinero_RouteEnumerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -740,7 +740,7 @@
/home/runner/work
| | 693 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouteExtensions.2.html b/develop/Itinero_RouteExtensions.2.html
index 471841cf..727d99bd 100644
--- a/develop/Itinero_RouteExtensions.2.html
+++ b/develop/Itinero_RouteExtensions.2.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -258,7 +258,7 @@
| | 214 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouteExtensions.3.html b/develop/Itinero_RouteExtensions.3.html
index 894505b1..206b2a25 100644
--- a/develop/Itinero_RouteExtensions.3.html
+++ b/develop/Itinero_RouteExtensions.3.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 3 |
Total branches: | 104 |
Branch coverage: | 2.8% (3 of 104) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -633,7 +633,7 @@
/home/r
| | 584 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouteExtensions.html b/develop/Itinero_RouteExtensions.html
index af420958..cd2757e0 100644
--- a/develop/Itinero_RouteExtensions.html
+++ b/develop/Itinero_RouteExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -69,7 +69,7 @@
/
| | 27 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutePosition.html b/develop/Itinero_RoutePosition.html
index 81ebc259..60f3df39 100644
--- a/develop/Itinero_RoutePosition.html
+++ b/develop/Itinero_RoutePosition.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 58 |
Branch coverage: | 0% (0 of 58) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -742,7 +742,7 @@
/home/runner/work
| | 693 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Router.html b/develop/Itinero_Router.html
index 2349866c..2f7e0c05 100644
--- a/develop/Itinero_Router.html
+++ b/develop/Itinero_Router.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (12 of 12) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -72,7 +72,7 @@
/home/runner/wo
| | 24 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterDb.html b/develop/Itinero_RouterDb.html
index 5cb76ffe..2e8f91ac 100644
--- a/develop/Itinero_RouterDb.html
+++ b/develop/Itinero_RouterDb.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 12 |
Total branches: | 16 |
Branch coverage: | 75% (12 of 16) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -358,7 +358,7 @@
/home/r
| | 46 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterDbConfiguration.html b/develop/Itinero_RouterDbConfiguration.html
index 8d14d3be..641c45dc 100644
--- a/develop/Itinero_RouterDbConfiguration.html
+++ b/develop/Itinero_RouterDbConfiguration.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (7 of 7) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -92,7 +92,7 @@
/home/r
| | 45 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterDbExtensions.2.html b/develop/Itinero_RouterDbExtensions.2.html
index 3f37f21e..e0547e16 100644
--- a/develop/Itinero_RouterDbExtensions.2.html
+++ b/develop/Itinero_RouterDbExtensions.2.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 6) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -72,7 +72,7 @@
/h
| | 30 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterDbExtensions.3.html b/develop/Itinero_RouterDbExtensions.3.html
index 21c0a35b..016c9a0d 100644
--- a/develop/Itinero_RouterDbExtensions.3.html
+++ b/develop/Itinero_RouterDbExtensions.3.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 4) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -64,7 +64,7 @@
/home/runn
| | 23 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterDbExtensions.html b/develop/Itinero_RouterDbExtensions.html
index 73d8022c..4a8979fa 100644
--- a/develop/Itinero_RouterDbExtensions.html
+++ b/develop/Itinero_RouterDbExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 50 |
Branch coverage: | 0% (0 of 50) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -315,7 +315,7 @@
| | 267 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterDbProfileConfiguration.html b/develop/Itinero_RouterDbProfileConfiguration.html
index 928bdc48..f50042a8 100644
--- a/develop/Itinero_RouterDbProfileConfiguration.html
+++ b/develop/Itinero_RouterDbProfileConfiguration.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 6 |
Branch coverage: | 16.6% (1 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -115,7 +115,7 @@
| | 67 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterDbReadSettings.html b/develop/Itinero_RouterDbReadSettings.html
index 9e8d7cd8..d16f4dcd 100644
--- a/develop/Itinero_RouterDbReadSettings.html
+++ b/develop/Itinero_RouterDbReadSettings.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (2 of 2) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -63,7 +63,7 @@
/home/ru
| | 21 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterExtensions.html b/develop/Itinero_RouterExtensions.html
index 1cd621ef..ebdb97a6 100644
--- a/develop/Itinero_RouterExtensions.html
+++ b/develop/Itinero_RouterExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 26 |
Branch coverage: | 15.3% (4 of 26) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -208,7 +208,7 @@
/home
| | 157 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RouterWeights_1.html b/develop/Itinero_RouterWeights_1.html
index 30b8a701..4f6b7108 100644
--- a/develop/Itinero_RouterWeights_1.html
+++ b/develop/Itinero_RouterWeights_1.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 5) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -67,7 +67,7 @@
/home/r
| | 25 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetwork.html b/develop/Itinero_RoutingNetwork.html
index b225bead..ca1f090d 100644
--- a/develop/Itinero_RoutingNetwork.html
+++ b/develop/Itinero_RoutingNetwork.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 17 |
Total branches: | 28 |
Branch coverage: | 60.7% (17 of 28) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -406,7 +406,7 @@
/
| | 103 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkEdgeEnumerator.html b/develop/Itinero_RoutingNetworkEdgeEnumerator.html
index 71ebf899..3385ce97 100644
--- a/develop/Itinero_RoutingNetworkEdgeEnumerator.html
+++ b/develop/Itinero_RoutingNetworkEdgeEnumerator.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (1 of 1) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -48,7 +48,7 @@
| | 7 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkEdgeEnumeratorExtensions.html b/develop/Itinero_RoutingNetworkEdgeEnumeratorExtensions.html
index 3e588acb..13379c73 100644
--- a/develop/Itinero_RoutingNetworkEdgeEnumeratorExtensions.html
+++ b/develop/Itinero_RoutingNetworkEdgeEnumeratorExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 4 |
Branch coverage: | 100% (4 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -70,7 +70,7 @@
| | 28 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkExtensions.2.html b/develop/Itinero_RoutingNetworkExtensions.2.html
index 5ad7b870..6c122b0a 100644
--- a/develop/Itinero_RoutingNetworkExtensions.2.html
+++ b/develop/Itinero_RoutingNetworkExtensions.2.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -136,7 +136,7 @@
/hom
| | 89 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkExtensions.html b/develop/Itinero_RoutingNetworkExtensions.html
index eae96d66..a3dc6373 100644
--- a/develop/Itinero_RoutingNetworkExtensions.html
+++ b/develop/Itinero_RoutingNetworkExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (9 of 9) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -69,7 +69,7 @@
| | 28 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkIslandManager.html b/develop/Itinero_RoutingNetworkIslandManager.html
index ccac0e17..6f782612 100644
--- a/develop/Itinero_RoutingNetworkIslandManager.html
+++ b/develop/Itinero_RoutingNetworkIslandManager.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 1 |
Total branches: | 8 |
Branch coverage: | 12.5% (1 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -196,7 +196,7 @@
| | 148 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkMutableExtensions.html b/develop/Itinero_RoutingNetworkMutableExtensions.html
index 802780c3..05d8361a 100644
--- a/develop/Itinero_RoutingNetworkMutableExtensions.html
+++ b/develop/Itinero_RoutingNetworkMutableExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -75,7 +75,7 @@
| | 33 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkMutator.html b/develop/Itinero_RoutingNetworkMutator.html
index 83836483..a9f84efc 100644
--- a/develop/Itinero_RoutingNetworkMutator.html
+++ b/develop/Itinero_RoutingNetworkMutator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 32 |
Total branches: | 48 |
Branch coverage: | 66.6% (32 of 48) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -410,7 +410,7 @@
| | 349 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkMutatorEdgeEnumerator.html b/develop/Itinero_RoutingNetworkMutatorEdgeEnumerator.html
index 0e175485..6e509ff2 100644
--- a/develop/Itinero_RoutingNetworkMutatorEdgeEnumerator.html
+++ b/develop/Itinero_RoutingNetworkMutatorEdgeEnumerator.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (1 of 1) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -50,7 +50,7 @@
| | 9 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkMutatorExtensions.html b/develop/Itinero_RoutingNetworkMutatorExtensions.html
index dd6a64bf..6fd07922 100644
--- a/develop/Itinero_RoutingNetworkMutatorExtensions.html
+++ b/develop/Itinero_RoutingNetworkMutatorExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 2 |
Branch coverage: | 0% (0 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -80,7 +80,7 @@
| | 37 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkProfilesConfiguration.html b/develop/Itinero_RoutingNetworkProfilesConfiguration.html
index 13a05f54..c2ba1fb1 100644
--- a/develop/Itinero_RoutingNetworkProfilesConfiguration.html
+++ b/develop/Itinero_RoutingNetworkProfilesConfiguration.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 10 |
Branch coverage: | 0% (0 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -149,7 +149,7 @@
| | 99 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkQuery.html b/develop/Itinero_RoutingNetworkQuery.html
index 65d1eee8..90b73ccb 100644
--- a/develop/Itinero_RoutingNetworkQuery.html
+++ b/develop/Itinero_RoutingNetworkQuery.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 10 |
Branch coverage: | 0% (0 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -74,7 +74,7 @@
/ho
| | 31 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkSerializer.html b/develop/Itinero_RoutingNetworkSerializer.html
index 15bb2cef..12ba712e 100644
--- a/develop/Itinero_RoutingNetworkSerializer.html
+++ b/develop/Itinero_RoutingNetworkSerializer.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 7 |
Total branches: | 8 |
Branch coverage: | 87.5% (7 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -103,7 +103,7 @@
| | 60 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkSnapshotExtensions.html b/develop/Itinero_RoutingNetworkSnapshotExtensions.html
index 2f71c18c..4dc9091e 100644
--- a/develop/Itinero_RoutingNetworkSnapshotExtensions.html
+++ b/develop/Itinero_RoutingNetworkSnapshotExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 13 |
Total branches: | 26 |
Branch coverage: | 50% (13 of 26) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -171,7 +171,7 @@
| | 124 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkVertexEnumerator.html b/develop/Itinero_RoutingNetworkVertexEnumerator.html
index d0ed177a..926a14e9 100644
--- a/develop/Itinero_RoutingNetworkVertexEnumerator.html
+++ b/develop/Itinero_RoutingNetworkVertexEnumerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 10 |
Total branches: | 10 |
Branch coverage: | 100% (10 of 10) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -132,7 +132,7 @@
| | 86 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkWriter.html b/develop/Itinero_RoutingNetworkWriter.html
index 615d7a14..70888133 100644
--- a/develop/Itinero_RoutingNetworkWriter.html
+++ b/develop/Itinero_RoutingNetworkWriter.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 11 |
Total branches: | 20 |
Branch coverage: | 55% (11 of 20) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -194,7 +194,7 @@
| | 145 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingNetworkWriterExtensions.html b/develop/Itinero_RoutingNetworkWriterExtensions.html
index f44a8cbf..e38ca3a5 100644
--- a/develop/Itinero_RoutingNetworkWriterExtensions.html
+++ b/develop/Itinero_RoutingNetworkWriterExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 26 |
Branch coverage: | 0% (0 of 26) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -144,7 +144,7 @@
| | 102 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_RoutingSettings.html b/develop/Itinero_RoutingSettings.html
index 58f0095c..9c477d37 100644
--- a/develop/Itinero_RoutingSettings.html
+++ b/develop/Itinero_RoutingSettings.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (3 of 3) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -68,7 +68,7 @@
/home/
| | 25 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_SnapPoint.html b/develop/Itinero_SnapPoint.html
index f2dd9732..574a2cef 100644
--- a/develop/Itinero_SnapPoint.html
+++ b/develop/Itinero_SnapPoint.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 4 |
Branch coverage: | 0% (0 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -96,7 +96,7 @@
/home/runne
| | 50 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_SnapPointExtensions.2.html b/develop/Itinero_SnapPointExtensions.2.html
index 57c399d4..f0b0ab7e 100644
--- a/develop/Itinero_SnapPointExtensions.2.html
+++ b/develop/Itinero_SnapPointExtensions.2.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (3 of 3) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -57,7 +57,7 @@
| | 16 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_SnapPointExtensions.3.html b/develop/Itinero_SnapPointExtensions.3.html
index e16b4502..66242f45 100644
--- a/develop/Itinero_SnapPointExtensions.3.html
+++ b/develop/Itinero_SnapPointExtensions.3.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 21 |
Total branches: | 44 |
Branch coverage: | 47.7% (21 of 44) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -253,7 +253,7 @@
/
| | 206 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_SnapPointExtensions.html b/develop/Itinero_SnapPointExtensions.html
index 071432cb..5e9361e0 100644
--- a/develop/Itinero_SnapPointExtensions.html
+++ b/develop/Itinero_SnapPointExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 18) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -94,7 +94,7 @@
| | 52 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_Snapper.html b/develop/Itinero_Snapper.html
index 2ee72107..69b0451c 100644
--- a/develop/Itinero_Snapper.html
+++ b/develop/Itinero_Snapper.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 9 |
Total branches: | 80 |
Branch coverage: | 11.2% (9 of 80) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -336,7 +336,7 @@
/home/runner/
| | 285 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_SnapperSettings.html b/develop/Itinero_SnapperSettings.html
index cb0139ef..0922861f 100644
--- a/develop/Itinero_SnapperSettings.html
+++ b/develop/Itinero_SnapperSettings.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (6 of 6) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -83,7 +83,7 @@
/home
| | 37 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_SparseArrayExtensions.html b/develop/Itinero_SparseArrayExtensions.html
index 88b73b78..9c2fd896 100644
--- a/develop/Itinero_SparseArrayExtensions.html
+++ b/develop/Itinero_SparseArrayExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 2 |
Branch coverage: | 100% (2 of 2) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -240,7 +240,7 @@
| | 198 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_SparseArray_1.html b/develop/Itinero_SparseArray_1.html
index f7d64be1..9b37e05d 100644
--- a/develop/Itinero_SparseArray_1.html
+++ b/develop/Itinero_SparseArray_1.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 27 |
Total branches: | 34 |
Branch coverage: | 79.4% (27 of 34) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -249,7 +249,7 @@
| | 198 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_StandaloneNetworkTile.html b/develop/Itinero_StandaloneNetworkTile.html
index 0b901145..efdcf103 100644
--- a/develop/Itinero_StandaloneNetworkTile.html
+++ b/develop/Itinero_StandaloneNetworkTile.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 20 |
Total branches: | 76 |
Branch coverage: | 26.3% (20 of 76) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -568,7 +568,7 @@
| | 100 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_StandaloneNetworkTileExtensions.html b/develop/Itinero_StandaloneNetworkTileExtensions.html
index 08062e76..c58f8bd6 100644
--- a/develop/Itinero_StandaloneNetworkTileExtensions.html
+++ b/develop/Itinero_StandaloneNetworkTileExtensions.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 30 |
Branch coverage: | 0% (0 of 30) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -177,7 +177,7 @@
| | 134 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_StandaloneNetworkTileWriter.html b/develop/Itinero_StandaloneNetworkTileWriter.html
index 7774e165..6909e1e2 100644
--- a/develop/Itinero_StandaloneNetworkTileWriter.html
+++ b/develop/Itinero_StandaloneNetworkTileWriter.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 6 |
Total branches: | 12 |
Branch coverage: | 50% (6 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -241,7 +241,7 @@
| | 187 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_StreamExtensions.2.html b/develop/Itinero_StreamExtensions.2.html
index e40a6e66..811c25c4 100644
--- a/develop/Itinero_StreamExtensions.2.html
+++ b/develop/Itinero_StreamExtensions.2.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 0% (0 of 6) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -58,7 +58,7 @@
| | 16 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_StreamExtensions.html b/develop/Itinero_StreamExtensions.html
index 8f4bcd8b..ee5ddbeb 100644
--- a/develop/Itinero_StreamExtensions.html
+++ b/develop/Itinero_StreamExtensions.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 100% (15 of 15) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -72,7 +72,7 @@
/home/runn
| | 29 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_TileStatic.html b/develop/Itinero_TileStatic.html
index f3974189..54591068 100644
--- a/develop/Itinero_TileStatic.html
+++ b/develop/Itinero_TileStatic.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 6 |
Total branches: | 8 |
Branch coverage: | 75% (6 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -185,7 +185,7 @@
/home/
| | 135 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_TilesVertexEnumerator.html b/develop/Itinero_TilesVertexEnumerator.html
index ac81326b..83a6fcdc 100644
--- a/develop/Itinero_TilesVertexEnumerator.html
+++ b/develop/Itinero_TilesVertexEnumerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 10 |
Total branches: | 12 |
Branch coverage: | 83.3% (10 of 12) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -136,7 +136,7 @@
| | 88 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_TurnCostFactor.html b/develop/Itinero_TurnCostFactor.html
index 09651860..00844fde 100644
--- a/develop/Itinero_TurnCostFactor.html
+++ b/develop/Itinero_TurnCostFactor.html
@@ -24,7 +24,7 @@
< Summary
Line coverage: | 77.7% (7 of 9) |
Covered branches: | 0 |
Total branches: | 0 |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -97,7 +97,7 @@
/home/
| | 51 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_TurnCostFactorCache.html b/develop/Itinero_TurnCostFactorCache.html
index 7d43f84f..68458b85 100644
--- a/develop/Itinero_TurnCostFactorCache.html
+++ b/develop/Itinero_TurnCostFactorCache.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 0 |
Total branches: | 6 |
Branch coverage: | 0% (0 of 6) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -84,7 +84,7 @@
| | 40 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_VertexEdgeEnumerator.html b/develop/Itinero_VertexEdgeEnumerator.html
index 63d66b2d..916487b5 100644
--- a/develop/Itinero_VertexEdgeEnumerator.html
+++ b/develop/Itinero_VertexEdgeEnumerator.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 14 |
Total branches: | 18 |
Branch coverage: | 77.7% (14 of 18) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -200,7 +200,7 @@
| | 137 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_VertexId.html b/develop/Itinero_VertexId.html
index 011e99e8..cf075a1d 100644
--- a/develop/Itinero_VertexId.html
+++ b/develop/Itinero_VertexId.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 2 |
Total branches: | 8 |
Branch coverage: | 25% (2 of 8) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -181,7 +181,7 @@
/home/runner/
| | 126 | | } |
-
+
Methods/Properties
diff --git a/develop/Itinero_VertexSearch.html b/develop/Itinero_VertexSearch.html
index 8abb2c8a..7d37be98 100644
--- a/develop/Itinero_VertexSearch.html
+++ b/develop/Itinero_VertexSearch.html
@@ -25,7 +25,7 @@
< Summary
Covered branches: | 4 |
Total branches: | 4 |
Branch coverage: | 100% (4 of 4) |
---|
-
Tag: | 212_7960533257 |
---|
+
Tag: | 213_7960582184 |
Metrics
@@ -80,7 +80,7 @@
/ho
| | 38 | | } |
-
+
Methods/Properties
diff --git a/develop/index.htm b/develop/index.htm
index e302316e..62fc7139 100644
--- a/develop/index.htm
+++ b/develop/index.htm
@@ -14,7 +14,7 @@
+