diff --git a/src/Nethermind/Nethermind.Blockchain.Test/Validators/TxValidatorTests.cs b/src/Nethermind/Nethermind.Blockchain.Test/Validators/TxValidatorTests.cs index 20329b72f6f..2b63577924a 100644 --- a/src/Nethermind/Nethermind.Blockchain.Test/Validators/TxValidatorTests.cs +++ b/src/Nethermind/Nethermind.Blockchain.Test/Validators/TxValidatorTests.cs @@ -277,17 +277,41 @@ public void Transaction_with_init_code_above_max_value_is_rejected_when_eip3860E txValidator.IsWellFormed(tx, releaseSpec).Should().Be(expectedResult); } + [Test] + public void ShardBlobTransactions_should_have_destination_set() + { + TxValidator txValidator = new(TestBlockchainIds.ChainId); + + Transaction txWithoutTo = Build.A.Transaction + .WithType(TxType.Blob) + .WithTimestamp(ulong.MaxValue) + .WithTo(null) + .WithMaxFeePerGas(1) + .WithMaxFeePerDataGas(1) + .WithBlobVersionedHashes(1) + .WithChainId(TestBlockchainIds.ChainId) + .SignedAndResolved().TestObject; + + Transaction txtxWithTo = Build.A.Transaction + .WithType(TxType.Blob) + .WithTimestamp(ulong.MaxValue) + .WithTo(TestItem.AddressA) + .WithMaxFeePerGas(1) + .WithMaxFeePerDataGas(1) + .WithBlobVersionedHashes(1) + .WithChainId(TestBlockchainIds.ChainId) + .SignedAndResolved().TestObject; + + Assert.That(txValidator.IsWellFormed(txWithoutTo, Cancun.Instance), Is.False); + Assert.That(txValidator.IsWellFormed(txtxWithTo, Cancun.Instance)); + } + [Timeout(Timeout.MaxTestTime)] [TestCase(TxType.EIP1559, false, ExpectedResult = true)] [TestCase(TxType.EIP1559, true, ExpectedResult = false)] [TestCase(TxType.Blob, true, ExpectedResult = true)] public bool MaxFeePerDataGas_should_be_set_for_blob_tx_only(TxType txType, bool isMaxFeePerDataGasSet) { - byte[] sigData = new byte[65]; - sigData[31] = 1; // correct r - sigData[63] = 1; // correct s - sigData[64] = 27; // correct v - Signature signature = new(sigData); TransactionBuilder txBuilder = Build.A.Transaction .WithType(txType) .WithTimestamp(ulong.MaxValue) @@ -295,7 +319,7 @@ public bool MaxFeePerDataGas_should_be_set_for_blob_tx_only(TxType txType, bool .WithMaxFeePerDataGas(isMaxFeePerDataGasSet ? 1 : null) .WithBlobVersionedHashes(txType == TxType.Blob ? Eip4844Constants.MinBlobsPerTransaction : null) .WithChainId(TestBlockchainIds.ChainId) - .WithSignature(signature); + .SignedAndResolved(); Transaction tx = txBuilder.TestObject; @@ -308,11 +332,6 @@ public bool MaxFeePerDataGas_should_be_set_for_blob_tx_only(TxType txType, bool [TestCaseSource(nameof(BlobVersionedHashValidTestCases))] public bool BlobVersionedHash_should_be_correct(byte[] hash) { - byte[] sigData = new byte[65]; - sigData[31] = 1; // correct r - sigData[63] = 1; // correct s - sigData[64] = 27; // correct v - Signature signature = new(sigData); Transaction tx = Build.A.Transaction .WithType(TxType.Blob) .WithTimestamp(ulong.MaxValue) @@ -320,7 +339,7 @@ public bool BlobVersionedHash_should_be_correct(byte[] hash) .WithMaxFeePerDataGas(1) .WithBlobVersionedHashes(new[] { hash }) .WithChainId(TestBlockchainIds.ChainId) - .WithSignature(signature).TestObject; + .SignedAndResolved().TestObject; TxValidator txValidator = new(TestBlockchainIds.ChainId); return txValidator.IsWellFormed(tx, Cancun.Instance); diff --git a/src/Nethermind/Nethermind.Consensus/Validators/TxValidator.cs b/src/Nethermind/Nethermind.Consensus/Validators/TxValidator.cs index 13a68ad440b..14904972294 100644 --- a/src/Nethermind/Nethermind.Consensus/Validators/TxValidator.cs +++ b/src/Nethermind/Nethermind.Consensus/Validators/TxValidator.cs @@ -116,7 +116,8 @@ transaction.BlobVersionedHashes is null && transaction is not { NetworkWrapper: ShardBlobNetworkWrapper }; } - if (transaction.MaxFeePerDataGas is null || + if (transaction.To is null || + transaction.MaxFeePerDataGas is null || transaction.BlobVersionedHashes is null || transaction.BlobVersionedHashes!.Length > Eip4844Constants.MaxBlobsPerTransaction || transaction.BlobVersionedHashes!.Length < Eip4844Constants.MinBlobsPerTransaction) diff --git a/src/Nethermind/Nethermind.Core.Test/BytesTests.cs b/src/Nethermind/Nethermind.Core.Test/BytesTests.cs index 1c961f842a8..98f00b09c9f 100644 --- a/src/Nethermind/Nethermind.Core.Test/BytesTests.cs +++ b/src/Nethermind/Nethermind.Core.Test/BytesTests.cs @@ -359,5 +359,11 @@ public void Or(byte[] first, byte[] second, byte[] expected) first.AsSpan().Or(second); first.Should().Equal(expected); } + + [Test] + public void NullableComparision() + { + Bytes.NullableEqualityComparer.Equals(null, null).Should().BeTrue(); + } } } diff --git a/src/Nethermind/Nethermind.Core.Test/Encoding/ShardBlobTxDecoderTests.TestCases.cs b/src/Nethermind/Nethermind.Core.Test/Encoding/ShardBlobTxDecoderTests.TestCases.cs index e706e6ce5b9..e618d4668d9 100644 --- a/src/Nethermind/Nethermind.Core.Test/Encoding/ShardBlobTxDecoderTests.TestCases.cs +++ b/src/Nethermind/Nethermind.Core.Test/Encoding/ShardBlobTxDecoderTests.TestCases.cs @@ -20,6 +20,13 @@ public static IEnumerable ShardBlobTxTests() { TestName = "Raw transaction in mempool form with accesslist, without to" }; + yield return new TestCaseData( + "0x03fa020170f901012a018207d0843b9aca0082520894f64068dc32965eb391fe6eccfbdf47b61b586c9c8203e880f873d6947e5f4552091a69125d5dfcb7b8c2659029395bdfc0d6942b5ad5c4795c026514f8317c7a215e218dccd6cfc0d6946813eb9362372eef6200f3b1dbc3f819671cba69c0d6941eff47bc3a10a45d4b230b5d10e37751fe6aa718c0d694e1ab8145f7e55dc933d51a18c793f901a3a0b276c001e1a00126b24ad77fd0d2a6b63f903ef0ee8105c34aa035e0f67e7e6c21abb94da81701a02013e0796b22893eda04789250a760df4b87e8ed9cf6622b11eed02f830a1b68a031a616103c67703202a269fbc8d9b51913e380a9af7d935c0b7608a6892f09d1fa020004ba020000000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e00010203f1b0a564387f3cac9c75268befcdc5e993e9359645c2f92fbbb16284d9ce86f42f3b2d141623da1512cabcce66e156192c78f1b0806c1785665643fa1dcc596620bc533708a94f95911cc25e65680931f55e2fe4a3a293a1f82b5b3a26d42dd7f41a127c", + new Keccak("0xb5335626a286563f7b25a485bc6749e5d4f54076b16dd69e4d84d16f4a519a3a"), + RlpBehaviors.InMempoolForm | RlpBehaviors.SkipTypedWrapping) + { + TestName = "Raw transaction in mempool form with accesslist, without to, non-trivial blobs" + }; yield return new TestCaseData( "0x03fa0200fbf88d2a018207d0843b9aca008252089400000000000000000000000000000000000000008203e880c001e1a0010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401480a0bfb839a6fc3b2677eb837b1f2b1d46da5d97d86181e97f0b57f158821083e3ffa0067757e6df220cf06db4120fa71e849a1fd91b32fe576c368afc4795f96c46f1fa020004ba0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", new Keccak("0xcd18db9a95e1f7d413c204bfcb3361f09f0fd6d30667a29813ea0981dbacc592"), diff --git a/src/Nethermind/Nethermind.Core/Extensions/Bytes.cs b/src/Nethermind/Nethermind.Core/Extensions/Bytes.cs index ffcd75a0153..d9d04f10fa4 100644 --- a/src/Nethermind/Nethermind.Core/Extensions/Bytes.cs +++ b/src/Nethermind/Nethermind.Core/Extensions/Bytes.cs @@ -24,6 +24,7 @@ namespace Nethermind.Core.Extensions public static unsafe partial class Bytes { public static readonly IEqualityComparer EqualityComparer = new BytesEqualityComparer(); + public static readonly IEqualityComparer NullableEqualityComparer = new NullableBytesEqualityComparer(); public static readonly ISpanEqualityComparer SpanEqualityComparer = new SpanBytesEqualityComparer(); public static readonly BytesComparer Comparer = new(); @@ -40,6 +41,19 @@ public override int GetHashCode(byte[] obj) } } + private class NullableBytesEqualityComparer : EqualityComparer + { + public override bool Equals(byte[]? x, byte[]? y) + { + return AreEqual(x, y); + } + + public override int GetHashCode(byte[]? obj) + { + return obj?.GetSimplifiedHashCode() ?? 0; + } + } + private class SpanBytesEqualityComparer : ISpanEqualityComparer { public bool Equals(ReadOnlySpan x, ReadOnlySpan y) => AreEqual(x, y); diff --git a/src/Nethermind/Nethermind.Evm.Test/Eip4844Tests.cs b/src/Nethermind/Nethermind.Evm.Test/Eip4844Tests.cs index ca96ecad57d..2dc755650aa 100644 --- a/src/Nethermind/Nethermind.Evm.Test/Eip4844Tests.cs +++ b/src/Nethermind/Nethermind.Evm.Test/Eip4844Tests.cs @@ -21,25 +21,25 @@ public class Eip4844Tests : VirtualMachineTestsBase [TestCase(2, 1, Description = "Should return 0 when way out of range")] [TestCase(0, 1, Description = "Should return hash, when exists")] [TestCase(1, 3, Description = "Should return hash, when exists")] - public void Test_datahash_index_in_range(int index, int datahashesCount) + public void Test_blobhash_index_in_range(int index, int blobhashesCount) { - byte[][] hashes = new byte[datahashesCount][]; - for (int i = 0; i < datahashesCount; i++) + byte[][] hashes = new byte[blobhashesCount][]; + for (int i = 0; i < blobhashesCount; i++) { hashes[i] = new byte[32]; - for (int n = 0; n < datahashesCount; n++) + for (int n = 0; n < blobhashesCount; n++) { hashes[i][n] = (byte)((i * 3 + 10 * 7) % 256); } } - byte[] expectedOutput = datahashesCount > index ? hashes[index] : new byte[32]; + byte[] expectedOutput = blobhashesCount > index ? hashes[index] : new byte[32]; // Cost of transaction call + PUSH1 x4 + MSTORE (entry cost + 1 memory cell used) const long GasCostOfCallingWrapper = GasCostOf.Transaction + GasCostOf.VeryLow * 5 + GasCostOf.Memory; byte[] code = Prepare.EvmCode .PushData(new UInt256((ulong)index)) - .DATAHASH() + .BLOBHASH() .MSTORE(0) .Return(32, 0) .Done; @@ -48,7 +48,7 @@ public void Test_datahash_index_in_range(int index, int datahashesCount) result.StatusCode.Should().Be(StatusCode.Success); result.ReturnValue.SequenceEqual(expectedOutput); - AssertGas(result, GasCostOfCallingWrapper + GasCostOf.DataHash); + AssertGas(result, GasCostOfCallingWrapper + GasCostOf.BlobHash); } protected override TestAllTracerWithOutput CreateTracer() diff --git a/src/Nethermind/Nethermind.Evm.Test/InvalidOpcodeTests.cs b/src/Nethermind/Nethermind.Evm.Test/InvalidOpcodeTests.cs index 8765a3d90ac..6eabb804f25 100644 --- a/src/Nethermind/Nethermind.Evm.Test/InvalidOpcodeTests.cs +++ b/src/Nethermind/Nethermind.Evm.Test/InvalidOpcodeTests.cs @@ -106,7 +106,7 @@ public class InvalidOpcodeTests : VirtualMachineTestsBase { Instruction.TSTORE, Instruction.TLOAD, - Instruction.DATAHASH, + Instruction.BLOBHASH, } ).ToArray(); diff --git a/src/Nethermind/Nethermind.Evm/ByteCodeBuilderExtensions.cs b/src/Nethermind/Nethermind.Evm/ByteCodeBuilderExtensions.cs index c7ac623fc7f..e6f314dfcb1 100644 --- a/src/Nethermind/Nethermind.Evm/ByteCodeBuilderExtensions.cs +++ b/src/Nethermind/Nethermind.Evm/ByteCodeBuilderExtensions.cs @@ -85,8 +85,8 @@ public static Prepare SELFBALANCE(this Prepare @this) => @this.Op(Instruction.SELFBALANCE); public static Prepare BASEFEE(this Prepare @this) => @this.Op(Instruction.BASEFEE); - public static Prepare DATAHASH(this Prepare @this) - => @this.Op(Instruction.DATAHASH); + public static Prepare BLOBHASH(this Prepare @this) + => @this.Op(Instruction.BLOBHASH); public static Prepare POP(this Prepare @this) => @this.Op(Instruction.POP); public static Prepare PC(this Prepare @this) diff --git a/src/Nethermind/Nethermind.Evm/GasCostOf.cs b/src/Nethermind/Nethermind.Evm/GasCostOf.cs index 6875a781100..5e8b2291dc1 100644 --- a/src/Nethermind/Nethermind.Evm/GasCostOf.cs +++ b/src/Nethermind/Nethermind.Evm/GasCostOf.cs @@ -39,7 +39,7 @@ public static class GasCostOf public const long TxDataNonZero = 68; public const long TxDataNonZeroEip2028 = 16; public const long Transaction = 21000; - public const long DataHash = 3; + public const long BlobHash = 3; public const long Log = 375; public const long LogTopic = 375; public const long LogData = 8; diff --git a/src/Nethermind/Nethermind.Evm/Instruction.cs b/src/Nethermind/Nethermind.Evm/Instruction.cs index 3d4c220e302..7f7d95eb75a 100644 --- a/src/Nethermind/Nethermind.Evm/Instruction.cs +++ b/src/Nethermind/Nethermind.Evm/Instruction.cs @@ -67,7 +67,7 @@ public enum Instruction : byte CHAINID = 0x46, SELFBALANCE = 0x47, BASEFEE = 0x48, - DATAHASH = 0x49, + BLOBHASH = 0x49, POP = 0x50, MLOAD = 0x51, diff --git a/src/Nethermind/Nethermind.Evm/VirtualMachine.cs b/src/Nethermind/Nethermind.Evm/VirtualMachine.cs index 4871b00166b..b787c07ca19 100644 --- a/src/Nethermind/Nethermind.Evm/VirtualMachine.cs +++ b/src/Nethermind/Nethermind.Evm/VirtualMachine.cs @@ -1485,11 +1485,11 @@ static void UpdateCurrentState(EvmState state, int pc, long gas, int stackHead) stack.PushUInt256(in baseFee); break; } - case Instruction.DATAHASH: + case Instruction.BLOBHASH: { if (!spec.IsEip4844Enabled) goto InvalidInstruction; - if (!UpdateGas(GasCostOf.DataHash, ref gasAvailable)) goto OutOfGas; + if (!UpdateGas(GasCostOf.BlobHash, ref gasAvailable)) goto OutOfGas; stack.PopUInt256(out UInt256 blobIndex); diff --git a/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.HelperFunctions.cs b/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.HelperFunctions.cs index b796c69fe10..5a91099f04d 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.HelperFunctions.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.HelperFunctions.cs @@ -84,7 +84,7 @@ private ExecutionPayload CreateParentBlockRequestOnHead(IBlockTree blockTree) }; } - private static ExecutionPayload CreateBlockRequest(ExecutionPayload parent, Address miner, IList? withdrawals = null, UInt256? excessDataGas = null) + private static ExecutionPayload CreateBlockRequest(ExecutionPayload parent, Address miner, IList? withdrawals = null, UInt256? excessDataGas = null, Transaction[]? transactions = null) { ExecutionPayload blockRequest = new() { @@ -101,7 +101,7 @@ private static ExecutionPayload CreateBlockRequest(ExecutionPayload parent, Addr ExcessDataGas = excessDataGas, }; - blockRequest.SetTransactions(Array.Empty()); + blockRequest.SetTransactions(transactions ?? Array.Empty()); TryCalculateHash(blockRequest, out Keccak? hash); blockRequest.BlockHash = hash; return blockRequest; diff --git a/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V3.cs b/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V3.cs index bd5f4699f52..bfa5a3c99c3 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V3.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin.Test/EngineModuleTests.V3.cs @@ -12,9 +12,14 @@ using Nethermind.Core.Extensions; using Nethermind.Core.Specs; using Nethermind.Core.Test.Builders; +using Nethermind.Crypto; using Nethermind.JsonRpc; +using Nethermind.Logging; using Nethermind.Merge.Plugin.Data; +using Nethermind.Merge.Plugin.GC; +using Nethermind.Merge.Plugin.Handlers; using Nethermind.Specs.Forks; +using NSubstitute; using NUnit.Framework; using Transaction = Nethermind.Core.Transaction; @@ -61,11 +66,165 @@ public async Task PayloadV3_should_return_all_the_blobs(int blobTxCount) Assert.That(getPayloadResultBlobsBundle.Proofs!.Length, Is.EqualTo(blobTxCount)); } + [Test] + public async Task NewPayloadV3_should_decline_null_blobversionedhashes() + { + MergeTestBlockchain chain = await CreateBlockChain(releaseSpec: Cancun.Instance); + IEngineRpcModule rpcModule = CreateEngineModule(chain); + ExecutionPayload executionPayload = CreateBlockRequest( + CreateParentBlockRequestOnHead(chain.BlockTree), TestItem.AddressD, withdrawals: Array.Empty()); + + ResultWrapper errorCode = (await rpcModule.engine_newPayloadV3(executionPayload, null!)); + + Assert.That(errorCode.Data.Status, Is.EqualTo(PayloadStatus.Invalid)); + } + + private const string FurtherValidationStatus = "FurtherValidation"; + + [TestCaseSource(nameof(BlobVersionedHashesMatchTestSource))] + [TestCaseSource(nameof(BlobVersionedHashesDoNotMatchTestSource))] + public async Task NewPayloadV3_should_verify_blob_versioned_hashes_against_transactions_ones + (byte[] hashesFirstBytes, byte[][] transactionsAndFirstBytesOfTheirHashes) + { + async Task<(MergeTestBlockchain blockchain, IEngineRpcModule engineRpcModule)> MockRpc() + { + MergeTestBlockchain chain = await CreateBlockChain(releaseSpec: Cancun.Instance); + IAsyncHandler newPayloadHandlerMock = + Substitute.For>(); + newPayloadHandlerMock.HandleAsync(Arg.Any()) + .Returns(Task.FromResult(ResultWrapper + .Success(new PayloadStatusV1() { Status = FurtherValidationStatus }))); + + return (chain, new EngineRpcModule( + Substitute.For>(), + Substitute.For>(), + Substitute.For>(), + newPayloadHandlerMock, + Substitute.For(), + Substitute.For, IEnumerable>>(), + Substitute.For(), + Substitute.For>(), + Substitute.For, IEnumerable>>(), + chain.SpecProvider, + new GCKeeper(NoGCStrategy.Instance, chain.LogManager), + Substitute.For())); + } + + + (byte[][] blobVersionedHashes, Transaction[] transactions) BuildTransactionsAndBlobVersionedHashesList(byte[] hashesFirstBytes, byte[][] transactionsAndFirstBytesOfTheirHashes, ulong chainId) + { + byte[][] blobVersionedHashes = new byte[hashesFirstBytes.Length][]; + + ulong index = 0; + foreach (byte hashByte in hashesFirstBytes) + { + blobVersionedHashes[index] = new byte[32]; + blobVersionedHashes[index][0] = KzgPolynomialCommitments.KzgBlobHashVersionV1; + blobVersionedHashes[index][1] = hashByte; + index++; + } + + ulong txIndex = 0; + Transaction[] transactions = new Transaction[transactionsAndFirstBytesOfTheirHashes.Length]; + + foreach (byte[] txHashBytes in transactionsAndFirstBytesOfTheirHashes) + { + ulong txHashIndex = 0; + byte[][] txBlobVersionedHashes = new byte[txHashBytes.Length][]; + foreach (byte hashByte in txHashBytes) + { + txBlobVersionedHashes[txHashIndex] = new byte[32]; + txBlobVersionedHashes[txHashIndex][0] = KzgPolynomialCommitments.KzgBlobHashVersionV1; + txBlobVersionedHashes[txHashIndex][1] = hashByte; + txHashIndex++; + } + transactions[txIndex] = Build.A.Transaction.WithNonce((ulong)txIndex) + .WithType(TxType.Blob) + .WithTimestamp(Timestamper.UnixTime.Seconds) + .WithTo(TestItem.AddressB) + .WithValue(1.GWei()) + .WithGasPrice(1.GWei()) + .WithMaxFeePerDataGas(1.GWei()) + .WithChainId(chainId) + .WithSenderAddress(TestItem.AddressA) + .WithBlobVersionedHashes(txBlobVersionedHashes) + .WithMaxFeePerGasIfSupports1559(1.GWei()) + .SignedAndResolved(TestItem.PrivateKeyA).TestObject; + txIndex++; + } + + return (blobVersionedHashes, transactions); + } + + (MergeTestBlockchain blockchain, IEngineRpcModule engineRpcModule) = await MockRpc(); + (byte[][] blobVersionedHashes, Transaction[] transactions) = BuildTransactionsAndBlobVersionedHashesList(hashesFirstBytes, transactionsAndFirstBytesOfTheirHashes, blockchain.SpecProvider.ChainId); + + ExecutionPayload executionPayload = CreateBlockRequest( + CreateParentBlockRequestOnHead(blockchain.BlockTree), TestItem.AddressD, withdrawals: Array.Empty(), transactions: transactions); + ResultWrapper result = await engineRpcModule.engine_newPayloadV3(executionPayload, blobVersionedHashes); + + return result.Data.Status; + } + + public static IEnumerable BlobVersionedHashesMatchTestSource + { + get + { + yield return new TestCaseData(new byte[] { }, new byte[][] { }) + { + ExpectedResult = FurtherValidationStatus, + TestName = "Zero hashes passed, as expected", + }; + yield return new TestCaseData(new byte[] { 0, 1 }, new byte[][] { new byte[] { 0, 1 } }) + { + ExpectedResult = FurtherValidationStatus, + TestName = "N hashes passed, as expected", + }; + yield return new TestCaseData(new byte[] { 0, 1 }, new byte[][] { new byte[] { 0 }, new byte[] { 1 } }) + { + ExpectedResult = FurtherValidationStatus, + TestName = "N hashes passed, as expected, multiple transactions", + }; + } + } + + public static IEnumerable BlobVersionedHashesDoNotMatchTestSource + { + get + { + yield return new TestCaseData(new byte[] { }, new byte[][] { new byte[] { 0 } }) + { + ExpectedResult = PayloadStatus.Invalid, + TestName = "Zero hashes passed, but a tx has one", + }; + yield return new TestCaseData(new byte[] { 0, 1, 2 }, new byte[][] { new byte[] { 0, 2, 1 } }) + { + ExpectedResult = PayloadStatus.Invalid, + TestName = "Order is not correct", + }; + yield return new TestCaseData(new byte[] { 0, 1, 2 }, new byte[][] { new byte[] { 2 }, new byte[] { 0, 1 } }) + { + ExpectedResult = PayloadStatus.Invalid, + TestName = "Order is not correct, multiple transactions", + }; + yield return new TestCaseData(new byte[] { 0, 2 }, new byte[][] { new byte[] { 0, 1, 2 } }) + { + ExpectedResult = PayloadStatus.Invalid, + TestName = "A hash is missing", + }; + yield return new TestCaseData(new byte[] { 0, 1, 2 }, new byte[][] { new byte[] { 0, 1 } }) + { + ExpectedResult = PayloadStatus.Invalid, + TestName = "One hash more than expected", + }; + } + } + private async Task SendNewBlockV3(IEngineRpcModule rpc, MergeTestBlockchain chain, IList? withdrawals) { ExecutionPayload executionPayload = CreateBlockRequest( CreateParentBlockRequestOnHead(chain.BlockTree), TestItem.AddressD, withdrawals, 0); - ResultWrapper executePayloadResult = await rpc.engine_newPayloadV3(executionPayload); + ResultWrapper executePayloadResult = await rpc.engine_newPayloadV3(executionPayload, Array.Empty()); executePayloadResult.Data.Status.Should().Be(PayloadStatus.Valid); diff --git a/src/Nethermind/Nethermind.Merge.Plugin/Data/BlobsBundleV1.cs b/src/Nethermind/Nethermind.Merge.Plugin/Data/BlobsBundleV1.cs index 82b7c61dad4..8d350a98e04 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin/Data/BlobsBundleV1.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin/Data/BlobsBundleV1.cs @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited // SPDX-License-Identifier: LGPL-3.0-only +using System; using Nethermind.Core; namespace Nethermind.Merge.Plugin.Data; @@ -27,11 +28,16 @@ public BlobsBundleV1(Block block) foreach (Transaction? tx in block.Transactions) { - if (tx is not { NetworkWrapper: ShardBlobNetworkWrapper wrapper }) + if (!tx.SupportsBlobs) { continue; } + if (tx is not { NetworkWrapper: ShardBlobNetworkWrapper wrapper }) + { + throw new ArgumentException("Shard blob transaction should contain network wrapper data"); + } + for (int txIndex = 0; txIndex < wrapper.Blobs.Length; blockIndex++, txIndex++) diff --git a/src/Nethermind/Nethermind.Merge.Plugin/Data/ExecutionPayload.cs b/src/Nethermind/Nethermind.Merge.Plugin/Data/ExecutionPayload.cs index f5ea4cc7f2f..c541f003b92 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin/Data/ExecutionPayload.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin/Data/ExecutionPayload.cs @@ -70,12 +70,22 @@ public ExecutionPayload(Block block) public ulong Timestamp { get; set; } + private byte[][] _encodedTransactions = Array.Empty(); + /// /// Gets or sets an array of RLP-encoded transaction where each item is a byte list (data) /// representing TransactionType || TransactionPayload or LegacyTransaction as defined in /// EIP-2718. /// - public byte[][] Transactions { get; set; } = Array.Empty(); + public byte[][] Transactions + { + get { return _encodedTransactions; } + set + { + _encodedTransactions = value; + _transactions = null; + } + } /// /// Gets or sets a collection of as defined in @@ -139,11 +149,13 @@ public virtual bool TryGetBlock(out Block? block, UInt256? totalDifficulty = nul } } + private Transaction[]? _transactions = null; + /// /// Decodes and returns an array of from . /// /// An RLP-decoded array of . - public Transaction[] GetTransactions() => Transactions + public Transaction[] GetTransactions() => _transactions ??= Transactions .Select(t => Rlp.Decode(t, RlpBehaviors.SkipTypedWrapping)) .ToArray(); @@ -151,9 +163,13 @@ public Transaction[] GetTransactions() => Transactions /// RLP-encodes and sets the transactions specified to . /// /// An array of transactions to encode. - public void SetTransactions(params Transaction[] transactions) => Transactions = transactions - .Select(t => Rlp.Encode(t, RlpBehaviors.SkipTypedWrapping).Bytes) - .ToArray(); + public void SetTransactions(params Transaction[] transactions) + { + Transactions = transactions + .Select(t => Rlp.Encode(t, RlpBehaviors.SkipTypedWrapping).Bytes) + .ToArray(); + _transactions = transactions; + } public override string ToString() => $"{BlockNumber} ({BlockHash})"; } diff --git a/src/Nethermind/Nethermind.Merge.Plugin/EngineRpcModule.Cancun.cs b/src/Nethermind/Nethermind.Merge.Plugin/EngineRpcModule.Cancun.cs index 63a66aa6116..0e99f729adc 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin/EngineRpcModule.Cancun.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin/EngineRpcModule.Cancun.cs @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited // SPDX-License-Identifier: LGPL-3.0-only -using System; +using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; -using Nethermind.Core.Crypto; -using Nethermind.Core.Specs; +using Nethermind.Core; +using Nethermind.Core.Extensions; using Nethermind.JsonRpc; -using Nethermind.Logging; using Nethermind.Merge.Plugin.Data; using Nethermind.Merge.Plugin.Handlers; @@ -16,8 +16,32 @@ public partial class EngineRpcModule : IEngineRpcModule { private readonly IAsyncHandler _getPayloadHandlerV3; - public Task> engine_newPayloadV3(ExecutionPayload executionPayload) => - NewPayload(executionPayload, 3); + public Task> engine_newPayloadV3(ExecutionPayload executionPayload, byte[]?[]? blobVersionedHashes = null) => + Validate(executionPayload, blobVersionedHashes) ?? NewPayload(executionPayload, 3); + + private ResultWrapper? Validate(ExecutionPayload executionPayload, byte[]?[]? blobVersionedHashes) + { + ResultWrapper ErrorResult(string error) + { + if (_logger.IsWarn) _logger.Warn(error); + return ResultWrapper.Success( + new PayloadStatusV1 + { + Status = PayloadStatus.Invalid, + LatestValidHash = null, + ValidationError = error + }); + } + + static IEnumerable FlattenHashesFromTransactions(ExecutionPayload payload) => + payload.GetTransactions() + .Where(t => t.BlobVersionedHashes is not null) + .SelectMany(t => t.BlobVersionedHashes!); + + return blobVersionedHashes is null ? ErrorResult("Blob versioned hashes must be set") + : !FlattenHashesFromTransactions(executionPayload).SequenceEqual(blobVersionedHashes, Bytes.NullableEqualityComparer) ? ErrorResult("Blob versioned hashes do not match") + : null; + } public async Task> engine_getPayloadV3(byte[] payloadId) => await _getPayloadHandlerV3.HandleAsync(payloadId); diff --git a/src/Nethermind/Nethermind.Merge.Plugin/IEngineRpcModule.Cancun.cs b/src/Nethermind/Nethermind.Merge.Plugin/IEngineRpcModule.Cancun.cs index f05a3824266..43eb090084a 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin/IEngineRpcModule.Cancun.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin/IEngineRpcModule.Cancun.cs @@ -1,7 +1,6 @@ // SPDX-FileCopyrightText: 2022 Demerzel Solutions Limited // SPDX-License-Identifier: LGPL-3.0-only -using System.Collections.Generic; using System.Threading.Tasks; using Nethermind.JsonRpc; using Nethermind.JsonRpc.Modules; @@ -15,7 +14,7 @@ public partial interface IEngineRpcModule : IRpcModule Description = "Verifies the payload according to the execution environment rules and returns the verification status and hash of the last valid block.", IsSharable = true, IsImplemented = true)] - Task> engine_newPayloadV3(ExecutionPayload executionPayload); + Task> engine_newPayloadV3(ExecutionPayload executionPayload, byte[][]? blobVersionedHashes = null); [JsonRpcMethod( Description = "Returns the most recent version of an execution payload and fees with respect to the transaction set contained by the mempool.", diff --git a/src/Nethermind/Nethermind.TxPool/TxPool.cs b/src/Nethermind/Nethermind.TxPool/TxPool.cs index 21fe0177242..65a2713c0fe 100644 --- a/src/Nethermind/Nethermind.TxPool/TxPool.cs +++ b/src/Nethermind/Nethermind.TxPool/TxPool.cs @@ -210,6 +210,10 @@ private void ReAddReorganisedTransactions(Block? previousBlock) for (int i = 0; i < txs.Length; i++) { Transaction tx = txs[i]; + if (tx.SupportsBlobs) + { + continue; + } _hashCache.Delete(tx.Hash!); SubmitTx(tx, isEip155Enabled ? TxHandlingOptions.None : TxHandlingOptions.PreEip155Signing); }