Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 10241] ファイルの概要

このコミットは、Go言語の encoding/gob パッケージにおける型登録のバグ修正に関するものです。具体的には、同じ型が複数回登録された際に発生する不整合を解消し、gobエンコーディング/デコーディングの堅牢性を向上させています。RegisterName 関数における型の比較ロジックが修正され、ユーザーが指定した型(user type)に基づいて重複チェックが行われるようになりました。

コミット

commit 88cf76a9b37992c65b916060ca44c87f3a9bde5e
Author: Rob Pike <r@golang.org>
Date:   Thu Nov 3 18:05:14 2011 -0700

    gob: fix bug when registering the same type multiple times
    Need to compare user type, not base type.
    
    R=golang-dev, dsymonds, r
    CC=golang-dev
    https://golang.org/cl/5340041

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/88cf76a9b37992c65b916060ca44c87f3a9bde5e

元コミット内容

このコミットは、encoding/gob パッケージにおいて、同じ型を複数回登録する際のバグを修正することを目的としています。以前の実装では、型の比較に「基底型(base type)」が使用されていましたが、これにより意図しない重複登録の検出漏れや誤検出が発生する可能性がありました。修正の核心は、型の比較を「ユーザー型(user type)」に基づいて行うように変更することです。これにより、より正確な型の一意性チェックが可能となり、gobの型登録メカニズムがより堅牢になります。

変更の背景

encoding/gob パッケージは、Goのデータ構造をシリアライズおよびデシリアライズするためのGo固有のエンコーディング形式を提供します。gobがインターフェース値や特定のマップ型を正しくエンコード/デコードするためには、具体的な型を gob.Register() または gob.RegisterName() を使って登録する必要があります。この登録プロセスは、型名と reflect.Type の間に一対一のマッピングを作成し、デコード時に正しい具体的な型を再構築できるようにします。

しかし、以前の実装では、RegisterName 関数内で型の重複チェックを行う際に、reflect.TypeOf(value).base を使用していました。ここでいう base 型とは、ポインタやスライスなどの間接参照を剥がした、その型の最も基本的な要素型を指します。例えば、*MyStructMyStruct は異なる型ですが、その base 型はどちらも MyStruct になります。

この base 型での比較が問題でした。ユーザーが *MyStructMyStruct を異なる名前で登録しようとした場合、base 型が同じであるため、gob はこれらを同じ型として扱い、重複登録エラーを引き起こす可能性がありました。逆に、異なるユーザー型がたまたま同じ base 型を持つ場合(例えば、異なるパッケージで定義された同じ構造体名を持つ型など)、それらが異なる型であるにもかかわらず、base 型の比較では区別できず、誤って同じ型として扱われる可能性がありました。

このバグは、特に同じ型を複数回登録することが許容されるべきシナリオ(例えば、テストコードで同じ型を複数回登録して動作を確認する場合など)で問題を引き起こしていました。コミットメッセージにある「Need to compare user type, not base type.」という記述は、この問題の核心を突いています。つまり、ユーザーが登録しようとしている「そのままの型」(user type)を比較することで、より正確な重複チェックを実現する必要があったのです。

前提知識の解説

encoding/gob パッケージ

encoding/gob は、Go言語のデータ構造をバイナリ形式でエンコード(シリアライズ)およびデコード(デシリアライズ)するためのパッケージです。Goプログラム間でデータを効率的にやり取りするために設計されており、特にRPC(Remote Procedure Call)などで利用されます。

gobの主な特徴は以下の通りです。

  • 自己記述的: gobストリームは、データだけでなく、そのデータの型情報も含まれています。これにより、受信側は事前に型を知らなくてもデータをデコードできます。
  • 型登録: インターフェース型を介して具体的な型をエンコード/デコードする場合や、map[string]interface{} のように値の型が動的に変わる可能性がある場合、gob.Register() または gob.RegisterName() を使用して、その具体的な型を gob に登録する必要があります。これにより、gobはデコード時に正しい具体的な型をインスタンス化できます。
  • Go固有: gobはGoの型システムに密接に結びついており、Goプログラム間での通信に最適化されています。他の言語との相互運用性には適していません。

