├── test ├── zip │ ├── haha.txt │ ├── merong.txt │ ├── yaho │ │ └── why.txt │ └── babo.txt ├── test.zip ├── serveZip.test.ts ├── README.md └── serveZipFiles.test.ts ├── .gitignore ├── mod.ts ├── core ├── types.ts ├── mod.ts ├── zip │ ├── const.ts │ ├── end-of-central-directory-record.ts │ ├── local-file-header.ts │ ├── central-directory-file-header.ts │ └── mod.ts └── server │ └── file_server.ts ├── .vscode └── settings.json ├── LICENSE └── README.md /test/zip/haha.txt: -------------------------------------------------------------------------------- 1 | haha -------------------------------------------------------------------------------- /test/zip/merong.txt: -------------------------------------------------------------------------------- 1 | merong -------------------------------------------------------------------------------- /test/zip/yaho/why.txt: -------------------------------------------------------------------------------- 1 | hello? -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | playground/ -------------------------------------------------------------------------------- /test/test.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyp3rflow/zipland/HEAD/test/test.zip -------------------------------------------------------------------------------- /test/serveZip.test.ts: -------------------------------------------------------------------------------- 1 | import { serveZip } from "../mod.ts"; 2 | 3 | serveZip("./test.zip"); 4 | -------------------------------------------------------------------------------- /mod.ts: -------------------------------------------------------------------------------- 1 | import { serveZip } from "./core/mod.ts"; 2 | 3 | export * from "./core/mod.ts"; 4 | 5 | if (import.meta.main) { 6 | serveZip("./test/test.zip"); 7 | } 8 | -------------------------------------------------------------------------------- /core/types.ts: -------------------------------------------------------------------------------- 1 | interface FileInfo { 2 | size: number; 3 | } 4 | export type File = Deno.Reader & Deno.Seeker & { 5 | stat(): Promise; 6 | }; 7 | export interface FsOffset { 8 | offset: number; 9 | whence: Deno.SeekMode; 10 | } 11 | -------------------------------------------------------------------------------- /core/mod.ts: -------------------------------------------------------------------------------- 1 | export * from "./zip/central-directory-file-header.ts"; 2 | export * from "./zip/end-of-central-directory-record.ts"; 3 | export * from "./zip/local-file-header.ts"; 4 | export * from "./zip/mod.ts"; 5 | 6 | export * from "./server/file_server.ts"; 7 | export * from "./types.ts"; 8 | -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | This `test.zip` was created by following command. 2 | 3 | ```sh 4 | cd zip && zip test.zip **/*.txt && cd .. && mv ./zip/test.zip ./test.zip 5 | ``` 6 | 7 | The zip result: 8 | 9 | ```sh 10 | adding: babo.txt (deflated 100%) 11 | adding: haha.txt (stored 0%) 12 | adding: merong.txt (stored 0%) 13 | adding: yaho/why.txt (stored 0%) 14 | ``` 15 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "deno.enable": true, 3 | "deno.unstable": true, 4 | "deno.lint": false, 5 | "editor.formatOnSave": true, 6 | "editor.defaultFormatter": "denoland.vscode-deno", 7 | "[typescript]": { 8 | "editor.defaultFormatter": "denoland.vscode-deno" 9 | }, 10 | "deno.import_intellisense_origins": { 11 | "https://deno.land": true 12 | }, 13 | } -------------------------------------------------------------------------------- /core/zip/const.ts: -------------------------------------------------------------------------------- 1 | export const ZIP_CENTRAL_RECORD = { 2 | SIGNATURE: 0x06054b50, 3 | MIN_LENGTH: 22, 4 | CENTRAL_DIRECTORY_OFFSET: 10, 5 | }; 6 | 7 | export const ZIP_CENTRAL_DIRECTORY = { 8 | MIN_LENGTH: 46, 9 | COMPRESSION_OFFSET: 10, 10 | NAME_LENGTH_OFFSET: 28, 11 | LOCAL_FILE_HEADER_OFFSET: 42, 12 | FILE_NAME_OFFSET: 46, 13 | COMPRESSED_SIZE_OFFSET: 20, 14 | UNCOMPRESSED_SIZE_OFFSET: 24, 15 | }; 16 | 17 | export const ZIP_LOCAL_FILE_HEADER = { 18 | MIN_LENGTH: 30, 19 | }; 20 | -------------------------------------------------------------------------------- /test/serveZipFiles.test.ts: -------------------------------------------------------------------------------- 1 | import { serve } from "https://deno.land/std/http/mod.ts"; 2 | import { disassembleZip, serveZipFiles } from "../mod.ts"; 3 | 4 | const file = await Deno.open("./test.zip"); 5 | const zip = await disassembleZip(file); 6 | if (zip) { 7 | const handler = async (req: Request): Promise => { 8 | const pathname = new URL(req.url).pathname; 9 | if (pathname.startsWith("/file")) { 10 | // urlRoot option makes: request /file/hello.txt -> /hello.txt 11 | return serveZipFiles(req, zip, { urlRoot: "file" }); 12 | } 13 | // serve other things too! 14 | return new Response("Go to valid link!", { status: 200 }); 15 | }; 16 | serve(handler); 17 | } 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright 2018-2022 Yongwook Choi. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # zipland 2 | 3 | Serve file server with one-single zip file in Deno. 4 | 5 | ## Support 6 | 7 | ### zip 8 | 9 | - just zip32 with deflated or uncompressed 10 | 11 | ### serving 12 | 13 | - plaintext 14 | - deflate 15 | 16 | ## Examples 17 | 18 | You can serve your zip file with just single line. 19 | 20 | ```typescript 21 | import { serveZip } from "https://deno.land/x/zipland/mod.ts"; 22 | 23 | serveZip("./my.zip"); 24 | ``` 25 | 26 | Or you can serve the zip file in your own serve implementation. 27 | 28 | ```typescript 29 | import { serve } from "https://deno.land/std/http/mod.ts"; 30 | import { 31 | disassembleZip, 32 | serveZipFiles, 33 | } from "https://deno.land/x/zipland/mod.ts"; 34 | 35 | const file = await Deno.open(path); 36 | const zip = await disassembleZip(zip); 37 | if (zip) { 38 | const handler = (req: Request): Promise => { 39 | const pathname = new URL(req.url).pathname; 40 | switch (pathname) { 41 | case "/file": { 42 | return serveZipFiles(req, zip, { urlRoot: "/file" }); 43 | } 44 | } 45 | // serve other things too! 46 | }; 47 | serve(handler); 48 | } 49 | ``` 50 | 51 | You can see and run above example in `/test` directory 52 | -------------------------------------------------------------------------------- /core/zip/end-of-central-directory-record.ts: -------------------------------------------------------------------------------- 1 | import { ZIP_CENTRAL_RECORD } from "./const.ts"; 2 | import { File, FsOffset } from "../types.ts"; 3 | 4 | export async function getCRecordView( 5 | file: File, 6 | ): Promise { 7 | const crecordOffset = await getCRecordOffset(file); 8 | if (!crecordOffset) return null; 9 | const crecord = new Uint8Array(22); 10 | const crview = new DataView(crecord.buffer); 11 | await file.seek(crecordOffset.offset, crecordOffset.whence); 12 | await file.read(crecord); 13 | return crview; 14 | async function getCRecordOffset( 15 | file: File, 16 | ): Promise { 17 | const u8s = new Uint8Array(4); 18 | const view = new DataView(u8s.buffer); 19 | const { size } = await file.stat(); 20 | let i = ZIP_CENTRAL_RECORD.MIN_LENGTH; 21 | if (size >= ZIP_CENTRAL_RECORD.MIN_LENGTH) { 22 | do { 23 | await file.seek(-i, Deno.SeekMode.End); 24 | await file.read(u8s); 25 | if (view.getUint32(0, true) === ZIP_CENTRAL_RECORD.SIGNATURE) { 26 | return { offset: -i, whence: Deno.SeekMode.End }; 27 | } 28 | } while (i++); 29 | } 30 | return null; 31 | } 32 | } 33 | export function getCRecordObject(view: DataView) { 34 | const sig = view.getUint32(0, true); 35 | const cdirCount = view.getUint16(8, true); 36 | const cdirSize = view.getUint32(12, true); 37 | const cdirOffset = view.getUint32(16, true); 38 | return { 39 | sig: sig === 0x06054b50, 40 | cdirCount, 41 | cdirSize, 42 | cdirOffset, 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /core/zip/local-file-header.ts: -------------------------------------------------------------------------------- 1 | import { ZIP_LOCAL_FILE_HEADER } from "./const.ts"; 2 | import { File } from "../types.ts"; 3 | 4 | export interface LocalFileHeader { 5 | signature: number; 6 | version: number; 7 | flag: number; 8 | compressionMethod: number; 9 | lastModifiedTime: number; 10 | lastModifiedDate: number; 11 | crc32: number; 12 | compressedSize: number; 13 | uncompressedSize: number; 14 | fileNameLength: number; 15 | extraFieldLength: number; 16 | } 17 | export async function getLFHeaderView(file: File, offset: number) { 18 | const temp = new Uint8Array(ZIP_LOCAL_FILE_HEADER.MIN_LENGTH); 19 | const tempView = new DataView(temp.buffer); 20 | await file.seek(offset, Deno.SeekMode.Start); 21 | await file.read(temp); 22 | const size = getLFHeaderSize(tempView); 23 | const lfheader = new Uint8Array(size); 24 | await file.seek(offset, Deno.SeekMode.Start); 25 | await file.read(lfheader); 26 | return new DataView(lfheader.buffer); 27 | } 28 | export function getLFHeaderSize(view: DataView) { 29 | return ZIP_LOCAL_FILE_HEADER.MIN_LENGTH + view.getUint16(26, true) + 30 | view.getUint16(28, true); 31 | } 32 | export function getLFHeaderObject(view: DataView): LocalFileHeader { 33 | return { 34 | signature: view.getUint32(0, true), 35 | version: view.getUint16(4, true), 36 | flag: view.getUint16(6, true), 37 | compressionMethod: view.getUint16(8, true), 38 | lastModifiedTime: view.getUint16(10, true), 39 | lastModifiedDate: view.getUint16(12, true), 40 | crc32: view.getUint32(14, true), 41 | compressedSize: view.getUint32(18, true), 42 | uncompressedSize: view.getUint32(22, true), 43 | fileNameLength: view.getUint16(26, true), 44 | extraFieldLength: view.getUint16(28, true), 45 | }; 46 | } 47 | -------------------------------------------------------------------------------- /core/zip/central-directory-file-header.ts: -------------------------------------------------------------------------------- 1 | import { ZIP_CENTRAL_DIRECTORY } from "./const.ts"; 2 | import { File } from "../types.ts"; 3 | 4 | export interface CentralDirectoryFileHeader { 5 | name: string; 6 | compression: number; 7 | localOffset: number; 8 | compressedSize: number; 9 | uncompressedSize: number; 10 | } 11 | export async function getCDirView( 12 | file: File, 13 | offset: number, 14 | ): Promise { 15 | const temp = new Uint8Array(ZIP_CENTRAL_DIRECTORY.MIN_LENGTH); 16 | const tempView = new DataView(temp.buffer); 17 | await file.seek(offset, Deno.SeekMode.Start); 18 | await file.read(temp); 19 | const size = getCDirSize(tempView); 20 | const cdir = new Uint8Array(size); 21 | await file.seek(offset, Deno.SeekMode.Start); 22 | await file.read(cdir); 23 | return new DataView(cdir.buffer); 24 | } 25 | export function getCDirSize(view: DataView): number { 26 | return ZIP_CENTRAL_DIRECTORY.MIN_LENGTH + view.getUint16(28, true) + 27 | view.getUint16(30, true) + view.getUint16(32, true); 28 | } 29 | export function getCDirectoryObject( 30 | view: DataView, 31 | ): CentralDirectoryFileHeader { 32 | const compression = view.getUint8( 33 | ZIP_CENTRAL_DIRECTORY.COMPRESSION_OFFSET, 34 | ); 35 | const nameLength = view.getUint16( 36 | ZIP_CENTRAL_DIRECTORY.NAME_LENGTH_OFFSET, 37 | true, 38 | ); 39 | const name = new TextDecoder().decode( 40 | view.buffer.slice( 41 | ZIP_CENTRAL_DIRECTORY.FILE_NAME_OFFSET, 42 | ZIP_CENTRAL_DIRECTORY.FILE_NAME_OFFSET + nameLength, 43 | ), 44 | ); 45 | const localOffset = view.getUint32( 46 | ZIP_CENTRAL_DIRECTORY.LOCAL_FILE_HEADER_OFFSET, 47 | true, 48 | ); 49 | const compressedSize = view.getUint32( 50 | ZIP_CENTRAL_DIRECTORY.COMPRESSED_SIZE_OFFSET, 51 | true, 52 | ); 53 | const uncompressedSize = view.getUint32( 54 | ZIP_CENTRAL_DIRECTORY.UNCOMPRESSED_SIZE_OFFSET, 55 | true, 56 | ); 57 | const cdir = { 58 | compression, 59 | name, 60 | localOffset, 61 | compressedSize, 62 | uncompressedSize, 63 | }; 64 | return cdir; 65 | } 66 | -------------------------------------------------------------------------------- /core/zip/mod.ts: -------------------------------------------------------------------------------- 1 | import { LimitedReader } from "https://deno.land/std@0.146.0/io/readers.ts"; 2 | import { readAll } from "https://deno.land/std@0.146.0/streams/conversion.ts"; 3 | import { ZIP_LOCAL_FILE_HEADER } from "./const.ts"; 4 | import { File } from "../types.ts"; 5 | import { 6 | CentralDirectoryFileHeader, 7 | getCDirectoryObject, 8 | getCDirView, 9 | } from "./central-directory-file-header.ts"; 10 | import { 11 | getCRecordObject, 12 | getCRecordView, 13 | } from "./end-of-central-directory-record.ts"; 14 | import { getLFHeaderObject, getLFHeaderView } from "./local-file-header.ts"; 15 | 16 | export interface ZipInfo { 17 | name: string; 18 | crc32: number; 19 | offset: number; 20 | compressed: number; 21 | uncompressed: number; 22 | compression: number; 23 | } 24 | 25 | export async function disassembleZip( 26 | file: File, 27 | ): Promise { 28 | const crview = await getCRecordView(file); 29 | if (!crview) return null; 30 | const crecord = getCRecordObject(crview); 31 | const cdirs: CentralDirectoryFileHeader[] = []; 32 | for (let i = 0, offset = crecord.cdirOffset; i < crecord.cdirCount; i++) { 33 | const cdirview = await getCDirView(file, offset); 34 | const cdir = getCDirectoryObject(cdirview); 35 | cdirs.push(cdir); 36 | offset += cdirview.byteLength; 37 | } 38 | const zipinfos = await getZipInfos(file, cdirs); 39 | const zipfiles = await getZipFiles(file, zipinfos); 40 | return zipfiles; 41 | } 42 | 43 | async function getZipInfos( 44 | file: File, 45 | cdirs: CentralDirectoryFileHeader[], 46 | ): Promise { 47 | const zipinfos: ZipInfo[] = []; 48 | for (const cdir of cdirs) { 49 | const lfview = await getLFHeaderView(file, cdir.localOffset); 50 | const lfheader = getLFHeaderObject(lfview); 51 | zipinfos.push({ 52 | name: cdir.name, 53 | compression: cdir.compression, 54 | compressed: cdir.compressedSize, 55 | uncompressed: lfheader.uncompressedSize, 56 | offset: cdir.localOffset + ZIP_LOCAL_FILE_HEADER.MIN_LENGTH + 57 | lfheader.fileNameLength + 58 | lfheader.extraFieldLength, 59 | crc32: lfheader.crc32, 60 | }); 61 | } 62 | return zipinfos; 63 | } 64 | 65 | export interface ZipFile { 66 | compressed: boolean; 67 | data: Uint8Array; 68 | info: ZipInfo; 69 | } 70 | export type ZipFiles = Map; 71 | async function getZipFiles( 72 | file: File, 73 | zipinfos: ZipInfo[], 74 | ): Promise { 75 | const zipfiles: Map = new Map(); 76 | for (const zipinfo of zipinfos) { 77 | await file.seek(zipinfo.offset, Deno.SeekMode.Start); 78 | const reader = new LimitedReader(file, zipinfo.compressed); 79 | const data = await readAll(reader); 80 | zipfiles.set("/" + zipinfo.name, { 81 | compressed: zipinfo.compression === 8, 82 | data, 83 | info: zipinfo, 84 | }); 85 | } 86 | return zipfiles; 87 | } 88 | -------------------------------------------------------------------------------- /core/server/file_server.ts: -------------------------------------------------------------------------------- 1 | import { extname, posix } from "https://deno.land/std@0.146.0/path/mod.ts"; 2 | import { red } from "https://deno.land/std@0.146.0/fmt/colors.ts"; 3 | import { contentType } from "https://deno.land/std@0.146.0/media_types/mod.ts"; 4 | import { 5 | Status, 6 | STATUS_TEXT, 7 | } from "https://deno.land/std@0.146.0/http/http_status.ts"; 8 | import { disassembleZip, ZipFile, ZipFiles } from "../zip/mod.ts"; 9 | import { serve, ServeInit } from "https://deno.land/std@0.146.0/http/server.ts"; 10 | 11 | export interface ServeZipOptions extends ServeInit, ServeZipFilesOptions {} 12 | export async function serveZip(path: string, opts: ServeZipOptions = {}) { 13 | const zip = await Deno.open(path); 14 | const zipfiles = await disassembleZip(zip); 15 | if (zipfiles) { 16 | serve((req: Request): Promise => { 17 | return serveZipFiles(req, zipfiles, opts); 18 | }, opts); 19 | } 20 | } 21 | 22 | export interface ServeZipFilesOptions { 23 | fsRoot?: string; 24 | urlRoot?: string; 25 | quiet?: string; 26 | } 27 | export async function serveZipFiles( 28 | req: Request, 29 | zipfiles: ZipFiles, 30 | opts: ServeZipFilesOptions = {}, 31 | ) { 32 | let response: Response; 33 | try { 34 | let normalizedPath = normalizeURL(req.url); 35 | if (opts.urlRoot) { 36 | if (normalizedPath.startsWith("/" + opts.urlRoot)) { 37 | normalizedPath = normalizedPath.replace("/" + opts.urlRoot, ""); 38 | } else { 39 | throw new Deno.errors.NotFound(); 40 | } 41 | } 42 | if (opts.fsRoot) { 43 | normalizedPath = opts.fsRoot + "/" + normalizedPath; 44 | } 45 | if (zipfiles.has(normalizedPath)) { 46 | response = await serveZipFile(req, zipfiles.get(normalizedPath)!); 47 | } else if ( 48 | normalizedPath.endsWith("/") && 49 | zipfiles.has(normalizedPath + "index.html") 50 | ) { 51 | response = await serveZipFile( 52 | req, 53 | zipfiles.get(normalizedPath + "index.html")!, 54 | ); 55 | } else { 56 | throw new Deno.errors.NotFound(); 57 | } 58 | } catch (e) { 59 | const err = e instanceof Error ? e : new Error("[non-error thrown]"); 60 | if (!opts.quiet) console.error(red(err.message)); 61 | response = await serveFallback(req, err); 62 | } 63 | return response!; 64 | } 65 | 66 | async function serveZipFile(req: Request, zipfile: ZipFile): Promise { 67 | const headers = setBaseHeaders(); 68 | const contentTypeValue = contentType(extname(zipfile.info.name)); 69 | if (contentTypeValue) { 70 | headers.set("content-type", contentTypeValue); 71 | } 72 | headers.set("content-length", `${zipfile.data.byteLength}`); 73 | if (zipfile.compressed) { 74 | headers.set("content-encoding", "deflate"); 75 | } 76 | return new Response(zipfile.data, { 77 | status: Status.OK, 78 | statusText: STATUS_TEXT[Status.OK], 79 | headers, 80 | }); 81 | } 82 | 83 | // from https://deno.land/std@0.146.0/http/file_server.ts 84 | // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. 85 | function setBaseHeaders(): Headers { 86 | const headers = new Headers(); 87 | headers.set("server", "deno"); 88 | 89 | // Set "accept-ranges" so that the client knows it can make range requests on future requests 90 | headers.set("accept-ranges", "bytes"); 91 | headers.set("date", new Date().toUTCString()); 92 | 93 | return headers; 94 | } 95 | 96 | // from https://deno.land/std@0.146.0/http/file_server.ts 97 | // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. 98 | function normalizeURL(url: string): string { 99 | let normalizedUrl = url; 100 | 101 | try { 102 | //allowed per https://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html 103 | const absoluteURI = new URL(normalizedUrl); 104 | normalizedUrl = absoluteURI.pathname; 105 | } catch (e) { 106 | //wasn't an absoluteURI 107 | if (!(e instanceof TypeError)) { 108 | throw e; 109 | } 110 | } 111 | 112 | try { 113 | normalizedUrl = decodeURI(normalizedUrl); 114 | } catch (e) { 115 | if (!(e instanceof URIError)) { 116 | throw e; 117 | } 118 | } 119 | 120 | if (normalizedUrl[0] !== "/") { 121 | throw new URIError("The request URI is malformed."); 122 | } 123 | 124 | normalizedUrl = posix.normalize(normalizedUrl); 125 | const startOfParams = normalizedUrl.indexOf("?"); 126 | 127 | return startOfParams > -1 128 | ? normalizedUrl.slice(0, startOfParams) 129 | : normalizedUrl; 130 | } 131 | 132 | // from https://deno.land/std@0.146.0/http/file_server.ts 133 | // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. 134 | function serveFallback(_req: Request, e: Error): Promise { 135 | if (e instanceof URIError) { 136 | return Promise.resolve( 137 | new Response(STATUS_TEXT[Status.BadRequest], { 138 | status: Status.BadRequest, 139 | statusText: STATUS_TEXT[Status.BadRequest], 140 | }), 141 | ); 142 | } else if (e instanceof Deno.errors.NotFound) { 143 | return Promise.resolve( 144 | new Response(STATUS_TEXT[Status.NotFound], { 145 | status: Status.NotFound, 146 | statusText: STATUS_TEXT[Status.NotFound], 147 | }), 148 | ); 149 | } 150 | return Promise.resolve( 151 | new Response(STATUS_TEXT[Status.InternalServerError], { 152 | status: Status.InternalServerError, 153 | statusText: STATUS_TEXT[Status.InternalServerError], 154 | }), 155 | ); 156 | } 157 | -------------------------------------------------------------------------------- /test/zip/babo.txt: -------------------------------------------------------------------------------- 1 | babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2babo2 --------------------------------------------------------------------------------