[インデックス 17943] ファイルの概要
このコミットは、Go言語の標準ライブラリであるstrconv
パッケージにUnquote
関数の使用例を追加するものです。具体的には、src/pkg/strconv/quote_example_test.go
という新しいテストファイルが追加され、ExampleUnquote
という関数を通じてstrconv.Unquote
の挙動が示されています。
コミット
commit 46d1461ab75d67844ed4292cb7324a23f3a8496a
Author: Shenghou Ma <minux.ma@gmail.com>
Date: Mon Dec 9 23:24:58 2013 -0500
strconv: add example for Unquote.
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/38920043
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/46d1461ab75d67844ed4292cb7324a23f3a8496a
元コミット内容
src/pkg/strconv/quote_example_test.go | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/src/pkg/strconv/quote_example_test.go b/src/pkg/strconv/quote_example_test.go
new file mode 100644
index 0000000000..405a57eb57
--- /dev/null
+++ b/src/pkg/strconv/quote_example_test.go
@@ -0,0 +1,35 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package strconv_test
+
+import (
+ "fmt"
+ "strconv"
+)
+
+func ExampleUnquote() {
+ test := func(s string) {
+ t, err := strconv.Unquote(s)
+ if err != nil {
+ fmt.Printf("Unquote(%#v): %v\n", s, err)
+ } else {
+ fmt.Printf("Unquote(%#v) = %v\n", s, t)
+ }
+ }
+
+ s := `cafe\u0301`
+ // If the string doesn't have quotes, it can't be unquoted.
+ test(s) // invalid syntax
+ test("`" + s + "`")
+ test(`"` + s + `"`)
+
+ test(`'\u00e9'`)
+
+ // Output:
+ // Unquote("cafe\\u0301"): invalid syntax
+ // Unquote("`cafe\\u0301`") = cafe\u0301
+ // Unquote("\"cafe\\u0301\"") = café
+ // Unquote("'\\u00e9'") = é
+}
変更の背景
Go言語の標準ライブラリは、その機能の利用方法を明確に示すために、Example
関数を用いたコード例を豊富に提供しています。これらのExample
関数は、go doc
コマンドでドキュメントとして表示されるだけでなく、go test
コマンド実行時に実際にテストとして実行され、その出力が期待される出力と一致するかどうかが検証されます。これにより、ドキュメントの正確性とコードの動作の一貫性が保証されます。
strconv.Unquote
関数は、Goの文字列リテラル(シングルクォート、ダブルクォート、バッククォートで囲まれた文字列)を解釈し、その中のエスケープシーケンスを処理して、実際の文字列値を返す重要な関数です。しかし、このコミットが作成された時点では、Unquote
関数の公式な使用例が提供されていませんでした。そのため、開発者がこの関数の挙動、特にエスケープシーケンスの処理やエラーケースについて理解を深めるための具体的なコード例が必要とされていました。
このコミットは、strconv.Unquote
関数の利用方法を明確にし、開発者がより簡単にこの関数を理解し、適切に使用できるようにするために、公式のExample
関数を追加することを目的としています。
前提知識の解説
Go言語のstrconv
パッケージ
strconv
パッケージは、Go言語の標準ライブラリの一部であり、基本的なデータ型(整数、浮動小数点数、ブール値など)と文字列表現との間の変換機能を提供します。例えば、Atoi
(文字列から整数へ)、Itoa
(整数から文字列へ)、ParseBool
(文字列からブール値へ)、FormatFloat
(浮動小数点数から文字列へ)などの関数が含まれています。このパッケージは、特にユーザー入力の処理、外部データソースからのデータの読み込み、テキストベースのデータ処理において不可欠です。
strconv.Unquote
関数
strconv.Unquote(s string) (string, error)
関数は、Goの文字列リテラルとして表現された文字列s
を解釈し、その引用符を取り除き、内部のエスケープシーケンスを実際の文字に変換した結果の文字列と、エラーを返します。
- 入力:
s
は、Goの文字列リテラルとして有効な形式である必要があります。これは、ダブルクォート ("
), シングルクォート ('
), またはバッククォート (`
) で囲まれている必要があります。 - エスケープシーケンス:
\n
(改行),\t
(タブ),\\
(バックスラッシュ),\"
(ダブルクォート),\'
(シングルクォート) などの一般的なエスケープシーケンスに加え、\xXX
(16進数エスケープ),\uXXXX
(Unicodeコードポイントエスケープ),\UXXXXXXXX
(拡張Unicodeコードポイントエスケープ) なども処理されます。 - シングルクォート: シングルクォートで囲まれた文字列は、Goの文字リテラルとして扱われ、対応する1文字の文字列が返されます。
- バッククォート: バッククォートで囲まれた文字列(Raw String Literal)は、エスケープシーケンスを処理しません。つまり、バッククォート内のバックスラッシュは文字通りのバックスラッシュとして扱われます。
- エラー:
s
が有効なGoの文字列リテラルでない場合(例: 引用符で囲まれていない、不正なエスケープシーケンスが含まれる)、エラーが返されます。
Go言語のExample
関数
Go言語では、_test.go
ファイル内にExample
というプレフィックスを持つ関数を定義することで、コードの使用例を記述できます。これらの関数は、通常のテスト関数と同様にgo test
コマンドによって実行されます。
- 命名規則:
ExampleFunctionName
のように、Example
の後にテスト対象の関数名や型名を続けます。パッケージ全体や特定の機能の例を示す場合は、Example_FeatureName
のようにアンダースコアを挟むこともできます。 - 出力検証:
Example
関数の内部でfmt.Print
やfmt.Println
などを用いて標準出力に出力された内容は、関数の末尾に記述された// Output:
コメントの後に続くテキストと比較されます。両者が一致すればテストは成功し、一致しなければ失敗します。これにより、コード例が常に最新かつ正確であることが保証されます。 - ドキュメント生成:
Example
関数は、go doc
コマンドによって生成されるドキュメントにも含まれます。これにより、開発者はコードの利用方法を簡単に参照できます。
Unicodeエスケープシーケンス (\uXXXX
)
\uXXXX
は、Unicode文字をその16進数コードポイントで表現するためのエスケープシーケンスです。XXXX
の部分には4桁の16進数が入り、対応するUnicode文字を表します。例えば、\u00e9
はラテン語の小文字「e」にアキュートアクセントが付いた文字「é」を表します。これは、ソースコード内で直接Unicode文字を記述できない場合や、特定の文字を明示的に表現したい場合に便利です。
fmt.Printf
の%#v
フォーマット動詞
fmt
パッケージはGo言語のフォーマットI/O機能を提供します。fmt.Printf
関数は、C言語のprintf
に似た書式指定文字列を使用して出力のフォーマットを制御します。
%v
は、値のデフォルト表現を出力するためのフォーマット動詞です。
%#v
は、%v
に#
フラグを付けたもので、値のGo言語の構文表現を出力します。これは、デバッグ時に変数の内容をGoのコードとして再構築できる形式で表示するのに非常に役立ちます。例えば、文字列の場合、引用符で囲まれ、エスケープシーケンスが適切に処理された形式で表示されます。
技術的詳細
このコミットで追加されたExampleUnquote
関数は、strconv.Unquote
関数の様々な使用シナリオを網羅しています。
-
test
ヘルパー関数:test
という匿名関数が定義されており、これは与えられた文字列s
に対してstrconv.Unquote
を呼び出し、その結果(成功した場合はアンクォートされた文字列、失敗した場合はエラーメッセージ)をfmt.Printf
で標準出力に出力します。fmt.Printf("Unquote(%#v): %v\n", s, err)
およびfmt.Printf("Unquote(%#v) = %v\n", s, t)
という行に注目してください。ここで%#v
フォーマット動詞が使用されています。これにより、Unquote
に渡された元の文字列s
がGoの文字列リテラルとして(つまり、引用符で囲まれ、エスケープシーケンスが適切に表現された形で)出力されます。これは、入力がどのような形式であったかを明確に示し、デバッグやドキュメントとして非常に有用です。 -
引用符なしの文字列:
s :=
cafe\u0301``という文字列が定義されています。この文字列は引用符で囲まれていないため、strconv.Unquote
はこれを有効なGo文字列リテラルとして解釈できず、invalid syntax
エラーを返します。これは、Unquote
関数が引用符で囲まれた文字列のみを処理するという重要な制約を示しています。 -
バッククォートで囲まれた文字列:
test("
" + s + "")
では、元の文字列s
をバッククォートで囲んでいます。バッククォート文字列はRaw String Literalであり、内部のエスケープシーケンス(この場合は\u0301
)は文字通りに解釈され、エスケープ解除されません。したがって、出力はcafe\u0301
となります。これは、バッククォート文字列の特性を明確に示しています。 -
ダブルクォートで囲まれた文字列:
test(
"+ s +
")
では、元の文字列s
をダブルクォートで囲んでいます。ダブルクォート文字列ではエスケープシーケンスが処理されます。\u0301
はUnicodeの結合文字(Combining Acute Accent)であり、前の文字e
と結合してé
を形成します。したがって、出力はcafé
となります。これは、Unquote
がUnicodeエスケープシーケンスを正しく処理することを示しています。 -
シングルクォートで囲まれた文字列:
test(
'\u00e9')
では、シングルクォートで囲まれた文字列がテストされています。Goではシングルクォートは文字リテラルを表しますが、strconv.Unquote
はこれを1文字の文字列リテラルとして解釈します。\u00e9
はUnicodeの「é」を表すため、出力はé
となります。
これらのテストケースは、strconv.Unquote
がどのように異なる種類の引用符(バッククォート、ダブルクォート、シングルクォート)を処理し、特にUnicodeエスケープシーケンスを含む文字列をどのようにアンクォートするかを包括的に示しています。また、引用符がない場合のinvalid syntax
エラーも示されており、関数の期待される入力形式が明確にされています。
コアとなるコードの変更箇所
このコミットによる変更は、src/pkg/strconv/quote_example_test.go
という新しいファイルの追加のみです。既存のコードの変更はありません。
--- /dev/null
+++ b/src/pkg/strconv/quote_example_test.go
@@ -0,0 +1,35 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package strconv_test
+
+import (
+ "fmt"
+ "strconv"
+)
+
+func ExampleUnquote() {
+ test := func(s string) {
+ t, err := strconv.Unquote(s)
+ if err != nil {
+ fmt.Printf("Unquote(%#v): %v\n", s, err)
+ } else {
+ fmt.Printf("Unquote(%#v) = %v\n", s, t)
+ }
+ }
+
+ s := `cafe\u0301`
+ // If the string doesn't have quotes, it can't be unquoted.
+ test(s) // invalid syntax
+ test("`" + s + "`")
+ test(`"` + s + `"`)
+
+ test(`'\u00e9'`)
+
+ // Output:
+ // Unquote("cafe\\u0301"): invalid syntax
+ // Unquote("`cafe\\u0301`") = cafe\u0301
+ // Unquote("\"cafe\\u0301\"") = café
+ // Unquote("'\\u00e9'") = é
+}
コアとなるコードの解説
追加されたquote_example_test.go
ファイルは、strconv
パッケージのテストスイートの一部として機能します。package strconv_test
という宣言は、このファイルがstrconv
パッケージの外部からテストを行うことを示しており、これによりエクスポートされた関数のみがテスト対象となります。
ExampleUnquote()
関数は、GoのExample
関数の規約に従って記述されています。この関数は、strconv.Unquote
の様々な入力パターンとそれに対応する出力を示しています。
-
test
関数: この内部関数は、strconv.Unquote
の呼び出しをラップし、エラーが発生したかどうかに応じて異なるフォーマットで結果を出力します。fmt.Printf("Unquote(%#v): %v\n", s, err)
: エラーが発生した場合、元の入力文字列s
をGoの構文表現(%#v
)で表示し、その後にエラーメッセージを表示します。fmt.Printf("Unquote(%#v) = %v\n", s, t)
: 成功した場合、元の入力文字列s
をGoの構文表現で表示し、その後にアンクォートされた結果の文字列t
を表示します。 -
テストケース:
s :=
cafe\u0301``: 引用符で囲まれていない文字列。Unquote
はエラーを返すことを期待されます。test(s)
: 上記の引用符なし文字列をテスト。test("
" + s + "")
: バッククォートで囲まれた文字列。エスケープシーケンスは処理されず、そのままの文字列が返されることを期待されます。test(
"+ s +
")
: ダブルクォートで囲まれた文字列。Unicodeエスケープシーケンス\u0301
が処理され、結合文字として前の文字と結合されることを期待されます。test(
'\u00e9')
: シングルクォートで囲まれた文字列。Unicodeエスケープシーケンス\u00e9
が処理され、文字「é」が返されることを期待されます。
-
// Output:
コメント: この特別なコメントブロックは、ExampleUnquote
関数が標準出力に出力する内容を正確に定義しています。go test
コマンドは、このコメントの内容と実際の関数の出力を比較し、一致すればテストをパスとします。これにより、ドキュメントとしての正確性と、コードの動作の検証が同時に行われます。
このコードは、strconv.Unquote
の機能と、GoのExample
関数を用いたドキュメンテーションとテストのベストプラクティスを簡潔かつ効果的に示しています。
関連リンク
- Go言語の
strconv
パッケージ公式ドキュメント: https://pkg.go.dev/strconv - Go言語の
Example
関数に関する公式ドキュメント(Testing Go Code - Examplesセクション): https://go.dev/blog/testing-with-go#TOC_4. - Unicodeエスケープシーケンスに関する一般的な情報: https://en.wikipedia.org/wiki/Unicode_escape_sequence
参考にした情報源リンク
- Go言語の
strconv.Unquote
に関するStack Overflowの議論: https://stackoverflow.com/questions/tagged/go+strconv.unquote fmt.Printf
のフォーマット動詞に関するGo公式ドキュメント: https://pkg.go.dev/fmt- Go言語のテストに関するブログ記事(Example関数を含む): https://go.dev/blog/testing-with-go
- Go言語の文字列リテラルに関する情報: https://go.dev/ref/spec#String_literals
fmt.Printf
の%#v
に関する解説記事: [https://medium.com/@vickylance/go-fmt-printf-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-