reflect パッケージ

Go言語の reflect パッケージは、実行時にプログラムの構造を検査・操作するための機能を提供します。これにより、型情報(reflect.Type)や値情報(reflect.Value)を動的に取得し、操作することが可能になります。

  • reflect.Type: Goの型のメタデータを表します。型の名前、カテゴリ(構造体、ポインタ、スライスなど)、フィールド情報、メソッド情報などを取得できます。
  • reflect.TypeOf(i interface{}) reflect.Type: 任意のGoの値 i を引数に取り、その値の動的な型を表す reflect.Type を返します。
  • reflect.Value: Goの値そのものを表します。値の取得、設定、メソッドの呼び出しなどを行うことができます。

gobにおける「ユーザー型(user type)」と「基底型(base type)」

encoding/gob パッケージの内部では、型の扱いにおいて「ユーザー型」と「基底型」という概念が区別されることがあります。

  • ユーザー型 (user type): gob.Register()gob.RegisterName() に渡される interface{} の値から reflect.TypeOf() で取得される、ユーザーが意図したそのままの型を指します。例えば、*MyStruct を登録しようとした場合、ユーザー型は *MyStruct となります。
  • 基底型 (base type): ポインタ、スライス、配列などの間接参照を再帰的に辿っていった結果、最終的に到達する最も基本的な要素型を指します。例えば、**[]*MyStruct の基底型は MyStruct となります。gobの内部処理では、エンコード/デコードの効率化や、型の構造をフラット化するために基底型が利用されることがあります。

このコミットのバグは、RegisterName 関数が重複チェックを行う際に、ユーザーが登録しようとした「ユーザー型」ではなく、その「基底型」を比較していたことに起因します。これにより、*MyStructMyStruct のように、ユーザー型としては異なるが基底型が同じである場合に、誤った重複判定が行われていました。

技術的詳細

このコミットの技術的な核心は、src/pkg/encoding/gob/type.go 内の RegisterName 関数の修正にあります。

RegisterName 関数は、特定の名前とGoの型を関連付けて gob の内部レジストリに登録するために使用されます。この関数は、同じ名前で異なる型が登録されたり、同じ型に異なる名前が登録されたりするのを防ぐための重複チェックロジックを含んでいます。

修正前のコードでは、この重複チェックにおいて userType(reflect.TypeOf(value)).base を使用していました。

// 修正前
base := userType(reflect.TypeOf(value)).base
// Check for incompatible duplicates.
if t, ok := nameToConcreteType[name]; ok && t != base { // ここでbaseと比較
    panic("gob: registering duplicate types for " + name)
}
if n, ok := concreteTypeToName[base]; ok && n != name { // ここでもbaseと比較
    panic("gob: registering duplicate names for " + base.String())
}
// ...
concreteTypeToName[base] = name // ここでもbaseを使用

ここで userType は、reflect.Type から gob 内部で利用する型情報を抽出するヘルパー関数です。その結果として得られる構造体には user フィールド(元のユーザー型)と base フィールド(基底型)が含まれています。

問題は、nameToConcreteType マップが名前と具体的な型(reflect.Type)を関連付け、concreteTypeToName マップが基底型と名前を関連付けていた点です。

  1. nameToConcreteType[name] のチェック:

    • nameToConcreteType に既に name が登録されており、その登録されている型 t が、今回登録しようとしている値の base 型と異なる場合にパニックを起こしていました。しかし、nameToConcreteType にはユーザー型が格納されているため、base 型と比較するのは不適切でした。treflect.TypeOf(value) の結果(ユーザー型)と一致すべきです。
  2. concreteTypeToName[base] のチェック:

    • concreteTypeToName に既に base 型が登録されており、その登録されている名前 n が、今回登録しようとしている名前 name と異なる場合にパニックを起こしていました。これは、同じ基底型に対して異なる名前が登録されることを防ぐためのチェックですが、gob の設計思想としては、同じユーザー型に対しては同じ名前が使われるべきであり、異なるユーザー型であれば基底型が同じでも異なる名前で登録できるべきです。

このコミットでは、これらの比較ロジックを ut.user (ユーザー型) に基づいて行うように変更しました。

// 修正後
ut := userType(reflect.TypeOf(value)) // userTypeの結果をutに格納
// Check for incompatible duplicates. The name must refer to the
// same user type, and vice versa.
if t, ok := nameToConcreteType[name]; ok && t != ut.user { // ut.userと比較
    panic(fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", name, t, ut.user))
}
if n, ok := concreteTypeToName[ut.base]; ok && n != name { // ut.baseと比較 (ここは変わらず)
    panic(fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", ut.user, n, name))
}
// Store the name and type provided by the user....
nameToConcreteType[name] = reflect.TypeOf(value) // ここは変わらず
// but the flattened type in the type table, since that's what decode needs.
concreteTypeToName[ut.base] = name // ut.baseを使用

変更点:

  • userType(reflect.TypeOf(value)) の結果を ut という変数に格納し、ut.userut.base を明示的に使用するようにしました。
  • nameToConcreteType[name] の重複チェックにおいて、t != base ではなく t != ut.user と比較するように変更しました。これにより、登録されている名前が指す型が、今回登録しようとしている「ユーザー型」と完全に一致するかどうかを厳密にチェックします。
  • concreteTypeToName[ut.base] の重複チェックは、引き続き ut.base を使用していますが、パニックメッセージがより詳細になり、ut.user の情報も含まれるようになりました。これは、同じ基底型に対して異なる名前が登録された場合のチェックであり、gobの内部的な整合性を保つために必要です。
  • concreteTypeToName マップへの格納も ut.base を使用しています。これは、デコード時に必要な「フラット化された型」を型テーブルに格納するためです。

この修正により、gob.RegisterName は、ユーザーが意図した通りの型(ポインタの有無なども含めて)に基づいて重複を正確に判定できるようになり、gobの型登録メカニズムがより堅牢になりました。テストケース TestRegistration が追加され、同じ型を複数回登録しても問題ないことが確認されています。

コアとなるコードの変更箇所

diff --git a/src/pkg/encoding/gob/type.go b/src/pkg/encoding/gob/type.go
index c3bc7c7ffc..3b862e690e 100644
--- a/src/pkg/encoding/gob/type.go
+++ b/src/pkg/encoding/gob/type.go
@@ -703,18 +703,19 @@ func RegisterName(name string, value interface{}) {
 		// reserved for nil
 		panic("attempt to register empty name")
 	}
-	base := userType(reflect.TypeOf(value)).base
-	// Check for incompatible duplicates.
-	if t, ok := nameToConcreteType[name]; ok && t != base {
-		panic("gob: registering duplicate types for " + name)
+	ut := userType(reflect.TypeOf(value))
+	// Check for incompatible duplicates. The name must refer to the
+	// same user type, and vice versa.
+	if t, ok := nameToConcreteType[name]; ok && t != ut.user {
+		panic(fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", name, t, ut.user))
 	}
-	if n, ok := concreteTypeToName[base]; ok && n != name {
-		panic("gob: registering duplicate names for " + base.String())
+	if n, ok := concreteTypeToName[ut.base]; ok && n != name {
+		panic(fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", ut.user, n, name))
 	}
 	// Store the name and type provided by the user....
 	nameToConcreteType[name] = reflect.TypeOf(value)
 	// but the flattened type in the type table, since that's what decode needs.
-	concreteTypeToName[base] = name
+	concreteTypeToName[ut.base] = name
 }
 
 // Register records a type, identified by a value for that type, under its
diff --git a/src/pkg/encoding/gob/type_test.go b/src/pkg/encoding/gob/type_test.go
index a6ac9c4201..42bdb4cf7b 100644
--- a/src/pkg/encoding/gob/type_test.go
+++ b/src/pkg/encoding/gob/type_test.go
@@ -151,3 +151,11 @@ func TestStructType(t *testing.T) {
 		t.Errorf("struct printed as %q; expected %q", str, expected)
 	}
 }
+
+// Should be OK to register the same type multiple times, as long as they're
+// at the same level of indirection.
+func TestRegistration(t *testing.T) {
+	type T struct{ a int }
+	Register(new(T))
+	Register(new(T))
+}

コアとなるコードの解説

src/pkg/encoding/gob/type.go の変更

  • 旧コード:
    base := userType(reflect.TypeOf(value)).base
    // Check for incompatible duplicates.
    if t, ok := nameToConcreteType[name]; ok && t != base {
        panic("gob: registering duplicate types for " + name)
    }
    if n, ok := concreteTypeToName[base]; ok && n != name {
        panic("gob: registering duplicate names for " + base.String())
    }
    // ...
    concreteTypeToName[base] = name
    
  • 新コード:
    ut := userType(reflect.TypeOf(value))
    // Check for incompatible duplicates. The name must refer to the
    // same user type, and vice versa.
    if t, ok := nameToConcreteType[name]; ok && t != ut.user {
        panic(fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", name, t, ut.user))
    }
    if n, ok := concreteTypeToName[ut.base]; ok && n != name {
        panic(fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", ut.user, n, name))
    }
    // ...
    concreteTypeToName[ut.base] = name
    

この変更のポイントは、userType(reflect.TypeOf(value)) の結果を ut という変数に格納し、その ut.user フィールド(ユーザーが指定したそのままの型)と ut.base フィールド(基底型)を適切に使い分けるようにした点です。

  1. ut := userType(reflect.TypeOf(value)):

    • reflect.TypeOf(value) は、RegisterName に渡された value の動的な型(reflect.Type)を取得します。
    • userType 関数は、この reflect.Typegob 内部で扱いやすい形式に変換し、元のユーザー型 (ut.user) とその基底型 (ut.base) を抽出します。
  2. if t, ok := nameToConcreteType[name]; ok && t != ut.user { ... }:

    • nameToConcreteType マップは、登録された名前と、それに対応する具体的な型(reflect.Type、つまりユーザー型)を保持しています。
    • この行では、もし既に name が登録されており、その登録されている型 t が、今回登録しようとしている ut.user(ユーザー型)と異なる場合、重複登録としてパニックを発生させます。
    • 修正前は t != base と比較していたため、*MyStructMyStruct のようにユーザー型は異なるが基底型が同じである場合に、誤って重複と判定されていました。 ut.user と比較することで、ユーザーが意図した通りの型の一意性を正確にチェックできるようになりました。
    • パニックメッセージも fmt.Sprintf を使用して、どの型が重複しているのかをより詳細に表示するように改善されています。
  3. if n, ok := concreteTypeToName[ut.base]; ok && n != name { ... }:

    • concreteTypeToName マップは、基底型と、それに対応する名前を保持しています。
    • この行では、もし既に ut.base(基底型)が登録されており、その登録されている名前 n が、今回登録しようとしている name と異なる場合、パニックを発生させます。
    • このチェックは、gobの内部的な整合性を保つために、同じ基底型に対して異なる名前が登録されることを防ぐものです。ここでの比較は引き続き ut.base で行われますが、パニックメッセージがより詳細になり、ut.user の情報も含まれるようになりました。
  4. concreteTypeToName[ut.base] = name:

    • concreteTypeToName マップへの格納も、引き続き ut.base をキーとして使用しています。これは、gobがデコード時に内部的に利用する「フラット化された型」のテーブルに名前を関連付けるためです。

src/pkg/encoding/gob/type_test.go の変更

  • 新しく追加されたテストケース:
    // Should be OK to register the same type multiple times, as long as they're
    // at the same level of indirection.
    func TestRegistration(t *testing.T) {
        type T struct{ a int }
        Register(new(T))
        Register(new(T))
    }
    
  • このテストは、Register 関数(RegisterName と同様に型登録を行う関数)に対して、同じ型 T を複数回登録してもパニックが発生しないことを確認しています。
  • 修正前のコードでは、このようなシナリオで重複登録エラーが発生する可能性がありましたが、今回の修正により、同じ型であれば複数回登録しても問題なく動作するようになりました。これは、gobの型登録が冪等性を持つべきであるという設計意図に合致しています。

これらの変更により、gobの型登録メカニズムはより正確で堅牢になり、開発者が意図しない重複登録エラーに遭遇する可能性が低減されました。

関連リンク

参考にした情報源リンク

  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGd-REijTv3MNene78umiT2CAauzoLQewmg38TejTEKvSIaXknCSy0cRl7kPEY9rmzabXy_NC-bzBFlSCIBvdyer25dmWfdASDZedGaipzcv69g-VbbSqMtPCTi9posSw-XeeQlFNsd2A4Wk97kJEhxhrOYHrBpG-JhiwFu4MqvUS0cNZTdoRx1KqpzR2kTrkY=
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQFr36mV0tTHG6hfiQIWjgUEDIOmg6Ibs7UZZ7Uz8-4k7p4kaxInDk3GTGJPsL35xpR6C6dazU55SJ-wR5FRt2cfvNKVtF6eDKdZDGX1Au_uaiwbMLr8PiMXaFxsxDtxivVgj-DDQ1VfVQtLVy2wqMJThnopPLV8uwNCObFKHwOAyR2p_cvdVywhl4ynb9ijBgW0bofcTZvL4yo=
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEUWUVRb6hk-m5Z9m5Uk4ClKdJRtHdc7ea6P3hRsCfb17NVFm3jnm3n-J1LErEiUyYJoNEpxFFLBuOuuHUpnqul7brv9ezZu7apEP2HCNBRMxxdptxIwcEZeae4oa_beD-MrcoIIEmUTjD4drrItv_7mTw4CkrUfazJ0ahiNYu4P-OQJMx9hQjb1ySQy0uGgLwnU23Dokjw2H6QEXUOGciRn_TkJS7QuhNuhaxp_cccQWMwO_EyjXtfyM635QZ
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHy280jOlrecV2kD2ocTjUvKpxHlNjHikDlow95nFrqWWeMCJiV8ERsmea9l9m4ELihelXeFU-bW7012nclvroI7zDB61_gRgvJcfeARUqsCUrCbJPZnRC5XJOd8hsbOdzzQ3akk1azEm_SKx41bQ==
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG2iSnqrDIH68hhCop9vLS5bXft8B350nSfxgLrmsnyVQ-kh0BFHhqeFTKzCySgSG1l_IgrXir8S4oudgi9KddYdPb-GUA86h2h1ZWxfFJb6H0PhU-ypFifUBkTo-g3iehS9Is-7sSlXMtX6KYOX1Hp6Q8aeZ2ec5u7LRIn_Eonm9mMOMdqiU5uAiab_58kStV0HYQyPMY6kL8fQC0TdG6O3Bf-IdOplceLOd-1hNoTDZeTAujNZ07V8qwmxJAkboAPynh2F5FUu_sH
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGGCrTLWLPKm3WymsmSCfE-Tb7vQNrh-6qX9uhH7Mc2Ppf23ZiS5yzgfeI5l6WQ__ngCyfOF7uZSatYm0gAI00JIWGrmjhcxwVqvutD5P_Dn3ZwE-EOL-eR3nmTem_oC3u7Edj7P85k7ilX6r1RVo4mHy8aBR9KhHqcDd0PkMjabFh8xUqwsQvuS2SyC-bM3zYQY-FLgDMCLQ==
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEc0OOlOK53m8AXaoPwu1cj4ft9tmFk-9CAOigXchShO8IDbVkRuIxjX9dhCKeTKDK3qlBV209MSG4r0gCrfmO-jMY-QdOqa0_L4j0O3GCEVt8IOQwFA18YHc7eq9aszqKlX_0tOLw==
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE8pZUwCN9E_TnhbYrKFYr9XtqaJ-XLA4Wcaoius1Gn8esnIu-mwmpyHap8GonUKVG1hTn8WQ-rxYsRGOAO2FMSAGtnhn6B9HLnuCzGSNj8Zg9kVMizE27lDNfh_W0SetibDzbmpTnkdd0l5d5QuaTcxaZNsrGvKX18pJpxJ2k1YzsuTIjtc-5LHogsBnmMsEFKIi9hddE=
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGaCq7cuWm5FdZuHsOpGZMy6AAwxYM52IWZjel3WtZs4UbcSxgr_mgQN-7h9PYoqspZTR5AWCHSuvMusBmq4fITvxmvhy2eVVqfj85eLxBsR8BSOJsfCvd_81qIiGKAvOMZZyWT
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEPRL0ySLdmEeVccz2GkZHz00tA8Y9ieTq6NCnu7F5nKjz090DXCg9AH2xdvvF5GX3_PX9raMjs5ZyEw_bFelvY3bUrOshAwdOaN9wCt7LjZ3zcEGIXpjWdQPiqOM-hdOIvoA7qdKWUDLB5I102JHFLfE2_Huhthay-cT140Q==
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGeOhO175YcMY-M-W0e71C3c7KocUFW9ROcmwN9xkJsdbVlDcvdciwZkyEJlG7NNaq9lFLcGBGsWzGZrAV9Bnm2Rd43TB07sv7IUu7eFshb7vl-KTZR6FF-O6Y=
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGo45NOvGQc_tafgKW5DCGUPlK0GT2QUbEqVCCIQXz4b4bTms5HkBC_Jusgh2Q7gu8oLciIvt2VJdH1RwVRs09siNMyrM0MUuy4Y1msXoYtkpA8pqBaG_MG4lWchtvgB76waMkn9L9Oy1ptYERoTeJWPzZDNtqOGBvw3coIrI0rlqHZjP82SxF6nFG4mVGwdfkgwa2GNfe2wDA=
  • https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGTdH-fZg5cwyKYGJTY1DFxjc_cU9cZpRi0_iJ0VcPdz1VsW6hWj92uKxTaOOvw3Dc7RagrAdPuPjPaiV-FtrBfCJsNoWeBs36Cs0WyYEcSJVNjp75xD8HG838nNSGt-gMFzhVQh-xpepDXjt2tfOiKm-SWbpA2uJsfyVul4ZHvSvC74KCdB6xHCgzdAL__hX7j1Xb9GOx6zCmuR1uk2o6tt1t7RMp_DtpTkiJua2yeStxjvPG8Da-_yyhI0o2i
  • [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE4jAxK5u_AoL58r4FGE5MeJ-A9kzzgUlhLVza4AHl_CMv6tRAGckKYMTjXiIvoL1NB3VP6psB1iEeFmXtn1A5FbQRjsqaJglm5F10uVKOrN4zbV40j-VesT_Q-bi1NWL-ljcTqPOtl7SRLFuKqEr_r9QsMbkNZCapaVG9oaPyXbuN3MPTFzoVqs_VViUwwq9jB4fOfLL0=](https://vertexaisearch.cloud.google.google.com/grounding-api-redirect/AUZIYQE4jAxK5u_AoL58r4FGE5MeJ-A9kzzgUlLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzLzL