IMD 1.17: 25/12/2009 20:14:28 45860558-011 1of1 xvt/ch system service style: b25-xs1 level: r2.1.8 label: b25xs1-1/1    9|P^$(WY)$(PFY)$(KSN)$(NPN)$(DSAN)$(FFCourier)$(WP24)$(DSC)$(UM1440)$(PS200)$(FFNew Century Schoolbook)$(WP0)$(DSCBodyText)$(BY)$(PS320)$(FFHelvetica)$(DSChead1)$(BN)$(PS180)$(DSCRelease.info)$(PS140)$(DSCCaveat)$(PS200)$(FFNew Century Schoolbook)$(DSCbullet)$(BY)$(PS360)$(FFHelvetica)$(DSCcontents.head)$(BN)$(PS200)$(DSCToc.Section)$(PS180)$(DSCToc1)$(DSCToc2)$(DSCfooter)$(DSCToc3)$(DSCToc4)$(BY)$(PS240)$(DSChead2)$(IY)$(PS200)$(DSCAnnotation)$(BN)$(IN)$(FFNew Century Schoolbook)$(DSClist.num)$(BY)$(DSCbodytext.emph)$(PS360)$(FFHelvetica)$(DSCsectionhead)$(BN)$(DSCsectionnumber)$(LN240,240,240)$(DSR)$(IL558)$(LN160,240,0)$(KTY)$(TBR7344)$(NS1)$(CT2)$(DSRBodyText)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(DSRhead1)$(IL0)$(IF0)$(LN0,220,0)$(KFN)$(TBL1368)$(HP0)$(VT9180)$(NS0)$(CT0)$(DSRRelease.info)$(LN340,160,0)$(TB)$(VT1800)$(DSRCaveat)$(IL64499)$(LN160,200,0)$(VT0)$(DSRAnnotation)$(IL0)$(LN360,400,720)$(KFY)$(VT1800)$(DSRContents.head)$(IL506)$(LN400,240,180)$(KFN)$(TBL6624,R7176,R7344)$(HP254)$(VT0)$(DSRToc.Section)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(DSRToc1)$(IL2448)$(IF64536)$(DSRToc2)$(IL990)$(IF65104)$(LN160,240,0)$(TB)$(HP0)$(DSRbullet)$(IL558)$(IF0)$(LN160,220,0)$(KPN)$(TBR7344)$(NS1)$(CT2)$(DSRfooter)$(IL3600)$(IF64384)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(HP254)$(NS0)$(CT0)$(DSRToc3)$(IL4896)$(IF64248)$(DSRToc4)$(IL990)$(IR47)$(IF65104)$(LN160,240,0)$(TB)$(HP128)$(LD40)$(NS1)$(NF3)$(DSRlist.num)$(IL0)$(IR0)$(IF0)$(LN240,400,720)$(KFY)$(KPN)$(HP1)$(LD0)$(NF0)$(DSRsectionhead)$(IL1008)$(IF64528)$(LN360,280,0)$(KFN)$(HP3)$(CT2)$(DSRhead2)$(PGNN,N,0)$(PGS12240,15840)$(PGM1440,1440,1440,1440)$(PGH720,720)$(FH65535)$(DSP)$(PGS15840,12240)$(PGM1152,7200,1440,1080)$(PGH576,461)$(BAN72,N72,N144,N144,B,N,N,72)$(DSPpage)$(ASC)$(BY)$(PS280)$(FFHelvetica)$(WP0)$(ASP)$(PGNY,Y,0)$(PGS9360,12240)$(PGM1181,806,432,1080)$(PGH576,720)$(PGA1)$(BAN0,N0,N0,N0,B,N,N,0)$(SC)$(BN)$(PS100)$(FFHelvetica Narrow)$(AC1)$(AT2)$(ASR)$(IL0)$(IF0)$(LN0,480,0)$(KTN)$(TBL4008,L4248)$(HP0)$(NS0)$(CT0)$(SB)$(PS480)$(FFHelvetica)$(AC0)$(AT0) $(PS200) $(PS480)Software Release$(LN0,120,0)$(TBL4008,R7560)$(SB) Announcement$(UY)$(PS200)$(FFHelvetica Narrow) $(BY)$(UN)$(PS280)$(FFHelvetica)$(LN0,280,0)$(CN)$(TB)$(VT5040)$(SB)XVT$(SO181)/CH System Service R2.1.8 MB25-XS1 XB25-XS1 NP25-XS1 UP25-XS1$(BN)$(PS200)$(FFNew Century Schoolbook)$(IL72)$(LN0,220,0)$(KTY)$(LF)$(VT8640)$(NS1)$(CT2)$(SB)$(SL)$(PS180)$(FFHelvetica)To order additional copies of this document$(SM)$(PS200)$(FFNew Century Schoolbook)$(IL216)$(IF65392)$(LN120,220,0)$(VT0)$(SB)$(SL)$(PS180)$(FFHelvetica) United States customers, call Unisys Direct at 1$(SI)800$(SI)448-1424.$(SM)$(LN80,220,0)$(SB)$(SL) All other customers, contact your Unisys Sales Office.$(SM)$(SB)$(SL) Unisys personnel, use the Electronic Literature Ordering (ELO) system.$(SM)$(ASCRelease.info)$(UY)$(ASRRelease.info)$(IL0)$(IF0)$(LN0,220,0)$(TBR7560)$(VT9360)$(NS0)$(CT0)$(SB)$(SL) $(SM)$(ASC)$(UN)$(PS200)$(FFNew Century Schoolbook)$(PGNY,S,0)$(PGCY,2,4213,4494)$(BAN72,N72,N144,N144,B,N,N,72)$(SK)$(ASCRelease.info)$(PS180)$(FFHelvetica)$(LN40,220,0)$(TBL1368)$(VT0)$(SB)$(SL)Distribution lists: SA, SN, SU, SW, PR5$(SM)$(PGI2)$(SK)$(LN0,220,0)$(VT9180)$(SB)$(SL)System: CTOS Release: R2.1.8 November 1993$(SM)$(LN40,220,0)$(SB)$(SL)Part Number: $(ASC)43576263-004$(SM)$(PS0)$(FFCourier)$(WP144)$(PGCN,1)$(PGI1)$(BAN0,N0,N0,N0,B,N,N,0)$(SK)$(PS200)$(FFNew Century Schoolbook)$(WP0)$(ASPpage)$(PGNY,Y,0)$(PGM1181,806,1440,1080)$(FO2)$(PGA2)$(BAN72,N72,N144,N144,B,N,N,72)$(SC)$(ASCAnnotation)$(BY)$(NY)$(IY)$(FFHelvetica)$(ASRAnnotation)$(IL64499)$(LN160,200,0)$(TB)$(VT0)$(SB)$(SL)>>>The previous page break contains special footer information. Do not delete it.$(SM)$(ASC)$(BN)$(NN)$(IN)$(PS140)$(ASR)$(IL0)$(LN340,160,0)$(KTN)$(TBR7344)$(NS1)$(CT2)$(SB)The names, places, and/or events used in this publication are not intended to correspond to any individual, group, or association existing, living, or otherwise. Any similarity or likeness of the names, places, and/or events with the names of any individual, living or otherwise, or that of any group or association is purely coincidental and unintentional.$(VT1800)$(SB)NO WARRANTIES OF ANY NATURE ARE EXTENDED BY THIS DOCUMENT. Any product or related information described herein is only furnished pursuant and subject to the terms and conditions of duly executed agreement to purchase or lease equipment or to lease software. The only warranties made by Unisys, if any, with respect to the products described in this document are set forth in such agreement. Unisys cannot accept any financial or other responsibility that may be the result of your use of the information in this document or software material, including direct, special or consequential damages.$(VT0)$(SB)You should be very careful to ensure that the use of this information and/or software material complies with the laws, rules, and regulations of the jurisdictions with respect to which it is used.$(SB)The information contained herein is subject to change without notice. Revisions may be issued to advise of such changes and/or additions.$(ASCCaveat)$(ASRCaveat)$(KTY)$(TB)$(NS0)$(CT0)$(SB)$(SL)RESTRICTED RIGHTS LEGEND. Use, reproduction, or disclosure is subject to the restrictions set forth in DFARS 252.227-7013 and FAR 52.227-14 for commercial computer software.$(SM)$(ASC)$(ASR)$(LN340,140,0)$(TBR7344)$(NS1)$(CT2)$(SB)$(SL)Copyright $(SO179) 1993 Unisys Corporation All Rights Reserved$(SM)$(LN20,140,0)$(SB)$(SL)Unisys is a registered trademark of Unisys Corporation$(SM)$(LN340,140,0)$(SB)$(SL)Convergent, Convergent Technologies, CTOS, NGEN, and SuperGen are registered trademarks of Convergent Technologies, Inc.$(SM)$(SB)$(SL)Art Designer, AutoBoot, Chart Designer, ClusterCard, ClusterShare, Context Manager, Context Manager/VM, CTAM, CT$(SI)DBMS, CT$(SI)MAIL, CT$(SI)Net, CTOS/VM, CTOS/Vpc, Document Designer, Generic Print System, Image Designer, Network PC, PC Emulator, Phone Memo Manager, Print Manager, Series 186, Series 286, Series 386, Series 286i, Series 386i, shared resource processor, Solution Designer, SRP, TeleCluster, The Operator, Voice/Data Services, Voice Processor, X$(SI)Bus, and X$(SI)Bus+ are trademarks of Convergent Technologies, Inc.$(SM)$(SB)$(SL)MAPPER and OFIS are registered trademarks of Unisys Corporation.$(SM)$(SB)$(SL)$(ASCCaveat)BTOS is a trademark of Unisys Corporation.$(SM)$(ASC)$(SB)$(SL)Apple, LaserWriter, and Macintosh are registered trademarks of Apple Computer, Inc. AT, IBM, IBM PC, and OS/2 are registered trademarks of International Business Machines Corporation. Common User Access, IBM PC$(SI)AT, IBM PC$(SI)XT, and IBM PS/2 are trademarks of International Business Machines Corporation. Intel is a registered trademark of Intel Corporation. Lotus 1-2-3 is a registered trademark of Lotus Development Corporation. GW$(SI)BASIC, MS$(SI)DOS, and Microsoft are registered trademarks of Microsoft Corporation. Presentation Manager and Windows are trademarks of Microsoft Corporation. UNIX is a registered trademark of AT&T. XVT is a trademark of XVT, Inc.$(SM)$(PS200)$(FFNew Century Schoolbook)$(FO3)$(FE4)$(PGA3)$(TM5)$(SC)$(NY)$(IY)$(FFHelvetica)$(ASRAnnotation)$(IL64499)$(LN160,200,0)$(TB)$(NS0)$(CT0)$(SB)$(SL)>>>The page break before this heading contains the template that automatically generates your table of contents. Do not delete it.$(SM)$(ASCcontents.head)$(BY)$(NN)$(IN)$(PS360)$(CR4,1)$(ASRContents.head)$(IL0)$(LN360,400,720)$(KFY)$(VT1800)$(SB)$(SL)$(CR0,0)Contents$(ASCToc.Section)$(BN)$(PS200)$(ASRToc.Section)$(IL506)$(LN400,240,180)$(KFN)$(TBL6624,R717 6,R7344)$(HP254)$(VT0)$(SB)Section $(CP2)1$(CR0,0) $(BY) General Description $(BN) $(CR5,2)1$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP3)1.1$(CR0,0) Introduction $(CR5,3)1$(CR0,0)$(SB)$(CP4)1.2$(CR0,0) Product Description $(CR5,4)1$(CR0,0)$(SB)$(CP5)1.3$(CR0,0) System Service $(CR5,5)2$(CR0,0)$(SB)$(CP6)1.4$(CR0,0) Graphics $(CR5,6)2$(CR0,0)$(SB)$(CP7)1.5$(CR0,0) Text Edit $(CR5,7)3$(CR0,0)$(SB)$(CP8)1.6$(CR0,0) Resources $(CR5,8)3$(CR0,0)$(SB)$(CP9)1.7$(CR0,0) Help $(CR5,9)3$(CR0,0)$(SB)$(CP10)1.8$(CR0,0) Internationalization $(CR5,10)3$(CR0,0)$(SB)$(CP11)1.9$(CR0,0) Extensible $(CR5,11)4$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP12)2$(CR0,0) $(BY) Release Functionality $(BN) $(CR5,12)5$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP13)2.1$(CR0,0) Introduction $(CR5,13)5$(CR0,0)$(SB)$(CP14)2.2$(CR0,0) New Feature Summary $(CR5,14)5$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP15)3$(CR0,0) $(BY) Product Interdependencies $(BN) $(CR5,15)7$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP16)3.1$(CR0,0) Introduction $(CR5,16)7$(CR0,0)$(SB)$(CP17)3.2$(CR0,0) Software Requirements $(CR5,17)7$(CR0,0)$(SB)$(CP18)3.3$(CR0,0) Hardware Requirements $(CR5,18)7$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP19)4$(CR0,0) $(BY) Migration Requirements $(BN) $(CR5,19)9$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP20)4.1$(CR0,0) Introduction $(CR5,20)9$(CR0,0)$(SB)$(CP21)4.2$(CR0,0) Compatibility with Previous Versions $(CR5,21)9$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(PGNY,N,0)$(PGA4)$(TM0)$(SC)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP22)5$(CR0,0) $(BY) Corrections $(BN) $(CR5,22)11$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP23)5.1$(CR0,0) Introduction $(CR5,23)11$(CR0,0)$(SB)$(CP24)5.2$(CR0,0) List of Corrections $(CR5,24)11$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP25)6$(CR0,0) $(BY) Restrictions and Known Limitations $(BN) $(CR5,25)13$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP26)6.1$(CR0,0) Introduction $(CR5,26)13$(CR0,0)$(SB)$(CP27)6.2$(CR0,0) XVT/CH System Service Limitations $(CR5,27)13$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP28)7$(CR0,0) $(BY) Installation Procedure $(BN) $(CR5,28)17$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP29)7.1$(CR0,0) Introduction $(CR5,29)17$(CR0,0)$(SB)$(CP30)7.2$(CR0,0) Overview $(CR5,30)17$(CR0,0)$(SB)$(CP31)7.3$(CR0,0) Types of Systems $(CR5,31)17$(CR0,0)$(SB)$(CP32)7.4$(CR0,0) Required Files $(CR5,32)19$(CR0,0)$(SB)$(CP33)7.5$(CR0,0) Tape Installation $(CR5,33)20$(CR0,0)$(SB)$(CP34)7.6$(CR0,0) Floppy Installation $(CR5,34)20$(CR0,0)$(SB)$(CP35)7.7$(CR0,0) Installing the XVT/CH System Service $(CR5,35)21$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP36)8$(CR0,0) $(BY) Support $(BN) $(CR5,36)23$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP37)8.1$(CR0,0) Introduction $(CR5,37)23$(CR0,0)$(SB)$(CP38)8.2$(CR0,0) Warranty $(CR5,38)23$(CR0,0)$(SB)$(CP39)8.3$(CR0,0) Support Category $(CR5,39)23$(CR0,0)$(SB)$(CP40)8.4$(CR0,0) Support Discontinuance $(CR5,40)24$(CR0,0)$(SB)$(CP41)8.5$(CR0,0) Product Assistance $(CR5,41)24$(ASCToc2)$(CR0,0)$(ASRToc2)$(IL2448)$(IF64536)$(SB)$(CP42)8.5.1$(CR0,0) Instructions $(CR5,42)24$(CR0,0)$(SB)$(CP43)8.5.2$(CR0,0) Environment $(CR5,43)25$(CR0,0)$(SB)$(CP44)8.5.3$(CR0,0) Software Components $(CR5,44)25$(CR0,0)$(SB)$(CP45)8.5.4$(CR0,0) Hardware Components $(CR5,45)25$(CR0,0)$(SB)$(CP46)8.5.5$(CR0,0) Circumstances $(CR5,46)26$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP47)9$(CR0,0) $(BY) Customer Product Information $(BN) $(CR5,47)27$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP48)9.1$(CR0,0) Introduction $(CR5,48)27$(CR0,0)$(SB)$(CP49)9.2$(CR0,0) Documentation $(CR5,49)27$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(PGA5)$(SC)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP50)10$(CR0,0) $(BY) List of Files on Product Media $(BN) $(CR5,50)29$(ASCToc1)$(PS180)$(CR0,0)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)$(CP51)10.1$(CR0,0) Contents of the Distribution Tape $(CR5,51)29$(CR0,0)$(SB)$(CP52)10.2$(CR0,0) Contents of the Distribution Diskettes $(CR5,52)29$(SM)$(ASCToc.Section)$(PS200)$(CR0,0)$(ASRToc.Section)$(IL506)$(IF0)$(LN400,240,180)$(KPN)$(TBL6624,R7176,R7344)$(SB)$(SL)Section $(CP53)11$(CR0,0) $(BY) Ordering Procedure $(BN) $(CR5,53)31$(SM)$(ASC)$(PS360)$(CR0,0)$(ASP)$(PGNY,Y,1)$(FO6)$(FE7)$(PGA1)$(BAN0,N0,N0,N0,B,N,N,0)$(SC)$(ASCsectionhead)$(BY)$(CR4,2)$(ASRsectionhead)$(IL0)$(LN240,400,720)$(KFY)$(TB)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)1$(ON) $(ASC)$(BY) General Description $(ASChead1)$(PS320)$(CR4,3)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTN)$(KFN)$(HP2)$(CT2)$(SB)$(SM)$(OY)$(CR0,0)1.1$(ON) Introduction $(ASC)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(HP0)$(NS0)$(CT0)$(SB)This Software Release Announcement describes XVT/CH System Service R2.1.8. The XVT/CH System Service is a collection of C functions for building both character and graphical user interface applications. $(ASCBodyText)$(ASRBodyText)$(TBR7344)$(NS1)$(CT2)$(SB)Unisys publishes Software Release Announcements (SRAs) to announce the release of a new product. This Software Release Announcement$(SL) $(ASCbullet)$(ASRbullet)$(IL990)$(IF65104)$(KPY)$(TB)$(NS0)$(CT0)$(SB)$(SM) Provides you with technical details and ordering information on the new produc$(SL)t$(SB)$(SM) Prescribes interdependency and migration considerations$(SL) $(SB)$(SM) Complements marketing, sales, and other customer product informatio$(SL)n$(SB)$(SM) Lists additional sources of information$(ASCBodyText)$(ASRBodyText)$(IL558)$(IF0)$(KPN)$(TBR7344)$(NS1)$(CT2)$(SB)You can order extra copies of an SRA. For more information, see Section 11, $(SO184)Ordering Procedure,$(SO185) or contact your Unisys representative.$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,4)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)1.2$(ON) Product Description $(ASC)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)XVT is a layer above the native GUI and includes effective abstractions of the native GUI's functionality. With XVT, CTOS developers can develop portable user interface applications between CTOS character and Presentation Manager (PM) based workstations. XVT applications can easily be ported to other GUIs such as Motif, Open Look, and Microsoft Windows simply by recompiling and linking with a different XVT library. $(SB)With this high degree of portability, XVT does not take a "least common denominator" approach to supporting the underlying window systems. XVT contains functions to manipulate windows, draw text and graphics, allocate memory, process events and messages, display menus and dialog boxes, handle file I/O, and print. XVT's rich API avoids the level of complexity of the underlying window systems. Consequently, $(PGNY,N,0)$(PGA2)$(SC)programming to XVT is easier than programming to the underlying window system. $(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,5)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)1.3$(ON) S$(ASC)ystem Service $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)XVT on CTOS is implemented by means of one of two system services; one for character workstations (XVT/CH) and one for PM workstations (XVT/PM). XVT function calls from the application are handled by the appropriate XVT System Service installed on the workstation. Consequently, XVT applications support a common executable file for both CTOS PM and character environments. With a common application binary interface (ABI), software maintenance, support, and development are greatly reduced for the XVT application developer. $(SB)Users running more than one XVT application can realize substantial memory savings from the system service versus a linked-in library. The syst em service allows each XVT application to require 250KB less of memory usage than applications that have XVT libraries linked in. $(SB)The system service makes XVT applications more extensible. Users can take advantage of new XVT enhancements and modifications by installing a new system service instead of waiting for a revision release from the application developer.$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,6)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)1.4$(ON) $(ASC)Graphics $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)XVT provides a standard set of drawing primitives consisting of a pen, a brush, a font, and a drawing mode for drawing shapes such as rectangles, ovals, pie segments, and polygons. A pen is used to draw outlines of shapes being specified in terms of width, color, and style. A brush is used to draw a pattern of pixels within a geometric shape. A font consists of a style (bold, italic, etc.), a point size, and family (Times, Helvetica, etc.). A drawing mode can be used to implement pixel block moves (BitBlt) that support logical operations (OR, XOR, etc.). Graphics primitives are not supported under XVT/CH since XVT/CH operates in a character environment.$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(PGA3)$(SC)$(CR4,7)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)1.5$(ON) $(ASC)Text Edit $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)XVT allows multiple text edit areas in one window. Each text edit area contains a border rectangle, a set of attributes, a font specification, a margin specification, and a character entry limit.$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,8)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)1.6$(ON) $(ASC)Resources $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)Resources contain definitions for menus, dialog boxes, and other components of the user interface. XVT uses a universal resource language (URL) to provide a common resource definition for the platforms it supports. The URL compiler under CTOS generates Presentation Manager compatible resource files (RC). $(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,9)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)1.7$(ON) $(ASC)Help $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)XVT enters its built-in help system when the user clicks the Help button, presses the help key, or selects any of the items from the Help menu. Additionally, an API is provided so the application (as well as XVT itself) can identify a topic based on the context the user is in. Once a topic is displayed, a sizeable and moveable text window containing the help text is presented to the user. By clicking on highlighted words that are of interest to them, users may navigate between topics using hyperlinks. Help topics may also be started from a dialog box that lists the topics contained in the help file. The help system reads topics from a system help file as well as an application help file. Additional topics in other help files may be viewed by selecting a new help file from within the help system. The help system records which text topics have been visited, so the user may conveniently revisit them at any time.$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,10)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)1.8$(ON) $(ASC)Internationalization $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)XVT applications are easy to internationalize since all text for messages and menus are located in resource files which are external to the application source. XVT also handles all keyboard and video interaction. Therefore, applications need not implement special code for foreign character keyboard input or video output.$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(PGA4)$(SC)$(CR4,11)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)1.9$(ON) $(ASC)Extensible $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)Although XVT has a rich API, it may not address the requirements of every application. Special functions are provided to intercept and handle native events. These XVT event hooks allow the developer to mix XVT calls with calls provided by the underlying window system, thus giving the developer a more program control. For example, in a graphics intensive application, the user interface portion can be constructed using the XVT API while the drawing portion can be constructed with the API of the underlying window system.$(PS360)$(FFHelvetica)$(PGNY,O,0)$(PGA5)$(SC)$(ASCsectionhead)$(BY)$(CR4,12)$(ASRsectionhead)$(IL0)$(LN240,400,720)$(KTY)$(KFY)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)2$(ON) $(ASC)$(BY) Release Functionality $(ASChead1)$(PS320)$(CR4,13)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTN)$(KFN)$(HP2)$(CT2)$(SB)$(SM)$(OY)$(CR0,0)2.1$(ON) Introduction $(ASC)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTY)$(TBR7344)$(HP0)$(SB)$(SL)This section describes the new and enhanced features of XVT/CH System Service R2.1.8.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,14)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TBL1032)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)2.2$(ON) New Feature Summary $(ASC)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(TB)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The only differences between XVT R2.1.8 and the previous release of XVT 2.1.5, is that XVT R2.1.8 has been modified to allow the system service to run on the new SuperGen hardware supported by this release, as well a printing bug fix. (See Section 5 Corrections for more information on the bug fix.)$(SB)XVT/CH 2.1.5 contains numerous small improvements to performance and reliability. In addition, it contains the following major improvements:$(IL846)$(TBL1176)$(SB) Support for timer events.$(IL1178)$(IF65204)$(SB) Hyperlinks may now be traversed by using the keyboard. A hyperlink may be activated by moving the caret over a word in the help text window and typing the CTRL-X key combination (on some keyboards the CTRL key may be labeled 'CODE').$(SB) XVT common runfiles can use either the XVT/CH service or the XVT/PM service.$(SB) XVT/CH R2.1.8 is a maintenance update to XVT/CH 2.1 which, in addition to bug fixes for XVT/CH 2.1, this release also adds support for the SG1000 Open Notebook Workstation as well other SuperGen hardware platforms supported by this release. There is no new functionality added to XVT/CH R2.1.8. All of the enhancements made in XVT/CH 2.1 have been included in this release.$(PS360)$(FFHelvetica)$(PGNY,N,0)$(PGA6)$(SC)$(PGNY,O,0)$(PGA7)$(SC)$(BY)$(NY)$(IY)$(PS200)$(IL64499)$(IF0)$(LN160,200,0)$(TB)$(SB)>>>The Section describes (general info we should add later. Can be boilerplate)$(ASCsectionhead)$(NN)$(IN)$(PS360)$(CR4,15)$(ASRsectionhead)$(IL0)$(LN240,400,720)$(KTY)$(KFY)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)3$(ON) $(ASC)$(BY) Product Interdependencies $(ASChead1)$(PS320)$(CR4,16)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)3.1$(ON) Introduction $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)This section contains:$(ASCbullet)$(ASRbullet)$(IL990)$(IF65104)$(KPY)$(TB)$(NS0)$(CT0)$(SB) Information on interdependent software releases and hardware you need to use with the various functional components in the XVT/CH System Service R2.1.8 package$(SB) Information on the supported software release levels of all required products$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,17)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(KPN)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)3.2$(ON) $(ASC)Software Requirements $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)BTOS$(SO181) II 3.2 or greater, CTOS/VM 2.4 or greater, CTOS II 3.3.3 or greater, or CTOS III 1.0 is required when running under Protected Mode. CTOS 9.10, BTOS II 3.2, or CTOS I 3.3 or greater is required when running under Real Mode. $(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,18)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)3.3$(ON) $(ASC)Hardware Requirements $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The XVT/CH System Service can be installed on any 80186, 80286, 80386, or 80486 CTOS workstation with at least 1MB of RAM. This release also supports the SG1000 Open Notebook Workstation as well as other SuperGen hardware supported by this relea se. The XE-530 is supported through Cluster View (keyboard only, since Cluster View has no mouse support). The XVT/CH System Service supports the K1, K2, K3, K4, K5, K6 and SuperSet keyboard. The XVT/CH System Service may be used with or without a mouse, although a mouse is strongly recommended.$(SB)The XVT/CH System Service is supported on non-graphics workstations, and on workstations with either the B25-GRE (GC-001) or the B25-VGx (GC-004) graphics controller.$(PS360)$(FFHelvetica)$(PGNY,N,0)$(PGA8)$(SC)$(PGNY,O,0)$(PGA9)$(SC)$(ASCsectionhead)$(BY)$(CR4,19)$(ASRsectionhead)$(IL0)$(LN240,400,720)$(KTY)$(KFY)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)4$(ON) $(ASC)$(BY) Migration Requirements $(ASChead1)$(PS320)$(CR4,20)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)4.1$(ON) Introduction $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)This section describes the tasks required to migrate from prior releases of XVT/CH System Service.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,21)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)4.2$(ON) $(ASC)Compatibility with Previous Versions $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The R2.1.8 release of the XVT/CH System Service can coexist on a workstation with the 1.0 XVT/CH System Service. Both services can be installed in memory at the same time.$(SB)Applications that are designed to operate with the 1.0 XVT/CH System Service cannot use the R2.1.8 version. For example, OFIS Search 1.0 is an XVT/CH 1.0 client and therefore cannot use XVT/CH 2.1. If you have XVT/CH 1.0 and XVT/CH R2.1.8 applications on your workstation, you should install both versions of the service.$(SB)The XVT/CH 2.1 System Service replaces the XVT/CH 2.0 System Service. Applications written for the 2.0 version of XVT/CH will continue to work with the XVT/CH R2.1.8 system service. Since this product replaces its predecessor, XVT/CH R2.1.8 filenames are the same as those from the XVT/CH 2.0 release.$(PS360)$(FFHelvetica)$(PGNY,N,0)$(PGA10)$(SC)$(PGNY,O,0)$(PGA11)$(SC)$(ASCsectionhead)$(BY)$(CR4,22)$(ASRsectionhead)$(IL0)$(LN240,400,720)$(KTY)$(KFY)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)5$(ON) $(ASC)$(BY) Corrections $(ASChead1)$(PS320)$(CR4,23)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)5.1$(ON) Introduction $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)This section lists corrections to the software since the last release of this product.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,24)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)5.2$(ON) List of Corrections $(ASC)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The following major corrections have been made to XVT/CH since the 2.0 release.$(IL979)$(IR65448)$(IF65115)$(HP128)$(LD40)$(NS1)$(NF3)$(SB)$(OY)1.$(ON) A disabled menu item can no longer be selected by its accelerator. (UCF #26330297)$(SB)$(OY)2.$(ON) Selecting text in an edit field now works properly (UCF #26327270)$(SB)$(OY)3.$(ON) The $(BY)132x29_CharXvt.font$(BN) and $(BY)132x34_CharXvt.font$(BN) files have been modified to make the character set more readable in 132 column mode. (UCF #15655437)$(SB)$(OY)4.$(ON) The draw_line() function has been fixed to work properly with the HP Laser Jet printer. (UCF #15884151)$(PS360)$(FFHelvetica)$(PGNY,N,0)$(PGA12)$(SC)$(PGNY,O,0)$(PGA13)$(SC)$(BY)$(NY)$(IY)$(PS200)$(IL64499)$(IR0)$(IF0)$(LN160,200,0)$(HP0)$(LD0)$(NS0)$(NF0)$(SB)>>>Use this section to list things that don't work, not hardware and software requirements.$(ASCsectionhead)$(NN)$(IN)$(PS360)$(CR4,25)$(ASRsectionhead)$(IL0)$(LN240,400,720)$(KTY)$(KFY)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)6$(ON) $(ASC)$(BY) Restrictions and Known Limitations $(ASChead1)$(PS320)$(CR4,26)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)6.1$(ON) Introduction $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)This section lists restrictions and limitations known to exist in XVT/CH System Service R2.1.8. $(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,27)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)6.2$(ON) $(ASC)XVT/CH System Service Limitations $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The following items are known restrictions and limitations with of the 2.1 release of the XVT/CH System Service:$(BY)$(IL1010)$(IF65084)$(KFY)$(TBL1008,L1296)$(SB) Due to the fact that the Real Mode portion of CTOS III 1.1 has grown, there is not enough Real Mode Memory left to successfully run XVT/CH Real Mode Library applications on the new SuperGen hardware supported by this release. This mainly effects the SG2400, SG3000, SG3400, SG4000, SG6000, and SG7000. There is no problem running XVT/CH Real Mode Library applications under CTOS II or CTOS I$(SL).$(BN)$(IL974)$(IF65120)$(KFN)$(TBL960)$(SB)$(SM) When running an XVT application under BTOS II 3.2 on a system with EV video hardware (B28-EV and B38-EV), the available coordinates are shifted to the right. The XVT application will only show half of the rightmost border of the main window and will allow you to resize a window so that only half of its rightmost border is visible.$(SB) When running an XVT application on an SG-2000 with a B25-D1 monitor, XVT will load a smaller font which results in a "busy" screen when trying to display lots of text and dialog boxes.$(SB) After running an XVT application via Cluster View, the system font is not reloaded. Since the XVT font closely resembles the system font, this may not be noticeable. XVT cannot prevent this from happening.$(PGNY,N,0)$(PGA14)$(SC)$(SB) The B27 is not supported in this release.$(SB) When the server is running CTOS/XE 3.0, cluster workstations may not be able to see the disks on the server. This is caused by a bug in CTOS/XE 3.0. It is fixed in CTOS/XE 3.0.5. $(SB) Hyperlinked help topics may not be started in circular fashion. For example, if topic A starts topic B, then topic A may not be restarted from topic B. While this will not cause a system crash or loss of data, the system may not be able to Backtrack or Return successfully to the ancestors of the launched topics.$(SB) XVT/CH 2.1 treats grayscale (e.g. GS1) monitors with a VGA graphics adapter as a black and white monitor. It does not take advantage of the monitor's grayscale feature.$(SB) If a user opens a very large number of dialog boxes at the same time (on the order of 15-20), the XVT/CH 2.1 service's stack may overflow. This causes "unpredictable behavior", eventually leading to a system crash. The XVT/CH 2.1 System Service cannot protect against this condition. Client application developers must design their applications so that this condition does not occur.$(SB) On some systems, if a user uses Context Manager to switch between contexts that use the character mode mouse (such as XVT/CH), "ghost cursors" can be left on the screen. This is a Context Manager/VAM interaction problem. XVT/CH cannot compensate for it.$(SB) On CTOS II 3.3.3, all mouse clicks behave as if the shift button is up. This prevents the use of "shift$(SI)click". This is corrected in newer versions of CTOS.$(SB) When the $(IY)<$(SA)>$(IN) directory is full, Context Manager is unable to load the XVT/CH font on behalf of an XVT/CH application. When this occurs, the application's borders and dialog boxes will not appear correctly. Delete files in the $(IY)<$(SA)>$(IN) directory to remedy the problem. $(SB) Background color for text is implemented to a very limited extent. Background color is only enabled if the foreground color is WHITE. (Internally, XVT reverses WHITE and BLACK, so application requests for WHITE text result in BLACK text. This should not be apparent to users of XVT applications). $(SB) The minimum size for a window is three lines.$(PGA15)$(SC)$(SB) XVT/CH does not print correctly on a plotter.$(SB) When entering the name of a file to open in the edit field of the standard open file dialog, you must type the entire file specification, including the node name. For example, to access a file on the server, you would type $(IY){server}[sys]config.sys$(IN) instead of $(IY)[!sys]config.sys$(IN).$(SB) On real mode systems, the standard open file dialog may not display all nodes. To remedy this problem, merge $(IY)NetRq.txt$(IN) into the local request.sys file. $(IY)NetRq.txt$(IN) is found on installation diskette 1 or $(IY)[Qic1]$(IN) of the CUI installation tape.$(SB) The OVERTYPE key is not supported in this release. Using the OVERTYPE key when entering text has no effect on text entry.$(SB) On the SG3000 video attributes such as bold an d underline are not supported. However, color can be specified for character attributes that XVT supports by specifying 'yes' for the fields StdVgaBold and StdVgaUnderLine in the $(IY)config.sys$(IN) file. This will cause colors from the XVT color palette to be used when XVT applications try to display bold or underline text.$(IL558)$(IF0)$(TB)$(SB)The following items are known restrictions and limitations with of the R2.1.8 release of the XVT/CH System Service:$(IL974)$(IF65120)$(TBL960)$(SB) The attributes which distinguish accelerators and menu mnemonics can be difficult to distinguish on the SG 1000 Open Notebook Workstation.$(PS360)$(FFHelvetica)$(PGA16)$(SC)$(PGNY,O,0)$(PGA17)$(SC)$(ASCsectionhead)$(BY)$(CR4,28)$(ASRsectionhead)$(IL0)$(IF0)$(LN240,400,720)$(KTY)$(KFY)$(TB)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)7$(ON) $(ASC)$(BY) Installation Procedure $(ASChead1)$(PS320)$(CR4,29)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)7.1$(ON) Introduction $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)This section describes installation procedures and required files.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,30)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)7.2$(ON) $(ASC)Overview $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The XVT/CH System Service should only be used on BTOS or CTOS Information Processing Systems that are equipped with a hard disk or in clusters where the server is equipped with a hard disk.$(SB)Use the following installation procedures to install XVT/CH System Service on your workstation. Characters that you must type are shown in $(BY)boldface$(BN). Special keys, such as RETURN and GO, are shown in upper case. For details on using the Executive and its commands, see the $(IY)CTOS Executive User's Guide$(IN) and the $(IY)CTOS Executive Reference Manual$(IN).$(SB)$(IY)NOTE: If XVT/CH and XVT/PM have been previously installed, and it is later desired to remove XVT/PM, but keep XVT/CH installed, you must first copy [sys]2.0>Xvt.hlp and [sys]XvtNls.sys to [sys]save>2.0>Xvt.hlp and [sys]save>XvtNls.sys before removing XVT/PM. After XVT/PM has been removed, rename [sys]save>2.0>Xvt.hlp and [sys]save>XvtNls.sys back to [sys]2.0>Xvt.hlp and [sys]XvtNls.sys. This is necessary due to the fact that both XVT/CH and XVT/PM use these files.$(ASChead1)$(BY)$(IN)$(PS320)$(FFHelvetica)$(CR4,31)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)7.3$(ON) $(ASC)Types of Systems $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN240,240,240)$(KTN)$(KFN)$(JS)$(HP0)$(LD40)$(NS0)$(CT0)$(SB)$(SM)The following information explains how to install XVT/CH System Service on three types of systems:$(IL990)$(IF65104)$(LN160,240,0)$(LF)$(LD0)$(SB) Stand-alone and cluster workstations with hard disks$(SB) Server hard disk systems$(PGNY,N,0)$(PGA18)$(SC)$(SB) Shared Resource Processor systems$(IY)$(IL1268)$(IF64826)$(LN240,240,240)$(JS)$(LD40)$(SB)$(BY)Note$(BN): You cannot install the XVT/CH System Service on systems that contain only a floppy disk (unless your target installation device is the server workstation).$(IN)$(PGNY,Y,0)$(PGA19)$(SC)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,32)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(LF)$(HP2)$(LD0)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)7.4$(ON) $(ASC)Required Files $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN240,240,240)$(KTN)$(KFN)$(JS)$(TBL3744)$(HP0)$(LD40)$(NS0)$(CT0)$(SB)$(SM)The files required to run the XVT/CH System Service must reside on the $(IY)[Sys]$(IN) directory of the target installation volume.$(IL990)$(IF65104)$(LN160,240,0)$(LF)$(TB)$(LD0)$(SB) $(IY)2.0>1024x768_146XVT.font$(IN) is a raster font file for the XVT/CH System Service.$(SB) $(IY)2.0>1024x768_80XVT.font$(IN) is a raster font file for the XVT/CH System Service.$(SB) $(IY)2.0>720x348_80XVT.font$(IN) is a raster font file for the XVT/CH System Service.$(SB) $(IY)2.0>640x480_80XVT.font$(IN) is a raster font file for the XVT/CH System Service.$(SB) $(IY)2.0>80x29_CharXVT.font$(IN) is a character font file for the XVT/CH System Service.$(SB) $(IY)2.0>80x34_CharXVT.font$(IN) is a character font file for the XVT/CH System Service.$(SB) $(IY)2.0>132x29_CharXVT.font$(IN) is a character font file for the XVT/CH System Service.$(SB) $(IY)2.0>132x34_CharXVT.font$(IN) is a character font file for the XVT/CH System Service.$(SB) $(IY)2.0>Xvt.hlp$(IN) is a binary help file that is required to run the XVT/CH System Service.$(SB) $(IY)2.0>XvtChMsg.bin$(IN) is a binary message file that is required to run the XVT/CH System Service.$(SB) $(IY)2.0>XvtNls.sys$(IN) is a binary NLS file that is required to run the XVT/CH System Service.$(SB) $(IY)2.0>XvtNlsKbd.tbl$(IN) is a binary NLS Keyboard file that is required to run the XVT/CH System Service.$(SB) $(IY)2.0>XvtChService.run$(IN) is the run file for the XVT/CH System Service.$(SB) $(IY)2.0>DeinstallXvtChService.run$(IN) is the run file used to deinstall the XVT/CH System Service.$(PGA20)$(SC)$(BY)$(NY)$(IY)$(FFHelvetica)$(IL64499)$(IF0)$(LN160,200,0)$(SB)>>>The above page break contains a even/odd header/footer. Do not delete.$(ASChead1)$(NN)$(IN)$(PS320)$(CR4,33)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(NS1)$(CT2)$(SB)$(SL)$(OY)$(CR0,0)7.5$(ON) $(ASC)Tape Installation $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The XVT/CH System Service is installed as part of the CTOS User Interface Runtime. Use the following procedure to install the XVT/CH System Service from tape to stand-alone and cluster workstations that contain hard disks $(SL).$(ASClist.num)$(ASRlist.num)$(IL990)$(IR47)$(IF65104)$(KTY)$(KPY)$(HP128)$(LD40)$(NS1)$(NF3)$(SB)$(OY)1.$(ON) Sign on to the workstation.$(SB)$(OY)2.$(ON) Make sure the Context Manager is deinstalled.$(SB)$(OY)3.$(ON) Insert the distribution medium into the appropriate device.$(SB)$(OY)4.$(ON) From the Executive, use the Installation Manager command to initiate the installation procedure.$(ASCBodyText)$(SB)$(OY)5.$(ON) When offered the choice of a Software Operation by the first screen of Installation manager, select $(IY)Install New Software$(IN) (using the $(BY)MARK$(BN) key), and then press $(BY)GO$(BN). When prompted for Install Media, select $(IY)Tape Installation$(IN), and press $(BY)GO$(BN). $(SB)$(OY)6.$(ON) You will be offered the choice of accepting or changing the defaults. When prompted for $(IY)Choose Package to Install$(IN), select the XVT/CH System Service, and press $(BY)GO$(BN).$(SB)$(OY)7.$(ON) Follow instructions and provide input as prompted.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,34)$(ASRhead1)$(IL1008)$(IR0)$(IF64528)$(LN360,360,0)$(KFY)$(KPN)$(HP2)$(LD0)$(CT2)$(NF0)$(SB)$(SL)$(OY)$(CR0,0)7.6$(ON) $(ASC)Floppy Installation $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN240,240,240)$(KTN)$(KFN)$(JS)$(HP0)$(LD40)$(NS0)$(CT0)$(SB)$(SM)Use the following procedure to install the XVT/CH System Service on stand-alone and cluster workstations that contain hard disks from floppy diskettes.$(IL979)$(IR65448)$(IF65115)$(LN160,240,0)$(LF)$(HP128)$(NS1)$(NF3)$(SB)$(OY)1.$(ON) Sign on to the workstation.$(IL990)$(IF65104)$(SB)$(OY)2.$(ON) Make sure the Context Manager is deinstalled.$(IL979)$(IF65115)$(SB)$(OY)3.$(ON) Insert the Distribution Diskette into the floppy drive.$(SB)$(OY)4.$(ON) If the Installation Manager is present on your system, initiate the installation procedure from the Executive using the Installation Manager command. $(PS180)$(FFHelvetica)$(PGNY,N,0)$(PGA21)$(SC)$(IL1134)$(IF65388)$(LN160,220,0)$(TBL3192,L6768)$(HP253)$(NS0)$(NF0)$(SB)$(IY)$(FFCourier)Installation Manager$(IN) [Non-interactive?]$(BY) $(UY) $(BN)$(UN)$(PS200)$(FFNew Century Schoolbook)$(IL979)$(IF65115)$(LN160,240,0)$(TB)$(HP128)$(NS1)$(NF3)$(SB)$(OY)5.$(ON) Press $(BY)GO.$(BN) This command will cause a series of commands to run, copying files to the $(IY)[sys]$(IN) directory, adding XVT commands to the $(IY)[sys]sys.cmds$(IN) command file, and adding request codes to your $(IY)[sys]request.sys$(IN) file.$(SB)$(OY)6.$(ON) If the Installation Manager is $(IY)NOT$(IN) present on your system, initiate the installation from the Executive with the Install command. $(IY)$(PS180)$(FFCourier)$(IL1134)$(IF65388)$(LN160,220,0)$(TBL3192,L6768)$(HP253)$(NS0)$(NF0)$(SB)Install$(IN) [Floppy Drive ([f0])]$(BY) $(UY) $(BN)$(UN)$(PS200)$(FFNew Century Schoolbook)$(IL990)$(IF65104)$(LN160,240,0)$(TB)$(HP128)$(NS1)$(NF3)$(SB)$(OY)7.$(ON) Press $(BY)GO$(BN). This command will cause a series of commands to run, copying files to the $(IY)[sys]$(IN) directory, adding XVT commands to the $(IY)[sys]sys.cmds$(IN) command file, and adding request codes to your $(IY)[sys]request.sys$(IN) file.$(SB)$(OY)8.$(ON) Reboot your workstation to load the upda ted request file.$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,35)$(ASRhead1)$(IL1008)$(IR0)$(IF64528)$(LN360,360,0)$(KTY)$(KFY)$(HP2)$(LD0)$(CT2)$(NF0)$(SB)$(SL)$(OY)$(CR0,0)7.7$(ON) $(ASC)Installing the XVT/CH System Service $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)To load the System Service into memory, use the following steps:$(IL979)$(IR65448)$(IF65115)$(HP128)$(LD40)$(NS1)$(NF3)$(SB)$(OY)1.$(ON) Make sure the Context Manager is not installed.$(SB)$(OY)2.$(ON) Issue the following command.$(IY)$(PS180)$(FFCourier)$(IL1134)$(IF65388)$(LN160,220,0)$(TBL3192,L6768)$(HP253)$(NS0)$(NF0)$(SB)Install XVT/CH 2.0 Service$(IN) $(PS200)$(FFNew Century Schoolbook)$(IL990)$(IF65104)$(LN160,240,0)$(TBL2304)$(SB) When the XVT/CH System Service is finished installing, a message will be displayed: "Successful installation."$(IY)$(IL1268)$(IR0)$(IF64826)$(LN240,240,240)$(JS)$(TB)$(HP0)$(SB)$(BY)Note$(BN): The XVT/CH System Service will fail to install if the XVT/PM service is already installed. If it is necessary to install the XVT/CH Service in a Presentation Manager environment, the service must be installed prior to starting Presentation Manager.$(IN)$(IL558)$(IF0)$(LN160,240,0)$(LF)$(LD0)$(SB)To deinstall the XVT/CH System Service use the following steps issue the following command:$(IY)$(PS180)$(FFCourier)$(PGA22)$(SC)$(IL1134)$(IR65448)$(IF65388)$(LN160,220,0)$(TBL3192,L6768)$(HP253)$(LD40)$(SB)Deinstall XVT/CH 2.0 Service$(IN) $(PS200)$(FFNew Century Schoolbook)$(IL990)$(IF65104)$(LN160,240,0)$(TBL2304)$(SB) When the XVT/CH System Service is finished deinstalling, the following message will be displayed: "Successful deinstallation."$(ASPpage)$(PGNY,O,0)$(PGA23)$(BAN72,N72,N144,N144,B,N,N,72)$(SC)$(ASCsectionhead)$(BY)$(PS360)$(FFHelvetica)$(CR4,36)$(ASRsectionhead)$(IL0)$(IR0)$(IF0)$(LN240,400,720)$(KTY)$(KFY)$(TB)$(HP1)$(LD0)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)8$(ON) $(ASCsectionhead)$(BY) Support $(ASChead1)$(PS320)$(CR4,37)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)8.1$(ON) Introduction $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN156,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)This section describes Unisys warranty, support category, and assistance provided by XVT/CH System Service R2.1.8.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,38)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)8.2$(ON) Warranty $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)XVT/CH System Service R2.1.8 is a warranted Unisys software product. $(SM)$(SB)$(SL)Unisys warrants that XVT/CH System Service R2.1.8, in its unaltered form, will substantially conform to Unisys current published functional specifications when used in Unisys supported configurations. The customer is responsible for reporting suspected deviations using the User Communication Form (UCF) process within ninety (90) days following delivery. The product is neither field repairable nor field modifiable. Corrections to reported deviations are provided to the user via updated code files.$(SM)$(SB)$(SL)This standard warranty is not a substitute for Unisys Service Agreement offerings.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,39)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)8.3$(ON) Support Category $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)XVT/CH System Service R2.1.8 is fully supported by Unisys.$(SM)$(SB)$(SL)Support services for XVT/CH System Service R2.1.8 are offered under the SURETY (United States) or A la Carte (International) support programs and are consistent with the support services offered for the entire CTOS Hardware and Software family of products.$(SM)$(PGNY,N,0)$(PGA24)$(SC)$(SB)$(SL)Unisys SureNet is an electronic bulletin board service, providing customers in the United States access to technical information seven days a week, 24 hours a day. SureNet Technical Information Services are available at no additional cost to customers with a current Unisys service agreement or software license and include access to system alerts, customer technical bulletins and online UCF entry. Registration is required. SureNet Support Services are available on an annual subscription basis. For more information, contact Unisys Direct at 1-800-448-1424, prompt 5. You may register for Technical Information Services and/or Support Services either online (by dialing 1-800-828-8796 (8 data bits, 1 stop bit, no parity, asynchronous, VT100 emulation) or by calling Unisys Direct.$(SM)$(SB)$(SL)If you need further assistance or information regarding support services, please contact your Unisys representative or your local Unisys office.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,40)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)8.4$(ON) Support Discontinuance $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(KFN)$(TBR7344)$(HP0)$(SB)UNISYS supports the current release level and one level back. Prior levels are not supported.$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,41)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)8.5$(ON) Product Assistance $(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN156,240,0)$(TBR7344)$(HP0)$(SB)The following sections describe how to get assistance if you need help and information you should provide if you experience a problem.$(ASChead2)$(BY)$(PS240)$(FFHelvetica)$(CR4,42)$(ASRhead2)$(IL1008)$(IF64528)$(LN360,280,0)$(KFN)$(TB)$(HP3)$(SB)$(OY)$(CR0,0)8.5.1$(ON) Instructions $(SM)$(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(TBR7344)$(HP0)$(SB)$(SL)Should you encounter a problem with a Unisys product, please contact your local Customer Service Center. Your Customer Service Center representative will have a more definitive set of problem reproduction requirement guidelines specific to the application you are running. So that your questions may be answered in a timely manner, please collect all information which applies to your problem. A guideline for gathering information is listed below or you may reference the Product Validation Profile (PVP) in the PRIMUS database for more product specific UCF submission requirements.$(SM)$(PGNY,Y,0)$(PGA25)$(SC)$(ASChead2)$(BY)$(PS240)$(FFHelvetica)$(CR4,43)$(ASRhead2)$(IL1008)$(IF64528)$(LN360,280,0)$(TB)$(HP3)$(SB)$(SL)$(OY)$(CR0,0)8.5.2$(ON) Environment $(SM)$(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(TBR7344)$(HP0)$(SB)$(SL)In order to assist us in determining the nature of your problem, please be prepared to describe the environment in which the problem occurs.$(SM)$(ASChead2)$(BY)$(PS240)$(FFHelvetica)$(CR4,44)$(ASRhead2)$(IL1008)$(IF64528)$(LN360,280,0)$(TB)$(HP3)$(SB)$(SL)$(OY)$(CR0,0)8.5.3$(ON) Software Components $(SM)$(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(TBR7344)$(HP0)$(SB)$(SL)If you suspect the problem is software related, be prepared to answer the following questions concerning the software being used:$(ASClist.num)$(ASRlist.num)$(IL990)$(IR47)$(IF65104)$(KPY)$(TB)$(HP128)$(LD40)$(CT0)$(NF3)$(SB)$(OY)1.$(ON) The version number of the software in which the problem occurs.$(SB)$(OY)2.$(ON) The version of the operating system software.$(SB)$(OY)3.$(ON) Installation parameters used for the failing software.$(SB)$(OY)4.$(ON) Configuration files used.$(SB)$(OY)5.$(ON) Other software installed at the time of failure.$(SB)$(OY)6.$(ON) Recent changes to the system software (updates, other)$(SB)$(OY)7.$(ON) Any messages associated with the failure that appear in the system log file (accessed through the $(ASCbodytext.emph)$(BY)Plog$(ASClist.num)$(BN) command).$(SB)$(OY)8.$(ON) The connectivity of the software (is your system part of a network?).$(SM)$(ASChead2)$(BY)$(PS240)$(FFHelvetica)$(CR4,45)$(ASRhead2)$(IL1008)$(IR0)$(IF64528)$(LN360,280,0)$(KPN)$(HP3)$(LD0)$(CT2)$(NF0)$(SB)$(SL)$(OY)$(CR0,0)8.5.4$(ON) Hardware Components $(SM)$(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(TBR7344)$(HP0)$(SB)$(SL)If you suspect the problem is hardware related, be prepared to answer the following questions concerning your hardware platform:$(ASClist.num)$(ASRlist.num)$(IL990)$(IR47)$(IF65104)$(KPY)$(TB)$(HP128)$(LD40)$(CT0)$(NF3)$(SB)$(OY)1.$(ON) The type of processor being used (B38, B39, SG2000, SG5000, other).$(SB)$(OY)2.$(ON) The workstation components (hard drives, communication modules, CD$(SI)ROM drive, other).$(SB)$(OY)3.$(ON) Any peripherals attached to the workstation (printers, scanners, modems, plotters, other).$(SB)$(OY)4.$(ON) The connectivity of the hardware (is your system part of a network?).$(SB)$(OY)5.$(ON) Recent changes to the hardware platform.$(SB)$(OY)6.$(ON ) The amount of memory installed.$(SM)$(ASChead2)$(BY)$(PS240)$(FFHelvetica)$(PGNY,N,0)$(PGA26)$(SC)$(CR4,46)$(ASRhead2)$(IL1008)$(IR0)$(IF64528)$(LN360,280,0)$(KPN)$(HP3)$(LD0)$(CT2)$(NF0)$(SB)$(SL)$(OY)$(CR0,0)8.5.5$(ON) Circumstances $(SM)$(ASCBodyText)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASRBodyText)$(IL558)$(IF0)$(LN160,240,0)$(TBR7344)$(HP0)$(SB)$(SL)Be prepared to describe the circumstances under which the failure occurs. The description should include:$(ASClist.num)$(ASRlist.num)$(IL990)$(IR47)$(IF65104)$(KPY)$(TB)$(HP128)$(LD40)$(CT0)$(NF3)$(SB)$(OY)1.$(ON) Is the problem reproducible?$(SB)$(OY)2.$(ON) What are the exact steps required to reproduced the problem?$(SB)$(OY)3.$(ON) Under what circumstances does the problem not occur?$(SM)$(ASC)$(PS360)$(FFHelvetica)$(ASP)$(PGNY,O,0)$(PGA27)$(BAN0,N0,N0,N0,B,N,N,0)$(SC)$(ASCsectionhead)$(BY)$(CR4,47)$(ASRsectionhead)$(IL0)$(IR0)$(IF0)$(LN240,400,720)$(KFY)$(KPN)$(HP1)$(LD0)$(NF0)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)9$(ON) $(ASC)$(BY) Customer Product Information $(ASChead1)$(PS320)$(CR4,48)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)9.1$(ON) Introduction $(ASC)$(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(TBL2544)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The XVT/CH System Service can be ordered separately and is also bundled with CTOS II 3.3 and above, and with CTOS III 1.0.$(ASCBodyText)$(ASRBodyText)$(KTY)$(TBR7344)$(NS1)$(CT2)$(SB)$(SL)The following product information is shipped with XVT/CH System Service Kit R2.1.8, and can be ordered separately from the software:$(SM)$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,49)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(KFY)$(TB)$(HP2)$(SB)$(SL)$(OY)$(CR0,0)9.2$(ON) Do$(ASC)cumentation $(BN)$(PS200)$(ASR)$(IL2528)$(IF63566)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)$(BY)Part Number Manual Name$(BN)$(FFNew Century Schoolbook)$(SB)43580422-100 $(IY)XVT Character User Interface Getting Started $(IN)This tutorial introduces the basic skills needed to use an XVT application, including how to use the mouse and keyboard to start and use XVT applications.$(FFHelvetica)$(IL566)$(IF0)$(SB)$(FFNew Century Schoolbook)The CTOS System Administration Guide is recommended. For a list of XVT Developer's manuals please refer to the XVT/CH Developer Kit Software Release Announcement.$(PS360)$(FFHelvetica)$(PGNY,N,0)$(PGA28)$(SC)$(PGNY,O,0)$(PGA29)$(SC)$(ASCsectionhead)$(BY)$(CR4,50)$(ASRsectionhead)$(IL0)$(LN240,400,720)$(KTY)$(KFY)$(HP1)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)10$(ON) $(ASC)$(BY) List of Files on Product Media $(ASChead1)$(PS320)$(CR4,51)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(HP2)$(CT2)$(SB)$(OY)$(CR0,0)10.1$(ON) $(ASC)Contents of the Distribution Tape $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The XVT/CH System Service is packaged with the CTOS User Interface Runtime. The files that make up the XVT/CH Service are listed below:$(IL576)$(LN240,200,240)$(KTY)$(KFY)$(JS)$(TBL3744)$(SB)$(SL)2.0>1024x768_146XVT.font 2.0>XvtChMsg.bin 2.0>1024x768_80XVT.font 2.0>Request.XVT.sys 2.0>720x348_80XVT.font 2.0>Xvt.hlp 2.0>640x480_80XVT.font 2.0>XvtNlsKbd.tbl 2.0>132x29_CharXVT.font 2.0>XvtNls.sys 2.0>132x34_CharXVT.font 2.0>XvtChService.run 2.0>80x34_CharXVT.font 2.0>DeinstallXvtChService.run 2.0>80x29_CharXVT.font$(ASChead1)$(BY)$(PS320)$(FFHelvetica)$(CR4,52)$(ASRhead1)$(IL1008)$(IF64528)$(LN360,360,0)$(LF)$(TB)$(HP2)$(NS1)$(CT2)$(SB)$(OY)$(CR0,0)10.2$(ON) $(ASC)Contents of the Distribution Diskettes $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL558)$(IF0)$(LN160,240,0)$(KTN)$(KFN)$(HP0)$(NS0)$(CT0)$(SB)$(SM)The XVT/CH System Service distribution diskette is your master copy and has been write-protected. The contents of the diskette cannot be overwritten unless the write-protect tab is removed. Do not remove the write-protect tab and do not use this diskette as a working copy. Rather, make a copy of the diskette and use it as a working copy.$(SB)The XVT/CH System Service is packaged on 2 diskettes for 5" floppy drives and a single diskette for 3" floppy drives.$(SB)The XVT/CH System Service Distribution diskette 1 contains the following files in the $(IY)$(IN) directory:$(PGNY,N,0)$(PGA30)$(SC)$(IL576)$(LN240,200,240)$(KTY)$(KFY)$(JS)$(TBL3744)$(SB)$(SL)HdInstall.sub Install.ctrl Install.jcl XvtServiceInstall.sub NetRq.txt$(IL558)$(LN160,240,0)$(LF)$(TB)$(SB)The Software Release Announcement, XvtChService.sra.def, is in the  $(IY)$(IN) directory on diskette 1.$(SB)On the 3" distribution diskettes, the remaining files are in an archive file, $(IY)XvtChService.01$(IN), in the $(IY)$(IN) directory. On the 5" distribution diskettes, the remaining files are in two archive files: $(IY)XvtChService.01$(IN), of diskette 1 in the $(IY)$(IN) directory, and $(IY)XvtChService.02$(IN), in the $(IY)$(IN) directory of diskette 2.$(IL576)$(LN240,200,240)$(JS)$(TBL3744)$(SB)The following files are contained in the archive file or files:$(SB)2.0>1024x768_146XVT.font 2.0>XvtChMsg.bin 2.0>1024x768_80XVT.font 2.0>Request.XVT.sys 2.0>720x348_80XVT.font 2.0>Xvt.hlp 2.0>640x480_80XVT.font 2.0>XvtNlsKbd.tbl 2.0>132x29_CharXVT.font 2.0>XvtNls.sys 2.0>132x34_CharXVT.font 2.0>XvtChService.run 2.0>80x34_CharXVT.font 2.0>DeinstallXvtChService.run 2.0>80x29_CharXVT.font$(IY)$(IL1268)$(IF64826)$(LN240,240,240)$(KTN)$(KFN)$(TB)$(LD40)$(SB)$(SM)$(BY)Note$(BN): The file names for XVT/CH R2.1.8 retain the 2.0> prefix from the previous release. This makes it possible for the installation of this version of XVT/CH to replace previous installations of XVT/CH 2.0. The prefix 2.0> should not be confused with the version of this product. Version information for the XVT/CH runfiles may be determined by using the Version command.$(IN)$(PS360)$(FFHelvetica)$(PGNY,O,0)$(PGA31)$(SC)$(ASCsectionhead)$(BY)$(CR4,53)$(ASRsectionhead)$(IL0)$(IF0)$(LN240,400,720)$(KTY)$(KFY)$(LF)$(HP1)$(LD0)$(NS1)$(SB)$(SL)$(ASCsectionnumber)$(BN)$(CR0,0)Section $(OY)11$(ON) $(ASC)$(BY) Ordering Procedure $(BN)$(PS200)$(FFNew Century Schoolbook)$(ASR)$(IL570)$(IR43)$(LN240,200,240)$(KTN)$(KFN)$(HP0)$(NS0)$(SB)$(SM)Please complete and return the attached Update Service Request form to order this product. Media provided by Unisys Corporation may not be returned for credit.$(SB)You can order manuals from the following address:$(IL1010)$(SB)Unisys Corporation Publications Distribution Center 13250 Haggerty Road North Plymouth, Michigan 48170$(DH)$(IO0)$(SO255)bPF $(SO232)$(SO160)$(SO249)$(SO255)$(SO160)$(SO249)$(SO160)$(SO249)$(DH)$(ASCfooter)$(PS180)$(FFHelvetica)$(ASRfooter)$(IL0)$(IR0)$(LN160,220,0)$(KTY)$(TBR7344)$(NS1)$(CT2)$(SB)$(SL)XXXX XXXX-00 $(SD)$(SM)$(DH)$(SB)$(SL)43576263-004 $(SJ)$(SM)$(DH)$(SB)$(SL)$(SJ) 43576263-004$(SM)$(DH)$(ASCToc.Section)$(PS200)$(ASRToc.Section)$(IL506)$(LN400,240,180)$(TBL6624,R7176,R7344)$(HP254)$(NS0)$(CT0)$(SB)$(SL)Section $(ASCToc1)$(PS180)$(ASRToc1)$(IL1440)$(IF64960)$(LN40,220,0)$(KPY)$(TB.L6624,R7176,R7368)$(SB)Level 1 $(ASCToc2)$(ASRToc2)$(IL2448)$(IF64536)$(SB)Level 2 $(ASCToc3)$(ASRToc3)$(IL3600)$(IF64384)$(SB)Level 3 $(ASCToc4)$(ASRToc4)$(IL4896)$(IF64248)$(SB)Level 4 $(SM)$(DH)$(ASC)$(ASR)$(IL0)$(IF0)$(LN160,180,0)$(KTN)$(KPN)$(TBR7344)$(HP0)$(SB)43576263-004 $(SD)$(DH)$(SB)$(SD) 43576263-004$(OB)E010FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000122001011F7002A008200000010000000200000003000000040000000500010001000100030001000400010005000100060001000700010008000100090001000B0001000D00020001000200020002000300020004000200050002000600040001000400040004000700050002000500040005000A0005000C0005000E0005000F0005000010050002100500061005000710050008100500091005000B1005000D1005000220060001001260000112200FF01280001012C0001012E00011120000100E600000000900596364757275602130224000002620000000000000226000002280000022A00000008028C00000000F7FFF7FF028C000000961092000006633C4500D00000500A109FE0C9A0A010A210E20010001006F308403C4500A0184727109494A20080000000B100FF00300010000000100000000010300010000000A21000001010300010000000A6000000201030001000000010000000301030001000000050080000601030001000000000000000701030001000000010000000801030001000000010000000901030001000000010000000A01030001000000010000000D01020004000000000A554251110400010000000271000002110300010000000000000005110300010000000100000006110400010000000A60000007110400010000000C6F00000811030001000000000000000911030001000000010000000A11050001000000025100000B110500010000000A5100000C11030001000000010000000E11050001000000026100000F110500010000000A610000022103000100000000000000042104000100000000000000052104000100000000000000082103000100000000000000000000000A210000010000000E210000010000000000000000A500000000000000A500000806A4A80BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00CD0000F0BD00BD00BD00BD002F001010CFCE002F001070FFCE002F0020F0FF08DE002F0020F1FF0CDE002F0020F3FF0EEE0000C02F0020F7FF0FDE002F0020F7FF0FDE002F0020F7FF0FDE002F0020F7FF8FDE00 2F0020FFFF8FDE002F0020FFFF8FDE002F0020F7FF0FDE002F0020F7FF0FDE002F0020F7FF0FDE002F0020F3FF0FDE002F0020F3FF0EDE002F0020F1FF0CDE002F0020F0FF08DE002F001070FFCE002F001010CFCE00CD0000F3CD0000F1CD0000F3BD00DE0000801F000060400000802008DF00108208CF000083EF0010FF8F9F002030FF0CCF001000F1EFFF9030FFEFFFFFEF00F3FF7CEFFFF00070FFEFE3F7FFFF8F70FF0FF0FF8F07DF001000F1EFFF9030FFEFFFFFEF00F3FF7EEFFF4008F1FFFFEBEFFF70CF70FF0FF3FFCF8FEF0000F31000F1EFFF2030FFEFEFFF3000F3FF7CEFFFB000F3DFFFEFF7FFFFCF70FF0FEFFF008FEF000070120000FFFF8F00F48EF3FFFF08F1FF38FFFFEF00F70CF1EFF3FFFF8F30FF1FFF00F78FEF000030120000F7FF0C00F00870FFFF08008F00F3FF0E00FF0870EF30FFFF0000E730EF00F18FDF00120000F7FF0C00700870FFFF0C008F00F3FF0E10FF0030EF30FFFF0000C770CF00F08FEF0000F3120000F7FF0C00700870FFFF0E008F00F3FF0E30EF0010EF10FFFF0800C7F08F00708FEF0000F0120000F7FF0C00700870FFFF0F008F00F3FF0E30EF0000EF10FFFF08008FF08F00308FDF00120000F7FF0C00700870FFFF0F008F00F3FF0E70EF0000EF00FFFF0C008FF18F00308FEF0000E3120000F7FF0C00700870FFFF8F008F00F3FF0E70EF0000E700FFFF0C100FF18F00108FEF0000F3120000F7FF0C00700870FFFFCF008F00F3FF0EF0EF0000E700F7FF0E100FF38F00108FDF00120000F7FF0C00700870FFFFEF008F00F3FF0EF0FF0000E300F7FF0E300EF3CF00008FEF000002120000F7FF0C00700870FFFFEF008F00F3FF0EF0FF0800E300F3FF0F300EF3EF00008FEF0000F3120000F7FF0C00700870FCFFFF008F00F3FF0EF0FF0C00C100F3FF0F700CF3FF000007EF0000C3410000F7FF0C007008707CFFFF088F00F3FF0EF0FF0FEF0070F1FF0F700CF7FF0CCF0000E3410000F7FF0C007008707CFFFF0C8F00F3FF0EF1FFEFEF0070F1FF8FF008F3FF8FBF00F10000F7FF0C007008703CFFFF0C8F00F3FF0EF0FFFF0E0000F0FF8FF008F3FFFFCF0000F3020000F7FF0C007008701CFFFF0E8F00F3FF0EF0FFFFCF0000F0FFCFF100F3FFFF0ECF00210000F7FF0C007008701CFFFF0F8F00F3FF0EF0EFFFA0080070FFCFF100F3FFFFCFDF0000E3210000F7FF0C007008700CFFFF0F8F00F3FF0EF0EFFF700E0070FFEFE300F3EFFFCF00210000F7FF0C007008700CF7FF8F8F00F3FF0EF0EFFF700F0030FFEFE300F3EFFF000CDF00210000F7FF0C007008700CF3FFCF8F00F3FF0E70EFFF708F0030FFFFC700F1EFFF000EEF0000F3210000F7FF0C007008700CF3FFEF8F00F3FF0E70EFFF70CF0010FFFFCF00F1EFFF000FEF0000F3210000F7FF0C007008700CF1FFFF8F00F3FF0E30EFFF70EF0010FFFF8F00F0EFFF008FDF00210000F7FF0C007008700CF0FFFF8F00F3FF0E10DFFF600000FFFF8F00F0EFFF008FEF0000F3210000F7FF0C007008700C70FFFF8F00F3FF0E00DFFF600000FFFF0F0070EFFF00CFDF00310000F7FF0C007008700C70FFFF8F00F3FF0E00F7EFFF600800F7FF0F0010EFFF00CFEF0000F3310000F7FF0C007008700C30FFFF8F00F3FF0E00F3EFFF600800F7FF0E0000EFFF00EFEF0000F3310000F7FF0C007008700C10FFFF8F00F3FF0E00F1EFFFA00800F3FF0E0000F7FFFFEFDF00310000F7FF0C007008700C00FFFF8F00F3FF0E0070EFFF700C00F3FF0E0000F1EFFFEF0000F3310000F7FF0C007008700C00FFFF8F00F3FF0E0000EFFF700C00F3FF0E000030EFFFDF00B10000F7FF0C007008700C00F7FF8F00F3FF0E0000F1FFFF0C00F3FF0EEF0020F7FFFFEF0000F3B10000F7FF0C007008700C00F3FF8F00F3FF0E000010FFFF0C00F3FF0EEF0020F0FFFFDF00110000F7FF0C007008700C00F3FF8F00F3FF0EEF0060F3FF0C00F3FF0EEF002010FFFFEF0000C3120000F7FF0C007008700C00F1FF8F00F3FF0E700800F0FF0C00F3FF0E00E10000F7FFEF0000E3120000F7FF0C007008300C00F0FF8F00F3FF0E700C0070FF0C00F3FF0E00F10000F1FFDF00120000F7FF0C00F008300C00F0FF8F00F3FF0E700C0030FF0C00F3FF0E00F30000F0FFEF0000F3120000F7FF0C00F008700C0070FF8F00F3FF0E700C0010FF0C00F3FF0E00F30000F0FFDF00120000F7FF0C00F008700C0030FF8F00F3FF0E700E0010FF0800F3FF0E00F3000070FFEF0000E2120000F3FF0C00F008700C0010FF8F00F3FF0E700E0010FF0800F3FF0E00F3080070EFDF00120000F3FF0C00F008700C0010FF8F00F3FF0E700F0010FF0800F3FF0E00F3080070EFDF00120000F3FF0C00F000700C0000FF8F00F3FF0E700F0010FF0000F3FF0E00F30C0070CFEF0000C3120000F3FF0E00F100700C0000F78F00F3FF0E708F0010FF0000F3FF0E00F30C0070CFDF00120000F1FF0E00E100700C0000F78F00F3FF0EF0CF0010EF0000F3FF0E00F30E00708FDF00120000F1FF0F00E300700C0000F38F00F3FF0EF0EF0030EF0000F3FF0E00F30F00F08FEF0000F3120000F0FF8F00C700700C0000F18F00F3FF0EF0FF0070CF0000F3FF0E00F3CF00F10FEF0000E312000070FFEF10CF00F00F0000F08F00F7FFCF70FF0CF08F0000F7FF0F00F3EF00F30EDF0020000030EFFF808F00FFFF0000F08F70EFFF6070FFCFF30F00F0EFFF5008F3FF0CFF0CEF0000F320000010EFFF800F00FFFF0000708FF0EFFF6078FDFFFF0C00F1EFFF5008F3F7FFFF08EF0000C3EF00B0F7FFFF0C00FFFF0000308F70EFFF607078FFFF0800F1EFFF4008E1F1FFEFCF00EF0020F0FFFFEF000082EF00B00400D3F3AF0000FFEF0000B0EFFF4000C070FF8FCF00DF0010F70A3F0010F00E8F0010F70CCF00BD00BD00BD00BD00BD00BD00CD0000C2BD00BD00000A000400F7EFFF500C0010EF0000EFFF00086F00DF000010EFFF00CFDF0060308F000010EF70DFFF300E00708FEF0000F7EFFF500000F1FFFFEF9F0000F3EFFF500E0010EF0010EFFF000E6F00DF000010EFFF00CFDF0060308F000010EF30DFFF300F00708FEF0000F7EFFF2070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B000000000000000004484100010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7004800C93BCA1003618F511000100000513051848120510951BB5120514D40FF3B220008FF700058108000100030000000EB3BE5A00361C420820000C000008D304D404D4001F652004F650B4084910B4003860D400386AD3BD3504D408E3B57908D30204B4D4062002132AF3B1D100C303200214B93004630014B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000$(WY)$(PFY)$(KSN)$(DSAN)$(WP24)$(DSC)$(LN40,40,40)$(DSR)$(PGNN,N,0)$(PGS2040,2640)$(PGM240,240,240,240)$(PGH120,120)$(FH65535)$(DSP)$(ASC)$(BY)$(UM1440)$(PS280)$(FFHelvetica)$(WP0)$(ASP)$(PGNN,Y,0)$(PGS15840,12240)$(PGM1080,7200,360,360)$(PGH720,180)$(PGA1)$(SC)$(BN)$(PS100)$(FFHelvetica Narrow)$(AC1)$(AT2)$(ASR)$(LN0,480,0)$(TBL4248)$(SB)$(PS480)$(FFHelvetica)$(AC0)$(AT0) $(PS200) $(PS480)Product Localization$(LN0,120,0)$(TBL4248,R7560)$(SB) Guide$(SB) Information$(UY)$(PS200)$(FFHelvetica Narrow) $(BY)$(UN)$(PS280)$(FFHelvetica)$(LN0,280,0)$(CN)$(TB)$(VT5040)$(SB)XVT$(SO181)/CH Product Localization Kit Information Version 2.1.8$(BN)$(PS180)$(LN0,220,0)$(LF)$(VT9180)$(SB)$(UY)$(TBR7560)$(VT10170)$(LD40)$(SB) $(UN)$(PGNN,S,0)$(PGCY,2,4320,4608)$(SK)$(PS160)$(LN40,200,0)$(TB)$(VT10440)$(LD0)$(SB):$(LN80,200,0)$(VT0)$(SB)$(PS180)$(PGI2)$(SK)$(LN0,220,0)$(TBL936)$(VT10440)$(SB)System: CTOS Release XVT/CH PLG 2.1.8$(PS0)$(FFCourier)$(WP144)$(PGCN,1)$(PGI1)$(SK)$(PS360)$(FFHelvetica)$(WP0)$(PGNN,Y,1)$(PGM1170,7297,1440,1080)$(PGH600,480)$(FO2)$(FE3)$(SC)$(BY)$(PS0)$(LN360,360,0)$(TB)$(VT0)$(SB)XVT/CH 2.1.8 Product Localization Guide$(CR4,1)$(HP2)$(SB)$(CR0,0) PLG Information$(BN)$(PS200)$(FFNew Century Schoolbook)$(IL558)$(LN160,240,0)$(HP0)$(SB)A Product Localization Kit is not necessary for XVT 2.1.8.$(SB)Differences between the XVT 2.1.5 release and this release (2.1.8) are as follows: The run file(s) provide support for a new hardware release and include a bug fix. Also, the installation files have been modified to display a version of 2.1.8 instead of 2.1.5.$(SB)If you have successfully completed the XVT/CH 2.1.5 PLK Update, all that you need to do is copy the run files and modify the installation scripts to display a version of 2.1.8 instead of 2.1.5.$(SB)REFER TO THE XVT/CH 2.1.8 SRA FOR INFORMATION ON NEW HARDWARE SUPPORT AND FOR INFORMATION ON BUG FIX.$(TBL864)$(SB)Run files affected include:$(SB) 2.0>XvtChService.run 2.0>DeinstallXvtChService.run$(SB)Installation files affected include (requires version numbers to be modified from 2.1.5 to 2.1.8):$(LN160,200,0)$(SB) CHSvr>HdInstall.sub CHSvr>Install.jcl CHSvr>Install.ctrl$(SB)Documentation affected includes:$(SB) XvtChService.sra$(DH)$(IO0)$(SO255),PF $(SO232)$(SO160)$(SO249)$(SO255)$(SO160)$(SO249)$(SO160)$(SO249)$(DH)$(PS180)$(FFHelvetica)$(IL0)$(LN160,180,0)$(TBR7344)$(SB)43576271-002 $(SD)$(DH)$(SB)$(SD) 43576271-002$(OB)E010FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000200000122001011F7002A008200000010000000200000003000000040000000500010001000100030001000400010005000100060001000700010008000100090001000B0001000D00020001000200020002000300020004000200050002000600040001000400040004000700050002000500040005000A0005000C0005000E0005000F0005000010050002100500061005000710050008100500091005000B1005000D1005000220060001001260000112200FF01280001012C0001012E00011120000100E600000000900596364757275602130224000002620000000000000226000002280000022A00000008028C00000000F7FFF7FF028C000000961092000006633C4500D00000500A109FE0C9A0A010A210E20010001006F308403C4500A0184727109494A20080000000B100FF00300010000000100000000010300010000000A21000001010300010000000A6000000201030001000000010000000301030001000000050080000601030001000000000000000701030001000000010000000801030001000000010000000901030001000000010000000A01030001000000010000000D01020004000000000A554251110400010000000271000002110300010000000000000005110300010000000100000006110400010000000A60000007110400010000000C6F00000811030001000000000000000911030001000000010000000A11050001000000025100000B110500010000000A5100000C11030001000000010000000E11050001000000026100000F110500010000000A610000022103000100000000000000042104000100000000000000052104000100000000000000082103000100000000000000000000000A210000010000000E210000010000000000000000A500000000000000A500000806A4A80BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00BD00CD0000F0BD00BD00BD00BD002F001010CFCE002F001070FFCE002F0020F0FF08DE002F0020F1FF0CDE002F0020F3FF0EEE0000C02F0020F7FF0FDE002F0020F7FF0FDE002F0020F7FF0FDE002F0020F7FF8FDE002F0020FFFF8FDE002F0020FFFF8FDE002F0020F7FF0FDE002F0020F7FF0FDE002F0020F7FF0FDE002F0020F3FF0FDE002F0020F3FF0EDE002F0020F1FF0CDE002F0020F0FF08DE002F001070FFCE002F001010CFCE00CD0000F3CD0000F1CD0000F3BD00DE0000801F000060400000802008DF00108208CF000083EF0010FF8F9F002030FF0CCF001000F1EFFF9030FFEFFFFFEF00F3FF7CEFFFF00070FFEFE3F7FFFF8F70FF0FF0FF8F07DF001000F1EFFF9030FFEFFFFFEF00F3FF7EEFFF4008F1FFFFEBEFFF70CF70FF0FF3FFCF8FEF0000F31000F1EFFF2030FFEFEFFF3000F3FF7CEFFFB000F3DFFFEFF7FFFFCF70FF0FEFFF008FEF000070120000FFFF8F00F48EF3FFFF08F1FF38FFFFEF00F70CF1EFF3FFFF8F30FF1FFF00F78FEF000030120000F7FF0C00F00870FFFF08008F00F3FF0E00FF0870EF30FFFF0000E730EF00F18FDF00120000F7FF0C00700870FFFF0C008F00F3FF0E10FF0030EF30FFFF0000C770CF00F08FEF0000F3120000F7FF0C00700870FFFF0E008F00F3FF0E30EF0010EF10FFFF0800C7F08F00708FEF0000F0120000F7FF0C00700870FFFF0F008F00F3FF0E30EF0000EF10FFFF08008FF08F00308FDF00120000F7FF0C00700870FFFF0F008F00F3FF0E70EF0000EF00FFFF0C008FF18F00308FEF0000E3120000F7FF0C00700870FFFF8F008F00F3FF0E70EF0000E700FFFF0C100FF18F00108FEF0000F3120000F7FF0C00700870FFFFCF008F00F3FF0EF0EF0000E700F7FF0E100FF38F00108FDF00120000F7FF0C00700870FFFFEF008F00F3FF0EF0FF0000E300F7FF0E300EF3CF00008FEF000002120000F7FF0C00700870FFFFEF008F00F3FF0EF0FF0800E300F3FF0F300EF3EF00008FEF0000F3120000F7FF0C00700870FCFFFF008F00F3FF0EF0FF0C00C100F3FF0F700CF3FF000007EF0000C3410000F7FF0C007008707CFFFF088F00F3FF0EF0FF0FEF0070F1FF0F700CF7FF0CCF0000E3410000F7FF0C007008707CFFFF0C8F00F3FF0EF1FFEFEF0070F1FF8FF008F3FF8FBF00F10000F7FF0C007008703CFFFF0C8F00F3FF0EF0FFFF0E0000F0FF8FF008F3FFFFCF0000F3020000F7FF0C007008701CFFFF0E8F00F3FF0EF0FFFFCF0000F0FFCFF100F3FFFF0ECF00210000F7FF0C007008701CFFFF0F8F00F3FF0EF0EFFFA0080070FFCFF100F3FFFFCFDF0000E3210000F7FF0C007008700CFFFF0F8F00F3FF0EF0EFFF700E0070FFEFE300F3EFFFCF00210000F7FF0C007008700CF7FF8F8F00F3FF0EF0EFFF700F0030FFEFE300F3EFFF000CDF00210000F7FF0C007008700CF3FFCF8F00F3FF0E70EFFF708F0030FFFFC700F1EFFF000EEF0000F3210000F7FF0C007008700CF3FFEF8F00F3FF0E70EFFF70CF0010FFFFCF00F1EFFF000FEF0000F3210000F7FF0C007008700CF1FFFF8F00F3FF0E30EFFF70EF0010FFFF8F00F0EFFF008FDF00210000F7FF0C007008700CF0FFFF8F00F3FF0E10DFFF600000FFFF8F00F0EFFF008FEF0000F3210000F7FF0C007008700C70FFFF8F00F3FF0E00DFFF600000FFFF0F0070EFFF00CFDF00310000F7FF0C007008700C70FFFF8F00F3FF0E00F7EFFF600800F7FF0F0010EFFF00CFEF0000F3310000F7FF0C007008700C30FFFF8F00F3FF0E00F3EFFF600800F7FF0E0000EFFF00EFEF0000F3310000F7FF0C007008700C10FFFF8F00F3FF0E00F1EFFFA00800F3FF0E0000F7FFFFEFDF00310000F7FF0C007008700C00FFFF8F00F3FF0E0070EFFF700C00F3FF0E0000F1EFFFEF0000F3310000F7FF0C007008700C00FFFF8F00F3FF0E0000EFFF700C00F3FF0E000030EFFFDF00B10000F7FF0C007008700C00F7FF8F00F3FF0E0000F1FFFF0C00F3FF0EEF0020F7FFFFEF0000F3B10000F7FF0C007008700C00F3FF8F00F3FF0E000010FFFF0C00F3FF0EEF0020F0FFFFDF00110000F7FF0C007008700C00F3FF8F00F3FF0EEF0060F3FF0C00F3FF0EEF002010FFFFEF0000C3120000F7FF0C007008700C00F1FF8F00F3FF0E700800F0FF0C00F3FF0E00E10000F7FFEF0000E3120000F7FF0C007008300C00F0FF8F00F3FF0E700C0070FF0C00F3FF0E00F10000F1FFDF00120000F7FF0C00F008300C00F0FF8F00F3FF0E700C0030FF0C00F3FF0E00F30000F0FFEF0000F3120000F7FF0C00F008700C0070FF8F00F3FF0E700C0010FF0C00F3FF0E00F30000F0FFDF00120000F7FF0C00F008700C0030FF8F00F3FF0E700E0010FF0800F3FF0E00F3000070FFEF0000E2120000F3FF0C00F008700C0010FF8F00F3FF0E700E0010FF0800F3FF0E00F3080070EFDF00120000F3FF0C00F008700C0010FF8F00F3FF0E700F0010FF0800F3FF0E00F3080070EFDF00120000F3FF0C00F000700C0000FF8F00F3FF0E700F0010FF0000F3FF0E00F30C0070CFEF0000C3120000F3FF0E00F100700C0000F78F00F3FF0E708F0010FF0000F3FF0E00F30C0070CFDF00120000F1FF0E00E100700C0000F78F00F3FF0EF0CF0010EF0000F3FF0E00F30E00708FDF00120000F1FF0F00E300700C0000F38F00F3FF0EF0EF0030EF0000F3FF0E00F30F00F08FEF0000F3120000F0FF8F00C700700C0000F18F00F3FF0EF0FF0070CF0000F3FF0E00F3CF00F10FEF0000E312000070FFEF10CF00F00F0000F08F00F7FFCF70FF0CF08F0000F7FF0F00F3EF00F30EDF0020000030EFFF808F00FFFF0000F08F70EFFF6070FFCFF30F00F0EFFF5008F3FF0CFF0CEF0000F320000010EFFF800F00FFFF0000708FF0EFFF6078FDFFFF0C00F1EFFF5008F3F7FFFF08EF0000C3EF00B0F7FFFF0C00FFFF0000308F70EFFF607078FFFF0800F1EFFF4008E1F1FFEFCF00EF0020F0FFFFEF000082EF00B00400D3F3AF0000FFEF0000B0EFFF4000C070FF8FCF00DF0010F70A3F0010F00E8F0010F70CCF00BD00BD00BD00BD00BD00BD00CD0000C2BD00BD00000A000400F7EFFF500C0010EF0000EFFF00086F00DF000010EFFF00CFDF0060308F000010EF70DFFF300E00708FEF0000F7EFFF500000F1FFFFEF9F0000F3EFFF500E0010EF0010EFFF000E6F00DF000010EFFF00CFDF0060308F000010EF30DFFF300F00708FEF0000F7EFFF2070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B0000000000000000070100500000064B000000000000000004484100010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7004800C93BCA1003618F511000100000513051848120510951BB5120514D40FF3B220008FF700058108000100030000000EB3BE5A00361C420820000C000008D304D404D4001F652004F650B4084910B4003860D400386AD3BD3504D408E3B57908D30204B4D4062002132AF3B1D100C303200214B93004630014B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%' Type [kbd]PF ACInstallation of XVT System Service 2.1.8AA If your Exec command file is in use (either because you are sharing it with someone else on your cluster or you have the Context Manager installed and another partition is using it) this installation will fail. If so, press ACTION-FINISH to abort this installation, and restart it after you have freed up access to your Executive command file. AE  Press GO to proceed  1AAEF Copy [kbd] [Scr]<$>args.Tmp y 'Floppy drive from' 'Command file' 'Destination volume' New Command 'XVT Service Install' [Sys]SubCmd.run @[Scr]<$>Args.Tmp yLCopy %0XVTServiceInstall.sub [Sys] y yType [kbd]   The following command form drives the installation of the XVT System Service. The most appropriate defaults are given here. AE  Press GO to proceed  AA XVT Service Install %0 [Sys]sys.cmds [Sys] 1 :PackageName:XVT/CH Service :Version:2.1.8 :Commands:'Install XVT/CH 2.0 Service' 'Deinstall XVT/CH 2.0 Service' :ProductFiles:2.0>XvtChService.run 2.0>DeinstallXvtChService.run 2.0>XvtChMsg.bin 2.0>XvtNlsKbd.tbl 2.0>1024x768_146xvt.font 2.0>1024x768_80Xvt.font 2.0>132x29_CharXvt.font 2.0>640x480_80xvt.font 2.0>132x34_CharXvt.font 2.0>720x348_80xvt.font 2.0>80x29_CharXvt.font 2.0>80x34_CharXvt.font $Job XVT lOn = 0 lSome = 1 lOff = 2 FLOPPY = 0 SERVER = 2 TRUE = 65535 NotFound = 65535 FALSE = 0 fromServ = FALSE ; ; Translate the following text strings createMsg = 'Creating directory ...' copyMsg = 'Copying files ...' cmdMsg = 'Adding new commands ...' requestMsg = 'Adding new request codes ...' doneMsg = ' done.' yesMsg = 'yes' noMsg = 'no' instCmd = 'Install XVT/CH 2.0 Service' deinstCmd = 'Deinstall XVT/CH 2.0 Service' ; end text string translation clearscrn = ' ' ; initialization vidSave = VideoLevel echoOff ; warnings DisplayLine(clearscrn) DisplayLine('AF AA') DisplayLine('AF XVT Service 2.1.8 Installation AA') DisplayLine('AF AA') DisplayLine('AF This is the installation of the XVT/CH AA') DisplayLine('AF system service. The system service is used AA') DisplayLine('AF by XVT applications that require a service AA') DisplayLine('AF to provide a graphics-independent user interface. AA') DisplayLine('AF AA') DisplayLine('AF For details on memory usage, installation and AA') DisplayLine('AF deinstallation instructions, as well as general AA') DisplayLine('AF information about this product, see the AA') DisplayLine('AF Software Release Announcement. AA') DisplayLine('AF AA') DisplayLine('AF Press GO to continue with the installation. AA') DisplayAndWait('AF AA') DisplayLine(clearscrn) $If (vidSave = lOn) $EchoOn $EndIf ; VolumeTo is not defined for 12.0 installation manager installations. ver = FileVersion('[Sys]InstallMgr.run') $If Substring('12.0',ver) <> TRUE VolumeTo = '[sys]' $EndIf toSys = ConcatStrings(VolumeTo, '') fromSys =  ConcatStrings(DeviceFrom, '') $If InstallType = SERVER fromServ = TRUE $EndIf ; copy files $Display (copyMsg) ; set the destination path destPath = ConcatStrings (VolumeTo, '') $If FromServ $Command LCopy, (2.0>XvtNls.sys, & 2.0>XvtNlsKbd.tbl, & 2.0>XvtChMsg.bin, & 2.0>Xvt.hlp, & 2.0>Request.Xvt.sys, & 2.0>1024x768_146xvt.font, & 2.0>1024x768_80xvt.font, & 2.0>640x480_80xvt.font, & 2.0>132x29_CharXvt.font, & 2.0>132x34_CharXvt.font, & 2.0>720x348_80Xvt.font, & 2.0>80x29_CharXvt.font, & 2.0>80x34_CharXvt.font, & 2.0>XvtChService.run, & 2.0>DeinstallXvtChService.run), & fromSys,& toSys,& ,& yesMsg,& noMsg,& noMsg,& yesMsg $Else restSpec = ConcatStrings (DeviceFrom, 'XvtChService') destSpec = ConcatStrings ('\'', destPath) destSpec = ConcatStrings (destSpec, '\*\'') $EchoSome $DisplayLine(clearscrn) $DisplayLine(copyMsg) $Command Restore, restSpec, & '<*>*', & destSpec, & yesMsg, & noMsg $If (vidSave = lOn) $EchoOn $Else $EchoOff $EndIf $Endif $DisplayLine (doneMsg) ; create new commands $Display (cmdMsg) destFile = ConcatStrings(destPath, '2.0>XvtChService.run') $Command New Command, instCmd, & destFile, & ,,yesMsg, & '00', & CmdFileTo destFile = ConcatStrings(destPath, '2.0>DeinstallXvtChService.run') $Command New Command, deinstCmd, & destFile, & ,,yesMsg, & '00', & CmdFileTo $DisplayLine (doneMsg) ; merge request codes $Display (requestMsg) rq1 = ConcatStrings(VolumeTo, 'Request.sys') rq2 = ConcatStrings(VolumeTo, '2.0>Request.XVT.sys') $Command List Request Set, (rq1, rq2), [scr]<$>request.txt $Command Make Request Set, [scr]<$>request.txt, rq1 $DisplayLine (doneMsg) $DisplayLine(clearscrn) vidSave = VideoLevel echoOff DisplayLine(clearscrn) DisplayLine('AF AA') DisplayLine('AF XVT/CH Service Installation Complete AA') DisplayLine('AF AA') DisplayLine('AF This installation updated your request file, so AA') DisplayLine('AF you must reboot your workstation before installing AA') DisplayLine('AF the XVT/CH Service in memory. AA') DisplayLine('AF AA') DisplayLine('AF Press GO to complete the installation. AA') DisplayAndWait('AF AA') $End %' Restore %'Archive file' %0XvtChService %'[File list from]'<*>* %'[File list to]' %2* %'[Overwrite OK?]' Yes %'[Confirm each?]' %'[Sequence number]' %'[Merge with existing file?]' %'[List files only?]' %'[Print file]' %'[Suppress confirmation]' %' New Command 'Install XVT/CH 2.0 Service' %22.0>XvtChService.run Yes '00' %1%' New Command 'Deinstall XVT/CH Service' %22.0>DeinstallXvtChService.run Yes '00' %1%' Copy [kbd] [Scr]<$>-.tmp y %22.0>Request.XVT.sys %2Request?sys List Request Set @[Scr]<$>-.tmp [scr]<$>request.txtMake Request Set [scr]<$>request.txt %2Request.sysDelete [scr]<$>Request.txt [Scr]<$>-.tmp %' Remove Command 'XVT Service Install' Delete [Sys]XVTServiceInstall.sub%' Copy %'File from*' [kbd] %'File to*' [vid] %'[Overwrite ok?]' yes %'[Confirm each?]' %'   AF AA AF XVT/CH installation complete. AA AF  AA AF You must reboot your workstation before AA AF using the XVT/CH System Service. AA AF AA %'  ;*** "NetRq.sys" *** :RequestCode:4009h :RequestName:QueryNodeName :Version:100 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:0 :nReqPbCb:0 :nRespPbcb:1 :Params:p(12),w(16) :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:400Ah :RequestName:QueryNetRsc :Version:100 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:4 :nReqPbCb:0 :nRespPbcb:5 :Params:b(12),b(13),b(14),b(15),p(16),w(20),p(22),w(26),p(28),w(32),p(34),w(38),p(40),w(44) :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:63A0h :RequestName:QueryNetAgentInfo :Version:100 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:2 :nReqPbCb:0 :nRespPbcb:2 :Params:w(12),p(14),w(18),p(20),c(2 ,24) :NetRouting:NoRouting :SrpRouting:rRemote :RequestCode:63A7h :RequestName:ListNamingServerEntries :Version:100 :LclSvcCode:0000h :ServiceExch:exchInstalledMastr :sCntInfo:4 :nReqPbCb:1 :nRespPbcb:3 :Params:w(12),b(14),p(16),w(20),p(22),w(26),p(28),p(34),c(2 ,32),c(2 ,38) :NetRouting:devSpec :SrpRouting:rRemote  [   R     (N 6N ,N bN tN N N N 5N gN  N 1 N G N /",/"/"/"/"$y"-y" ",""!"="["{"""""""F""""""?""""("""" "b#,b#rb#b###H#b#|####?######### # #$`$$$:$`$$$ $R$$$8$w$$$M$$$8$B$$$$6$d $ $ $)%#)%r)%)%P'P'P' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm  mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm! mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm! mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm" mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm" mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm$ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm$ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm% mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm% mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm& mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm& mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm CrashDump.sys install.ctrl install.jcl NetRq.txtFileheaders.sysMfd.sys SysImage.sysXVTServiceInstall.sub BootRecord.sysLog.sys BadBlk.sys HdInstall.sub ( ʱ@ B25XS1-1/1@ vU"vB @ D > Y C9|P^Sys8 CTOS SRA 9|9]Fileheaders.sysSys: evevevXD X!BootRecord.sysSys< fvfvfvMfd.sysSys: fvfv vB Log.sysSys< gvgvgv@ da SysImage.sysSys: hvhvhv BadBlk.sysSys< hvhvhvP CrashDump.sysSys8 iviviv@ #XvtChService.sra.def SRA "v!v!vDMPMvDDGsallyq2 XvtChPlkUpdate.plg.def SRA  "v*Imv@v)*MP{6v)Jeff' HdInstall.sub Sys < "v-ImvBv@ install.ctrl Sys 8 "v&ImvvF. install.jcl Sys 8 !"vImv`vCHMP~nFpkd! XVTServiceInstall.sub Sys : $"v'Imv'v\% NetRq.txt Sys8 &"v_vrv3bXvtChService.01 CTOS ,"vU"vU"vg hh ( )k(j'i&h%g$f#e"d!c ba`_^]\ [ !Z!") Y"#X#$W$%V%&U&'T'(S()R)*Q*+P+, O,- N-. M./ L/0 K01J12I23H34) G45F56E67D78C89B9:@:;?;<><===><>?;?@:@A9AB8BC7CD6DE5EF* 4FG3GH2HI1IJ0JK/KL.LM-MN,NO+OP*PQ)QR(RS'ST&TU%UV$VW#WX* "XY!YZ Z[[\\]]^^__``aabbccddeeffgghhiij+ jkkllm mn no op pq qrrssttuuvvwwxxyyzz{{|+ |}}~~, ߛޜݝܞ۟, ڠ١آף֤եԦӧҨѩЪ{XvtChService.01XvtChPlkUpdate.plg.def XvtChService.sra.def- 2am e {mfd.syssys| Σ\vΣ\v v& &   xvtcommon ( 602.0>XvtNls.sys xvtcommon0 z ]v vn v$ GW ppVer R2.1.8-(10/26/93-12:57) Linker x12.2-j_vjm_07|02|92-08:130 TNDX    []<>pp FFR2.1.8-(10/26/93-12:57)<  COPYRIGHT 1989, 1992 XVT SOFTWARE, INC. ALL RIGHTS RESERVED. COPYRIGHT 1993 UNISYS CORPORATION. ALL RIGHTS RESERVED. THIS SOFTWARE IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH THE APPLICABLE PROGRAM LICENSE OR UPON WRITTEN AUTHORIZATION OF THE OFFICE OF THE GENERAL COUNSEL, PATENT AND TECHNOLOGY DIVISION, BLUE BELL, PENNSYLVANIA, 19424, USA. VERSION: R2.1.8-(10/26/93-12:57) H P"2.0>XvtNlsKbd.tblXvtChDev"` =v?vvC T HTpP| &&8P> abDLMCEHI@@@@ >HHIILLMME@E           //////////////////////////////////////////////////////////////////????????????` ??????????????////XpppXpXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp<-1 .2+0/56KLMNOP QRST 9'=,-./0123456789;6-8230.[7]^1abcdefghijklmnopqrstuvwxyz485<-; .+0/KLMNOP QRST 9"+,l _.?)!@#$%&*(:6-8230.<|>~`ABCDEFGHIJKLMNOPQRSTUVWXYZ{\}<- 1 .2+0/56KLMNOP QRST 9'=,-./0123456789;6-8230.[7]^1ABCDEFGHIJKLMNOPQRSTUVWXYZ485=x   <KLMNOPQRST90,.01234567896823071ABCDEFGHIJKLMNOPQRSTUVWXYZ485KLMNOPQRST, .01234567898ABCDEFGHIJKLMNOPQRSTUVWXYZHTp h >>>P8T$T00abDLMCEHI@@@@ RHHIILLMME@E            //////////////////////////////////////////////////////////////// ///////??????????????????????????////XpppXpXXpp pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp<-1 .2 0/56KLMNOP QRST 9*/'=,-./0123456789=;%6-8230.+[7]^1abcdefghijklmnopqrstuvwxyz485<-; . 0/KLMNOP QRST ^*/"+,_.?)!@#$%&*(=:%~-80. +<|>~`ABCDEFGHIJKLMNOPQRSTUVWXYZ{\}<- 1 .2 0/56KLMNOP QRST 9*/'=,-./0123456789=;%6-8230.+[7]^1ABCDEFGHIJKLMNOPQRSTUVWXYZ485=8   <KLMNOPQRST90,.01234567896823071ABCDEFGHIJKLMNOPQRSTUVWXYZ485KLMNOPQRST,.01234567898  ABCDEFGHIJKLMNOPQRSTUVWXYZHTp h P8TxTJJ9DCE @ E@E      !  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% XXpXpXXpppppppppXppppp.\/#  _ -< ~- KLMNOP+QRST_9.-./156%*6=82300721485>./A< ,-Z ;"SCXQWERTY[UIOP(.M'NFGHJKL;VB:]8@#?)0&D!$*%.\/%  _= -<  ~KLMNOP+QRST_9.-./156%*6=82300721485[.\/AZ< ,-Z SCXQWERTYUIOPMNFGHJKL;VB6=823007D\' _ < ~KLMNOP+QRST_9.-./%*6=823071485>A< ,Z "SCXQWERTY[UIOP(.M'NFGHJKL;VB:]8@#?)&D!$*%HTp ) h >>>P8T4T00abDLMCEHI@@@@ RHHIILLMME@ES S          , //////////////////////////////////////////////////////////////// ///////??????????????????????????////XpppXpXXpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp<-1 .2 0/56KLMNOP QRST 9*/. '=,-./0123456789=;%6-8230.+[7]^1abcdefghijklmnopqrstuvwxyz485<-; . 0/KLMNOP QRST ^*/"+,_.?)!@#$%&*(=:%~-80.+<|>~`ABCDEFGHIJKLMNOPQRSTUVWXYZ{\}<- 1 .2 0/56KLMNOP QRST 9*/ 0 '=,-./0123456789=;%6-8230.+[7]^1ABCDEFGHIJKLMNOPQRSTUVWXYZ485=8 <KLMNOPQRST90,2 ,.01234567896823071ABCDEFGHIJKLMNOPQRSTUVWXYZ485KLMNOPQRST,.01234567898ABCDEFGHIJKLMNOPQRSTUVWXYZHT!p l \\\T8X84  X00abDLMCEHI>S@@ RHHIILLMME@ES S>@>          @@GD6 /////////////////////////////////o//////////////////////@o//oooo /o/o//o??????????????????????????ooo/XpppXpXXppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp<-1` .2 0/56KLMNOP QRST 1*/'=,-./01234567P8 89=;/-8.28+[5]^6abcdefghijklmnopqrstuvwxyz0-<-~; . 0/KLMNOP QRST ^*/"+,_\?)!@#$%&*(=:~-80.+<|>~`ABCDEFGHIJKLMNOPQRSTUVWXYZ{\}<- 1` .2 0/56KLMNOP QRST 1*/'=,-./01234567\: 89=;/-8.28+[5]^6ABCDEFGHIJKLMNOPQRSTUVWXYZ0-= <KLMNOPQRST90,.01234567h< 896823071ABCDEFGHIJKLMNOPQRSTUVWXYZ485KLMNOPQRST0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ<- 1 .20/56KLMNOP QRST 9*/'=,-./01234567t> 89=;6-8230.+[7]^1abcdefghijklmnopqrstuvwxyz485HTep L x RH8LK2dgX}lY@@@y@)WYYXX 9@9vv__    ````@ c` c`cc`c`c`@cc`ccc`cccc`ccc``cc`````l````````````ppppppppppppppppppppppppppppppppppppppppppppppppppXXXpppppXppppppppppppppppppK `Lq1Mzsaw2Ncxde43O vftr5Pnbhgy6Qmju78R,kio09S./l;B p-T'[=U ]\V.0-686/052518./-/ 2+1*-K;~LQ!MZSAW@NCXDE$#O VFTR%PNBHGY^QMJU&*R<KIO)(S>?L:P_T"{+U }|V.0-681/472510.2568/ 3+9*-K `LQ1MZSAW2NCXDE43O VFTR5PNBHGY6QMJU78R,KD IO09S./L;P-T'[=U ]\V.0-=686/052518=./-/ 2+1*-K `LQ1MZSAW2NCXDE43O VFTR5PNBHGY6QMJU78R<KIO09S,/L;P-T'[=U ]\V.0-484/032318|./-/ 2+1*-F  *HTgpO X zp8X '1; E 2qpvY@@@Z)oYYXX.  @ww    `` H ```````````c` cccccccccccccccccc`cc```ppppppppppppppppppppppppppppppppppppppppppppppppppXXXpppppXpppppppppppppppppSOMKLVTRPN `q1zsaw2cxde43 vftr5nbhJ gy6mju78,kio09./l;p-'[= ]/\60588./-U+2-*1QWSOMKLVTRPN;~Q!ZSAW@CXDE$# VFTR%NBHGY^MJU&*<KIO)(>?L:P_"{+ }/|14780.2568U+3-*9QWSOMKLVTRPN;~Q!ZSAW@CXDE$# L  VFTR%NBHGY^MJU&*<KIO)(>?L:P_"{+ }/|60588=./-U+2-*1QWSOM<LVTRPN `Q1ZSAW@CXDE43 VFTR5NBHGY6MJU77<KIO09,/L;P-'[= ]/\40388./-U+2-*1QWN !608./-21608./-21P "608=./-21408./-21R 172.0>XvtChMsg.bin xvtcommon7 M"]vl vm v S mJ n0up1u12u3u4u45u$6u >7u G8ug@9yAB$Successful installation.Installation failed. Is Context Manager running?Cannot open XVT NLS file.XVT Service already installed.Could not access resources. Did you remember to RC?Internal XVT Error: %u-%luERROR: %sWrong version of keyboard table.File not found: %sCannot deinstall. XVT applications currently running: %dSuccessful deinstallation.XVT service not currently installed.V , 2.0>Xvt.hlp xvtcommon, v%vo vMW k  6 ^Z0`#D gc  >:)   k  |5N/k@G8-OGt*^3;´m5%0 r@kx(@\՟Ghs?Hmh"YPmU-OOjhw[Rh*zد.ʰE{|~ȁ&Oy-fff2t k@G8.Xkg=3I?hReQpf:}_b.,,[YQEJEEx!~ vʱ0םK6@:,g5S`pjГ햷Kkw_" =zzY O Q|4E)bH. =`~02d\QH,z_|824/{%4/{*7 Lk;ڗ?׾w/]vȹ$}.Yu%|82" t허Ee`!u,z\ ?i~@%}. JjS/dB_E59)".BkPp=pTĞTjj0U D!5[(8n=߹ V59)".OŔ7O\ĞTjj0U D'ZOs,yP. S"1B*^T4JNkIaxlF5$ES=65zފs*%Tjs\RD\5P+(8n:ovs1剜n[n\~\[-1՗7 hQmۭܸ{lնn\([ ;msn~ [?~ [[n\nL L+ ⌷n\!n&\s[H& M‰.0MƉ.PMʉ5A88E--[>K\PI힎%ADA_̬n!bz88W>cub.D0rmMapJY253*p9c@0A Yn?̨82.YoD e@,y{FH4pynptů }d0@.g y'`cv"9baxH/k{U.G;0 s)'-TT8aokR Q95ǧËp…|t=>pn\\<;orm6ہo7,s_,w,=,,ee%o7 9/r6?e {4] Zf.L&~0{K$Yl_iz6rj`ҊNrq_5R.Zz'էG8x?݃/j$5%@=іE)[[YQE8䰻FCj̊zW#x8;ezd,WurŋpRCRYԼ ?i[YQEË5P U4mÃ!P=mvȣppȅ=+V YϠ789w×rpkGZFř\+;g?k\VOWjeC[WуvG5>[vYe8( L[9lbz:U]^[{,ML7KgK﹓[ڠq 5S g@_ dKfj`,[[ =p=pr{n.JP ǃd_\OFH"g;M^h'];qt H/YPWz t=C{V2_s.U/.w/N˳<ptŬTᅿ"z բODyD=B|pr콚􆤹p2׽dB x^ + 9i sɫ:}̩"Q̻paU;˹$q s. %'ffJK(5Up`Vx8>=ց:U2!?z xpuW7w,KO^ڙk}̈h>pl;G^=U' ,KO^Wmߪ||#NmGhǣ~[iҪ9Z *|Y@}E_La ;Ab59Z HzQ>K\/@j\䕺:OOOtҢ,v]zwD:CUiKZ}x+Qqtѩ_}̩S tw ^9t>Nry 뚈;s\ROs8[z6+(. _PmںvL~w=䋜wOXAprB{_}Y`.|AYl;agjbz!5F eX"ZM\&=pAy媈j\ծYRV='ۃ媜|!?GAh'qqQ(}z#*4/?6G@Q %!2+K98UV  3;7H< X:(!#"%$'&)(+*)'"0&C=,M.-0/W x1243BvD$57698R:P;k=<?>A@E-BODCFEHGJILbgLKNMFNIywPOQARdTSpSuTVUXW1Y[Zmc]\_^`flabhcedgfh,ikjmlnporqrs.tvuwsJxyizt{|a}n~eo |i  k *2.0>Request.XVT.sys xvtcommon ɛvʛvp v. dl GW _ 86Ver 10/21/93-23:04                              n LRtt         ^^^^^^^^^^^^^^^^^!!!!!!!! ! ! ! ! ! ! ! !!        ^^^^b p r ѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣt ѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣv ѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣx ѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣz ѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣѣ|        $  0000000 JMtXVTService(2.0)tDeinstallXVTService(2.0)tXVTService(2.1)tDeinstallXVTService(2.1)< 2.0>1024x768_146xvt.font xvtcommon a]v _va v" H " $@^x &@Zv &Tl *0Rb| .@Pbjt @ b  8 F b  ( J l  8 Z |  & H j 6Xz,Nn0H`4Ll"@j<f2Lf6Pj4Xt2Rr ,<Vp$P|,Z@n,Jfr Ft">X~$Rv 4 R p !$!R!l!!!!!!"0"L"T z""`  AAII]]AA ? !! ?????????? ?!!!!!!!!? " % < ?  ?  $,?,$    AA]]IIAA  0088<<>>? AAQ]]QAA /  " >  AAE]]EAA l  !!?   $)2 ??   8,.///.,(((((    ?   ?   $$??  ! !  )%$$ ! )& x      ?   111)))%%%###  ! ? ?  ! ? ? ! !!!!!!! ?  !!!! !!!!! !!!!!!> !     ??   !!  !!9%%%)1"  !!!!!?!!!!!! !!!!!!! !! !!!!!!!!!! ?? ? !!9!!!!!! !!!!!!?!!!!!!!  < !    !! ? !!!333--!!!!!! !!##%%))11!!!! !!!!!!!!!!!! !!!!!! !!!!!!!!))). !!!!!!!!!!!! ! !!  !!!!!!!!!!!!! !!!!!!!  !!!!!!!!--- !!! !!! !!!!!  ?  ?      ? . !!!!!!! !!  >!!!!!!!> !!!> 8? !!!!!!!> !! #!!!!!!!   !  !    ******** #!!!!!!! !!!!!!! !!!!!!! >!!!!!!!>  # >0  ?$$ !!!!!!11. !!!!  !!!!--3 !! !! !!!!!!!1. !! ? ?       "%) ?  ?????????????  %%%%$$$$  %%!!< %!! $ !%%%%$< =! $$ %$$$$ =!!! %%%$$$$ %%%%8 $                                     XXpp  00         ̠  !!!!?!!!!!! ! >!!!> 33!!!!?!!!!!! 33! >!!!> 33!!!!!!!!!! 33!!!!!!  >111)))%%### >1))%## 33!!!!!!!!!!! 33!!!!!11. !!  !!!!> 0 !!!>  !!!> ~q 6IIH> n "!!! آ  !!!%   2   "AYEEYA" "AMUMUA" DlTD                      AAAAAAII]]AAAAAA AAAAAA]]IIAAAAAA A]]]]]]]]]]]]]]]]]]A     kUkUkUkUkUkUkUkUkUkU kUkUkUkUkUkUkU kUkUkUkUkUkUkU ccccccc  ccccccc``````     *U*U*U*U ? !! ? ?0(($""!!""$((0? AAAAAAAAAAAAAAAAAAAA ?? UkUkUkUkUk ? ? 0  0           0 2999999992 0  ''''''''  AAAAAA   AAAAAA 6**6 UkUkUkU AAAAAA@@@@@@@@ @@@@@@@@AAAAAA           ``````ccccccc ccccccc cccccccccccccccccccc            ^={wo^={wo^={wo^={wo ^ow{=^ow{=^ow{=^ow{= kUkUkUk 32.0>1024x768_80Xvt.font xvtcommon3 M]v<_v` v" , " &@`x0Lj$.Lz6Tz.@` 8 X x  8 P n  < \ |  < \ |  > ^ ~ >^~8Pp8Ph&>Vn8>` 4\,D\t4Ld|(Jh @d 2Lfx<hFt,Z:Xf>l8Tz"Pt  < X t !(!V!r!!!!!!"8"V"8 "" /  D   aa  ? 003333300  f66`0 00x00 33 0``0 c3??  aa      ~~f ~ P  = =    888888 <f 2df< 0  #  xx`0 3f0` 0000000 0``0f3   333333 fff 0000 3!3x\  00 8l 6c> 0  0  000 00x 00000000      ``00 Cc3   ? `0    ~ p  `0  h      `0  0`  0``0  p00x0 333 0                    ? ||  t ? ? f< f6>f ?   vv&&       ?x    ll x 30000000000 x xx00 &vv xx0xx  xx0000 `0    00`` ```````````0x  |~  || <   ~ ? <~ ~  ? pp~``````````0   f66f  fffffffg s ||  <   0 8 xx00 &v x0x l<8  `0  8  8  8   # 33333333c3333C#3333333333cccc3333333333   3333333   300? 300003 08421100 ?003 3333 ?0  333333 333>003  3333333    300?  300003  08421100  ?003  p    333333  333>003xx   xx|~0x |~ || |ccc333 {x 8 || l88l`00`  v``fcc 3cc;    | ?i 3333 9M  M9 9YY9YYLLL000000000000000````000000 0000aa  aa ppppppppppppppppp ppppppppppppppppp  U U U U U U U U U U  U U U U U U U  U U U U U U U    pppppppp ppppppppp   U U U U ;ss;m  m  m  m 8  8 8``8       8  88``8   ?  m  m m  m  m    ppppppppp   pppppppp  ?   ?    `    `  ?  ? > x?9s 9s 9s 9s  s9 s9 s9 s9m  m  m  i~22.0>640x480_80Xvt.font xvtcommon~2 !]v_v[ v"  "   8Tn(BZp,F`r2@Vr (4Pl 0 L h  8 T p  4 P l  0 L h  * F X ` p .Fd&>Pbt.4Lp$Hl "8Ndz(BXn4Fd~2N^x,Pt*Pv4Rp4Nt 6Nd~(F\z 6Ld0 | $:Pj (  ? > > ?????????? ?!!!!!!!!? ! $< !!?   ?  $,<?<,$    "48<> 088<>>?  ! >   !!? ?4   !",0! ?? "-? <.///.,((((  ????  ?    $    $     $$??   %)(   1)&      @          !! ?    ? ? !  " !!!  ?  !!!!!! !!!2,      ??   !  L  ""!9%%%9 !!?!!!! !!!!!! """" !!!!! ?? ? ""9!!" !!!!!?!!!!!  < !  !! ? AAccUUIIAAA !!##%%))11! !!!!!!!  !! !!!!!)), X !! !! !  !  ? !!!!!!!!!  !!!!!  AAAIIIIU"" !!! !! !!!   ? ?      !!  > !! "" <"!!"< !?>  d "!!2, !       !  7IIIII    !!  !! <"!!"<    > !      AIII*6 ! ! !!  ??   p   "- ????????????  %%%%%%  %!! = %!!!% !1))%=!! =!!% 9%%% =!  %%%%% %%%9!%      |                            &,<8          !!?!!!  > 33 !!?!!! 33> 33 !!!!!!    33 !!  ,1)))%%#  ,)%  33!!!!!!!   "" "!?>  !?>  !?> < ? 9 (> 6 !! !!# 2L8~s   >AA]EEE]A> >AAMUMMU> DlTDD  $   < $  $  0(($<  < $ 8$$$ <  $$$$$ $$$8 $<<<<<<<<<<<< ???? <<<<<<????<<<<<<        <<<<<< <<<<<<UUU ?!!? ?0(&!!&(0?  @@@@@@@@ 0  0     ~~  0 "9==9" 0  '//'     U    ????? <<<<<<???? ????  ????<<<<<<           8>?? ??><<<<< ??>8 <<<<<>??{{{{{{    l32.0>132x29_CharXvt.font xvtcommonl3 G!]v<_vb v   AAI]AA 08<<>" ">>>>>>""">"$(<2$$$> $,>,$ >(00AA]IAA  >EM]]MEx|0   $(4,>x0QY]]YQ"">>$( $*,>:: <><>>>$  0 $$$$>>* *(** ((*$**>> @@  """""">"  >"" $$>> <" <""">"""""""" >>  "   ".*. """>"""<""<"""<" "8$""""$8> < >> < "" .""""">"""">>$$"$(0($"" >"6***"""""2*&"""""""""  <""< """"*$<"""<($"8D@8D8>""""""""""""""***6""""""""> >< <@@ <<">$  " <"""<" """""<  <""" ,2"""<"" "$(4" ****,2"""$$$0  <""< "",2  << """&"""***"""" >>   00*$>>>>>>>><  $****$ "&"""" $*"$(. $*"&", "$*."" .(,"*$ $*(,*$ .""$$$ $*$**$ $*&"*$       H                   00``@    T   """>""  "66">""66"66""""66""" &***($,4866"""""66"""&" """<  0"< 0 "< $>$$$&< >(>`  $$($"2, & <<&$$":"":""2*2*">"6*"              l  AAAIII]]]AA]]]IIIIAAA]]]]]]]]]]A|||UkUkUkUkUkUkkUkUkUkUkUkUkUkUkUccc````ccc>>>>x  U*U*U*?0,"!",0?~"B"~AAAAAAAAAAAA? ?[wm[wm[wm[wm~~  ``///`dtztd`  AA@@@@@@x@@@@@@AAAAm[6m[6[wm[wm[wAAAAAA||||||x  xccccc````ccccccccccccccccc`px88xp`w{=^ow{=^ow{^={wo^={wo^=m[wm[wm[wm      9o0'2.0>132x34_CharXvt.font xvtcommon0' d]v_vd v   AAI]AA 08<<>" ">>>>>>""">$(0,$$$> $,>,$ >(00AA]IAA  >EM]]MEx|0  $(4,>x0QY]]YQ"">>$( $*,>:: <><>>>$  1 $$$$>>( <**((*$**>> !  """"">"  >"" $>> <" <"">""""""" >>"#  ".*. "">"""<""<""<" "8$"""$8> < >> < " .""""">""">>$$"$(0($" >"6**""""2*&""""""""%  <""< """"*<""<($"" ">""""""""""""**6""""""""> >< < <<">'  " <"""<" """""<  <""< ,2"""" "$8$" 4****,2"""$$$*  <""< "",2  << """&"""***"""" >>   00*$>>>>>>>,  $***$ "&""" ,"$(. ,"$", "$*." .(,". &(,*$ .""$$ $*$*$ $*&", .  (<           00``@    ,0  "">""  "6">""6"6""""6""" &**($,486""""6""&" ""<  "< 0"< $>$$&< >(>82  $$($2, &<<&$$":":""2*2*>"6*"             D4  AIII]]]AA]]]IIIAA]]]]]]]]]]A|||UkUkUkUkUkUkkUkUkUkUkUkUkUkUkUccc````ccc>>>>P6  U*U*U*?0,"!",0?~"B"~AAAAAAAAAAAA? ?[wm[wm[wm[wm~~  ``///`dtztd`\8  AA@@@@@@x@@@@@@AAAAm[6m[6[wm[wm[wAAAAAA||||||xh:  xccccc````ccccccccccccccccc`px88xp`w{=^ow{=^ow{^={wo^={wo^=m[wm[wm[wmt<    >  (ڰ12.0>720x348_80xvt.font xvtcommon1 ]v_vg v ?     4HZl,@Vj(4L`x~2FVdlv$:Pfx " 8 N d z  * @ V l   2 H \ r   2 F ^ t   & 6 F V j z *Fb~ .@Rdv*>Tfx,DZp 0F\j.Jf8Vp(B\z4HZt2Lf  :Tr,A  Jh  C   9} ?  1  AAAA ! 5J!x """"    @HXXH@@ }9  @`px|~1==1   > yy AA   >A!B|A> @  FI1E   |.//.((( >> @@       $"" >I8I> I)4JI0   Q!^    I**I    @  "QIIE"  >A@0  >A@<@@A> 0($"!  G  ?@@A> >A?AAA> @  >AA>AAA> >AA~@@A>      >A@0 >AYUU)> "AAAAA ?AA?AAA? <BB< !AAAA!   <BqAB< AAAAAAA  | !! !  !A I   AcUIIAAA ACEIQaAA "AAAA" ?AA? "AAAQ"\ ?AA? !A >A0@A>  AAAAAAA> AAA"" AAAIIIU" A""A AA" @    @  "A    > !!! !!  >!!!> !?> "K   !!> ! #!!!  00 ! !! 7IIII #!!! !!! !! >!!>  # >  " !!!1. !!  AIIU"    !!  ? ?     FI1 M  1IIII1 AaAAAA 9A1 y 9A1AA9 1)%}!! y 9AA9 q 9II1 yA! 1I1II1 1IqAI1                    O      CFfl<8         ""AAAA  . cc"AAAA 33. cc"AAA" 33!!! \"QIIE"  "*" ccAAAAA> 33!!!1. !! !!> !> !> |q ?H w !!!AC= rL8Q   >s  >AYEEYA> >AMUMUA> cUIA  0  8@0x 8@0@@8 0($|  x8@@8 p8HH0 x@  0H0HH0 0Hp@H0 99}} }}99 }}}}}}}}}} 888888888 ??? T  8888???88888  UUUUUU UUUU UUUUU  888888888UUU  1AA1  `XFAAFX`   UUU @@@@@@@@ p  p V   @@@@ || p byyyyb p #OOOO#     UU UU   ??? 8888??? ??? ???88888   X            0<> 8888 ><0 888 {{ {{{ UU(Z  702.0>80x29_CharXvt.font xvtcommon0 w ]vA_vU v 4[  9}8D@D8RxP`p}9  >~ 99 x|0@]  @DHT,T>x0!1991!0000xD<|@b>tt0x|x0$||@  H L_  HHHH$~HH~|@P(T`P Tt00 @  @T8T|00 |00 @Xa  0HDDDH00|xD`xD8Dx(HDxxDx8DH8Dxx|Dx00000000  @  @xDdc  ||0PH8DD88DD8||<Hp8DD8pe  8DD:xDxxD8DH(D((DDH( @x@@@@@x@ xx(D|g   008<D|@@xDDDx8D@D82 <DDD<8Dx@<  x   8DD<D8@@XdDDD0x DH8@@DHPhDXdDDD0HDH0i  xDDx@@@<DD<Xd@@@<@8x  x   DDDL4DH(0lD((DDH(  @| |   ``bk  $$$8 <$$m  (<< 8< 8$<$$$8       00``   o  0P0PH(8<D|0PHl8<D|xxl0HDH0:DD4HTHlxlDDL48D@D80(8Dx@<08Dx@<`08Dx@<>Hq  pL4| 0HH0xxxx@@@"6*"         s  999}}}}999}}}}}}}}}}8888888888888???88888888888888888888888888UUUUUUUUUUUUUUU888888888u  UUU?0,"!",0?hh? ?mmmm  @@||///@@w  mmmm8888???8888???8888888888y     88888p88888888888p{{{{{mmmm{    ~  472.0>80x34_CharXvt.font xvtcommon7 L"]vl_ve v    9}8D@D8RxP`p}9  >~ 99 x|0  @DHT,T>x0!1991!0000xD<|@b>tt0x|x0$||@  H $  HHHH$~HH~|@P(T`P Tt00 @  @T8T|00 |00 @0  0HDDDH00|xD`xD8Dx(HDxxDx8DH8Dxx|Dx00000000  @  @xD<  ||0PH8DD88DD8||<Hp8DD8H  8DD:xDxxD8DH(D((DDH( @x@@@@@x@ xx(DT   008<D|@@xDDDx8D@D8<DDD<2 8Dx@<  x   8DD<D8@@XdDDD0x DH8@@DHPhDXdDDD0HDH0`  xDDx@@@<DD<Xd@@@<@8x  x   DDDL4DH(0lD((DDH(  @| |   ``bl  $$$8 <$$x  (<< 8< 8$<$$$8       00``     0P0PH(8<D|0PHl8<D|xxl0HDH0:DD4HTHlxlDDL48D@D80(8Dx@<08Dx@<`08Dx@<>H  pL4| 0HH0xxxx@@@"6*"           99}}}}99}}}}}}}}}}8888888888888???88888888888888888888888888UUUUUUUUUUUUUUU888888888  UUU?0,"!",0?hh? ?mmmm  @@||///@@  mmmm8888???8888???8888888888     88888p88888888888p{{{{{mmmm̟    ء ="2.0>XvtChService.runXvtChDev" |vØvDv GW@hf.D`\ xvCopyright 1992 Unisys Corporation. All rights reserved.Ver XVT/CH-R2.1.8-(10/21/93-19:56) Linker x12.2-j_vjm_07|02|92-08:13dofdpppOP__ Po O_-p0Nj*PqPO@ P__P(`A Co@H/M@}0 O / p @/P&9?o"?03/pGG_`WZk/`Pp/`p`p o  _0o  0 0_  @o_ $/&?'@'`)@*P*P,?0-p.0/0O@000 ?39?9O9O 0:F_pG_GO0HoH?H0IJOP_@RR/RR_ pSo^@_e_PgOh?k@lo mn@o/p0q@r?sttu/pvOwwxxyOz?0{p{@}0~/~~?o Ї/p  0_Еo0/0o`oЙ@? ?пOp?pp?@ P`OPP_PO/??P?_ @#3566:?`;;`<P>P?@PpR o@SOS/T0V X\\``a b_e/@fpijO0kmnOpuu/yz_Ќ0@?Oppp _ ?P*h67-8'0(1  &/."E )#+7*3 F0% +,"K$d1/5m2N,!45 )h  rS, :  5 i  Yo4UvXHj: _ g ?  $s#7;6co #|3 $>>t{  K\Dc"""s"4"J"" "|""""" ""n""? "e " " " " " " "8 "@ "v "w#######A########E#_#h#####)_':.8:.F:.:.8 ":.1:.@:.:. :.> :.T :. :.I :. :. :. :. :.% :.3 :. :. :. :.&:.q:.:.:.:.):.i:.{6/6/:l/l/~0~0 ~0 ~0o+2+2+2_gow333333 3)3K3z394D94 909@9P9X9S9r9999)9<9O9b9u99999P9d9s9`9(9@9X9o999999'B:|H:H:uH:)H:H:H:H:sH:QH: H:H:H:H:H:H:H:H: H:9 H: H:H: <D  <<,?J?W??X?g?t?<@X@@BB7BBBB)dC=dCdCdCdCVdCrdC|Cq C{ CZDZDZDlZDZDZDZDvZDZDZDZDZDZDZD+ZDB ZD{ ZD ZD! ZDT ZD ZD ZDk ZD ZD ZD1 ZDg ZD ZD ZD ZDZDE&EaEEEEE EQEwEEEE0E|EE EE,F LFTLFgLFLFF_FFFF7FFF+FGFRF*G\*G*G*G*GQ`QQQ/Q(kQkQkQkQkQkQ+RFRfRRRSSSwSSY"Tj"T"T"T 1Tggghxe+2? lKD!!!""#$$$_'*+,7.h  :.6/l/~0+2V22236494G4Y4f4g4456a6677s8893999B:H:::;;(;/;x;<-<0<47>=>C>H>O>S>n>>>>>>>??@5@K@p@@@@@@@@@A AA'A:A?A@AAA_AnAsAwAAAAAAABBB"B=BNBaBqByBBBBBB CCC3C:CCCVC]CdC|CCZDNEEE,F;F?FLFWFFFFF*G R d k }     \  " 9   $ r  U p q   R \      T w     / Q   A b w       - i    T                e       = 1  . 3 H M d    %    u   d    ( H W f u       ,  &! w! ! ! ! Y" j" " " # ;# # # # # $ \$ $ $ $ $ % *% q% % % '& ^& w& ' ' ' ' ( "( ( ( ( ) () ) ) ) ) * * h* * * + 4+ + 0, U, q, , , , - -  K ^ q    K {   & Y u     - A a      ' ;  \      2 L  $ 8 Y  i u  ( 7 G Z   7 < E j T ~ R k   C   {    3 F ]     p    7 L [ "     Y    ( W k ~        . 7 F m       3 M   "     " H l   ewEH>Gnu (Nufr 4 J       0 < D |   = V k    . n     8 R    &;b3joyN} "u L"/J_k)l3lUlillll8lYlvlllllll l~lll%lFlTlblplllzl6Ow5hK @#eU&PpY r   B a x    4 d }    F i   M f q     ,6Zx5v?V7t>}>_n $IpsE2lU #!g*Nbj 0X&INj/7Z_{HPs& = W f n   !q!!!!!"%"F"p""";#j####$&$[$p$$$$$$$%+%?%G%j%y%%%4&t&&&&&&5'='`'k'|''''''(((( )7)v)))!*9*Z*****zz19A.9W $3K(2<Dejr @hmr % 0 N - 5 Y  ? ^    2Jk1 */8PZdl3B%*/>Jqv:P"bi*PWjA@{ "z i    o     #  ^ z     Lk}1@R`n XiEk4JKgG6hyX&CR.%| L'BMl6 !!N!n!!!!\""""#9#J#Q###*$9$T$$ $$%%%&2&L&S&&e'''''P(o((((())J)^)r)y))))'****J+\+m++i,,,,,-"-z------..5.m.~...///00040E0r011112~22<3445575[5b5y55%6a667.7778/9B9I9f9y99999 ::L:k:~::::::;#;1;W;;;;; <,<?<F<X<f<<<3 =  >F>>kX  ,7P ^  }  R}~Sdau1 <      - r }    " : L   .    u   ZOYi *c@Mn+@YisG^}3 K  !&+05:?HMRW\afp  ,:FPW "(05;CHNV[aint| ',1:?KKKEKWKKLK^KKKK"K:KKK,KIKWKyKKJKKHKKj K K" Ki K3 Kp K K K  Kd Kt K K K K/ KKKKK~KKKKKKKKK:K]KFKVKKKKHKXKKKKKK'K/KQKtK#K#K#K#K#K#K#K#K$K$K$K]$Kb$Kg$K$K$K$K$K$K$K$K$K$K%K%K&K&K&K'K(K(KY(Km(K7Xn3O'3Yi,7Zf!GSy,8Q] D=DNDDD)D<DMD( D#D2'<q"d0L    ' L f o  @ P       (5CuKl"6au H\ RZwR(>FUds%Zr~&Dgl!74 H ?z>S^}-   !W!i!!!!!"Y"""q##j$$$$%%%%%&]&&&&1'_'q''( ((}(())))**I+,!,2,D,U,Z,o,,,,,,,,-,-C-U------!!=!T!!!!P!{!!!!!!&!:!U!!!!0!"W"""s"~""""""Q""r""@  " " "3 "W "f " " """""""" ""3"D"\"""""!""""l"#y###f######### $0$$$$$$1$$$$$C$J$ $$/$B$v$$$$$$$ $t$$$$$$$c$$$1$$$S$c$$C$S$$$$$$$ $: $ $ $( $ $ $d $ $ $ $ $ $4$W$$$$k$$_$$,$$5$c$$$$a$$w$$$$$L K$s$.$K$$$$ $$$)$$$$%$$&$A&$b&$&$&$&$&$&$_'_'_'_'_'_'_'"_'/_':_'y_'_'_'O_'[_'m_'_'_'_'_'2_'_'_'_'_'M_'c_'_'_'(_'e_'_'_'_'_'0_'V_'q_'_'_'_'_'=_'P_'{_'_'_'_'K_'_'_'_'_' _': _'S _' _' _' _'$ _' _' _' _' _' _' _'+ _'M _'b _' _'* _'t _' _' _' _'_''_'S_'e_'_'_'_'_'_'_'_'_'_'_'u_'_'_'_'_'_'_'-_'L_'_'_'_'_'_'h_'_'_'__'|_'X  _'5_'_'e_'_'_'_'8_'I_'s_'_'_'m_'~_'_'_'_'F_'R_'b_'s_'_'_'_'_'V_'_'_'_'_'? _'{ _' _' _'9!_'r!_'"_'"_'L"_'y"_'"_'"_'#_'#_'^$_'$_'$_'$_'>%_'%_'%_'3&_'R&_'&_'&_'&_''_''_'(_'*_'Y*_'*_'+_'+_',_',_'(._'._'0_'0_'0_'0_'G2_'2_'z4_'4_'5_'R5_'5_'6_'6_'6_'.7_'R7_'7_'7_'7_'7_' 8_'<8_'S8_'8_'r9_'9_'**F*V*q****(*@*R*** *=*U*****e****f*{******5*K*U*|*d !****:*S* * * * * ** *? *U * *t *7 *F * ****+++++++7+?+Q+a+u++++++++++ ++1+9+K+[+o+++++++++++ +%+-+?+O+Z+j+r+~+++++++++++++*+5+I+Q+]+u+}++++++++++#+5+O+Z+f++++++++++ ++1+9+K+]+i+++++++++ ++p "0+8+J+f+r++++++++ + + +* +B +J +\ + + + + + + + + + + + +' +? +G +Y +i +q +} + + + + + + + + +" +7 +H +P +\ +t +| + + +/ +? +Q +Y +e +} + + + + + + + + + + +$ +, +> +O +g +r +z + + + + + + + + + + +$+0+?+Y+l+t+++++&+2+J+R+d+++++ ++S+_+h+6,T,|,,,#,B,m,,, ,<,,,N,|,,| #,,,,N,^,n,w,,,,:,T,o,,,,,N,,,,,,,!,4,^,j,,, ,n,,/ ,? ,O ,p , , , , ,j , , , ,w , , , ,, , ,%,H,n,,,, , ,+,],w,,,,,,,@,,,,,U,e,,,,,,,,,,!,O,,,,, 7.":.@:.J:.:.:.:.:.:.:.:.:.:.:.:.6:.U:.[:.r:.x:.:.:.:.:.:.:.':.-:.*:.9:.:.:.F:.:.' :.F :.o :.!:. $1:.6/76/6/6/6/6/+6/66/6/46/Y6/6/6/6/"6/l/+l/l/l/l/Cl/xl/l/l/l/0l/Il/xl/l/Bl/Il/_l/l/l/~l/l/6l/Vl/l/ l/A l/a l/ l/ l/ l/2 l/o l/ l/ l/ l/ l/ l/ l/ l/R l/ l/ l/ l/2l/l/ l/)~00~0K~0R~0~0~0~0J~0P~0a~0v~0~0,~0@~0T~0f~0z~0~0~0~0~0I~0Y~0i~0y~0~0~0~0~0~0,~0l~0~0~0'~0~0~0@~0G~0~02~0?~0s~0~0~05~0X~0p~0w~0~0~0~0~0~0~0 ~0 ~01 ~0o ~0 ~0 ~0 ~0D ~0` ~0s ~0 ~0 % ~0 ~0 ~0 ~0 ~0 ~0 ~0 ~0 ~0 ~0 ~0 ~0< ~0a ~0 ~0 ~0 ~0 ~0 ~0 ~0 ~0% ~0~0~0~0~0F~0`~0~0~0~0~0 ~0~02~0A~0P~0~08~0S~0o~0~0~0~0~0~0~0(~0V~0~0~0~0~0~0~0~0~0~0~0~02~0x~0~0~0~0~0~09~0M~0]~0~0~0~0PPPPPPPPP +2+2+2+2+2H+2N+2+2+2+2+2+2>+2",6@LY]V2e=V2mkV2uV2}V2V2#V2QV2V2V2V2 V27V2 &eV2V2V2V2V2KV2yV2V2V2 V21V2_V2(,048=AEIMRVZ^bgkosw| $(,049=AEINRVZ^bhmr'22*2;2k2222&2B222y222$2 22/22222p2 2 ' 2 2 2k 2 2 2 2 22)22 23e33H33H3Z3333I3g3{3394&G4uG4G4 Y4Y40Y4HY4]Y4jY4yY4Y4Y4Y4Y4Y4g4g4g4g4g4g4g46g4=g4g441464~444$4g4r444444 4:4h44444444G4f4|44444443444,4C4X4n4444!404n4444454L4r4444444l444444 4 4D 4W 4f 4 4 4 4 4 4 4 ( 4 48 4H 4P 4U 4n 4 4 4 4 4 4 4 4+ 4> 4E 4b 4i 4 4 4 4 4 4 4) 4h 4 4 4 4 4 4 4 4k 4 4 44)4A4P444A4H4X4U5r5y5555/575H5b555555555555555555"555555 5o5z5555'5/5@5[5n5|5555555555555 55'5?5T5|555555555 55&595@5g5p55555 )555 5 5.65666666676666666&626Y6666/6P6g6n6a6a6a6a6Ca6Ma6va6a6a6a6a6a6:a6/a6La6Sa6a6>a6Va626l6s66666666/6_6}66666666!6:6A6*6H6O6!646X6v6}66606M6T6{66666 6W6t6{666666&6C6J6f6666 6/666A6n6u666666E 6L 6l 6s 6 6 6 6 6 6 6 6 * 6 6, 63 68 6E 6Y 6h 6 6 6 6 6 69 6@ 6W 67E7o7777\7-7J7Q77777F747>7a7k777777/7@7O7^7h7r7777777777`7E7L7y7777Y7s8zs8s8s8.s8Fs8Vs8s8s8s8$4 s8Ys8s8s8s8%s8s8s8s8s8s8s8s8zs8s8s8s8s8s8s83s8s8s81s8Ys8ns88/8;8I8a88888888888 8-898>8T8{888888?8F8^8 +949U9`9p9}9999999+9L9n999939D39l393939039I39l39393939393939f39v393939393939I393939C393939C393939u 39 39 39 399!99HLPm99999&9C9[9999919D9W9j9}9999%9h999w99999999B:RH:H:H:hH:!H:H:H:zH:XH:;H:H:H:H:H:vH:(H:H:H:p H:H:H:H:H:H:wH::":M:_::t:;e;;;;a; ,;D(;J/;/;/;/;/;K/;/;5/;e/;{/;x;+x;Ax;Fx;p<R(>(>(>(>(>(>(>M7>C>%C>:C> 5H>IH> O>bS>S> -S>$S>n>n>4n>n>Nn>yn>n>n>n>n>>>>/>6>V> >> >>>>">J>">/>9>>>H>W>>!>&>8>B>Q>V>c>h>u>>>>>>>>>><>F>P>U>_>i>x>}>>>>>>>>>>> >>>)>.>8>>>>?>N>S>b>g>t>B>>>>d>>J>6 >pFtF?!@@@@@0@L@u@5@/5@5@5@5@"5@U5@K@K@K@K@K@K@1K@6K@V@ @@ @%@.@8@=@F@Y@ .^@!@@@@!@ @@@@@@@%@:@VAeAAA$AGALAQAZA|AA 'A'A!'A'A'A'A'AtAAAA_A_A nAnA(nA=nAwA!AA8AFAKAUAZ c=s c= c=A+A AAAFA_AAA AA(AAAAAAA4A?AAA AABB%BB*B=BUBC"B=BD=Bz=B=B=B=BNBVNBxNBNBNBNBaB#aBgaBaBaBaBqB'qBmqByB%yBOyBzyByByBB#BoBBBBBB$B`B BBB%BOBzB  /BBB>BnBBGBBB C4 C^ Cr CCDChCCC]CCCCCC3C(3C;3CS3C:C(:C;:CY:Cq:CCCVCCxCCCCCCCCVC(VC;VCSVC]C(]C;]CS]C dC"|C[C5CFCCC$CkCCC$C_CC C C C C C C C C C& Ct C C C C C;ZDZDZDA ZD ZD ZD NENE\`EEEEEE|EE?LFLF#WFQWFWF WF~WFWF}WFWFWFsWFWFWF(FVFFFAFFFFmFFIFsFEGlVGVG*VG 0PVGtVG VGoVGsVGVGVG_VGVGVGVGVGVGGzGG4G^GGGDGGGGG=GGG/ G= Ga Go G G G4 GB Gg G G G G% G4 GB G GJ G G G G GG%HNHHHIHGHuHHH{HHHHH;IX;I;I>;I;I;I;I;IBIQIIII'IgI J8 JT Jr J J J3 Ji Jn J J J! J J J J5JJJ9JZJJJJ7JJ9JJJJJ JvPKPK1dKdKydKdKdKdKdKdKdKdKdKdKdK$ 1,dKdKdKdKpdKdK dK(dKDdK`dKdKdK;dKdKdK dKbKKcKKKtKKK,KKK K KKLLLMCM\MMMM.MQ.M`.M.M.Mb.MlM#vMazMzMMMMYMMMMM[MMMM-MMMMLMcMBMMM MgMnMMyMMMMaMMN NN"NO`O0#OBORBO]OOOO!OOOOOyOOOO,ObOP$PWPsPsPJsPsP PPPP'PPPQQ3XQXQXQ XQ0kQkQ0 2kQkQkQkQkQkQkQ9kQkQgkQkQ kQ kQW kQ kQ. kQh kQ kQ kQ7 kQ6 kQ kQ kQkQRkQvkQkQkQkQFkQkQkQkQ3kQkQkQRRR>R|RRR,RSRiRRR RRR3RzRR9RkRFRR,S<,S,S@l  !4 # >%l )\ * ]7 | 3< ; e" C$ & P+H  4 , ,-D . / 0 1 ,2 {,4D P 5L 6,  D\\DDT\\D T\\Da$D]DyDDD]DyDDD.,\,,,B,D\,,DB,.,\,,,D,P,(,V,4Z4]DyDD DT\xFDd lD]DyDD D{llyDD2l;lT4 T  5` 6l 7  z z  Error opening translation file: !x 8> >$  9 : ; <4  = >! ?# @ % A.,,$       !"#{%&'()*+,-./0123456789:;<=>?@ABCDEFGHI' BJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~) C, DB. E 0 F   @@@,2 G@@@ @ c @cDdtt84 H    FD6 IP8 J    []<>pp \: K  @ @h< Lt> M5 @ N5T555D666477B OD PF QABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890000000000 PB`BpB ((((( AAAAAABBBBBBH R   VNVF4J StmwmmmRAL T?Ǫ0mCN UP VDE;Zx0N@@@ @ @4@p+ŝi@զIx@ߌGA~QC‘F uuvHM]R W=];Zw R`%u  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|T X  $(,048<@DHtttt `pJpMR @DOOD[sys].userDefaultPrinterGpsGPSBPRPSDeviceNameDe;9         ~DD[KBD][VID]89>< DVTWPYX[]}[!Scr]]$$.Tmp}[!Scr][!Scr] LW Y[PTR][scr]<$>BsFilter.tmpVNVF& $ % * - II021B02II120A00SYSSYS8251Config.sysCommPtr&II120A00II010E02[sys]LptConfig.Sys&Press NEXT PAGE or SCROLL UP to continueL(Press NEXT PAGE to continueM*?*?*?{}MASTERSERVERLOCAL{}[][]{}[]<>^{}[]mfd.sys<>[d0+;*L&R  -gv%< )!!Y L-Ly L$$P $v$q$m$H$$ Y Z$$$ %(v'tsdLd#e$6x LH$_ $$$ " $.$`$d6d$,^+#$1!{<<|~h$'<$<Y<<1%<<z<<&<?<] <$<!<$<xL,,W7&l&l&llP l$*t@#h-NdL}(e,5$?"Lmdu$$$ $($w$$dd#d$,Z,LL >L$2$#$$g$ $_$# $$9$>LR $$%[ [lb$&G#w(l$$$()!H'397o[W%z$dd L L Ld$,% 6 ro cz8x-  0 e] b   k   { l*,d,!|"%lL&l$ %l&lG lE3W  $ \ =     | | | | l\3H (] \XVT/CH-R2.1.8-(10/21/93-19:56)4_ ]@a ^Lc _5 Xe `dg api bMetaWare High C Run-time Library Copyright (C) 1983-1988 MetaWare Incorporated..|k cm do eq fUP D ]U6ÌPVW&2P&&2Ў&>:F+&&0vиrMЎ&60ы2Y2_^Yً]U686:Pjj6&:06>2F+ юЎ&^6юً:YYY6:]U*^ v.8v&<t^ &w Vv&t&t$#tqvvH$=uF vvs gFPa,Jvv=vv jFP*)FPjjjj$v^ & U&^ v^.HHHHHHHHHHHHv&<t+^ &w Vv&t&t$#uv&u&tFPj FPFPFFHFHFv&|$t FFNNFPFPv&DŽVFP*v~ǁnvƁ~v&DŽVFP*Hvv jFP*4FPv&TRj&tj$v^ & U*^ v.<-Gpu hv &t&D&T#u#tRPv &t&D&Dv&v &t&D&Tpv &t&Dv&\v&t&4v &t&t&t;v &\&G&W u4+v&^ &w Vvw i&t&t$#tv &\&GFFvv jv&<u.^ &w&G PVv&t&t$#u v &\v&<tV^ &w&DFFvv jFP*v &\&D PS^&w&w$#u vv jjj*v &D$FFVFVRP&t&tFPv&<tvv jjj*v &\&Gu&G&W u&GF+Fvv PFP*sv &\&D ^։FvvVR?FPvv֚v &|$uv&D&+=|& v&&Dvvvv֚~U&~ uv&@F&Dv&D@F&DHFy jF+FFv&FމV&D+FVFV u~u|&D&;DuFpv&FމV&D+FVRPFRPjjvvFډVܚ FV܉FVvvRP FFV;}VF;F}FFv&D&TFV^ t, uPv&F&DFF+++F&v&DF&DFF+++FFv&v[.kssF;Fu v&DBF;Fu v&D/F;Fu v&DF;F} v&D v&Dv &^&G=tv &v&D &T v&|tFFV;}VF;F}Fv &Fv&D{ kV Vu~u;Fu&DFFމVF+FVRPvvFډV܋F+FV܉FVFRPvv v&^&v&;}v&v&Dv&;} v&v&v"v vvvvv&4&t&t&tvj \FމV Nދv^&+O &w +}|Fv&|uF;Fv&|u F;Fu-&v&|u F;F}v&|u F;F~F~uv&Dv v&|tFFV;}VF;F}Fv&Dv"v vvvv&4&t&tPvj \v &F Fu~uF;Fu v&D} lFFމVF+FVRPvvFډV܋F+FV܉FVFRPvv v&^&v&;}v&v&Dv&;} v&v&v &UZ^ v.BvvvvldvvvvFvvjFV uh+v&&D&D&D^ &_&w&G4v &\&w&wv &t&D&D v &t&D&TFV&| t v&Dv&DFv &\&D PSFP?v &t&| t FFFFv &\& tFv&;}+B+++Hv&+F+++&v&|u&DDFv&T;~F@+++Hv&DF+++&DFFEUvvv &D^&W;|Rv &^&;|Rv &D^&W;|Rv &Dv&T;|R$ U F Fu FFV FVFVvvv&D^ &W;|Rv&^ &;|Rv&D^ &W;|Rv&Dv &T;|R$vvh$@ Uv &DF&HF&D@F&Dl wFFPjFv&DF&F&DF&DUv &DF&F&DF&DFFPjFv&DF@&FH&DF&DUv&t&t&t&4v v hzyUv&t&t&t&4v v hyU+~uA+щVFF;F}v&8&tFFV;t,v~ +vڍp~ F +~uA+ыAv~ %s r1 %d c1 %d r2 %d c2 %d%s top %d left %d bottom %d right %dUFNH|>F ;FvNv ~Nv ~ONFF x xj"j6''&D&D&Dj 6'&D&T+uA+Aj 6'&D&T+uA+Aj6'&D&T +uA+A  ''UP6'&|uh@6'&tjjjvFF6'&DU hFVF~t(6'&tvvhvvFP#F#tFVFV~t RP+FVUPjhvvv ^ t F U6'&DFFvv@FV u y v&D&T RPFVvFVF;Vu;Ft vvvvvvFP##tҋF;Vt;FtF FFvvvvFFV&D &T F&D&TFF;Vu;Ft vvvvv v FP$#tvvF;Vu ;FuFvvvvU v&D&TFVFV#u#tgRPFV t8v&D&TFVv v vvjF V Bu@uvvFVFVvv닋F V U FFjjrFV uFF~u~tFV#u#t%N  zuv&; u%jRPV # v&;F uF~uv&D&TFV uFvvvvFV tivv~t~tFV6'&|thrmJ6'&DU6'&|u>FP&t&t&tjjjhrmF#u6F6'&D&Dhrmv vvFVBu@t+6'&&T#u#tRP6'&&D6'&D &DUF6'&|thAvv v FVu=uRPFV u+v&D&T RPFVvFVFFF+FV}06' {&tvvvvvFP##tvvv&D&T ^&&WvvF;Vu;Fu FV +v&&T U6'&|thB~ }+Q6'&&T#u#tRPFVRP6'&D &T&t j6'&&TU 6'&t&t&tjjjjhF#u,6'DRP&t&t&tjjjhmmF#t+hwm6'&DhFVFV&D&D&D&D &D &D &+'&uA+ыA6'&t~F6'&tvvhPPVR$Fvv~ |u6'&D +6'&D&DUFrm~tFmm6'&|u&DvFFFFjjFV uv&D&T#u#t1&L &\ N^FVVvv~FV u`Fv&D 6'&D ^FP6'&t&t&tjjjvF#u 6'&D(~t~u#u+~rmuhrmUFVFV~ }~uF#t =th<6'&&T uh=6'&|th>hwmQF6'&D &T+F V }&D &TF V F V FVRPF V v jvVvV }F&=ujvvV< 5+6'&|uA+ыA6'&t~FVv&D&T N6'&4^FvvvFVu=uRPFV uv&D &T +F V }SF V ^&G &W &G&GF v&+D FvvV FVBu@u~F6'&D v&D&T u5F V ^&G &W &G&Gv&D +F F6'&)D v&D &T ^&G &W v&D&Tv&D&TF V v&D &T &D&DFFjjjFV uv&D&T#u#t$FVVvv ~3FV uv&<u0j'&w &wvV #uF 6'&D hjFVF~u6'&tvvhvvFP##t~tvvyvvF'&G v&D&TF~t%6'&tvvhvvFP$#tvv~u6'&D FVF &D @+}6'&t&D RP FF;V u;F t(6'&tvvv vvFP$F#tvvhrmpF;V u;F u ~u+*U4jFPj-F*Fк+6'&|uA+щVξ'&uA+V'&wFV̤ V̚6'&D&T+>'&}uA+A6'&tvЍVR6'&tvV<+6'&|uA+ыA6'&t'&~6'&\&t&UFP6'&t&t&tjjjhmm#u vFː[scr]<$>.cb_file*****UvvFvvy#uh1uvvvV+&DvPZU v v y#uh2uv v FVVNNvVj'vvvv v vV&DF&F&DvjZU6*&<tL ئ FV#u#toRPFVvvNQv&DF&FFHF&|t*FPvv$#tvvv&4&t vvUL FV#u#tRPrUL FV#u#tRPvV&Djj6''&D2ƒUF#| 6'&;D~hyFVFVhFV uhyjFV uhyv&D}&T uFV&D}&TLv&D}&TFVFVvF#u#tvF&&TFVۋFVv&&TvvF+&&T&DD&D&T^N&\&L~&|$ FV&Dy&T{&F&GFV&G&WF &GF &G uv&D&;Du&D~ uv&&;Du&DvvFP?FPvD RPv&D&D&D&DFV#u#t\+~uA+CSv&D&T uhy+~uA+ыAv^&vvjjjnvvv&\&D PS~FVUFVFV^w7.~ u+ FVF F+&vvvvvvvv jjvv:UF#~=2~hy6'&&T ui&DP 6'&&T uhy6'&&TFVFF6'&;D+ҋv&&L&T&LFFԋv'&މ^FF V &&WFV&G&W Uv &Dy&T{FV$FVvv_$vvvv v vvv &t$'&&F Fujj v&|uV_$6  Uv &Dy&T{FVRPVv vv&t$'&&X 6'&t&46'&&Dj"j6''&D ƒUFF Fv~ v&t&tRP-FVv&t&tFPa,U>+F6'&t&; u &;uPPP> 6'&t&&~uF =|A=<-FjP#u6'&t&Ĵ&\$t t tF ^ .w*.up u uu-t*/tI0t;uw<uyKts6'&t&Ĵ&D$F=u= uj?6'&t&Ĵ&D$F=ux= upj6'&t&tjjjj(6'&\&ķ&D$F6'&D&TFƉVȋF FʋF F̋FF&t&th,#FPe6'&t&Ĵ&\$u26'&t&Ĝ&w&Duv'&w&w&w&ĴE6'&t&D}&TF܉Vދv܋F#u#t;&t& Dt!t'&w&wv&t&tC v&&TFOF =|=^ wt t t&-t .t;u6'&t&Ĵ&|$ue~t6'&\&ķ&t&DuF FF FFFF6'&t&&jFP~u[~u+T6'&\&ķ&D$F6'&D&TFƉVȋF FʋF F̋FF&t&th,#FP FUFF6'&D&T#u#t0RPFRP-vV#u#t&t&D&TFVFVU FV Vt6vvF&tvF tv&t&|uFFFUL  vV+^ &vV;u;uȎ&;Lu &;Dupv&t&D=t=u[v&\&Gv&v&t&|u v &v &v&&#u#t&t&Dv&+ U\6'&t&t_$FP_ $F6'&\&&FV6'&\&&F߉V6'&t&&FۉVݍFP $FPg$6)ƕV$6'&tc~6'&t&tjj FP $6'&t&D}&TFVcvFF Ft[v&\&D ^FVRvvPSZ#tv&\&Gtvvjjjv&&TFVF  6'&t&tFP6*&|tC6*&D=6'&t&Ĵ&t&DUvv,,U&F6'&t&&FV^v.(6 6f vvjFVv&\&Gu$<tvF;Fu;vtPVˋvF;Fu;vu`&t&D$<tMv&\&G$<u vvF0vvjFVv&\&G$<uvF;Fu;vuPVv&\&G$<u vvFQvvjFVv&\&G$<t&GuvF;Fu;vtPVȋF;Fu F;FuvF;Fu;vt &t&DuXvvjWFVv, &\&G$<tvF;Fu;vtPVϋFV;Vu;FuRPjFVv&\&GtvvjjjvvjFVvF;Fu;vu&\&G$<uvvƋFVFVv&\&G$<tvvjFV;Vu;FuvvjcFV;Vu;FuVv&\&G$<tvvj3FV;Vu;Fuv&\&Gtvvj6'&t&D}&TFVvF#u#t&\&G;Ft v&&TыF FuFVFV.v&|$uVjFVv&t&DttF~6'&t&D}&TFVvF#u#t&\8 &G;Ft v&&TыvF#u#t%&D$=t= t= t&t&Dtu FVFV~uFV;Vu;Fu6'&t&&F Ft9FvvjFP6'&| tFvvjFPFV6'&t&&6'&| tFRPjFPFvvjFPFUjFV uh{FVv&D&TUFFFV FV^w6.   $ 0 FFFFF+FF~t8F Ftv&&TFV t6'&t&D}&TFVr6'&tF&;Du#F&;D}uD v&&T#u#tFFVFVFV6'&t&D}&TFVv&&T;Vu;Ft#u#uދF;F u F;FutF FuFVFVF;FuF;FtNv&D$=u= u= u&t&| t&Du~tv&t&DuFVUjvjU+FvvFЌ;u;t'Ў&;Tu&;Dt&t&D=t=uFFV6'&D&TFUH+F6'&;Tu &;Du6'&t&D6'&D&TFV~ v&D&T'&w&wv&'&w&t&D=(#s9)&7&;Dt,v v v6'P &t&t&t&tjF v v v6'&t&t&\FFV6'&D&Tv' 6'&t&|h {6'&t&L~t~ *#u~u6'&t&DL 6'&;Tu1&;Du+6'&t&t6FV#u#t RPv$F6'&D&TF‰VFFP,FFP,FFP,FFP,~t 6'&t&t&Du vvjS,FU6'&D&TFV~ v vc#tv6'Vjv6'VFV6'&D&Tv>' U6'&D&T\ FV~ h{vv #tv vvj. v vvPFV6'&D&T U6'&D&T t96'&t&|u*6'&t&|`u6'&t&tvv- u+U6'&D&T t!6'&t&tvv -FV u+vvv vv U^#t/tt#v&d&$&d&d v&d&dUv &t&4+~uA+BRv &&TvvRPUPFFv&;D}_&t&@= t=t&@&P#u#tRPv^&_&x u&@&P#u#tRPFv&t&th v&t&tvvU v<FV uh{jFV uh{Fv&v&D &T#u#t!+^& uA+;t++ v&D&T^&Gv&D^&Gv&D^&G&Gv&D ^&G&G v&D \PS~&uv\PSVR?FPv\PSv&t&t v&D&T&DFF^&xtFFHv&D PFV uh{FVv&D&TFFF^&xuR~^߉^F~F~Fƒ v&&T&Ev&t D^&v&D&D&D &| u&D &D lv&Dtv&Lv&Dtv&Lv&Dtv&Lv&D tv&Lv&Duv&L v&Dtv&L v&D= t=uv&Lv&Dtv&Lv&D^&Gv&D^&G v&D&D^&Gv&D&D ^&Gw PV~&uv\ PSVR?FPv\ PSv&\wO./v&D&D,vv&D&+D =} &D  v&D &Dv&\ tt4Cv&D'&D&D^&w&w v&D&T,v&D'&Dv&t&t  v&D&TFFv^މ^F+&&W&Gvvz <FVU&FFF6'&D&TFVF#|BP6)&Ĵ&&T u6)&DŽ9F6)&Ĵ&&TFV6)&Ĵ&4&D tF6)&Ĵ&4&DtFF6)&Ĵ&4DRP&t&tvv#6'&D&T uh!{6'&t&t#uh"{F6'&t&t&DF V 6'&t&t&D&TF6'&t&t&D6*&D6'&t&tvv#6)&Ĵ&4&D&T6'&t&t&D&T ~u6'&t&t&L6)&Ĵ&4&D& TFV+6'&t&&Fv&&T u+FЉFV&D=t= t = t=uUv&D&T#u#tZFVFv&t^&"t><&t<~uv&t^&@*P@|FFv&| u&D&TFVv&|uF Ft?vD RPvv&t'&w&wv&tjv&t &t!FVv&D=t= t= t v&t&Lv&&TFVFF6'&t&t&D6'&D jj6'&D jVj6'&t&t&Dt; ,6'&t&t욛 L F܉V#u#t RPjS,FFV6'&D&T~t vvF  UjFFF$FV6'&D&TFV6*&D &T u+hF F uL F V FVF Fuv&<uj2,/FVFVRP_$vv_#t"v&=t=tFFFv&& t'^&?uFFvF'&w&G]+FF6*&;Tu&;D tC&t &;Tu&;Dt1&\&Gt&v&<t6*&D&t '&w&GFv&v.    v&w).#*81FF FFv&D&TFȉV&DF&DF&#t=tv&D}&TFVF Fuuv&t  ~FPv&t&t$#t6v&| t,v&\&GttvvjFPF v&&TzFV6*&D&TD,#u6*&D&t#u#u^&?t}~&} tS&t ~FPv&t&t$#t"6*&t&t&Dtt j&tV6*&D&Tv&&j2,6*&D&t#u#t;^& t1&u*&\&Gtt6*&t&tjFPFv& v.)A   ~uv&|t vvh*#L 6'&;Tt&;Dt6'&\&&  uov&DF6'&t&&jFPD~u@v&t&t&tv#u#~uv &DL ;V u*;F u%v v 6FV#u#t RPv$FF V FVFFP,FFP,FFP,FFP,FFP,~uuvvjS,f~tev>' v&t6'Vj1~t0v v Uv v |~tjj_$F~tFvvy#t vv_$FV6'&D&TFUF6'&D&T#u#uN N uRPv v-FV u FV  FV~tv&t&L v&t&d6'&t&tv&\&D PS~6'&tF&;uF&;ujjF6'&D&t#u#t &|uh#{U 6'&t&D}&TFVF FtGv&\&G;Fu+FFvvjFPvvjjj v&&TUFFv vjFPv vjjjU$*FV;~ FVFF ;F};F~y6'&t&D}&TF܉VދF Ft[v&\&GF;F uFF;F|-;F(FvvjFPvvjjjv&&TU FF;F}R 3^&H;Nu &;N uBV&p&0jVR7 vv^&p&0jjjF U F FtFv&'&w&wF RP-FV#u#tvNvNRPj FPFVU(F FuP-~F؉FV6'&t&tF RP-FV#u#uNvNv6'&t&&N܉vRPj ^SvvjjjFvvjFPFv^&"t*<&t<~uv^&@*P@|v&t&DFU F;F~|6'&t&tF RP-FV t[6)&Ĵ&<u 6'&D jv i6'& D FFFFvvjFPvvjjjUFFFFv v jFPv v jjjv v &U 6'&t&tFRP-vV#u#upFF#t &t&L v&t&dvvjFPvvjjj6'&tF&;uF&;u~ujjEUPF^ w:.%%%%%%jv&t&t#RP[F 6'&FFUFFVPvv6*V$ vF#u#t&<tv F #u#t&<uh{h[#NFV uh{v&D&tvFD RPvv4vD4RPv v  F F u v&d(v&L( F Fu v&dHvDTRPvvv&LH v&tv&ttv&Dt&DvFV6)&Ĵ&&Tjjh%6*V6'&t uF FFvvFUF FVFh\#$FV uh%{v&\&D^Fvvvv>**RW$vDRPh#LPh|RPv&t6&t4v&D4&D6&d(&tV&tTv&DT&DV&dHtVFPvF)&ğ&7&Gjjh%*SlvvUF FVP vv6*V$Fh]# FV uh${v&\&D^Fh#LRh|vDRPLPv&t6&t4v&D4&D6&d(&tV&tTv&DT&DV&dHtVFPvF)&ğ&7&Gjjh%*SfvvUFVFV^ t uj6*V-6*Vh#FPh|RPm|#tJ6*Vh#Ph|RPm|#t%6*Vh#Ph|RPm|#u 6'&D+j6)&4&th)jj6'&|t &D|U v&t&t#FV^ #t t:ujv&t&4jv&t&tjjhhh,FVjRP+~uA+щVv&LI;|ʉNQvv&t&t<v&t^&vvFF+ +v&D&TUF VFVFV FVFFjhc#hk*FPH#u#6)&h#vPh|RPFV U FVFVv&"t><\u5&|"u.vFFvFv&<tF&vF&v&FUv ><FV u+;FHPvvv v<v^&@V^vv<FV U %FV  upFV;~ VFVFFF;FdPL<FV u 6)&DŽ'vvvvjjvvjj3#uvv+vvF딋FVU6'&D;Fu&D;Fu &D&D jj''U~ uFU^w.>NNNNNSSNFU^Kw.m{{{{{{+FUv &^&v &D^&Gv &\wQ.v&D+v&D&D&D v&D v&D &D&DUv &^&v &D^&Gv &\t  t v&D.v&D#v &D&T u@tv&DUv &Kwd.v&v&v&v&v& v& v& v &D&T u @u v&hv &D&T u=u v&Hv &D&T u=u v&(v &D&T@u=@@u v&v&UF #|)= $'^&''&G&Wv&&D&DUFF;(}+F ;^(uF;\(uF;`(ub(9F̋F *FFV *FF*FFFFF (=tUV+RvVv+(RFVv+(RFVV‰F;F} FFFF뗃~uh~~tO~uFG~t*^w6.FF^t t uF(=}%VN \(^(V`(Vb((FUv &D@^&W;|Fv &TJ^&O;|щVv & ^&;u*;&NFv &FVvFP/PvPv &D^&;Gu1VN;|'FVv &DFNvFP/PvPv &@^&;|Fv &TJ^&O;|щVv &L^&;Ot;+Fv &DF( V&DFvFP/PvPv &^&;u"/Fvv &4&tjFPvv &D^&;Gu#/Fvv &t&tjFPvv &D^&;GtFV;|+Fv &DFV&DFvFP/PvPv &^&;u"/Fvv &4&tjFPvv &D^&;Gu#/Fvv &t&tjFPv UFV#u#tRPy#uh~FV6'&&T6'&&T#u#tRPy#uh~6'&D&4#u#t&|t+ 6'&&TU6'&D&4#u#t&|$u&t&tvvD6'&t&4y#4 t06'&t&4v6'&t&44U6'&D&4#u#t&|$u&t&tvvF6'&t&4y#t26'&t&4vƒ 6'&t&44U6'&D&4#u#t&|$u&t&tvvE6'&t&4y#t16'&t&4Nv&O&w!6'&t&44U6'&D&4#u#t&|$u&t&tvvE6'&t&4y#t16'&t&4Nv&O&w6'&t&44U6'&D&4#u#t&|$u&t&tv>6'&t&4y#t*6'&t&4@ N&L6'&t&44U6'&D&4#u#t&|$u&t&tv vUFF6'&t&4y#t;6'&t&4vVv~6'&t&44U6'&D&4#u#t&|$u&t&tvvgE6'&t&4y#t16'&t&4v6'&t&44U6'&D&4#u#t&|$u&t&tvvK6'&t&4y#t16'&t&4~6'&t&44FVU6)VvvjvD RPf+v&D6)ƥ^v&DL &D&D&D! &D#Uvh#0Ph|RPFPRv vFPj4 UXvv #t6'&D&4#u#t&|$u&t&tvvt 6'&t&4y#u6'&t&4FPFPPvvZ#uSvvFP?FPFP?6'&t&4F6'&t&4FV&tF&t F&tF&t!&tj#v&t&tjFV ‰F~u'~t!=~h~vFPFPvNv~~t FFNNԋF֋V;|VƋF؋N;|NȋFڋv;|vX F܋v;|v̉VƉNȋFڋV;|VʋF܋V;|V̋F;F F;F+"t=v&t&t j.F#uN~u~uvFPj vP~t>(ueP(( uh~F;F~/Pv(&&P uh~F(6(6('HFHF~t ~tvFPj v~FF΋VVFVԋFΉFFމFF;F~;F~~(&@&0vFFЉFFԋV;O;VJN;Nt;Nt ;Vt;u+v&D*F%pFF%FF F&DFFvvd vv~(&0VF+F@PFF=~t~tvFPj v~FF΋VVFVԋFΉFFƉFF;F~;F~~(&@&0vFFЉFF;F;;F6v&T*VpVVVV V&TFFvvvȋv~(&0VF+F@PFFS6'&t&44U6'&D&4#u#t&|$u&t&tvv  vvU6'&D&4#u#t$&|$u&t&tv v vv` FFFFv v U6'&D&4#u#t*&|$u!&t&tvp vv v vv "F F F F FFFFvv# U6'&D&4#u#t*&|$u!&t&tvvv v vv1 "F F F F FFFFvv UP6'&D&4#u#t!&|$u&t&tv vv 9~~3v&t&4qFF;F}^&p&07FU6'&D&4#u#t!&|$u&t&tv vv v vvGU6'&D&4#u#t&|$u&t&tvv*6'&t&4y#t6'&t&4vvUFFVV6'&L&4#u#t!&|$u&t&tv v PR| Q :6'&t&4y#u#6'&t&4FV薎&tF&t&tj8Fv&t!&tj$F FF~t6'&t&4FPDFPj'F Pj'6'&t&4FF;F u>FV ;} VF VN FFFFFFFF FvFP/9FV ;} VF VFFFFFF FFFvFP/PvPU6'&D&4#u#t&|$u&t&tvv vvjj:U(FV #u#u6'&L&4#u#t$&|$u&t&tvv RPv 6'&t&4y#uFFF FF Pj'6'&t&4FPFPFP?F#~F~uS+~uA+щVFFV FډV܋F;F}v&<uFFFF;F|FF+FFVV)F~FFFHV;~+VBV~F;F};F~6'&t&4FV▎&t!&tj~v&t&tjFjV ‰Fv&DtNv&DtNv&DutF6'&t&446'&t&4FPvvvv vv UF v&DF &F&DF&D UFv &;D|&;D}F&;| &;D}+Uvvjjjj Uv v v &DFP&FP&DFP&DFPeUv&D&;D} &&;D}+U6'&D&4#u#t*&|$u!&t&tvvv v vv?vF#u#t&v F #u#t&vF#u#t& Uvvh'U6'&D&4#u#t!&|$u&t&tv vvM~}+~uA+щV*FFV FVF;F7 }v&<tFFFU*6'&t&4y#uv v FP?FFFFFFFPj'F+FFދV+VV#u#u6'&t&4Fv  ~v~vv &T&+TRFؚ;F}=vv &&+TRF֚;F}~}BvޚFvڍFPjvޚPd#t FV#u#t,FVvvNQ?v&tFP+UFVFVhj6))D.&DB&TD&DŽ*&DŽ4&DŽ6N&8&DŽ:\&<&DŽ>h&@&DŽBv&D&DŽF&H&DŽJ&L&DŽN&P&DŽR&T&DŽV&X&DŽZ&\&DŽ^&`&DŽb&d&DŽf&h&DŽj&l&DŽn&p&DŽr&t&DŽv&x&DŽz&|&DŽ~&&DŽ&&DŽ&&DŽ$&&DŽ6& &DŽD&&DŽX&&DŽd&&DŽt&ƒU6)&tB&t&|ua^&G 6)&tB&t&D v&D )&wB&t&D v&D)&wB&t&Dv&D6)&tB&t&D+U6)&tB&|~v&|u &t&t 6)&tB&|~v&|u V9#t6)&tB&|d|4j$FV uhv~+v&&T)&wB&;Tu&;u^F&&D56)&tB&D&T uh쀚FV6)&tB&t&&TFV6)&tB&D&T6)&tB&DUL v &&T t,+FF&t&4FP jFv&)DF&)DU+F;V u;F uh6hht 6)&tB&|u&&TFVFFvF#u#u+҉VV&|uFv&&T uv&D&T u:v&&T#u#tv&;Tu&;Dtv&|tv&D&T uFv&|t5FFv&;D}^^&Gv&t &;uF?FFFFv&;D}$^&Gv&t &;uFFЃ~u~uv~ F Fuv&&T6)&tBL6)&tBF&;Du.F&;Du%^F&\&D#u#t#&&Gv&&Tv&&T vv6)&tB&LFvvF&&TFV9FU:+FΉVFFFFFFFFƉF،VڍFPVR#t FP CU4+FڋVNV̉NFF҉FԋЉF։V؃~ty#t_FPVR;#tFP~uF7C;L ;Vu;FtF#|=v&|uVI%뙚C~u9~CU4+FΉVЉFFFFF̉F،VڍFPVR#t FP CUzFFv&D&TFVvF6FHFVNQNQNQ#tSF FuF) F)F)L ) )FV ))jh)vvj #uSF FtH))) ) )FV ))jh)vvj #u$FVv&w+.6)&|tj6)&Dv&vq.'      ] vv #uhh+#FPj v&& uF&&jFPvv$;Vu;Fu jj_$6*&D;Ftw&D ;Ftk&D &D\vvNF6*&D &T#u#t RPH$=tvv vv9#lF6*&D &T u ~uF^#ttu1GFGv&#t=t6*&t&t H$=u F;Fuxvjj &4vF#u#tK&| uB&| t;vFPj#t(FPFPFPv&t&t$#u v! x;Fu6*&D &TFV6*F&;Du F&;D t&vvI%FVv&D&TFVFPvvkF!+v&D&TFVFh퀚~u~tv&#t=u%L 6)&D*&T,j*6)&t,&t**#t56)&D*&T,#u#tRPvv Fv&<ujL FV#u#t RP9FF FubF=u=tOL FV#u#t RP9F6*&<tF FuF=t=tv&<u#&|Tu&|u&|u ~uFvvvvF~tvvvv9#l#t tt'FF+v&D&TFVrhkvvvv9#l#t tt'F(F!+v&D&TFVFh~uvvvvFvv_$~ts6)&<u+D8&DB&TDvv6)D.&DB&TD>v&<u'vv#u#  FVFVRP_$ FFv&< uD>/t=&D=r4= w/FPFPFP#tFL RPvv ~tvvvv v&<t}v&D}&TFVcvΉFЋF FtYv&\& u9&Gt2 ^ʉF̍VRvvPSZ#tvvjjjv&&TFV럋FV#u#tRP|U$FP#t FPWCU+F6)&tB&;Du&&LVN;u ;uhvF#u#tv~v&&T)&wB&&Tvv+FV6)&tB&L6)&tB&;D~hFF  U6)&tB&|u.&&T uh6)&tB&&TFVFFvF#u#t3&|u&D;Fu &D;FtvvF&&TFV뿋vF#u#u)&_B&;Gu&;7u&&T6)&tB&&T6)&tBF&;Du,F&;Du#^F&\&D#u#t &&GvF#u#t^&&O&&LvvFF6)&tB&LUvv'-6)&D,;Fu &D*;Fu+&D*&T,6*&D&T6)&tB&&TFVFFvF#u#u&D;Fu &D;Ft&D#}=~vF)&_B&;Gu&;7u&&$  T6)&tB&&T6)&tBF&;Du,F&;Du#^F&\&D#u#t &&GvF#u#t^&&O&&Lv&&TFVVFVFV6)&tB&LvvF&&TFV$;Vu;Fu jj_$6*&D&TFVvF#u#t,&D{;Fu&Dy;Fu &Dy&D{v&&T6*&D;Fu&D;Fu &D&DUFP#t vvU 6)&tB&|u2&&T uh6)&tB&&TFVFFF Fuv&|t&t &t _6)&tBF&;Du!F&;u^&&W6)&tB0  &&T6)&tBF&;Du,F&;Du#^F&\&D#u#t &&GvF#u#t^&&O&&Lv&&TFVVFVFV6)&tB&LvvF&&TFVU6)&D&D &D FV&D&TVU6)&D&D &D FV&D&TVU6)&D&D &D F&DF &DF &D^&G 6)&D^&G 6)&D^&G6)&D^&G6)&D^&G6)&DV U6)&D&D F&D F &DF&DF&DF &DF&DV U4FVFΉVF< FFFF̉F،VڍFPVR#t FPgCU$FFFVFFVFP^v.vv vv36DHF܉V tNF(F((FV((FV((F()jh(vvj #t^~Pu#v&<uv&<u6*&<u;Y 0vv&4v&4FPvvvvvv/+˚C#uUPF~th#t#t36)&tB&|~BUvvy#tRvv6),VFV6)&D&T &D &0H &+,&D&2&+.&DV6)&|uj6)&DUFVFVU6)&4u&DŽ4 L6)&4&<u&)#6)&4&|u&DZ#6>HFVRPj#u6*&DdjjG l6)&D8&DB&TD96)&D8&T: u&|@th6)D.&DB&TDU6)&<uv F #u#t"vF^&tt &| uv v y#u F F v&=t= t =t= uF F thF F u$v&= t= t=t=t =t=ucevent.cAssertion failed. [%s %d].%s: event %sFALSETRUE%s: ev->v.active %s%s: ev->v.chr.ch %d (%c)U vjFv F #u#t&~|hEŚFF;F|vjjPVRvjjvFPFVN v #u#t^#t SRPVQ vjjvFP~u vF^v^&@F&v F #u#t~^&&FIF Uv &tvFdž~&DFҋ^ vX.+M|||l ||||v&D&+D z=t =}A>/t:v&D &DFVR&TR&t &TRP$dž|;Fv ~v&T8 &+T|>/t F|>/uNzuN6)ƥ~>/tNvvFPvFP|h0FP6/6/6/6/6/6/Fҙv&D&Tvjhv&D&T#u#uvjRPvҚ:v&D&Dvv&t&4FP3vjv&t&4#thFŚv&Fu{tv-ws.?Px vjjjjjj,vjjFPHxRBvvjPRjPRdž~F= | =dž~~tiFFFv&DF&DFvvFPv&t&|tFFVFVFRPv&tFPv&Ddv&w).*29@GFF FFv&D&TF։V&DF&DFFvvFPvv&4Fvv jjj*6)&Ĵ&<uv&<tvjjjjhhvjjjjjjv&t&|tFFVFVFv&<tvv jjj*FDF>/t8jjh jL&ljjhjL&ljjhjL&ljjhjL&lvvv&tFPvv jjj*vjjFPPHpv&h&Djdžtt=|h}ǂhtplC@vdžrr;pGth;S}.lfru+ rBtf+ЉvrtmvjlvjnxUv &t&D&TFV^ v.-E88'8888v &\G RP&w&wvv&wJ FVv &t&D&Tv &t&t&t vvvv v &t&t& tv&4&t&tYv&D5vvvv v &t&t&tv&4&t&t&t&t'6*&D*v &t&t&tv&4vv jjj*U v&t&4[FVFFV#u#t^N;NuRPovV&vvovV&&Dv&t&4vvzFVFUFFv&T:&+T6;}V+V;|ЉVFv&t&4[v&D0&T2F;F}Fv&t&4&t2&t0zыF+Fv&D8&|$uV v&t.&t,DRP~v&t.&t,DRP~v vU^v.M vvvvv v vvvvv v gvvvvv v HOvvvvv v 7v v vv &|$u Fvvv&t&tFPv v 1U*vv v &t8?FF #t=tv &DH&D:H&DJF&DL&DNDRPFP?FVF܉VދF Fv &t.&t,&\,&wj FPv \HPSFPFPVRjv &DFvvvvVvvnv &|FuDRPFP?FVF܉VދF Fv &t.&t,&\,&wj VRv THQRVRVRNQjvvvvvv vv~ u ! v &DFUv vvFv&|Bt VP&tD v vvEFv&D8&DVFvvv &t&tFPU4vvF+FVV&|$uFv&|FuVv v $#tvvvvvvvv v v&|$uVv v $#tF v&+D+++F~uj v&D@v&D0&T2FVFFV#u#t$N;N}v&t&4RPzFVF΋F FuQF#t=tvDRPv v $#tpvvvIF~t#vvP@v&DDVvP vvvFv&D8&DV&# D@F&DB3҃~uBV^~t|vDRPv v $#tcv&|@tY&DVV;u?FVF;F|FFFvvvvvvvF;FuFFԃ~tgF v&;D}X&|@uN&DV@FFv&;D6}vvvvVP$F܋F v&+DF#uF ,~F~F~FFv v&D0&T2FVFFV#u#t%Nv&;L6}&t&4RPzFVF͋F Ft7v&t&4&t2&t0zv&D0&T2DRPj&D4P$vvv&D6HP,Fv&|Bt VP&tD vvvv&% D6H&D8Fi~t{F v&;D|l&|@ub&DVHF~|vvvvvvvNv&D+F F=F ,~F~F~ FFv FFv&t&4[FVFV#u#t%v&;T2u&;D0tFV&t&4RPzNjFV#u#t/vN&;L2u#N&;L0u&D0&T2DRPj&t4$vvjFv&|Bt VP&tD vvv+v&D8Fvvv&t&tFPv&\,&u2SvDRP~v&t.&t,DRP~vvUv&t.&t,&t&D8@&l4&DPR ' UFF F uh݂v&t&4[FVFFV#u#tMv&;T2u &;D0uF F#|FF;FuF.v&t&4vvzFVF6)&DŽUF Fuhނv&&T#u#tRP%v&&T u++v&D0&T2&D:&D8U jXFV u6)&DŽJv^ v&D>DRP^&w&7&G-P&w$vDRP^&GP&P&G-P&G-P$vVv&D-P&4&t&t$+v&DFV N&T(&L*&D$&D@+#u u&D$F V%+#u) =u v&D$FV v&D,&T.F&D&&D4DRPFP?F+F@v&D6&D<&&DV@#uvv+FVUFVFV uh߂v&&T#u#tRPvvU&v &t.&t,jj 6)ƕV$j$Fv &\,&&VNFv &\,&&F܉Vv &t&4v vFPWFV uvv vFP F FtFFPg$FP $6)ƥ~FPjR $F Ft)v &\,&&b$v &t,&&'v &\,&&b$v &t,&&+ $v &tF@&l4&DPvv&D &+D+++P$ Uv&t&4[FVFFVv&;T2u&;D0t&t&4RPzFVFvvFv&D8PU v&t.&t,DRP~v&|8~FF&t&4[FVFV#u#t%v&;T2u&;D0tFV&t&4RPzNjFV#u#t8vN&;L2u,N&;L0u#&D0&T2DRPj&t4$v&L8v&|$u^Vv&t.&t,DRP~v&t.&t,DRP~vv&Fvvv &t&tFP Uv&t.&t,DRP~v&D6H&;D8~- &D0&T2FVFFV#u#t%Nv&;L6}&t&4RPzFVF͋F FtMv&t&4&t2&t0zv&D0&T2DRPj&D4P$v&D:H&T8;~&D8v&|$u^Vv&t.&t,DRP~v&t.&t,DRP~vvFvvv &t&tFP UFVFVF V F V v&t.&t,DRP~FFv&t&4[FVFV#u#t%v&;T2u&;D0tFV&t&4RPzNjFV#u#t/vN&;L2u#N&;L0u&D0&T2DRPj&t4$ UFVFVF V F V v&t.&t,D/ RP~v&D0&T2FVFFV#u#t%Nv&;L6}&t&4RPzFVF͋F Ft7v&t&4&t2&t0zv&D0&T2DRPj&D4P$ U v&t.&t,DRP~v&t&4[FVFFV#u#t(v&;T2u&;D0t&t&4RPzFVFʋF Fuv&D6)F+V;|ЉV&t&4[v&D0&T2FF;Ft>v&D0&T2 uhv&t&4&t2&t0zv&D0&T2Fv&t.&t,V~v&|$u^Vv&t.&t,DRP~v&t.&t,DRP~vvFvvv &t&tFP2  U v&t.&t,DRP~v&t&4[FVFFV#u#t(v&;T2u&;D0t&t&4RPzFVFʋF FuFv&D6F&T:&+T6;|V+;|FF;Ft>v&D0&T2 uhႚv&t&4&t2&t0zv&D0&T2Fv&t.&t,V~v&|$u^V3v&t.&t,DRP~v&t.&t,DRP~vvFvvv &t&tFP U"F VFVNNNN uhₚ^ uf- v.eyyYYvvvvvvvvvvvvv&4 D8&t&4[v&D0&T2v&D:&+D6F&t&4[v&D0&T2~~KFF;Ft>v&D0&T2 uh゚v&t&4&t2&t0zv&D0&T2Fv&D:H&T6J;|&D8&t.&t,DRP~v&t.&t,V~vvvvvvvvvvvvv&D(&T*%+#t=tV&t8F=u{vvPF#u#v&D(&T*%+#u=t VjjvvvF@PiFvvv&t&tFP+ vv!U(F V FV uh䂚v&tgFv&\,&& 6 VډN܉Fv&\,&&FVv&t.&t,jj FP$v&\,&&$FPg$j$vDRP $v&|$uVFv&D0&T2FVF Ft9Fv&;D6}-VvvP v&t&4vvzFVFvDRPFP?Fv&D:HFV&t8F~}FF;F~Fv&t.&t,&t,&tj FPvvvjjj \UFV FV uh傚~t vvUUvvv &tF &l4&DP&t F @&l4&DP$ UF F uh悚F#|*v&;D6!VPFPv&t.&t,FP,8 ~UF!vFV#u#uqFV uh炚v&t&4[FVFV#u#t  uhv &t&4[FVFFV#u#uv &;T2u &;D0uF F#|FF=t;FuKvvovVFv&;Tu&;t&&Tv &|<u VvF;Fu6v &t&4vvzFVFV6)&DŽ3҃~uBUF!v vV#u#u?vV&|$u8v&t.&t,DRP~v&t.&t,DRP~~urv&|$tv&t&4[FVFF FuvvovVFv&&Tv&t&4vvzFVFv&t&4[FVFFV#u#t(v&;T2u&;\@ D0t&t&4RPzFVFʋFV;|+v&D6;~ +V&T8&\$#uu vvv&D6+V+ЉV&D:&+D6;|F+;|‰F&t&4[v&D0&T2FF;Ft>v&D0&T2 uhv&t&4&t2&t0zv&D0&T2F뺋F+Fv&D8&|$uKVGv&t.&t,DRP~v&t.&t,DRP~F;F u vvvvvv 6)&DŽ+U!vFV#u#tAFVRP#t/uFF/v&FFHV;~/v&F/v^&F#~3V;~VF+F+Fvvv vV< v&4&tvvvvv&@FFv&;D}2J P&tjVRvvv&tjFPvF /v&FFHV;~/v&F/v^&^&w&wvvvvFFv&T;+B)Vv&4&t&<&D)&_&Svv&@FFv&;D}b;F}]&T;V} PR)&_&0Vjv&D;F}#vPv)&_&0VjFv&D;F}'P&t&D)&_&SvvvU 6)VFP?+F;FtFHv &;~F+HFv &;}+‰Fv ~v &F^&v &DL Fv&D U^ ut u[zv &t VFP?FFFFF+F@F@PFV uh҄vF*&;Gu&;wu&|$u//v&|$u//wFF;F}wv&F+v^&v&;Tu&;DtJ&|uA+щV;}2;~^F+F+Fvv&t&tvV< v&&j$v&&jt$t ‰zv&&j$v&&jr$r ‰x>/uzx6*F&;Du F&;DtzxFv&tjvvvvPvvN FFv&#t=ta6)&<tP6)&D&T uhP6)&D&T uhᄚF;F~aPv)&_&&P uhӄPv)&_&&P uhԄF6)&6)&t&t'v&tFPj v&tFPj vvvV&D|&Dv&tjZvvv&t&tFPj v~v&D&TFVFFFF ,,#tFP,#uhՄ^tuuFVP FVF+F+++FV+V+++FVЉVVVVVЉVVVVjVRNQ'vvv&t&tFPjvvv&t&tFPjFFFFFFFFFFFFjFPFPF;FuF;FuF;Fu F;Fu+*䉆~#tvƁ~FPFPvvv&t&tFPj?vvFP*~tv~ǁj2,vvvV|&Dv&tPZFVFVF+F+++FV+V+++FVЉVVVVFԉFFFFR jFPFPF;FuF;FuF;FuF;FtJvvv&t&tFPj8v~vvv&t&tFPj ,= "v &t Vjjv&D-Pj$U~tFF6)VFP?v~+FVFV^wy.  vFvFvFvD‰FVvFvFvFvFvFvFvFvF~tF FuhքF v&~ tF FuhׄFv&~t:~tF Fuh؄FHF FuhلFv&;~&^vT . ! ; f | ~tv&DH&;E&D- v&D&;}0&+~tv&@&;D|& v&&;D~&Dv&D+F&;D~&Dz~tv&DH&;&D- v&D&;}&v&DF&;D|?&D9v&DF&;D|&D~tv&&;D|@ v&&;D~&DUFFv&\$w!. FFhڄ^#utt`6*F&;Du-F&;Du$/F/F/F/F/F//F/F/F/F/F/m6*F&;Du,F&;Du#/F/F/F/F/F/4/V F/F/F/F/F/ FFFFFF^ ut uv &t VFP?FFFFv&&j$v&&jb$b ‰fv&&j$v&&j`$` ‰d6*F&;Du F&;DtfdF>/ufFv &\$"v.Gpv&tjvjFPvF@FFFFHFFFv&tFPvfPv&tvvjF;FމFFFFFFFv&tFPvAv&tvvjFPfJFމFFFFFFFv&tFPvX fPv&tvvjFPvhۄv&#t=t6)&<tP6)&D&T uhℚP6)&D&T uhㄚF;F~aPv)&_&&P uh܄Pv)&_&&P uh݄F6)&6)&t&t'vvvV&Dp&Dv&tjZv&D&TFVv&tFPj FPFPF+FFF+FFv &\$"v{.oy~}FAF;F|F2F~|F;F|FZ FF0FFFFFFFhބFFFFv&tFPj v~ ,,#ttP,#uh߄|t ui~VFVF+F+++FV+V+++FVRNQvvvPvj~t8vvv&t&tFPjWvvv&t&tFPj;FPFPvvvvvjGFF;FuF;FuF;Fu F;Fu+*䉆r#tvƁhFPFPvvv&t&tFPjvvFP*rth~] ǁj2,vvvVp&Dv&tPZ~VFVF+F+++FV+V+++FVRNQvvvPvj~t F;FuF;FuF;FuF;FtZ~tvvv&t&tFPjv~Fvvv&t&tFPjp,[ v&F&DFv &\$"v.  6Xzv &t Vjjj/v &t Vjvvv &t VvvFPFPv &t VvjFPv$/FPvjVRj$v^ & _ UPFF;F } v&FUFFhj uhK6&DŽ&DŽhjFP/ #u v&D!*6&=u&DŽ 6&DŽU+FFFFFFv&:u+~uA+щV9 PvvRhVRVRVRVRVRVRPPPPVRVRPPF#u2.Pj_#u!FPvFPvFPv#tF1v&<{t FPvW"tXR*PFFUF H6&FV&&Uv &6&v&U 6Dq‰FV&&a &Ĝ&A&QFV6&&H}+FF=l}v&<.t < t "tF~l|h#hh|RPv'+|+~uA+ыAv>wv^&8.u3PVNFF=}v&< t"tvF&Fv&jjjq6&&T uhH6&&T uhI6&t&4p#u6R=h#hh|RPv'6&t&46&&DUFFFFFjvv+~uA+RhVRNQvV^S~W~WPPPP~WFPjjFjl<Pj(c <PVRNQjljNQvNQvjjjjjjjNQvjjF<PvPj.F#tAvvIF Ft+?uA+ыA?~cjlvvPjvvFPVRjljVRv#R"*RVRvjjjjjjjjjFv^&6&t=&DŽjjjq`6&& uhJ6&&(6&&E#u6R=h#hh|RPv'UF F uvFV tfvv vKjv vFPFPvhjjjjjjjjjjjjjjjjjjFv^&4e #t V+FV UFPv v+~uA+RPPPhrmF#t ~uR=uMPFt9v #u9FPv v+~uA+RPPPhmm#u v #t+U:v&jjFP/ #tjvDRP&*PhFPVRNQvV^S~WjjjjjjjjjjF#ugjlvvjvvFPVRjljVRv̍VRv΍VRvjjjjjjjjjF#tFv^&Uv &+҉FV&LNt FVnF+ҹmFim -)FF#}N~w FF@g ~=w FF,~\w FF,=~zw FF,\~w FF,zu~w FF,c~w FF,Q~w F F,?~w F F,-~2w F F,~Qw FF,2 FF,QFjhvv FjjvvFPjjjj9#u"vvFPjjjj9#uFUF~|~u'vh~?|q FPRvh?FPR/vFPh?VRRvFPh?FPRFP+~uA+Rvvh#tv&D*PDRPFP<v&D*B ~tqFP+~uA+Rvvh#u.v&D*PDRPFP<v&D*B FFPFP#tnF#tHVRPFP+~uA+R2L"t>vvFPjjjj9#u"MvvFPjjjj9#u.FUF~|~u'vh?FPRvh?FPR/vFPh?VRRvFPh?FPRs FP+~uA+Rvvh#tv&D*PDRPFP<v&D*B ~tqFP+~uA+Rvvh#u.v&D*PDRPFP<v&D*B FFPFP#tnF#tHVRPFP+~uA+R2L"t>vvFPjjjj9#u"vvFPjjjj9#u~FUF~|~u'vh?FPRvh?FPR/vFPh?VRRvFPh?FPRFP+~uA+RvvhF#t v&D*PDRPFP<v&u D*B ~t^FP+~uA+Rvvh#u.v&D*PDRPFP<v&D*B FF#t)VRPFP+~uA+R2L"tMvvFPjjjj9#u1vvvvvvvv+-FVvvvvvvFVU`6&uFV?NF F?NFjv v +~ uA+RPVRVRVRVRPPPPPPPPPPPPPj#tvBh FV~uh?jRPh NQTvvvVFvvvvjjjj9#u'Fv^&vvvv+ Fv^&PvvFVUx+FF;V u ;FuF@N %FV u6)&DŽ3jh @vv  #u~uFjh@vv  #u2~uF hTFPjF#u ~tFFjh@vv  #u~u}F^v._ g z !v vvvsv vvvv vFPjPN~uv vvvjv vvvFVv vFPjL#ujv v+~uA+RPPPPPVRVRPPPPPPPPPPPPPjFˈFFF*;FF*PFPFP<F*BvčFPh@VRRF#t)VRPFP+~uA+R2L"tvvFPjjjj9#t FiFV v vvvvv+ U+~܁ uA+щV;t+FF;F}v&F<*t_~uA+ыAv~+6&_v&j 6_VG#vFP6&+&;FuO&;t,?uA+ыA,?+4?uA+ыA4?~ 6&DŽ~u%j<"$jRPNQF$"~u3FPj#j$<#u+6&tFPFPh"@&PRQ6&th?h"@&PR -+ @uA+ыA@&h@&Pj?"$ t$"7 #uh $jj$"'<#u$"~uj<"$jRPNQF$"~uFPjj$<#uh#6&tFPFPh(@&PRFPh2@&PR h @&PjH"$ uh $&Pjm|yjj$"'<#uh$&Pjm|RPv'+$"~tAj<"$jRPNQF$"~u+`FPj~t1+~uA+ыAv>_   6&Ƅ_j 6_VG#U*+_^^ +#uv6.\**1d0110000101111111h$hh|RPv&t&tv&t&t#FVv&t&t&t&4!v&t &<u FPߍFP6Vjm7v&t&t PSjm#uv&D&D h#j6VG#j v&t&tG#j 6_V"6&ƄjV+uA+Rh`RXQnVZS|W\WPPPPPPPPPPZƂn\Ƃ|XƂ`VnP6&&DŽ XuS&t+,?uA+ыA,?+4?uA+ыA4?` 6&DŽj$<#u:h@h@jFV uh $hh|jjvv'<#uUjvv`Pvvj$<#u6&tnP`Ph"@hRN6&th?h"@hR ,+@uA+ыA@h@hjFV uh $hh|Uvv7#uh $hh|jjvv'<#uQjvvnPvvj$<#u6&tnP`Ph(@h$ R/Zuh@hRnPh2@hR ZuXu\h @hj"FV uh $hh|3jjvv'<#ujvv|Pvv6&_*uA+ыA6+uA+Ѿ>_uA+A6_j$<#uh#Y\uZttXumh@PjFV uh$hh|Bjjvv0 '<#uh$hh|RPv'+}vvj 6_VG#hv&t&tH'v&t&t#vV+Ȏ&D&L&t&v&tv&t~v&t&t&tj}v&tsv&|tzjqwe.-151H1[1r1jv&t&t ;jv&t&tN(jv&t&t6jv&t&tb#u+v&t&tjj~UF vxPv vzP$j zPG#vv*,Ud+~6;F t j< <#u+>uA+ыA6 j uA+ы R uA+ѹl+Q<j P+ uA+RhRQVSWPPPjjjjjjjlFPjFPRQjlhQQQQjjjjjj#t0+ uA+ыA ~BƆ^+>ǑuA+ыA6ƑuA+уv@~uA+ѾuA+AH {vv#vV+~uA+ًAv^&v&t&jlVRjRPPjlhPPPjjjjjjjjj#u5+B~uA+ыAv^& +Uh+F;F uj<#ujFPjl<FPjh$hh|RPv vb#u#tRPj$<#uh#j P"j6V+uA+RPRQVSWWPPjjjjjjƂƃƃ džT <uA+ыA6 j + uA+ы R"t PNh@ Pj裴RP7#t~t P#t h$hh|RPv vkj P+ uA+RhRQVSWPPPjjjjjjjlFPRjFPRQjlhQQQQhjjjjj` #t0+ uA+ыA ~BƆ^+>ǑuA+ыA6ƑuA+уv@~uA+ѾuA+A{v v#vV+~uA+ًAv^&v&t&jj66'<#uh$hh|RPv'+Q#u#t.RP7#uh$hh|RPh@v vj6VG#Ux~ u3j<#u%jFPjl<h$hh|RPvvFPj6l vFj$<#t[j$<#tPh @6VjCFV uh $hh|RPvvMIjjvv'<#uh#hh|RPv'+^vv7FvvF Ft)~uh $hh|RPh@vvj6VG#Ut+6&;F uj<#ujFPjl<FPh4?|#u6&u&ƄTFPh,?|#u76&DŽ+?uA+ыA?~FPj$h$hh|RPvvj$<#tj$<#t j$<#uh#Sh@6VjFV ux h $hh|RPvvIjjvv'<#uh$hh|RPv'+pvv7FvvF Ft)~uh $hh|RPh@vv6&t&Ƅj6VG#U4j6V+uA+RhVRVRVRVRVRVRPPPPPPPPPP#tjl6V‹^ttPuj6VFPVRjljVRvЍVRvv v+~uA+Rvj6VFPVRjljVRvv v+~uA+R6j6VFPVRjljv v+~uA+RPPPPP PPPPPPPPPP6^&ƀUv v vv !UjlFVRPbȺ+~uA+Ѿ~uA+Av~FVRvv~uA+RPPPhrm#tvvh>@vvR v FVUF V F V FVFV[sys]!SysMaster{%s}[%s]ServerLocal[!sys]netcfg.sysNodeSys[d%d][!d%d]{%s}[d%d]{%s}[!d%d][s%d][!s%d]{%s}[s%d]{%s}[!s%d][z%d][!z%d]{%s}[z%d]{%s}[!z%d][f%d][!f%d]{%s}[f%d]{%s}[!f%d]{Local}{%s}mf d.sys*//VOL/NOD%s%d{%s}*{%s}[%s]*[%s]*[%s][sys]%sU+FVFVFV:0)t(FF6)&;D}&@<*u+)uvv[FVFV#u#tXvvRPFPWFVj6)VRPF H| FF~tvvvvz딋F Fu$vv6)Vjjjj9#u+6")&6)&>,)t'6)&D&D&L>)6)6)UFD)F)F#t Ph8) t h8)d F~u6()F Pd F~u v&DF~up.) ; )v}a+.)>)V *6)&V*&Tʍv):,)t F6)&DJ#u+UFh jFV u+FVV)V X)VN`)b)d) Vf)h)Vl)n)V;t RhJ) t hJ)d F~u6()FPd F~u v&DF~}uF~tvvF F+ҹLFFFFVFV~uF "t(u v&DJ;Ft~ tv&DJ;Fu.) ; )vvv}>,)tv>)&6v&)& v&D)&Gv>) 6)&+L+&\x6)6)FLN(~tXvv+U.) ; )v}+.)>)6)&^ &*6)&Tv F):,)tF;Vu;Ft!6)&Dv>)  6)&D^ &G 6)&D d#u+U FhjFV thjFV u+~)V))!VN)))V))V))V))V;t Rhr) t hr)d F~u6()FPd F~u v&DF~ t7~)FV)))F⣈))F࣎))))F#t Phr) t hr)d F~u6()FPd F~u v&DF~tFVFVFVFVFN#uF#tv&T v&:v FNv&D :Fu}~t)6)& ^&*6)&TvF):,)t 6)&DJ#uFNmvv+UvFPjF~uF= t#t+U +FVNv)6)N )v 6")$)&3:FuA*)~u ~u++)3ҊF"uB,)V$0)VN 2)4)V6)"t.).)L.)P6))&hjFP/ F#t6)6)Fv&D!&)h()< ()̪ >)P)x))~0u j jjFh @F"unhc"t<~.ujv"v jGF#tj~,ujv"v j)F#tL~*u!h @_"tvvjF#t%>&)u6~&u0~t*~0u$j hj F#t=!t =t=t~(uM&)<tuB~&t~u6>&)ujj F~t~!t~t~t ~5t>&)t~t ~&t~.u$jv"v j ;F#t=!t =t=uR~,u$jv"v j F#t=!t =t=u(~*u4vvj F#t!=!t=t=t6)6)F6)6)+,UFVFVج F VF VF F FVFVUFVFVF VF VF F FVFVUdv&Dy&T{F VdždžĶ&"u<&t<~tĞ&zĶ&<&t<~u6Ķ&D<&t*<~t&"t"Ķ&Ğ&Ķ&<&t<~uĶ&D<&t<~tuĶ&Ğ&[+Ķ&uA+щ;u ;uD;svN QQ+R$+ЉP_ $v&\&Gu v&|$u/Ķ&&&&& -Ķ&&&&&$P $VRV Rj$P $FPĶFV+uA+ыF;rPvF PPv$UF@%+VJF++FF@FFU4v &t +++++3=|Bv &t&D&T+Ķ&"t<&t<~tߋ^ #tRtt)vvPPvvPR gvvPe vvP u////////////////v&|uv &t&Dt><dž-;|ኆjvv PP$PPj$dž@;~ Ƃ +ľuA+RP<Ƃ v&tvv Jvv PRRRjvv -PPPj$dž -;|ኆPPV~v&tvv /PPj$vv P-P9/PPPj$vvP Uv&D{&tyvF~ t &&b$v&&v&&b$v&&$v&t&Du$v&&b$v&&$U8v &t  ++++^ #t"tvvPR vvPeP_ $vvP v&tvv v&<t 6/h/6/h/P< 6/Ƃ PPV$vv v &t&t&t/P+/P@vvP P $U8v &t ++++^ #t"tvvPR vvPeP_ $vvP v&tvv v&<t 6/h/6/h/P< 6 /ƂPPV$vv v &t&t&t/P+/PvvP P $U(v&&j$v&&jFޚ$V ‰F~ ug/Fh/Fi/Fj/Fk/b/Fc/Fd/Fe/Ff/Fv&&b$v&&$~u$v&&b$v&&$~ u v&D&+ v&D&+D@FF-F~ uv&@F&Dv&D@F&DHFF+FFFF܉VދF+FVމFV u~uyF ;FuFgFF܉VދF +FVRPFRPjjvvF؉  Vښ FVډFVvvRP FFV;}VF;F}F FFF ~ tH~tvv&4&tjFPv!v&DP&PFPj$Fv&@FF;F~~tRF;F uvPv&tjF,F;FuvPv&tjFvvv&tjFPv_F;F uv&TRPF7F;Fuv&TRPFv&DPFPFPj$FF5~tvv&t&t?v&DP&DL~tvv&4&tjFPv!v&DP&PFPj$Fv&D@FF;F~~tO, F;F uvv&4PjF*F;Fuvv&4PjFvv&4vjFPv\F;F uPv&PF5F;FuPv&PFFPv&PFPj$FF;~tvv&4&tjFPv!v&DP&PFPj$UDFVFVv &t ~^ #tvvFPeFP_ $vvFP v &t&D&TFV&| t v&Dv&DFv &\&D PSFP?v &t&| t FFFFvvvv &t$FP^&7&w&w&wv &t&t &D$3"tBR8 qvvFP FP $UHv&tvF ~F Fuhv&D&T uvD RPFP?F+F@FЋF+F@F΋VV̺+v&|uA+щVj&v&t&t3 tANj~v&t&t3 tANă F+F;F+FP_ $FFv &&FމVFFP $v V $FFƋV;|NNI}+‰FȋV;~M~uVBFΉFȋF=~v^&_&8 tN~uv&t^&x tFΉFjvvvvv&tvVvȚ$Fvv^&_&8 uFFFCD  UDFVFVFVFVv &t ++++^ #tvvPeP_ $vvP vvvv }#tv&&b$v&&$v &\&D PSP?vv v &t&t&tD퉆+B+Љdž; Ƃ ꋆPPP$vvP P $U/uFF6*F&;DuF&;Du~u//~u//FFPFP?FF6*F&;Du F&;Dt\  FFFv&tvvjVRPUFVFVv &t ~^ #tv&&j$v&&jF暹$V ‰Fv&&j$v&&jF䚹$V ‰F>/uFFv&t`/a/FFPFP?FF6*F&;Du F&;DtFFFv&tvvjVRP$D$,D"L$ltLjj6))&&DƒU6)&<t/+>)uAh  +щVP6)6)R<j46)&6*&|t6/u v^&@ v&D(^&@)~ tKF+++HPF+++P+~uA+Rvv~tK/NF+++HPF+++P+~uA+Rvv~u//P~ ~ tFv^&"u*P@|V*;t~ t?F+++HPF+++FPjvvV~t?/BF+++HPF+++FPjvvV~u//PFGUFF)&H&9uF>)^&ARF&uHvvF&T&LVN +uA+vVV;shvjvvv&D$*Pjjj&tFKUFF)&H&A &Q ua~u 6)&DRGFF)&_H&q&qv$6)^&@>6)&@RFF)&_H&q&qv$6)^&@R6)&@T+FFFFF)&_H&p &8u&@uFFF)&_H&p &@&P uF6FF)&_H&p &p&p$FFV;|VFBF F)&@^h(jv#$FFF6)^PVQR&PRRj&@R-PFP$-F6)^pV~V;}+)V)VFvv)~yV6)^pVVFP?F+F@6)^&@`&@bF&@dFzFH6)&DPUF F thvF Fuhw6)F&;DJu F&;DHtm&DL&DH&TJ tHFFFHFFPj 6/6)&tJ&tH6)&DH&DJ6)HVvvo6)&t3FFFHFFPj 6/6)&DŽmjj 6)&DH&TJ u$ 6)&DJ&tHPVjjU/F6)&DL&xdt0džv6)&DLv&;@^|J&TLr6)&tHp&p r&@u6)p&@\&+@X+++t/zdžxx;t/zxxx/yƂzv@P)&GL&AX+++PVzmv@P6)&DL&@X+++PjFP6/6)&DL&@XPvP&DLv)&_H&Y &p&p6)&DL&tH&@ tv&p &@t+*P6)&DLv)&_H&Y &@$*Pjpr>)&EL)&q`Ğp&pv@P6)&DL&@\+++@PjFP6/v6)&DL&@\&+@X+++t/zdžxx;t/zxxx/yƂzv@P)&GL&AX+++PVzP6/6)&DL&@bU6)&DL=u&xbuF6)&DLF&;@^i&P\&+PX+++F&@X +++FVBRP~)&ğ&YSFPVFFz6)&DL&@bU&6)&|L}S6)&DL&pRj&DL&tH&p&p&@$*Pjjj&pp6)&DN&DL~t 6*&UjrF6)&DL&pRj&DL&tH&p&pjjjj&pUF#}6)&TL)&_H&Y މ^F6)&\H&AtXv&DtM)&WL&PXRVR~&u&uj$*Pj)&p`v&tTUF#}6)&T L)&_H&Y މ^F6)&DL&@XPFPv&t&t6)&DL&tH&@tv&Dt+*Pv&D$*Pj)&GL&p`v&tUPv&#}6)&DL&@^HF6)&DL^&&6)&x^v&6)&DL&tH&@t&p &@tt v&;FuUP6)&DL^&6)&;@^|+Fv&H#}6)&DL&@^Hv&6)&TL&tH&@t&p &@tt v&;FuU6 )&DL&xbuj6)&tN6)&|N},~t&DN(6)&DL&@^&DN~t6)NVI 6)NV6)&tNU 6*&<uF=}T=|LF=| =n6)&|LtF=a| =zn 6)&|NunFF)&GJ&_Hމ^F&"u&w@|;Fu$v&Dt^ &Fv&FVFF6)&DLF&;@^}t&TL&tHvF&\ &q~@|;Fu7v&\ v&@t&)&GL^ &F^&^&G &W Fov&v  &+ UFFFFFF)&_Hމ^F&"t&G;F u &Gt&3FFF)&_Hމ^F&"tV&GtJFFF)&;@^}+^&_ &@;F u &@t&FF6)&&#u#uFVv&<u|&D;F ti&D%@;Fu&D%;Ft~t?~t9v&Dt/v&4FP vV#u#t&Dtv& FxU6)&DL&xdtQ&DL&tH&@uv& )&GL&_H&v&D+& D&D6)&|N} j6)&DL&DN)&_H&Y &@thv~ v& )&GL&GN&_H&p &v&DF&DF&DjUFFFFv&DF&TV&LN^ F ^ F 3>)&}N|C^&ELFvRQF=t v& vFPFPTFV6)&|Lt!~Tu ~u~t F Fu6)&tvP6)&& uhxF;F~4Pv)&ğ&&P uhyF6)&DŽ6) &&'6*&~Tu jF)&xdu^vj6)&DNNV^6)&tNTQF Fu~uRF)&xdt:v& F)&wH&v&D+&D&Dj2~u_jv& ^&v&DF&DF&D6)&DLF~ u^.w".ui uium-tOo/t0t TtR[6)&LPAFFVRFH#}6)&DPFPX~t*jjVvvj4U FPjj6)&TP&pTj$FPv( v$#tRFF6)&;DP@VR&pRj&pTj$FPvv$#tFF본U 6)&|L}6)&DLߍpV~FFPvv$#taF6)&DLF&;@^}?VRvFPvFP$FPvv$#tFF뤸Uv&<u6)&uv&t&t~Fv&t&tFv&#t=t~u6*&<t6)&tvP6)&& uhzF;F~4Pv)&ğ&&P uh{4 F6)&DŽ6)&&'ivj6)&DŽ6*&F6)&6*&<t v&<t v&<t~u6)&tN[6)&DL&tH&@tF&p &@uu 6)&DN F6)&DN6)&tNS6)&DŽF&6*&<u6)&&6)&u$^&?uF6)&;u F&;uF6)&V&^&?u+6)&u@t&tNavXjFv&<t6)&tp~tj&tN$6)&DL&tH&@tF&p &@uu@  6)&DN F6)&DN6)&tNv&<u-6)&u!~u~u&tN6)&DNF=tj)&xdtUv& F)&wH&v&D&D&Dj6)&&&DŽv&<u~tj6)&DŽv&<tF=u+6)&&\L&tH&@u&p &@u{ttv& )&GLF&_H&p &v&Dj6)&&+?v&<u3~u-~u'6)&DŽj6)&&U&Fpv&L vu.]#g#g#g#g##vvwT.~#####v v vvwKw..#####K6*&<t o F6*&<u  ,,#uFP,#uh|^w.,$6$6$6$6$l$FP0w.L$$$$T$~t  6)&u{v v FPKvb.$$$$$v~~t  <~t  +#, ~t UF Fuh}UjjvvU+v&FFX  )&_H&#uv;F u^&)&GH&WJ\FFF)&;@^}4V&_H&p &;F uƌFFl+U+FVFuh~vFP'vV#u#tF$&d&DUjjvvUFFXvFPvV#u#tF$&d&D~tZUjjvvUF FthٍFP6)&tJ&tH݋FVU; F Fuh+FFF)&_H&#u~~tu;F u @‰FVcFFd !F)&;@^}>V&_H&p &;F u@‰FVFFFdv&&T u,+~uA+BRv&&T u>h4v&t&4+~uA+BRv&&T uh+~uA+ыAv^&?jFFFHFFPj 6/| Ujjv vv\6*&ːQuitFile *()jj))U F FVPvv6*V$ FFF FFFPj jpj jj26*Vj+6*|uA+у 2vj jj26*LVjp "U +ЉV VV6)&;Dt6)&Dvvvv6*V$6)&Dd)6)jjy6*V6)6)PRPh$P Pd jP+uA+R<j4+ːRecursive call to fatal: %sERROR: %s%sUPjjvv vv vvFPFPv$#th^*#ttt^*#t t  + U+~ uA+щV~uA+v;uv v vvVP.v v vvF;F~FP2F#uF+FF| #U>)u;jjjFP4F#th~u)vF6))+~ uA+щV~uA+vBRFVF@PFVFF;F}!v &*>)&v^&F+v^&FF;F}!v&*>)&v^&Fv^&F;FuvvVP )v v vvF;F~FPF#u F+FFvvvvFUPFjjvFPj#thFUPFjjvFPj#thFUPjjvFP#th~u+UPjjvFP $#th~u+UPjjvFP#th~w+UPjjvFP#th~u+UPjjvFP#th~u.jjvFPj#thF*;Fu+Uv=$*Uv=$*Uv=$D*Uv=$ *UPjjvFP#th~u.jjvFPj#thF*;Fu+UPjjvFP#th~u+Uv Ph$, t)FHPPv v<v^& %@ƒ .h#Ph$, tv Pth4(jj))UP+NvFV+}"v F &*vF&*+ЉV#tʒ+ U+FF;Vu;F t~ uA+щVFV #u#t+~uA+v~t~u 3ҋF;Fv&"u<*u+vv vFVvu#tv F &<u[v &<tRv&/tK6*F&;Du>F&;Du5v&&j$v&&jF$V F̉FʋFHFҋVJVԋAFȉN~Fv&F^&~&uRjvvvv̚Fv&Fċ^&v&D&T#u#tU+^ *&uA+v;}8F-;}FF+F+Fvv&t&tvV< v&tjjF@PvvvʚFFFHFFv&tFPvv̚PF҉FFv&tFPvv̚Pv&D}&TF։V؋F Fuv&\& tp ~FFFFFPFP?v~vvh'h'FP#tvvjjjv&&TdvvUF Fuhv&D=Ht=`t =DthUPFvvr#t v&DFFU6*&D&TFV3ҋvF#u#tB#t)#tV +&;Tt&;TuFVv&&T+UvF#u#t&D=Ht =`t=Lu+*UFVFVv vF&|Dt1V#u'6)&|t j46)&DhcUv vh.vF vFV&TKjUvvh.avFvF&DKUvvF&Dy&T{UvFvFPVh.vv#tv&D&t#u#t&Dv&D$Uvvh.vFvFMUF Fuhdvve#uhevvFƌ&UFVFVUvv ,h /Sv&DsUv F #u#t&|$u&t&tvvoZv v h/v F vF^V#u#t,&|stSv v vvFVUv vFk~FVU v F #u#t&|$u&t&tvvLv v h /Lv F vFPVVRF Fuvv~Sv&|cu,&|eu%&|g'u&|i'uS~kvDkRPDSRPcVZv v TUFFHFHFFPvvUvv6)&4&t&tm|# -txvvh$FPh|RPj|#uvv6)&4&t&th*/vv6)&4&t&th4/6*VR6**vFFVUF FuPvv ~u v~dv&D&^&W&+W+v&T^&W&++v&TzvvFP?FPvv~uv~Bv&D-^&Gv&-^&v&D^&Gv&Dv&Dvvv v?~u*+v &&D^&G&+v &D^&G&+G,v &&D^&G&+Hv &D^&G&+GHv &DUX~} vvM"FV#u#t6)&;  .u&;u vv!6*&D &TFVFvF#u#tF&&TFVރ~|+h^w%. +v &D&&DhfvvFPFPFPFPvhFV uhg+~[vvF&DH&D&D&Du&Dw;Vu ;FuF+~uA+щV~uv&D&DMF@Pv&D&T uhh+~uA+ыAv^&FVv&Dy&T{&D&D&D&D&D &D F&D$&DŽl/n/&&p/r/&&t/v/&&x/&  /z/|/&&~//&&//&&/&//&&//&&//&&&DŽ&DŽvvvDSRPjjh'h'$vD[RPjjh'h'$vDcRPjjh'h'$v&V $~uhv^F Fujv&thJj0v&Dv&tjj vN&7&O&tFP' v&th j0v&DPjj &&Dv&tFP' ^v.F+FFV+VVFȉVʋF Ftv &|tGFPjjjj$F 0Pjjjvvh,#jjjj !FVRPjFPv &|t5FPjjj vvh-#jjjj !FVRPjFPv &|uQFPjjj!vvh.#jjjj !FVRPjFPFPjjj"vvh/#jjjj !FVRPjFPv &|u5FPjjj#vvh0#jjjj !FVRPjFPFPjjj&vvh3#jjjj !FVRPjFPFPjjj$vvh1#jjjj !FVRPjFPv &<u5FPjjj%vvh2#jjjj !FVRPjFPv &|t5FPjjj vvh*#jjjj !FV$ 1RPjFPv &<t5FPjjj vvh+#jjjj !FVRPjFP6*&D &T#u#t RPjS,vvvvh)6*&t&t jS,vvh#tv&D$= t= uFFvvv v hx/v&D}&TFVvF#u#t9&\& t ~u v&|$ t~u v&|$ t v&&T볋F Fuh~FFvvj FPU$F;F~hFF܋FFvv j FP>#tv FvF&D$= t= uFF܋FFvvvv hx/v&D}&TFVvF#u#t9&\& t ) =~ u v&|$ t~ u v&|$ t v&&T볋F FuhFF܋FFvvj FP UHv &|$} vv6)&&v &;T{u&;Dyt ;u;u vv\v F vF&|DuX&t{&ty&\&D PSWv~vvjFPv&t{&ty&t V#vvFPVRVRVRv&t$Iv v *ڍv^F+FFF+F‰Fv&D}&TFVvF#u#t7&\& tFF؋FFvvjFPv&&Tv&|hv&tFP' v&|hv&tF+ >P' v&|Hu v v ,v v jj ,U %FV u+f F;FtNvjj &4vF#u#t"&|uvvjj&t&tV3v! 륋FVUv v vv6)6)FV u+WhFV uh+~[v&D$&DLFV&D&T))V_$FVUPv F #u#t &|$thv &t&tvvF))v v jj_$FUFFv &D}&TFVvF#u#t!&\&G;Vu;Ft v&&TˋFV- ?UPvF#u#t&F=}+V&&TUvF#u#t3&D&+D=} &D&Dv&D&+=} &&Dset_cursorget_cursorget_window_typewindow_get_caretclip_smallget_clipset_clip%s - (%s)%s - %screate_windowwindow_freewindow_begin_updateset_doc_titleset_scroll_posU FPP FPlvV&4&t&thvvRFVhj6))&D&L&DŽƒUF FV6)&t(6)&DŽ&u&DŽjl/ @xz6)VLnP!RP6)&4&t&thzxR+6)|uA+ѾľxuA+AĶx)yzxF Ful6)&&T tOh$|Ph|RP6)&t&46)&t&4,6)&&D&D&L +6)&6)&&T ug&t&tV6)&&T uhMjjj6)&t&4 @uhNjj6)&t&4 6)&D&T uh6)&D&T 6)&D&T u**&\&D vvvv6)&t&4Dh6)&t&4+6)&1 Aː%d:%d:%dw%s-%s.debuga jj))U+v&;|^&v&T;|^&Gv&DV ;|^&Wv&DV ;|v&Tv&&;D&D&;D+* Uv &^&;|v&^ &Gv&T;|^&Wv &D^&W;|v&T^ &Gv&T;|v&T UFNH|Fv F &v &Uv&"t:F uF+UF V #u#t 6)&&T6)&&TFV6)&4&"tAPvv#t)6)&4&6)&&4&Pvvn#u#6)&6)F&;Du F&;3 Bu+FV)0+)*)*)*)*)*)󥤾*)󥤾*)󥤾*)󥤾*)*) *)*)*)++6)&&+) +6)&&DŽ&DŽ&DŽ+&&DŽ"+&&DŽ $+& &DŽ%*&'&DŽ) *&+&DŽ-*&/&DŽ1*&3&DŽ5*&7&DŽ9*&;&DŽ=*&?&DŽ&+&&DŽ*+&&DŽ,+&&DŽ.+&&&T*&"*5 C)6+))')* *6)&hj6**&D+&D &T&D&Tƒː*.*+r,t,v,x,z,e-g-]---I--- r,ˡv-,x-*䣒,y-,6h|,L jU0>Q-t>i-t>S-t>U-t~t6C-FPd 6C-FP F=tdv&D F=u &D&TFVW-Y-F=rd=s_>-t*F FЖ--/- tvĴ--&|u+v+Ĵ--&DVЉK-S-i-Q-U-~uQ[-FPVRvvFPVR< _-8 DFa-Fc-Q-%-vF=6t=t[-U-Zv&t~ F%أm-F% أo-F$= u6i-Fk-F㣍-F壏-F碑-F飓-F袒-F룕--HvvٍFPVRFa-Fc-Q-~`uvvjj[-~Ԁt|,;Vu ;FuhF*Fr,_-|,;Vu;Ft++t-~u [-Fs->[-F s-,+Fs-*3VVt;V*Vts-[-%-!-h!-1&s-[-h!-2Fuu~tLy-,v, ,*Ft,, : E,,,6C-h,L #F*Ft s-[- &s-[-Fus~tKy-,v, ,Ft,, ,,,6C-h,L "FFt s-[- &s-[->q-uot-;Fug>[-u`c-;g-uWa-;e-uN6E-h- #t=h-2[-t-F*r,_-6E-h- q-h>[-uN>q-th-26E-h- F*t-a-e-c-g-M--+--h-1q-,F*r,_-UPFF=}--/- tFU ++FV|h0uv v y#uh1uI- < F>I-~hjjdvv FV+ɋ+| FFdF=|hj v--/-^VF&&G&GC-&GF- &G S1#tFUP-FV-|hFVҖ/---v2v/---vDŽ--DŽ/-I-UvUvUj>Q-t]-#t=u>[-u Q-j>Q-t[>}-t4[-v&[-]-_-&Da-&Dc-&Dm-&Do-&D v&W-Y-&D&TQ->i-u>{-tcv&k-&D+&Dm-&To-&T-&T -&T,> G -&T-&T-&T--&T&Li-v&W-Y-&D&Ti-|>S-tv&K-&D&TS-Y>U-tR>-tv&W-Y-&D&TU-,6Y-6W-$U-v&#t vv_U졃- -u1jj6--FN&&L----2jj6-&D&T6-&t6--FV&&TU- -u+;6-&&Tv&&T6-vF&D&T--VU+FFhPFP/ v&| uM- M-jjFP/ v&D *F&D *F{-}-hC-(8@ Hh(hE-(FPVRF#t FFF= w = u~r-j9hy- j#t"O->-tv-6_v-6x-WjjFHPFHPjF+PFF+PFvvjjO-v-x-|,+҈},~,,C-,,,,,,,,6,,,,,,,6,,,!-#-%-'-+----E---4ˡO-ˡ#-UvvFy-&DC-&DVd U+~ FFVFV6C-FPL FUF{-UDB IF}-UFFPFPVR#t~uJ,->I-t8FF=}%--/- tvĴ--&DF-+--UC-v&+j"j6--+&&D&T&D&T&D&T&D&Tƒ6-&D &l&\&D&\&D&D&T&D &T &D&D&DU f6-&D6-&D &T&L tY&dP6-&D&T uhQÚ6-&D &dP6-&D&T uhRÚ6-&D P6-&D&T uhSÚ6-&D P6-&D&T uhTÚ6PD J-&D&TFVFF6-&;D },FF6-&;D}v& &DFFFFF6-&;D }U&lF-&G&_>-&}&&EF-&o&G&W&_&&PF/6-&D&l &t-&U6-&<u&D&+DF&T &+TV&|FF&|FFFF;F~6-&TV&l&|&\&D߉^F&D&tvFF6-&;D+v&^&:uv&T^&:Wu FFF6-&D;F}FF&l&|&\&D߉^F&D&tvFF;F|+v&^&:u\F Kv&T^&:Wu NFFvvF6-&l~&tVF+F@PF 6-&D&l &t-&6-&XUvvF6-&l~&tVjUPF Ft@FF6-&;D }.&Tҋ&t&0~&9FU +FVN;~6-&D H;}&DHV;}V &D;~+FF FF;F }]v&8tS^#|GF6-&l&D&tvFV VuvFv^&v&F&DF뛋FV#u#tg6-&&L&\;u;r&L&\FhH LV&L &\ ;u;r&L &\ F&T;|&TFH&T;|&T U F#}6-&;D |F #}&;D|&F&T;~+V VF6-&l~ &\&D߉^FV҉Vv@‰FV6-&|&D;u;r&|&DFV&L &\ ;u;r&L &\ F &T;|&TFH&T;|&T Uv v 6-&D HP&DHPFP#uu6-&FFFFF+F@&T;u/n&\&DPSFPjF+F@&lP~F+F@Hu4FFF;Ff6-&lFF-&_&FtJ MFFF;F26-&l~&tVFPjF+F@PFƋF6-&l~&|&D~FF&l~&\&D߉^FVN&|&D;u;r&|&DFV&L &\ ;u;r&L &\ F&T;|&TF&T;|&TUv v 6-&D HP&DHPFP#t~ 6-&^v.  )F+F@6-&T;tFnF+F&l-~&&Gv&w&G;s5F+Ff쑋v&w&G-&~EF+F6-&lF&l^+^ۃF+F@-&w&GL N-~&~ONFFF;F~V6-V&l~F+F&lF-~&&Gv&w&G;s1F+Fv&w&G-&~^FV+VF6-&l~F&lF얋F+F-&w&G-~&~ONFF+F6-&l~&|&D~FF+F&l~&\&D߉^FF&T;|&TF&T;|&T~F+F@6-&T;tFnFF&l-~&&Gv&w&G;s5F+Ff쑋v&w&G-&~EFF6-&lN OF&l^+^ۃF+F@-&w&G-~&~ONFFF;F}V6-V&l~FF&lF-~&&Gv&w&G;s1F+Fv&w&G-&~^FVVF6-&l~F&lF얋F+F-&w&G-~&~ONNFF6-&l~&|&D~FFF&l~&\&D߉^FF&T;|&TF&T;|&TM6-&DH;FtFV;tF&l~Fǖ-~&&Gv&w&G;s7F+F@P P&o+Fv&w&G-&~-F6-&lVЋ~F+F@V&l+FF&D&D-~&~ONFFF;F~6-&l~Fǖ-~&&Gv&w&G;s1F+Fv&w&G-&~OF6-&lVЋ~F+F&T&D-~&~ONF6F؉FF6-&l~~&|&D~FF&l~~&\&D߉^FF+F&T;|&TF&T;|&T'FF6-&TJ;tF#tF&l~FR Q-~&&Gv&w&G;s7F+F@&o+Fv&w&G-&~'F6-&lVЋ~F+F@V&l+FF&D&D-~&~ONFFF;F~6-&l~Fǖ-~&&Gv&w&G;s1F+Fv&w&G-&~MF6-&lVЋ~F+F&T&D-~&~ONF:FFF6-&l~~&|&D~FF&l~~&\&D߉^FF&T;|&TFF&T;|&TFV6-&L&T R\;u;r&L&\FV&L &\ ;u;r&L &\ -@------A--P------Q--UjjFP/ v&<sjx D v&| s&D v&D <v <"s&D "v&D F-&D F-Ɔ~DPj=Hdmt6)&Ĵ&6)&Ĵ&vvjj FPJ6)&Ĵ&<tZƆ< Ɔ=0+>Ɔ?<Ɔ@?ƆA6ƆB ƆC6Ɔ7Ɔ89:<Rj6RjPPPPPPdjjjvvjjjjjKjjvLjjMj h FPRV SFPjLFVNQRP+~uA+VPPPhrm0#t>Fvvh7VRR0FP+~uA+R< ~t1h 2P*v42h 42h +v vvUFFˠ-*ˠ-*U FFFFFV#};;F{+~uA+щVF ;~FFFFV;~+VVF#}؉FV;}3F)FvFjvvvvVvFPj4 U3FX TF #}؉F)F~F;Fr$FFFHF ;FsF F F+FF- -uhh-hh-FF;F}6v^&>-&~&A*P6-^&FjF FPv6-6-v6-6-v4 Uv v -*HP-*HPFP#t*jvvF+F@PF+F@Pvv{PTU+FFFFV N V N VVVVFFFFv~Ujvv U~u jhh 4UhTh h thFYFF - -uPh-vh-jjjZ U6-6-v6-6-vFL FF;FslFF;FvZfv~Fv-vv&^&1^&6-^&*P~v^&0^&@FFU6)&Ĵ&<tEFt+FFV V#tFtN~vF -5^t&t&tptt  < +U^w=.22-2222(2222222#p UPFF#~;Vv&;s0v ^ ON 0v &FF뾃~t+v ^&v& UFv&jjFP/ v\ V&D *F&D *FFPj6HdF#tVF FF~ u~ uF<t< u~tFF~tvvvv FPFċF#tFF )F~uv F &xN~uFF~tvvvv FPFċF#tFF )F~tCv F &_N~u*~t*vvv FPbF#ucFF )F=~sM+ uA+ыA ~ F n~tv &F +Fv&+ U+~uA+Ѿ~ uA+;sNv &<tBFVFVvFv&"t^&:uFFv&<uF V F +^ W2.0>xvt.fontsrc>ps_ctos.cAssertion failed. [%s %d].CharU-6-jhGv6-6-t+ UvF#u#t &$vPh|RPyvvFVFFV#u#uvvRPh-^FV u vh?$vPh|RPyHvv6-6-vh@$vPh|RPyvvvvFVFmUFVU jM----j(-- uhu- FF;-s-&&@Fj(-- uhu- FF;-s-&&@F--. .&.P.. uhu .@P.g [. uhu-h-$-+FF.F .F6-FPUPFF;-s#-&&P#u#tRPFFF;-s#-&&P#u#tRPF6-6-6-6-6.6.6.6.-UP>-uhuv E$vvF~ -&&P-&&G&W-&&Q-&0&&TU>-uhuv#v-&0&D&T uGv-&&w&wvHF+ҋ6-^&0&t&&L6-&0&T&LUP>-uhuv#v-&p&0(i \v6-^&&@U>-uhvv F vFPVPFvTVN-&1&A vFv&L&+LA&D&+@FFN#tvF&vF&vF#u#t~-&1~FU>-uhvF Fuhvv "v -&&O &+OA&G&+G@^&-&&PU>-uhvF Fuhvv !v !v -&0&D &+D@F&T&+TBVvF^&W&+WBV;|F&F&GFvF vFFF;F}&v vvvvv%Fvv4k ]F>-uhv-UjvvjU>-uhv>-rhvv  FF;-s-&&H tFޡ-;Fw\6-6-P-- uh v-F-F;-s-&&@Fޡ--FFF?Pv-&&P-&&P uh vv+-&&G-&&G-&&G-&&G-&&G)-&&G+-&&G-VN -&&W/&O1-&&G'-&&G%-&&G &W-&&&WV-&&W3-&&G&W~ u0-&&G&W -&&@m ^P--&p&0h-Iv ~-&&P&1&D&T 6-&&P--&p&0&0&t VV-FU>-uh vv v -&0&t&t vvU+F;-uh vv|v-&@&0;-u;6-t&t&t #t+v-&0&D&T #u#t --Fv-&&w&w vz+6-^&0&D &T6-&0&;T u&;Dt V&t Vv-&p&0h-6-6-~t----v-&0&|'t Vv-&0&D&T#u#t RPPv-&Lo _p&0v6-^&&@-U>-uh vv vv8v -&0&D'F&D &t#u#u&|%uhvv ^&G>-&1&t&DFv&D>-&1&t&DFv&>-&1&t&DFv&D6-&0&t&DF6-&8&u&DV;|V6-&0&t&DV;|V6-&0&t&D!V;|V6-&0&t&D#V;|VF;F F;F+"9v&F&DF&DF&DFFP.HP .HPFP#tv -&0&D'v -&0&D'v -&&w&w F&+GPF&+GPFPXq `vT~t FP6-^&0VFPFFFFFFFFv F-&&GF-&&GF-&&G!F-&&G#F-&&GF-&&GF-&&GF-&&G-&0&D%~u 6-6-mFPU>-uhvv Hv -&0&|3uhvvF#u#t~ -&&W3&v -&&P5>-uhv6-6-˃>-uhv6-6-U>-uhv--FVv&D &T#u#uvvU>-uhv--FV t&v&&Tds a#u#tFVvv:Uv-&0&&T#u#t!FVv&D &T#u#uvvv-&0&D&T #u#tRPUFF>-uhvv v -&0&|%uhvv -&&G^&>-&1&Dv&D>-&1&Dv&D>-&1&Dv&DUFF>-uhvv  v -&0&|%uhvv -&0&|'u+Rv -&&G^&>-&1&Dv&D>-&1&D!v&D>-&1&D#v&DUFF>-uhvv ^v -&0&|%uhvpu bv -&&&G #u#u&E-&&G^&G>-&1&|&E6-&0&Dv&D>-&1&|&E6-&0&Dv&>-&1vF&\&Gv&Dv&DOv -&&G^&>-&1&Dv&D>-&1&Dv&D>-&1&Dv&DU>-uhvv .v F-&&G)F-&&G+-&@;-u &;-uWUP>-uhvvv3ҋF-&&;G-tBV&G--&@;-u&;-u#tU>-uhvvtv vv v-&0vF&\&D#u#|w cuPSjjvvv vv APv vFPVRNQNQ#uNv&t&+L&D &+D@FF&+DF~ߍ@ ‰FVFF;F|vF&v&V&TFFv&|'uY&DF&DFVjjvvv vv }Pv vFPVRNQvV#u >-t%F;-;-|F;- F;-|F;-u#F;-uvvvvvvw~F#~,F& .v^&G*.&*;t FFN͋FFFVFVF#~,F& .v^&G*.&*;u FFNvvF+FPvvvwy dFFFVFVOU>-uhvvv-&0vF&\&D#u#uPSjjvv vv vFPVRNQNQ5#uNv&t&+L&D &+D@FF&+DF~ߍ@ ‰FVFF;F|rvF&vF&Fv&|'uL&DF&DF Vjjvv vv vFPVRNQvV#u>-t%F;-;-|F;- F;-|F;-u F;-uvvvvv~F#~-F& .v^&G*.&*;t FFN̋FFFVFVF#~-F& .v^&{ eG*.&*;u FFNvvvvF+FPFFFVFVN U*>-uh vvv v v-&0vF&D&T u&D^ &;|Vv&D^ &W;|Vv&D!^ &W;|Vv&D#v &T;|VF;F F;F+"uv&t&D &+D@FދN&+LF؋F&+DF؋~ߍ@ ‰FډV܋F+F@FF+F@FF؋FN#uFF֋FN#tFv&F&DFv+vvv &D^&GFv &D^&GFv &^&GFv &Dv&DF&DV;|V&DV;|V&D!} fV;|V&D#V;|VF;F F;F+"u>-tV-V;|V-V;|V-V;|V-V;|VF;F F;F+"t{F;-uF;-uFPvvSF+F@F6.6.vPFFF;F*vv&+DPF&+DPv6.6.vF >-uh!v>-t(-6-6-je 6-6-h- ` U>-uh"vv v-&&G'F&G'-&&w&w v ~t6-^&0V U>-uh#vvt v-&&P--&@&0;-u;6-tb g&\&D #u#t V PSv-&p&0h-FP6-6-v= -&0&|'t FP U >-uh%vv v &D&+@~.&D&+D@~#V v-&@;-u &;-t+v^ &G>-&1&DFv &D>-&1&DFv &>-&1&DFv &D6-&0&DF6-&8&EV;|V6-&0&DV;|V6-&0&D!V;|V6-&0&D#V;|VF;F F;F+"u^w<.FFFF!FFFFFh&vFFFFFFv-&8&E hV;|V-&&GV;|V-&&G!V;|V-&0&D#V;|VF;F F;F+"u&FFFFFFFPvvH U FF;-s-&&H tFޡ-;Fw\6-6-P-- uh'v-F-F;-s-&&@Fޡ--FFv&L&+LA&D&+@ Pv-&&P-&&P uh(vvvv-~&9v&L&+LA&D&+@FFF;F})v-&&A -&0&@ FϋFUPFF;-să i-&P;Vu&;VtF؋F;-rh)vv-&&P uh*vFUPFF;-s-&P;Vu&;VtF؋F;-rh+vv-&&P uh,vFUv&D&4#u#tV N &T&Lv&&T^ &&W&G&Gv&&DUv F ^&;Gu>&;7u9&D&4#u#t&D&Dv&&&Wv&&Tv&4vF&&TFVvF;F u;v t#u#t vFыvF#u#t7&&T^&&Wv&D&4#u#t^V&\&Th-vv &&DUЅ jF Fuvvv v vvv v v&D &t#u#t6&\&D #u#t V PSv&t &th-vvDvF#u#t6^&W&^&Gv&D^&G!v&D^&G#v&D UF FtEv&t&4v&t&t vvg-&&@vvUFV#u#t4;-u;-tv&t&t #tv&t&4+UvF#u#u&|%uF &D&DF &D&D&D^&;|v&T&D^&W;|v&T&D^&W;|v&T!&D^&W;|v&T#v&D&;D!&D&;D#܇ k+*v&D'&t&t v v V2v&t&4v v vv UvF#u#t9&t&t #uv&|'t 6--v&t&4 +--U F F uv&t&4vv&D&|'tl&D!&+D@F&D#&+D@F .&d..߉^F&TVFF;Fs)v&T*N~F .FFv&t&t &D@POFU F F u@v &t&4vvv &D/&T1 u&|'u&D^&;|Vv &D^&W;|Vv &D!^&W;|Vv &D#v&T;|VF;F F;F l+"uFFF;F~yFFF;FeF& .v^ &G*>.&*;u&;T|8&;T#2& .~&D*6.&*;uvv96-&t-jMUv vvj j+UF Ft#v&D'&t&4v&t&t U>-tvvh-h-v&-&D-&D-&D--UPFv$&;D &;|Fv$&;DFFv$&;D}+kv$&DV; m}+‰FF)Fv"v RPvv$&D+F@V;|v &Fv&Fv&FVv&&T"UPFF;F}v&<tFFFUv F #u#t@&D &T#u#t RPvvv v P^v &t&4vvUv&D&T #u#tRPFVUF=t/#|;-rh.vv-&&P uh/vUF=t/#|;-rh0vv-&&P uh1vUF Fuh2vv&D&+@~ &D&+D@h3vUF F uh4v~h5vUFVF nVF;F s++NvFV+}Rv F &vF&ՋFV-vv +NvFV+}v N &vN&ՋFV Uvvjjv&DU&TW t%VVjj&t;&t=,Pv&t?&t9 U,$F։Vv &t &t_$FP_ $v VjR $v vv#$FԍVR $vv֚_$F UFv&;D?t)&D?&TU&LW t&Tt VjPjUv &D;;Fu &D=;FtEFv &D;F&D=&TU&LW t(&TtVVjj&t;P+PjjUFv&;D9t)&D9&TU&LW t&Tt Vj  ojPUPF҉Vv&DM&TO u"&DQ&TS thF+RP`v&tO&tMN++}Xv&DQ&TS t&tO&tMv&DQ&DSv&tO&tMF<+RP<v&DM&TO u+6v&DQ&TS u$&tO&tMv&DQ&TS uhUPvF#u#t&DQ&TS uhFFv&;DKs5&tQ&@;F u&@;F uFV&@&P Fh Uv&&TFVvF#u#t&DQ&TS uh4.6.v&t&4FV tv&&T uhF ^&_Q&0N p^&w@+FF+ƍD^&GV ЉVv&t&4v&t&4F+RP<v&&T u6)&DŽ+FVv&;Tu&;tvvRP&t&4bv&t&4FVNȉNVv&t&4+Ƀ+v&DV ^&wQ&vUN^@‰FVF;FwhvvvvF ^&_Q&-+RPv&t&4 Uv &t&4FV~u~uhv^&w&AP+ЉVBov &t&4vvvv v FP#u+hv &t&4vV~$ q&|&\@ߍP+ЉVBhvF^&Y&v &t&4UPF F uhv&<|th v&DQ&TS tPFFv&;DKs &tQ&p&pFv&tO&tMv&DQ&DSv&DM&TO#u#tRPv&DM&DO+v&DK&D;&D=;FtVPvD)RPjjjv1VjjjUvF #u#t&DQ&TS uh!v&DKHV;rV&tQ&@&PUvF#u#t&DQ&TS uhvF #u#t &&T uh"v&t&4vVF 0 r^&_Q&H&D^@ߍP+ЉVv&t&4F#}vvv v vP#u+* U F F u F9N F+ƍDF@F+RPFV u6)&DŽ+vvFV uh#vvjF+RPvDRPv vF+RPv&$& !&LF&Dvv+Ƀ+v&DvvFVU +FVF;Vu ;FuhFVFV8.:.F Fu!Fv v ‹^@‰FVvvvFV~t v v v&DKV;rЉVV Vt V@P#u+< svvvjjjF^&QލARPWv&DK+F+PRv&|Q&FVv&|Q&A&Qv&DKV&D?@PvvFVvvv&DQ&TS uh$vvvFPjsFUvv v vvjjj+~uA+RO U v &DKHV ;rVFFVRFV u+vv vvjFPvv U v F#u#t&DQ&TS uh vv v FV u+~uA+щVvvFVF ^ &Q&Hv &)D?&|Q&vvvv H tv FPv#tXvvFVDRPvvF+RPFv&Dvvvv v FPj+ Uv vvUvF #u#t&DQ&TS uh @.B.Fv&;DKr6)&DŽ+F^&Q&Fv vv&T?+R^.v&\Qv&p&pv&\Q&DS^PSPS&DK+F҃+PRv&LKVvjFPjUvvjv ~v&t &tFP~vvjU FFv&&L u RP6v&t&4FVFNT uv+}.v&t&4RP<v&&T u6)&DŽ+jv&t&4FV uh%vvvN^ &w@PF-+RPv^&@v&t&4 UvF#u#t&DQ&TS uh F^&_Q&FvvFVv v FVFFF;FsK;FsF~t%F;Fs^&Y& v&D+v+v^&;@uFF+FFF;FsR;FsMF+FH#t+F+FHV;s^&Y& v&D+v^&;uFFv v vvF+FF#t&V+VV#}Fvv` vvvvjF;Fr FFFv&|%uhF ^&_Q&FV#|;whv&t&4FVF Fuh(F Fuh)v&D%=t:F &\Q&v&l wt&4vvv vvF ^&_Q&0vvhP.x#u v&t&4F ^&_Q&F~uFFHFF F@^&_Q&~t7F F^&_Q&;s^&Y& v&D+FFv&;Dr(^&W%VSv@RP&D+PFPFFVB;rFv&;Du;FwhFFF;Fvv&x tNF;FuFFv&;Ds &x uFFFFv&;DuFv&t&4vvv v vF ^&_Q&0v#u6R.6P.+v&t&4FVF x x^&_Q&vvF ^&Q&+Fv&D?P^v&L^&wQ^&0v vvvD)RPv&\Q&0v vvvD1RPv&t&4vvv v&t&46R.6P.vv UF Fuh v&DQ&TS uF^&Q&FFv&;DKr6)&DŽ^ #t tWt2 vvvT.V.RPX.Z.FF6V.6T.+= FVX.Z.X. Z.uh,F ;FrvF#u#t&+~ t'F ;FsX.&Y& 6X.&D+F6X.@‰F yVF FtEF @#t(F @;FsX.&Y& 6X.&D++Fv&h-FVUF F uhv&DQ&TS tFv&;DKr6)&DŽ+F^&_Q&UF F uhv &DQ&TS t Fv &;DKr+F^ &Q&FHV;rVv v v,FVRPFVF@#t&F@;Fs^&Y& v&D+F~t%F;Fs^&Y& v&D+V+ЉVvvFU +Fv VvVFFF;Fr}F@#t&F@;Fs^ &Y& v &D z+F;F w v &;Du3Fv&DF +F&Dvv^V^RSPv&DFFuh4Uv&|Kt@Vjj:v)~vvFPv&LVjjU F Fu%v )\.v 1d.v &d^&^ &_Q&p&pFVv&|t=v&&Dv &tQ&;s^&Y& v&D+Fv@‰FVv&D#t~&y t v&Lv v vvv&t)v&D&^ &wQ&p&pvvh\.H},v v vvv )V v~ ) {v&^ &_Q&p&pFVv&|t=v&&Dv &tQ&;s^&Y& v&D+Fv@‰FVv&D@#t>v&&D@v &tQ&;s^&Y& v&D++FFv&D;Fs~&9 t v&Dv v vvv&tv&D&^ &wQ&p&pvvhd.@~,v v vvv 1V v~ 1U$FvF#u#t&DQ&TS uhD.F.FFFF;F w^&_Q&FFv&D&+D +&tA;Fs &t |vvv8FVvvv %FVvv&tQ&Nދ^ &NvvFVvvꚗFV~t%F;Fs^&Y& v&D+F F~t%F;Fs^&Y& v&D+FFv&;Dvh?v&D+FFvvvvꚤvvvFPFFPq#uvvꚤv&t0 +BvvFVvvꚗvV^~AQP‹^@PF+RPFFv&D&dFFvvꚤvvF FF;FvvvPF#tN~t`vvvFPv@F }vvFVvvvv&\Q&1RPvv)Vjvv~t%F^&_Q&F;F~h5v&D)&;DKvhFUvF#u#t&DQ&TS uhF^&Q&F<.>.vvv\FVRPFV~u FFF~ t%F ;Fs^&Y& v&D+F F~t%F;Fs^&Y& v&D+FFv^PQR@RP&D++RPY+^^v&)\&dF;Frr;F tF@&\p&F@FF;FsI~t%F;Fs^&Y&  ~v&D+v+F^&Y&FvvvvvFP~ u+F HPF#ttvvvv v vvFVvvvv&\Q&1RPvvD)RPvvv)~1FUFFVFFVvvv&t/&t-&t+&t)&t7&t5&t3&t1&#tvv v)~v1~FPVRz v^)v)^1v&^&;u#vvPv&t&tv&t&t&vvv&4&t&tv&4&t&t#u+$vvvD)RP̰ v&t0 U vF#u#t&DQ&TS uhF+-|+~uA+щVvv&DFvvv&D'#t;Fw.v&D'+FV;rVvvv &4FPFFP#uvvFVv &^&wQ&Hv &T;r&T&|uFF`v &|t=v &&Dv&tQ&;s^&Y& v&D+v &DF;Fvh6vv^@RPv@RP&O++VQR܋Fv&D^PRvv+RPv &D@Fv &F^&_Q&;s^~t:v &F^ز &_Q&;s^&Y& v&D+vF^&Y&Fvvvvv &4FP&t#tTvvFVvvv &^&wQ&0RPFFPv v vv+U vF#u#t&DQ&TS uhv &|u*&|u#vv&4h9jjjj4#tEvvFVv &|t=v &&Dv&tQ&;s^&Y& v&D+v &DFv&T+ЉV#|'rh7v &^&wQ&~ &+EHFv&tQ&V#|;}h8v &F^&w Q&)vvv&T?+Rvvvvv &4&D@PFPjvvv &@Pjjvvvv#u+|vvvVF&Dvvv &D#tvv&4VRPvvv &4&t&tv &@v&D)+&D-&D/&D+ Uv&D%Huh@v&LVh0j8vvv&t/&t-&t+&t)&t7&t5&t3&t1 #uvvjjv&dUv&D%HuhAv&LVh/jvvv&t/&t-&t+&t)&t7&t5&t3&t1 #uvvjj v&dUFv H.^ -w"-tIur uj t!t`G.t'/t!0t=t(-v &D%=u5V'v v vv=F~~v v jv &D%Huv v v &t/&t-&t+&t)&t7&t5&t3&t1~ @Fv v #tOv \)^F&v &;DKv 6)&DŽ&v&v &;DKu-VPh9jjjj-#u++v&D&D&Dv v v&4݉FV^t9 tI tuF~ufv v (v v vvvv6?~uv &8 v&;rEv &Dv&;Dw v &Dv&;Dr%v &Dv&;Dvv &Dv&;Ds+Uv&t+v&D)&D+&D-&D/)~1FFv&;DKs3&\Q&A&QFVvvvFPjlFv&t &tjjjv&t0 U+F9uA+щVv D)‰FV1vFFPVRz v&FFv&;vr^ &_Q&p&pFVFv&;uUv&|t=v&&Dv &tQ&;s^&Y& v&D+v&DF/+F;Vu;FtvvVh9F+RD PFFFv&;uRv&|t=v&&Dv &tQ&;s^&Y& v&D+v&Dv&DFvF#u#tvPVv^@PF++RPF+FFF^ &_Q&p&pFFU v&D%=uV&t/&t-&t+&t)&t7&t5&t3&t1-#tzj%#tovvjjF+RPFVvFV#u#tAvvRPjjjvvjj< -v&t &tjjjUv&D%=tU&D%HtKV&t/&t-&t+&t)&t7&t5&t3&t1f#u!vvvvvvjP Uv&D%=uW&D%HuJj%#u<jjjFPgFV uv&|KuVjh9jjjj#uvvSvvvvFPVRsFV#u> #uFFvvRPvv\)PS&~&]Q&p&p(v)^1~uvv&D%=udV\)PS&~&]Q&p&pv)~1"vvj U>*/|hl*/$k6*/5..^ &G&W ..&w &w_$k6*/5ƒ.V_ $v &t &tk*/5÷.Sev &t &tD\  RP F Ftuvv $v ^v&D#^ &GY&W[v&D&T^ &G]&W_v&D&T!&D &T^ &Ga&Wcv&D&T>*/}hmk6*/5ƒ.V $k6*/5..Ʒ.V k6*/5.._$*/U@FFvvFPFFP $vvv kHFV;rVvvv v NFF FF;Fv3Fv&;D }&;D~Fv&DFF&+DCF&DFF&DEF~t&t &tFP@##uvvv jjjjvvv jvFPFV tI~uvvjFvvvh vF;|R$~uvvv#$Fvvv jjjj~u%F FtFFFv&DFFP $Fv&DAF F@ Uv&|Ku&D&D%F&D;V;rЉV;u&D=V ;rV v&DKHV ;rV VRkHFV;rVF;F u vvPv RWvvvv jv#tEF@FF;F svvPjjv#tF݋F ;FuvvPjvvpvv #t vv U6v&D%=u&tFP v vFPv~v&D%=u#FPjv&t &tFP t FFP $FP $ov vjjjjvZUv &D%=tVv vv vj0 Uv v v &t;&t=vv-UPv v vvv &T &TCV&dAFU~u v&Dv&DF&+D9UFv&<t]v&#}F&v&^ &GAH+&wAFFSFP+#tFv &dAv&v&UPvvv v %v&+DG&+DCFvvVv3PQvvv$Pv&LAQ$U.~u ~u$F҉Vv&t &t_$FP_ $FVF։Vv&L]&t_NvNQ $ .v v vv$.F֋V؉FVFP $vvҚ_$ Uv&D%=uk&D-^ &;}v&D+-Gv&D^ &;~=v&|9v &v&D&+D9v &;|&v&Dv &+FFv&D%=u7&Dv&;~+ v&D ^&;~v&D +FFv&D)&;D1u@&D+&;D3u6&D7&;D/u,&T9+V;u!@;rF&T&+T;|FF~u ~uv&t &t*,v&D;F&T=VVNQ<~u!Fv&;D;u F&;D=t h*tvvv&D9+FPvvv VvvFv &Fv&  Uv v v&tF+;|Vv v v&4&tGFv v FPFPU"v&D)&;D1tk&D+&;D3t^&D/&;D7tQ&TJuC&Tu3VPFv vv&t)&t+F~tv vFPFP`FFFFv ~v&t &tFPev&t &tjj NFFPvv$#tXv~FPjR $36)&Ĝ=&?uB6)&v&t &tF+PvR v&t &t v&t &tFP v&t &tjjjU+Fv&;DKuv&&D&D&D F v&+D &|AF&TN ;|ʉN&\;|ˉN)V&T9V+;|‰F&L?I;rF&D;F&D=FVFv&;DKsLVPkFFFF;Fs$V;VuVv&&DFFF+F;FuF먃~uv&DKHv&FH&DFFv&DvvV1 Uv &4vF^&7vF&^&;rG;u#v&D^&W;r1;u &Gv&;Dv FVv &&TFVv&&TU&v &D%HtH&D%=t<VFPFFFFFP $vv $UFV;r0N #|)v #|"^SvvQVPRH vvFPa UF V;w ;u\F;F rTv ~vvv v -v&+DG&+DCFVvvv&DEFVFP Uv&|KuF PVRTv &^&;u$v &T^&;WuvvPRv &tvOvvv &4&t&thvvv &4&D@Pv&4&DHPvvv&4&tj&tv&t &tjjj Uv)~v1~vvFPFPU ~u}v&D%=tnVv v v&+DG&+DCF ~V;|V;V}2~tv&t &t*, vvFPjFv&dAP UF#~v &T9;|F~u~t[v &t &t*,v v FPov v v &D9+FPv v v D RPvvv v j.ːInternal Error 1UFFv&В+++&&DF+++&D&D+++&D&DF+++&DUvvkvvvvvv v vv:U vcFV uh,v&D&T FVv}#uhvFUv v vvH U~ uhv c FV uhv&t &t vvv vv Fvvjv }#uhFU~ uh v cFV uhv&t &t vvv vv Fvvjv }#uhFU~ uh v cFV uhv&t &t vvv vvl Fvvjv }#uhFU~uh vcFV uhv&t &t vvv Fvvjv}#uhFU~uh vcFV uh v&t &t vv} Fvvjv}#uhFU~uh vcFV uhvvvv v vvFVv}#uhFV U ~uhvUF#uG;Fw HFF FF;F w HF FFvvF;Fw HFF vv F;Fw HFFvvvFV ;rV vv vFV;rVvcFV uhv&t &t vv Fv&D)F&D+F &D-V\)PS*F v&D1F&D3F&D5V\1PS*vv vv6 )&v}#uhU~uhvcFV uhv&DKFv}#uhFU~uhvcFV uhv&D?Fv}#uhFU~uhvcFV uhFVFVNNRPQkFv}#uhFU~ uhv cFV uhvvvvFv }#uhFU~uhvcFV uhv&DFv}#uhFU~uhvcFV  uhv&D%Fv}#uhFU~uhvcFV uhv&D'Fv}#uhFU~ uh!v cFV uhv ~v }#uhU~ uh"v cFV uhv~v }#uhU~uh#vcFV uhv&D&T FVv}#uhFVU~uh$vcFV uhv&L&t &t v}#uhU ~uh% vcFV uhv&D%=uJ&dvFP_FPjv&t &tFP~vvvvjv}#uhU~uhvcFV uhvvjFv&dAPv}#uhU~uhvcFV uhvvvjv}#uhU~ uhv cFV uhFVv&DU&TWv }#uhU ~uhvcFV uhv&tFPFPjv&t &tFP~Fv& DVj4v}#uhU~ uhv cFV uhvvfF FuvFvF FVFVv&D%=u.FPv&DP&P&D-P&D-P$v~v^vvFP!v&t &t;F u vvjv }#uhU~uhvcFV uhFv&D%Vj4v}#uhU~uhvcFV uhFv&D'v}#uhU~ uhv cFV uh vvvvv jjvvjR $vvj4v }#uhU~uhvcFV uhvvj4v}#uhU~ uhv cFV uhv~v }#uhU FV u vvU~uhv U~uh&vcFV uh(vF#u#t ^&W;&vF#u#t ^&W=&vF#u#t ^&W9&F F t"vvv&t;&t=jj-v &v}#uh)U ~ uh'vcFV uh*vD)‰FV1vFFPVRz v&v&v&Dv&v&Dv&v&v&v&Dv &v&Dv&v}#uh+U~uhvcFV uhFVv&DY&T[F V &Da&TcFV&D]&T_v}#uh%UFv&)&D&)D&DN/P/#u#u6L/6J/N/P/ˡN/ P/t6L/6J/N/P/UF#|;R/|h:v+vV&D&T t&D &T#u#uRPFV u rv&<|th7vF^&w&G&GAv&DM&TO#u#ta&LQ&\S uRPv&DQ&TS u?v&t&t +0v&\&D^F&D&?|th8FVUv+vV&D&T tf&D &T tZv&t&<|th9v&|h;v&L&|^v&t&DQ&TS t,&tO&tM#u)+9v&t&DQ&DSv&t&t v&D&DUFVFF;R/}+^&&P tFF;R/|F> UFJ/L/FV uR/R/( ++PR-pF@u46L/6J/R/R/++PR<J/L/ u~uR/HFN/ P/tL/;FuJ/;Fth<vVF+RVjjjvVF V v&&TFV&D &TFUv v jjvvjR $FPVRNQ$hj4#$4v &DI FFFv &DAv^ Fv &DEF&DCF&DGUF FuhDF F uhEF FuhFjjeFV u6)&DŽvvFV uhGvvjjjev&|+&Da4 &Tc&DY&T[&D]&D_ FV&D&T N&LN&L'&L&LVv v vvvvF@uvv+Fv&DvvvFVvvvb ~uv&D&+D-Fv&D%v~FPjRvvFP~vvvjvvjvvvjjj FUF#|;R/|hAv#u+vVF+‹&p&0^ v^p~FPjv&p&0FP~vvV‹^&p&p #uhRF+^Sjj@ jeUF#|;R/|hMv_FV uhNvvj_vS#uhOvVF+‹&p&p #uhUF+^SjjjUF FuhHkFVFF;R/}++^&@;Fu&;FuvFLUF F uhI FVFF;R/}S+^vp~v^&@;F u&;F uFPvv$#uFF;R/|FUF FuhJJ/ L/uXbFVFF;R/}+L +^&@;Fu&;Fu&@uFCF;R/|FUvDFV uhPv&t &t v&t &t&v&t &tvjavvjv#uhQUvV^&G+‹&@$*FFU F F uhKF;R/|hL+vVF+‹&@;F u&;F u &@tFF;R/|+^&@;F t&;F t3ҋF;FuBV&H*;tFPvV~t~t &Lv&D%Ht V v&dvF+F^X $&`&@FI[v v jjjU FVFF;R/|}+^&@;F u`&;FuX&@tQvvV~t&D%Hu*&dV v&D%HtV v&LvFwUv &|Ku&d~u\)^Fƒ1vVVRNQz v vvv3H|2v~v F);Fu7;vu2v~ )v~v^ )v^ 1vv FPv v vv v &t7&t5&t3&t1^&w&w&w&7O3#tv 1~v^ d 1vv FPv v vv v &t/&t-&t+&t)&t7&t5&t3&t1O3#t!vv v )~ 1 U +FЉFVF;L/u ;J/uv& v. 8 [ v v v&t&tIF@u \/\Fv v vjvFV uh-v&D%Hu&D%=uF\/vvv&t&thT/[ v&|t+v&D%Hu &dV vvhT/jEWv&D%Ht V v&dT/^1v1^)v&<u vvkv&t &t,v v vp #t>h.\/=u-FPlFV#u#tRPj6\/g#uh0\/,v&d\/=uFPFV uh1vvvDRPVvvv&t&tFP[ v&D%=uVFPvvFPj6\/#tIh2v v F=u.FPmFV uh3v&t &t vvv&t&t'F#tvvjFv/#th4H/FVFF;R/|+F V ^&;Pu`&;u[p~RPFP@##t9vFV uh5| vvjv#uh6Ft@H/v&\v.#++++v v ]F=uPFV uh=v&t &t v&\wR.~vv76vv6)vv8vvjj'vvjFv#uAh>7v v +v&|tv v jjjv v v&tFU행vVv^  v &D&+D +&tA&dA&D &D&t&D+^@P UFF F u1vv F=uRPFV uh?Fv &D%=u ~t=jjhv&D%=t&D%Htjjj#t+*PL&lv vv&t/&t-&t+&t)&t7&t5&t3&t1O3@Fjjh~tv&D%=t+*PL&ljjh~tv&D%=t&D%Ht+*PL&ljjhv&D%Ht&D%=t~t+*PL&l~tv#uh@ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzUv &tv vv&tW&tUj Unv &&T uhV*P(v&&T uhV*P(FPL+~uA+ uA+A{v &t&4VRuA+SPPPhrmv&t&4h#t1v &t&4hjjjjhrmv&t&4hP(U>@4t!vvVVkP(v&F9FFF= s%jPFP, F#u~uFFFӊFUJF+FV;r4tu;p4uoFv v vv,P(v v FPj8FPDF#u F;FvFF+FVF#tHuvhp4*Pv(+FVFVv v vv,P(v v FPj8VRDFHu>FVFVv v RP,P(v  v FPj8FPDP(F#tP(F:FuFʣt4 ~u FVFVF+FVQ~t jh47+47uA+R<Fʣt4v v vv,P(v v 6r46p46t4FPDP(v v P(Fp4r4446p4r4vԉ644F=s44FF;4s4&vĈ4FۋFp4r4|4~4Fڣv4Fp4r4x4z4F裢4Fp4r444Fp4r444F46p4r4v644@@4+44jj8P(jj8P(jj84UPFF=s 0;VtF+Uv0U6p4vF&\.^F~ &1p4v&&TUF*F|4&#FFv4HV;r3Fx4&#V&#P ЋF&#@ ‹V;u&@F+U6p4vF&\*^F~ &1p4v&&TU>4t^>4uWF*v64&t;vFPv&FPh4p44444+UP>4u>4t`+4FF;4r4&@:4u2&:4u)&@:F u &@*;F u&@&Pv&D&T[F먊F *v 64 &tCFF;4s54&*;F uF &:@u44F 4F+UPh4j@j LF=t"V4F4>4uH44UPh4vj LF=tƄ4@DŽ44#~4U4*4&8tXh4Vj LF=uD>4Ct-FFF= s 4@t4;FsFFF4PvUF$FV*BVh4P64LF=t\4&@F&xt'~tH14&pQP#4Q8'~t F 4F!4 ~u vF@FU~@uvF*PfF QP"uovvv v \"t>4uTv &DF&D?vFPF*^&+v &D&T&DF&D&D&T t+Uv&|@u+v&DP4vvP641U4*64&;v8v& 4*4&A444*&@v&D4_4*64&T;v.v& 4*4*4&Av&D44*64&T;u 444+U >4t]F\4FZ4=6uh4 b4j4d4f4~tb4h4d4f4X4hP4d P(4~t6B4FPd P(6B4FP F=t  v v&D =t=6uh4h4~ v&|Ztv&|bu4tQv &D@!v&|uv &< t04v &Dv&Dv&| t>4u &Dv&DF+&DFF= s%4;FwDŽ4 vF)4F6B4FP F#u~u&~tv & &DC v & &D@+F\ U>4tv vlF>4t>4 r:vjv vjjF#trv&< ugv&DF4 s?4= s4<@t(4uF64Ƅ4@44Cv& 4F4v&D+UPv vv1F  #uv&< uv vg"t+U +FFFF~6tjFPjFjFPj FF ~tkF=huXF~~P D h4h464646464ajjjjFj6r46p46t4Fkv D `v~ FU FFFPVRF#t FFF= w = u^~rX@4h4h4Y64646464jjjjFj6r46p46t4FhB4(@4h4h464646464T4 hB4(FD4F4H4B4J4F= s = r~rL4ZD  L4N4hD41FP4+Q4R4S4T4B4V4X4Z4>4t6FPd F>@4tv&t&t&t v&t&t&t gv&Dv&tVL FU.0F,4^hB4(P(FP(P(.4R 04F246444F84:4`;4F<4>4h.4$ F#u4F+42.0>XvtNlsKbd.tbl[sys]2.0>XvtNlsKbd.tblU~|vPBP,Uh>vvFV uPBV+ВU ~|jjjvPBPF^vvFVjj jvvvvFV~ | ~ uj~ }~ t(FV "}&#yNv+}~ ujjj v v vvPBPF^vvUF@NF %0=0u8FPvv+~uA+RPPPhrm#u v f ߃~ uFBUF?  t uFDNF @tFH5F>.F uF t@tFLFDF @uyFPN+~uA+;t=vvvvFV#u#tRPPBV+ВLvvvvFV u)F tjjjvv PBV+ВU~| 0vZBt+vPBPv jv vj Uvv#u+U~}2vPBPv jv vF^F v&D tFwrr+wbrb+rbUhe$FPh|vvjjFPj Uv &D+F&T'&+T-V+ЉV&D/F&T)&+T1V+ЉVFF;Fr^&@F;FwNF+RPF+ҊԊ*RP FVvF^&v^&F;FvFF+RPF+ҊԊ*RP FVv+F^&@FK+UF V FV~u   v&F*iv&~u v&DF*iv&D~u v&DF*iv&DUv&|tDRP&Ĝm&G+R&G/RtFv&<u&v&Ĝm&G'&+G+&+G-F&W)&+W/&+W1VvLSQSP&DPFv&<u&v&DUPv&|t#DRPFv&<u&v&DUFVFVFv F #u#t)PVFP(~uFv v FUFVFV6464[64&<t+UFV#u#tRPUJ v&PFV u+&+~%v&BC&DVFVUv &D'&+D+&+D-^&v &D)&+D/&+D1v&DP&D&DU@v&|%uhqFV ut+~󫪺~ uA+шj\vƆj\j*v kP4 P(Ķ&D@F<vFN*ĶA~v&DF+FFFFЉFVЉFV&TVF&T VF&T V&T%Ɔ[ʃƂ]:4uvTQRh,RPPP!vDRPh,P-Pjjj0Vhj$ Phtvv+v&DFV&m&o&2&DŽ6&DŽ8&:&DŽ<&DŽ> PPh@#uIb+ҹv&Ĝm&G+d+v&Ĝm&G-f+v&Ĝm&G/h+'v&Ĝm&G+v&Ĝm&G-v&Ĝm&G/v&Ĵm&D1FV44 Uv&eu+&Ĝm&G)v&e&Ĝm&G'v&gƌa+U8$&D&TFV+ɈNʈNˉN̈NΈNv&\^܈N݈N&\^&\)~&t'ۉ^;u;uQ64VFPj2F#t+1+64&D64&Dv0 &eFV64&m&oUv& u@t@F>v &:u FF'v &:u FFv &:uFv DRPvvFv &<u&~u!v DRPvLFv &<u&v &>&<FPv DRPjFPj< Fv &<u&v DRPjFv &<u&FPFFVv vvv &o&mRPF#uv VvvvF vv 1vvv &<uF& Uvv v &2uFv &2 tFv DRPvFv &<u&v &8&6FPv DRPjFPjFv &<u&v DRPjFv &<u&FPFFVv vvv &o&mRP`F#uv VvvvdF vv vvv &<uF& Uv &UF&WFFFFFH VFPjUFFFFvvv v  Uv&DF&F&DF&F&DF&DF&DF&DFv v FPjUF F F F FFFFvvvvUF V F V vvvv^ Uv v vvGUF F F F FFFFvvvvUFFFFvvv v  U vvv&Bt,&Du%DRP|Fv&<u&v&L5v&Bu*&Dt#DRPj|Fv&<u&v&dv&Bt,&Du%DRPFv&<u&v&L5v&BuT *&Dt#DRPjFv&<u&v&dv&Bt0&Du)DRPjj\Fv&<u&v&L5v&Bu*&Dt#DRP\Fv&<u&v&dv&Bt0&Du)DRPjjlFv&<u&v&L5v&Bu*&Dt#DRPlFv&<u&v&dv&Ĝm&G+FF &G/ F vvFPVRNQ2FFFF +F@+F +FF vTQRVSRtFv&<u&~u+~uA+щVvDRPv vvFPFv&<u&Uv&i&kU+v&&`! D^ &ķm&D'v&D^ &ķm&D)v&DUv Y~FVUv 0~FVUFVFVv& +v &v&UF VF VFV FV F=u+~uA+ђ UFv &WF&UUFVv &i&kUv~ YUv~ 0Uv~ 0Uv~ :UFv&@Uv~ BUFVv &K&MUFVv &O&Q44UF Fuv Fl# Ph|RPv' vvv FPh|RPv'U~ !uhf$ ~ u hg$jj hI$vvUj FVjRPj NQBF#u@v&&d FVvFVjRPvNQBF#t Ph_oFFv&;s_&@ *FV;u>@ FNjjQPv vRFPP(~uvvFvv+U+FЉFVF~uA+щVFF;Fs_v&:4uFGv^&*-0F+R RvvN+Nv~tF҉VF뙃~ u+Px% PPvv8+PPPvvFV+Q QRPFVjhRP FVN+VQRP FVFUFF^ &@FjjPFP#uFF*F~t F:4uNF+FV}BFv^ &@FjjPFP#thE$zPh|RPv'+~t F:4u+Uh\$vvj|h]$vvj|h^$vvj|h_$v v j|h`$vvj|U*jjP#t"hX$|Ph|RPv'4. Ķ&4v&D&D%PjVRQhF#u6Pvw#t%vP' v\PS<Fv&D% fPPR:R$RRhZ$|Ph|hZ$|Qh|+ľuA+AĶjfRQ #u@+fuA+ыAf^5v&D'&D)pXjPPR #uG+PuA+ыAP^5v&D'&D)`&D3 j:PR #u@+:uA+ыA:^5v&D'&D)Xj$PR #uF+$uA+ыA$^5v&D) '*&D)&D3hJ$|Ph|RPv'+'v&D+&D&D&D &D &D&D U+F;F u B0F$F #t+ҹ VF F0vBF܋FFFFV;s+Bv&Fv^&UF~ ujjP+PdPF +RPjh +PPF +RP2RP FVF Fu vB0FL++FV}Ajj vvv F^v~ uF=u 4RFF0vBF봋FF~0uF FFV;s+Bv&Fv^&Udž^%`bFFj$<F;F }pv &+ *FPPRdR<vƂdb`dPjjjj9 #u hY$zPh|RPv'+FPFjjb`'<#u$hhI$zPh|RPv'+j$<jjj!<FFF;F}YjPdRjz<jjdPvDRP&t%\PP(\ujvj!<dž^F럸 U^ v.` j Y  L j |~jRPj vPBr#uHĶ|&&d tVt|~jRPtvPBr#t Phu(v&t&t#644&D&T44Ķ|L SQ&- &dP6464#u~|v&|ujjxzjRPj<#u hL$FPh|RPv'|jzx64V<+ľxuA+64&T%zx64&t&46464#~ u64&t&4jj#+U^F^ v.: X 9 Hg|4 PRQVSjPG#jPG#jPG#jPG#v&t&t#644&t644jP5V #u4#jP645V #u4/ 4 jP645V #u4#jP645V #u44jP645V #ug464&t'&t3FPA64&t)&t3FP,j FPG#j FPG#j j %jj %64&D34hJ$Ph|RPv'+64j j!>4uFPPPPP4v.q { X+uA+ыA>4564&D'64&D)pD+uA+ыA>4564&D'64&D)`64&D3 +1 uA+ыA>4564&D'64&D)D+uA+ыA>4564&D'*64&D)64&D3FFFj FP"j FP"+~uA+щV~uA+v;t;uFd$~~ ~~FN$~~FO$~~FP$~tlFP+~uA++QR/FVR+uA++RV F~u #uFQ$~uFR$~uFS$F#tPPh|RPv'P+uA+ыA>45FP64y64&D'FP64d63 4&D)464&D364&t&46464#? ~ t64&t&4jj#+>4uF4w>4uF4c>4uF4O>4uF4;4j j %jj %!4 ~ u464j j!%64jj!~tj j %jj %U,ha$FPj|hb$FPj|hc$FPj|+~ v&t'&t3VR~+~uA+ыAv~ ~uA+щVv&|3 u6~uA+vԾ~uA+Av~ 7+~uA+щVԺ~uA+ыA5 v~ ~FF+~uA+ыAv^ ~9~uA+Vv&t)&t3VR_+~uA+ыAv^ ~9~uA+Vv&|3 u/~uA+щVԺ~uA+ыAv/+~uA+щVԺ~uA+ыAv~ ~FFv ^&U+~uA+ыAv~~uA+щVF=} B FFjFPG#+~5uA+ыAv5~~uA+щVF=} 7 B FFjFPG#FPvvjFPG#v&tFPj FPG#v&D Pjj!v&DPjj!FPvvwjFPG#v&D Pj j !v&D *Pjj!v&D*Pjj!FF= } B Fv&D *PFP]jFPG#UFjjF^&@P{P#u8{*F~uHF;F}@jjFv^&@P{P#thE$|Ph|RPv'+ ~u+UjNP"j P"~ uv&|%u+$NP+NuA+R#u9 hT$'P+uA+R#u hU$FPA+NuA+уvhV$+uA+уvhW$VRh|RPv'+uNP+NuA+Rb#tNPv&D P+uA+R)#tPv&DU^ v(.>~_______;___ _;_w_:DTv&t&t#44>5uRP#u?5jJj64464>4%64644Pj6464#u_64>4%4+Ej; 6464jj644^&G&O&&L4464&D&Tjhj#hG 6464#tgj64642jj644^&G&O&&L4464&D&Tjhk#h 6464#uhY$FPh|RPv'+[v&t&t#|~#u#u44RP/64&D~ u 64&D~ u 64&D64&DPjj64&D ~ u 64&D ~ u 64&D 64&D Pjj64&D~ u 64&D64&D Pj j V64&D ~ u 64&D 64&D *Pjj*64&D~ u 64&> D64&D*Pjj!v&t&tjj~v&t&t*,Ujhi#h%vv#uhY$FPh|RPv'+4GetGPSNetListlbox_addUPvvL+~uA+Ѿ~ uA+Av ~FVRvv~uA+RPPPhrm#tv v hJvvR v UhXFPO+~uA+щVNQRPPPPF#th4 D FF= sR0uPFPlP(~OvFOvNvv^Ŀ7ķ7^&F릚P(@ hjFP+~uA+щVNQRPPPh7#t;hzjjjjh7F#tPh5+5uA+R<6767jFP4F#u%v&%s2.0>XvtChMsg.bin2.0>XvtNls.sys[sys]2.0>XvtNls.sys[sys]Nls.sysU^SP\ u].Ms].]U^SP\ u].Ms].]U^S!P\ u].Ms].]U^S#P\ u] B .Ms].]U^S%P\ u].Ms].]U^ S)P\ u].Ms].] U^ S*P\ u].Ms].]U^S7P\ u].Ms].]U^SP\ u].Ms].]U^"S3P\ u].Ms].] U^S P\ u].Ms].]U^S"P\ u].Ms].]U^S$P\ u].Ms].]U^S&P\ u].Ms].]U^S+P\ u].,D Ms].]U^ S,P\ u].Ms].] U^ S-P\ u].Ms]. ]U^ S.P\ u].Ms].]U^S/P\ u].Ms].]U^S0P\ u].'Ms].#]U^ S1P\ u]./Ms].+]U^ S2P\ u].7Ms].3] U^ S4P\ u].?Ms].;]U^S5P\ u].GMs].C]U^S6P\ u].OMs].K]U].|U].U].U].8F U].U].U]U]U]U]U]U] U]U]U]U]U]U^&&WF F u#VZ\B$VXZ&F F^ &?TNt4hF PR&GP^ &O>PF u+JTu4-^ &GP6TP&PP^&Z&WN] jh@8D#t"hD6+D6uA+R<+jDUvUFFjjvFPD#t+FVU+FVPj vFPDFVUFDH V#u#t RPUv&F V FVv&"tB<~u9+|uA+ыAvF~v&*v&F봋F V U +~uA+щVFFFF;F}S~t2v&8 u(F+ÉFF#~Fv^ &@ NFFv^~&^ &@Fv ^& UFVFVv&<t9&D&T#u#t RPv&D &T #u#tRPFvvUF V #u#t RPFV#u#tRPn+UFFFFFFFFjjh)#FPD#t+vPJ v،FډvF&DF&Vj@PFV#u#u vvRPbF FFV;|ivvԌF&u FNNGFvFvF^&u+uA+BVvԃVvLSQUSjv&D&T u+~ԃuA+ыAvԃ^&Fv&D^&&gvvv&tvv،F&DFF FF#uj@Pv&D &T uv+fFF;F|^&G &_ މ^FvvԌF& tF+~ԃuA+BVvԃVvLSQSj\L v&D&T uy+~ԃuA+ыAvԃ^&v&|uA+щVv&t&tj RLF܋V;rVދv;f~fv&D^&&gv&D%@@^$&g&Gv&D% ^$&g&Gv&D% @^$&g&Gv&%v$&d&DvvF]F^&_ މ^FUjjv&D &T u"v&\ &D ^F&&g&Ov&t vF v&FF^މ^F +v&FF;F|^hN މ^F&G &W FV uv&<u&D&T#u#uNQRP~fP4v&t&t+~uA+BRjv&D&T uvvvvO+~uA+ыAv^&FCF vvFVU6FFjjvFPD#uHvvFvF&D@Fj@PFV uFV#u#t RP+[v&D&DFFF;F|'^&G~&A&A&Av&D@P^Κv^&@ &Pv&|t=+&t ~~ʌF̋uA+ًAtP v^~&y F^&p &F^&G~&Av&D~&Av&D~&A v&D&DV+~&Qv&\Kv .J Z N N I 1 F^&@v&t^&&PFVF uV^&v&D $*䙉FV#u#t#ute#tutBnF^&&P |d}&)@F^&@ CF^& ,F^& F^&v&DtF^&H v&D uF^&HkFR ^& ~&Et^&H v&D@tF^&`v&DuF^&`F^&@ =}(=}&hF^&@ F^&~&Eu^&`v&D uF^&x &@GPWvΚH&FPFPj$, uv^&p&p +~uA+BRv^&@ &P+~uA+Av^~&y F^&~&Et^&H v&D@tF^&`v&DuF^&`v&D uFT ^&Hv&D tF^& F^& v&DtF^&H v&D@tF^&`v&DuF^&`v&D FFFvvFVUPFv&t&t F^&xt&p&p FvvUjjh)#FPD#uF Fu+vvFF&Fj@PFV uvv+FFVFVFN#u+FvF&Vt v&LFFt v&L@FvF&v&DFu ۋ~uF tV v&t@|v&DF tv&L&DvF&v&FR~v&vvFVjj6 "Ȏ&D&L&D&L&D&LƒU~tFu=sjh6 &D &T  ujjFP/ F#tv&=t#uJjjFP/ F#t6"6 vDRP&*PjjjhrmF#t@  v&6 &6 &4&t &t hjjFP#F#tU~tFF6 &\ &D ^F&u&G<6 &D^&G>6 &Dv&D< &Gv&D>6 &D6 &DX &T uI6 &D&T&D&T&4&t &t h&t&tFP#F#t~tjj6 &D&T u6 &t  &6 &t&<ͫt+PP6 &\&w&w6 &Dt @ &DF6 &;Dw&Dj6 &t6 &D&T uF6 &D=vN&4&t&tP&t&tFP#F#tF6 &;DsF46 &L&t6 &L&t  &F6 &+D&D&D &T #u#t RPj6 &t6 &D &T  u+|6 &D&T#u#t RPZ 6 &D&T#u#t RP6 &D &T #u#t RP+6 &D&T&D&T&D &T FUP~t|6 &<u+n6 &4 F+6 &&;Tu&;Dt&t&t6 &D&T#u#t RP+6 &D&T&D&TFU~tFV6 &;TwF+&D&T&D&T+҉F#t.&D&TĊ*-Ԋ*&D&T6 &4&t&t&t&t&tFP##t+KF#t)6 &L+&D&D &F &G&WU+F\ v&&T;Ft=6 &<uvh}F#tF =t = t+*F#t F @F FFF+6 &t&;Tw:u&;Ds2vvpvV#u#t&D ;F u &D;FtF볋F+6 &t&;Tu&;DtF Fu4{~u"jv&tv&&T uPv&&T &;Wr5u&;Gr-v&D&T6 &L+&L&\;vu;rv&&T6 &D&T+҉F#t.&D&TĊ*-Ԋ*&D&T6 &4&t &t &t&t&tFP#F=v2~u)v&&T6 &+D&TFV~u}&t ^^ @‰FVFHFF;F sv&*G~Fjv&*@Pv&&T uF+~uA+ыAv6 &D+^&;Wvu &;Gr6 &L+N&t v^&?6 &D+&D&T&4&t &t &t&t&tFP#F=w~uFS6 &|+~^&O+6 &t ^~&?~v&L6 &t v^&?+ U~ FN u +K]H]U>^u^PFF>_ r&F=sPvvv v vv FF~FF ;FvgF` F~uSN F;vI;sV F +FFvFFPFFPFPvFPP4FFFF둋F]UFVFV+UPL+uA+Ѿ~uA+AvhR#t#tylPc#td+uA+Ѿ~uA+AvhR#u #t+rbUvvUvvUvv6Uv v vv) )uhl6)6)UUb vvf˚UvvUvvv v j Uvv`UN#uD77FVv&;Fu&D;8u&D;8uv&D &T #u#u+3ҡ7 7uBU v#t9F;z<|h88=u!#h$628608h|RP}(jFV t\j1FV tKvvv]FFv^&x t+~uA+BRv&D&T uh1$628608h|RPv'o+v^xuA+ыAvp^&Fv&88&D&Td 77&D &T 677vvU6767+778|#u67&D &T 77UZ#u5~ u67N77FVFF;F }1v&D &T u Fvv&D &T FVFv~Uv vvwU+F;8u;8uhTv&|}hU,v&@&B;8u;8t 88RPFv&DF6868PFPFv&(&$&& uPPv&$&& u6868vFPv&&&$&(>#uhq$Fv&$&&FVF&f (F+FF&.&*&, uTPv&*&, tfNv&(&ļ$1^&Ŀ*vvPvvv&<&> uQj1v&<&> u"h1$628608h|RPv'+v&>&<j1vv v v&>&<!v&u(6868vFP#t^F$*v&v&tv v Vv,Fv&|t +F&Dv v vvvF@u+v v vvvv"8$8#u#tRP&8(8#u#tRP>8@8#u#tRPB8D8#u#tRP`8b8#u#tRPi *8,8#u#tRP+&8(8"8$8>8@8B8D8`8b8*8,8˚~#t=88.8/0828#u#tRP0828Uv&$&&#u#tRPv&*&,#u#tRPv&<&>#u#tRPFV#u#tRPv v #FV#u#tRP>8t6868hUFFv &uPuQ vD.ps_v&@&B;8u;8t 88RPvvvvv &|t6v&D&Nu&DŽN&DŽPvvRV*k v&Dv &D&TFVvvRP>F@uvvvv#uavvv#Nvvvv7:v&|u-vvVv &t&tvvv v v&&&v&@&B;8u;8t 88RPyv &\v.D4 vvjvvjeFvvPqv&FFFv&H~u&DFv&FFvvvjvj3#t(hw$628608h|RPv'F V FVvv*F=uv&Dv&Dv&@&B;8u;8t 88RPkv&tm ftv&Ht &Dt+*Fv&&VPv&&VvL8v&JJ8&Lvv6L86J8R vvjj~(vvvvvvvv U v FV tjFV u+v&F &Dvv#FV~uF F~ t v&t&H~uFv&\&FF v&t&Dvvvvv&t&tU&#u+KvvFP`8b8#u#t RPvvvvFPFVV8jjjQ#uLh$628608h|RP}(jjj)#u!h(o fh$628608h|RPtUFFF08 28uh0828 uhVFt9hf;>LFVRPs88V8Fvv">.8t>V8tjj988L8 8t>.8t6T86R8Y L#uCh7$ L6T86R8x L#u(h8$628608h|RPv'L.86T86R8jvj88 uLL&#u{6868FP`8b8#u#t RPvv6868FPFVGF F uaWFFV FVFPF@u+5vjjj#u!hw$628608h|4q RPv'+U08 28uh0828 uhaj1FV u!h1$628608h|RPv'+avvvj1| u/vvvhs$628608h|RPv'+vvv^FvvFUF8U FX8 Z8uhX8Z8 u6X8&Ds\8 ^8uh\8^8 u6\8&DsF Ft6X8&|st 6R8T8jlFV uvvL6)&4&t&tvvh{$628608h|RP6X8sVRh#6X8mVj| u 6X8&DmX8Z8R8T8vvjlFV@s  u"h1$628608h|RPv'+v&*+fuA+ыAf^vvvvPW#u2+~uA+щVl~vv+qX8Z8\8^8R8T8+~uA+ыAvR8sh#6R8mVj| u 6R8&DmvvUF F uv&<u  F V >N8tav v G tRv v #vV#u#t8&\&D^F#u#t &?kuv v vvSv&08 28uh0828 uhXv&u tv&\vy.O_Uhh$jLu Vhj$j #uIhj$hi$j#u7hi$j#u*h$628608h|RPv' r;*+2.0>XVT.hlpU^ wuS#t4uuu*#u+#urjdFV u"h1$628608h|RPv'+v&t&tvvjd1!+~uA+Ѿ)&&uA+A6)&4&t~Fv&t&tvv!vvv&D&T8886868&hXt#u+P %>8t6 86 8hR>8t h$628608hXw |RP}( #u>8t6 86 8h+# 8^>8t6 86 8h>8t6868h>8t6868h+8~ tD|+U^ +#u*#t@#t!uutOuv&D&T888>8uv&t&tj#t+DFj3@~BR %~|pv&|tfDFPFPmtFFVN88QRc|vjjj|#u&hw$628608h|RPv'+8U^ wu#t4uuauD*#u"+#udy FdjFV t>v&t&tvv#88v&&T&DjdFV u"h1$628608h|RPv'+v&t&tvvjd1!+~uA+Ѿ)&&uA+A6)&4&t~Fv&t&tvv!vv 8v&D&T 8 88N>8uDv&t&t#vV&|u,v&t&tj#u88#u#u>8uv& &tNv;u;u868VQc|DFj3@~BR %~}v&|uDFv&t&t#FVvvp{ &DPjjj|#uThw$628608h|RPv'5v&t&tjH'!8v&t&t#RP+U^ wu@ #t1uu u*#t-+#uf8v&D&T888>8u>f8tv&t&tj#uf8DFj3@~BR %~}v&|uDFv&t&t#vV~‹&0jjj|#ubhw$628608h|RPv'Cv&t&tjH'/8v&t&t#FV#u#tRP+UPFa#>8t6 86 8&8|} jvh7jj#u"D|h6$628608h|RPv'UPFf#Xt#th}$628608h|RP}(Z>8t6868j6868&8jvh$jj#u"D|hx$628608h|RPv'UPFe#>8u8jvhjj#u"D|hy$628608h|RPv'UPFg#>8t16868vv#6868j6868&:jvhvv#u"D|hy$628608h|RPv'Uv vvF&< t"u#h$628608h|RP}(+FF;F&^&V t"t*=uF NFH;FuF8FFH+FFF;F}!v&F< t"t*=uF׋F+FVV+ЉVRFV&*v~ߋ^FPSDRP<v^&@*&@ƒ Uv&DF&4F&:F#uv&Ĵ6vFFvFF;F}]Fv&;|I&;DC&|u &DF6868PFjj>8&p&0'<#uhrF뮸UF>J8HFv v l;F#v^ &&@FF>L8HFFUPv vvF@u>vv&t&Fj|#u"hw$628608h|RPv'+Uv&&&$&(vFV t$v vvvFvv~u>vv&t&Fj|#u"hw$628608h|RPv' +U+FFF;F rv &*tt2oFv FF&*FF#~vVF& NFv FF&*FFF&FF#~VvNF&Nv ^&vVF&FTF U FFvv FVjv vvv vv jjhtx<uv&&*v>F8 th vvFV u+vvvv FVUvvjB*8,8 Ћ uh1$628608h|RPv'avvjjB6,86*8j Hth2$6*8&:8|:8><8|<8:8<8F҃dR>8@8 u h1$628608h|RPv'>8@8FVF V FV+FЉFVF~udvF^&7&G+~uA+щVv&@v&D+^FFV+FV|F륋vvFUFVFVFj*8&p&p v v v v jjh<8jHts<8FB8 D8u6dPB8D8 u"h1$628608h|RPv'+ 7v v jv6D86B8j Ht6D86B8+B8D8U F*8 ,8u(v v *8,8 u6*8&DzF8 u.h$628608h|RPv'vv+<F~~%v sVh9$628608h|RPv'~u vv+v sVh:$628608h|RPvvR H8vv vv?"LFH8vv^#tut|v sVh;$Sv sVFV#u#t.8[>F8 uh$628608h|RPv'/v sVh9$628608h|RPv'hhFV ULjl u"h1$628608h|RPv'Lzh FPR+~uA+ыBL P L#u3hz$628608h|RPv'L+hh#FPj| uF Pjjj   uLL88RPc|#u+UFF;F8}7|<&p&0vvv#u6|<^&@&PF+U|< ~F8 }6v v 6F8|<&&P6F8FV&@&PF8rb*.hlpUFPVRNQ$FFFJ8+<uA+щVh8&P;VtF̸UP6868v F+>8&8uA+ыA>8&0~UF F u+~1~F1j1FV u!h1$628608h|RPv'+avvvPFFv^&x t+v^xuA+ыAvp~ vvUPv&tF@uv&DF@uF~u ~u<8H'~t<8H;FuF~tNFFFvUPv$ B8&F?>8&@U FBV+~uA+RFV u#h1$628608h|RPv'+z+FFF;F}6+uA+ыA~~FFº+~uA+ыAv~~FFVU+~uA+BRFV#u)#u%h1$628608h|RPv'FV.+~uA+ыAv~FVUF:8HFFV;W™+F>8&p&0vvF@ F@F~~F밋F>8&@U v0 &&TFV&|t RPc|v&DF<8HFF;Fw`B8&V?>8&p&0vvjWF#t#F@v&DF?>8&@F똸>N8u>8u>8t+ː UvvFFߍ@U0vv_$FP_ $v~fFPjR $hjb$U0~u v v v v _$FP_ $v~F u,Ft F$fFFtF$fFFtF$fFFPjR $U4v v _$v v FPv v FP@#< #uFP_ $6)ƕV$6)Vg$FP $hjb$6) V$FP $v v v v FP FFJ8V+ЉVvv$FFvvv$Fv&F&v v V|F#u"thr$628608h|RPv'UP+F;Ft4F;F}v&8uFvv vvVF+FP$ UFV FV FU$+FFV NV Nv&(V&$&&^N&v6L8)v;FuF^N^N^Nډ^A NFFFV;Vu;Fu_FVv&F< t"uF;FsF~uFH vF;Fu;vtF3ҋF;Fu F;FuBVvvF+FPF;F|(FvF+F^&@v+vv~u~thF;F|-FvF+F^&@~tiFVFVF~t-FvF+F^&@FVFV~t*F~uFvF+F^&@~u"h$628608h|RPv'vF^&@F Uv&>J8U+FFV NV Nv&(V&Ĵ$vF;FuFvFvFvFvFF;Frv&<uFFvF;Fu;vtFF3ҋF;Fu F;FuBVFvF+FT ^&@v+vv~t"~tFvF+F^&@~u"h$628608h|RPv'vF^&@F UFFv vFv&&+F;}FF;F}FFU.+Fv &BVډF؉F&$&&VN&4V;Ft F& v &Fv v v\FJ8FL8FFv &FF;F|L8FJ8Fv^ &@F&P +ЉV~tJu v&8u+F؋V;t;VuvvvvVvUFFF~t_vFvv܉Fv &,&*vFԉVփ~tFv&Fv&DFFF;` FvvvvF;F}FFF+FFFF;F} +FFF F+FFvFvv܉FvvPVvvvv&tjvvv#$FvvvvVvM~u vv?FvvVv#$FFFFFF)FF;FuvvvvVvFF@FFFvvv v  UPFF;N8}/<&@;F u&;Fu F&@F+UPFF;N8}#FV<&;Pu&;tF+U+FFN8V;}Y<&P;Vu&;Vu FN8~t'Fl <~F띃>N8u6<6<<<UPFF;N8}8<&@;Fu&@;8u&@;8u &&PF+U< &DŽ&DŽ&DUvSFV#u#tRP6>N8 uh$jFV uh1$><u$6868h<6868hJ8t>L8uL8v&JJ8&Lvv6L86J8R vF^&w&Gvvvvvvv#vvvv|#u"hv$628608h|RPv'+vv&FVUv &FVlFv &J+ЉVF^9up8tdKvy.kuF#~aNJ8)FVF;F}NFJ8FCF;FF)F3FF;FFFFF@v & ;}+VJVFv &&DvvFPJ8)Fvvjj~ Uv&HFVlF;F}v&J+ЉVv v jjv)v v jv&(UFFFPFPt~tjjvv'<#uh|̸j?<UPFV FV j$<~u*F#u3hr$628608h|RPv'~ucFj$<FUj$<j$<#uh}v vvm#u+#j6P8j!<#uh~j$<U8 8utL6T86R8Y L#uhL6T86R8jjj 88 u+6R8sVh0$628608h|RPv'LL+FVFF;<8|FB8&F?>8&&PFVNt#RP*QFV u+lFjjvv'<#u:F?>8&p&0hp$628608h|RPv'+~t vvF748 68uh88$d4868 u-+hhhhh&#t'tt>668648md hthjjd#uhv'+ U668648h-FV u_vv_$668648d#t"Nd tvv4 668648d#vv668648-6)&@U>668648FP6dFFؙ;|FFP $6)ƾ~FP $FPFPFP$FPjjvvԚ$FP $Change printer setup?CancelPrint SetupPrintInvalid return from askPrinting failed.TopicUj~vvFV t++~uA+уvv&D*P@|FFFv &DU vv#vV&tvF&FwM.v&DŽ2v&t &DŽv& t &DŽ  v&DŽv&Uv v#vV&D&tvFV*R@|Fv&:uIFv&:u7Fv&: u & tFv&:u &tUF VF V^wO.v&&+v&&v&& v&&FVFV UvF&;uF &;u F& Fv& vv v( Uv&jFV u+F~}Ehv^&@&P u#h1$628608h|RPv'+FFF=}wV F R^&p &ph | u'F HPhs$628608h|RPv'+4v^&p &pj#$v^&v&F끋FV UPFF=}#^&@&P #u#tRPFvvU2Fv v #v҉VԎ&D&TFΉVv v _$v v FPF+FFv v hl$FPWF؉V u+F(3ҋFN;~BVF#tJvR~V+ЉV⒙+)FFv&DŽNv~΁R FV;~+ВF=}FF-FJ8и+‰FV+ЉVFމFv&DFFv v _$FPv&t&t jv v jh̶ jjhv&&PS^&w&w v^FFމFv&FF܍VR&t &tjv v jhjjhv&&PS~&u &uv^FFމFv&DFFv v _$FPv&t&tjv v jhjjhv&&RPVjvPS^&w&wv^ FFމFv&DFFP&t&tjv v jhjjhv&&PS~&u&uv&&Vjwv^v&&&&v v _$vv{UF@tHvvv̚#t6vvv̚#u$>v v v&DP7F=tFFv v vvv&t&t6|UF F uhF Fuh+~v &D*^&Gv &$3<uB^&'&v &$3<uB^&'&v &*w0.v&Dv&Dv&D v&DFVUFFF FFFFPFP RPjR $UF%]UQ~tE6fJPcFtPPcF6jJPcF6hJPcFK ]UQQv^F&]UQQv ^F&]UQQv ^FFV]UQQv ^F tv&Z&TЋ]UQQv ^FFF&Z&WY]UQQv^FFV]U $6fJ`PPP(>`u6jJ`PPF t`>`t'5Pu+JVP5PR<PPFP/ P(^&G PbP*P(^&wfP*P(^&GjFF;jsf&F`P(P(6fJ6`cP(tP6`cP(6jJ6`cP(6hJ6`cP(5Pu+JV5PR<FprH@P T FbF t'T5Pu+JVvT5PR<P D ]UFP(F utFFFFN NNNFF*F FFFFFFPd F u)vFPd F uv)F uFF]UrJ9FvFrM~NvFFb&Z&Pfv& 8tnlfv&JVP~J@R1^Y]UvF;jsf&8t&l]U vJ&7FPd P ^&G ;fJt;jJuN^&w&_S^&w&_S^&_$S^&_S^&w^&G&GJ&GJ^&G ;hJt;lJu^&w^&G"^&G =tt=ttl t ^&G^&G6fJPc^&G u6hJPc^&GvJ&7FP F u^&G!S, P иPP ^&_ S ^&GS, P P T P 4 ^&G!^S , P uU:M]U3ێË]UظLPPFP/ u%^&&G%b&v&3ێ]U WV<P+PNQ~v/ ~vF t_^&?uP&7<P@PF t5A PFPQ~v~vF u9Fu<PFPQ~v~vF u9Fu<<PFPQ~v~vF u9Fu<<<><t F u{=PP~v~vF uY=*==,= =.="=0=@D=F=H=J=P^&7L=P/ FL  =&G *@=&G B=F^_]UWV<><u< t<tvvv v vv<֐6F=6D=F+ҊԊ*RP$*=^ &6J=6H=F+ҊԊ*RP$,=^&><u>=^ &9s&9&)6=+2=@&'ȡ@=&:=+RPVQ$2=^ &6=&9v&<^&9s&&)8=+4=@&'ȡB=&<=+RPVQ$4=^&8=&9w&.=^ &9v&0=^^_] U WV<><u< t<><tvvv v vv, <֐><tSF+2=&@=&:=6=+2=A+F>=FF+4=&B=&<=+ҋ8=+4=A+SQRP$F<FF+,=FF6F=6D=F+*=+RP,@^ &6J=6H=vv,@^& =^ &9v&"=^&9w&^_] UWV><u < u[><tv v vv<>v v vv~v~v< u^ &7v&4v SV^_]UWV<><u< t><tvv<><t'2=9FrF96=r4=9Fr F98=s%X*=9Fr.=9Fw,=9Fr0=9FwvvFPFP:8 < uvv~v~vu^_]UWV><u< t><tv v vv<><uF 92=w96=rF 94=w98=s:=fF<=fFv v F PN Q:<tv v vv<ܐF ,=N.=V0=^ *=+A+SQ =@+ҊԊ*ڃSQ$D=F=D  F+F @+RPȡ"=@ڊԊ*ڃSQ$H=J=%^_]UWV< t><tv v vv><u><u ><u@=8=<@=8=<*:=B=8<u< t<><tk><tv v vvMF<_t)+R RvvN*+0NvFv&FF<0r<9v~_t~t V^VFV]Uvv-]Uvv]\  USv6t6tv Pvv N +;u;t v6D-Y]UP^=`=.b=vvv v $\=fFY]Uv v vv6~=6|= ]UF Pvv6~=6|= ]UFPv v vvx ]U>uN #u3N F+؋F+}fFf+fv fff]^ VF"tĊ*ߊ*r #uP+RPv v Yv^;wu ;vI^ v ++ґ]Uv v vv ֋]U>udV V#}+ҋF V RPRv V1V#}+ҋFVRPRv Ft+ʋh  Ft+΋]fFff~ fff]Uv v vv #}^ v ֋]Uv v vv ֓]USN v^6F 6GY]U^=`=.b=vvv v $v&\=]UFPv v vv ]UFR=FR=vvFF&D t&D @tvv v &D Pv\F;V ~~ F uA+v&T#tER^ F ^PS&D Pv\FF+vFV&D;Vt;FtFF)F~v(6>>Pv&D Pv\;>tFFN~w^v&|u&Dv&D @tst  &D=|V+ɉVNN^+|ډNv ^&?F+vFV&D;Vu=;Fu8P&t&t&T Rv\=tv&D&D&T&&T Fv&)D&FF)FFF=v5 FPv vVv&T Rv\;FtFFF)FF#wv v^&?v&)D&FdFv&DN+ۋ+|Ӓ ~~ F N^uA+v&Tv v^&?v&DFF&&DN^+|ӉFV&D+FV}D&D&+D;>} &4& F>>^&?FFN>v&>&)Dv&D)F&)D v&|~ ~v F#w #u<~t6Pv&t&t&T Rv\=u;v&D&D&T&&T~tv&& v&&L~v>R=t v&L FR=F] U vvF&D u R=&L Hv&D t vvLv&L F n FV"| ++}R=F Fu+dv&D tP+PP&D Pvvvvv+~ Fv&D t!vv,YYP+PPv&D PF]UP#F ;rVRvvb=^=F)F ~ wY]UPV==t0V;v)+‰F\=T=t T=uPd=vn=PY]US6> &F<*t<1r<9v~u6>&<0t6>&F<0r<<9w8FF 6>&*Ѓ0V>6>&F<0ra<9v[6>&<*uQ6>&<} ~PuF6>&؉FT= 6>&F>>~PuFFF]USFV>>+T=V=X=Z=F6>&:ue6>&<%t8>%uA+щV6>6>>>>)>0P^ ^뚡>>FVF>6>&* wL.-BB4BBBBBBB&BBB;T= T=T=T= T=F~t+PFPV=6>&<.u4>6>&<-u>6>&F <0r<9vPPPX=6>&&&6>&P^ ^>>>+FV)>w] USF\=V=t;w)V=Y]US>v6\*iwit"XudtotYutMxtk> v6D6T"}6T6\6T>-4T=t>+&T=tQ> > C>T=t7>0>!>T=t>0v6D>>PY]US~ }0^6_6xuW7Nj>>>Y]USv6D6TFV>#u#vb#u=wKFF>*F+VFRv~w=> *RPvv ^FVSL~u~w 6>Ƅ>0>>+>>]US6>\v6DY]US>X=uF Fu +P4>X=u>>X=>;r>V==t ;>vFFFF"tT=u T=uk>#tP>Pb=^=~t T=uDX==t>;v+‰F\=Pd=PU>X=uF Fu >>>\=P6>Ƴ>Vb=^=~t]USPBF%FVV= s0v6|tF7 FWv^6@N~w]US00~F:F+҉FV#u#v Pvs F+҉FV#u#v PvT F\=PFPb=^=]U+\=~uA+щ>F V >>UPvv_]US ^*%u0tzE3v..&M M M M M M M M M PM M M M M M M M M M M M M M M M M M M M M M |PM M M M M >\=P6>6>b=^=>Z=u6>&&T>>>*F& 6>&+ң>>>v6>6>^L>Z=u'v6>&t&t&t&t&4 4> v6>Κ)<4>6>&&T>>>3ɀ~PuAQRP^\= 6>&&>F%\=T=uPPVRb=^=T=uP}6>&F>6>&&TFV>#u#tZ6X=+~uA+vX=;rv6\=T=uVvvvb=^=T=tvR=]UvvF&D u R=Fv&D tv&|t&D t+v&D u&||x&D tP+PP&D Pv&+DP&t&t&D Pv\Fv&+T;uFR=Fv&L v&D&T&&T&DFF]U +FvVPB+ӹvV+}|++VN} lv&;D tcvF&D t>&D t VFYY v&D t8v&D u&D u&t&tYYv&D Pv&D R=FF]UPFvZBtPB;=u;=tPYYF=sF6=6=YYY]Uv9,]UDvO]UP]˃VW&& _^QR˃݃ՃUv ]init+P9,ˌ.ػhfЋ.TX+@"t3>&?>?u>>u...ٛ>t.< t Tt;w+jhh<Insufficient stack for argv[]+SS+UtP>t7>>ͫu/>;>u&.6.66>6>6>66ZD>tV>>ͫuN.6.6.6.6P66ZD.6.6>P> P>- P80387$DD|Aı=@r-@ =r-UFF]UV+V F+F ]UvvF&d PBڌ;u#;u&D P\F<t <tv&L `B;Vu(;Fu#v&D P\<u v&d v&L pB;Vu ;Fuv&d v&D t6Pv &D&TY u&d v&D&T&&T&Dv&D]U]U]UF ▸4;>t;>tFP>PPFPZDFF >>FPPFPDF#tP>RRVRZDFF<tG<tC<u$~tPFPPFPZDFPFPPFPZDF^*uu F#tNFv^&F<t^< tZF;F wM+FF ?tR=1F >>v vv FPDF=tPF]UPF >>v vv FPZDPF;F s >R= uR=B FY]UF >>FP~,F#t+]UAP6A6AAP]UA*v&A*@v &Av&] U A*v& A*v & A*v&] UFPVRNQ+PdPF+҉FVF<FVFVFFVRP]US4Au~A#|$=jt AAA=mt=nu+AAAAAAA@#}щA]UvvXFV+AFAYYA=~ .A9FV] ː@  @_mwARGput_parmUS6&A(A*A&7&G~6M6u>&Av6tF6&A6&A&D*AY]scan_args U+PPVR~t AF@"A$AFFH|ZvHFF@~9vvFP~t< AF@"A$AF;F}FNjF;F}F릋]count_args UP"A+ A A+P8 A"AF%t+VFY]set_up_args Uv6*A,A6&A(A A&AP6*A&&D$A] U^ F㑋Fʖf ֒]U+~uA+щVVB~"v^&:F uƌF#~N+]0U R=F+R=Fv&v&Fv vF&Vv&^*+tfat"bumrtEtuiutVwt~~tuFv&3ҊFR=t~t-+R=v&<tPvv0+ PvvF>R=t v&FR=F]UFv惼ZBt F~v~vR=FFv捄PBF^FV]UvvFF &D ~ u&D ~ u v&D  v&D ~tv&L ~tv&L @v \F<t<uF~tv&L ~tP+PPv ]U 3GtBVVFPVRVRVRVRv v vv?F~t FF FVF Ft'vvvvvvvv&L &DFV]USFv6DF ꖁ>v^DPv&&TP v&D&T& &t t uR=n]U6AHFV;*F ▋>> uvcF;F}F֡6A=2}6A6AHP@R=fF]UF >>vVS v>>S vDŽ>DŽ>]UF=u[=tV=tQF=t= u QF=r=v=F=t5=) t0~u+F=t= u~u ~t+P]Uv&<[uC&DFR=uF >>vv+~uA+SPPP62A( >>RDDFP~tF >>FP~tF >>vv+~uA+SPPP64A>>QvVDDF#tQv>>vv+~uA+RPPP62A>>RDDFP~tvF]Uv vv]U+~uA+уrvv1"t+F>R=uw~ uF ▀?F F >>vv+~uA+SPPP^ *0A>>RDDFP,~tvF]U+~uA+уrvvu"t+7F>R=u4 ~ uF ▀?F ~ u3F >>vv+~uA+SPPP.6:7F >>vv+~uA+SPPP^ *0A>>PDDFP7~tvF]UPFPvv+~uA+RPPP64ADPvPY]tmUF Pvv]UF#}]UFV#y]UF\F]UF Pvv]UF P\vv]U+~ uA+BVv ~FV]U+~uA+щVBF @ ~uA+щV;Vw FVF+]HEAPCODEoffsetUF+҉FVF +FV++FV}vvPFFFV]sub_ptrUF+҉FVF +)FV~}vvPFFFV]each_chunk U FAHAPv&+RPVl"uvvP9v&D&TFVV^ ^vFvFFVFVF Fu]each_item_in_chunkU PvvXv&tVFV&^&;Gt$SPvv^^ vv^^ "vv^^ FVFVv&|u] each_allocated_itemUL FFU PFV#u#tRP^ ^]USU+Pvv]USv&|Du6v6t6D6T#u#t RP6\ 6\FVv6t6D6T]each_free_itemU BADAFVFFvvF&|Ut VPv&D;Fu &D ;FtvvPFFSv&tVv&L&;tvvPvv^ ^FVFVv&D&T FVF FtV]remove_from_free_chainUv&|rY&D &T u&D&T BADAv&D&T &t &D&T v&\&D #u#t&T &L&W &OX  ]US]insert_into_free_chainUv&tVvV&|t&|UuVEv&Dv&D?v&#t^PVFV&|UuGVv&Dv&DvF&tVvV^&G&vvZJv&|r@BADA^F&\&D #u#t Ž&w &Wv&D &D6BADA]search_free_chainUU0PtFFfFV]USv&D^6;Gr 6w6Gʋ]normalize_relativeUFVFVN v NvN;Nt RP PFV]insert_chunk U+v&D&TFAHA&d !L&\;HAu;FAtFA&w&GFVFAHAv &DU~tvvVRF V v v ]add_new_chunk UF+FV+VQRP Ԋ*҉FV++}FV-} FFvvlFV uvvFF&&D&D&D&D vF&&DDFV-&D&D&tVvV^&G&&D&Dvvvvj]malloc2U >:AtFsF~v+ FvxFV uvv`FVF Fuvvv&D+FF=w &Dp "FFFv&D-PA&DDLA&DF&DPV FVRP^^ vvvFVN& ~v?F&D&DU&DLA&TPVN& vv FF>:AttFV] zU]hmallocU+PRvvvV>A]possibly_free_chunkU]errUSv6t6tPnfreeUF FuFFVFV>:Atsv&|Du#v&DFPvvq&F;Ft~v&DUV5vvV>:A| #tf]check_heap_integrityUU PU% Py]US]US]HEAPCODEbefore_freeingUS !HFv6T ;vVNv~v6D;Fu 6D;Ftfv6D F6T;vV~sFnv6D6TNvFVNFvv~]reallocUvvFF^&G*F^F&WVv~JAvvS +JA!HUI Pvv VFV>!Hu9> Ht2UI PvvVFV>!Hu"H"HFF "H>>=F >>FPvV,Pv>>FVFV v v`F >>PPvV,Pv>>FP,Pv>>FV+FV FV RP,PFV ]U+~uA+BV~ uA+BVF;rV;rPv v vv$]U+~uA+щVv~ uA+v %v ^9vv^&‹]U>t6A6AtAvvt6A6AvvdA]UF#tR=]U~v0F*>>#tPv]UF*P D ]UR=FR=vv>R=u FR=FR=FF]UF#|=~FR=F+R=vvF&d &D u&|tN&D t&D t&D t vv,YY~u&v&D t&D t&D uv&D)F V vv v v&D Pv&D&D&T&&Tvv v v& &D P>R=u FR=FR=Fv&d F]U vFvFR+QQ&D PFVv&D tC&|t<&D t&D t&D uv&D)FVv&D++NvFVFV]U+PPPvve v&d ]UR=F+R=vvF&D uFv&D @u&|ui&|ub>>u[&D tR>&\&Pv&D&TRP&D P\@v&DHucv&D&T&&T&Dv&|uV&D tHv&D uP&t&t&D P\v&Dv&|uv&D&T&&T&Dv&|&D=t& 'D&T&+&T|v&T>&>uk>v&D&&T&LA&\+ىFV>~uA+Cv&\v&DH&T;~&&T–&:>uv&D&;Du&D3v&DH&;Du>>u&Dv&&T&+D&T&Dv&|uv&|u$>>u&DN ++}v&DHxv&&T&+D&TFV&D+FVFF V;sEv&4^~9v^& BV)V F>v&)D~>>&tv&D P\t6PVRv&T R\F#u>v&DF:>u v& 8>v&DFD;F uPPPv&D PKFv&DFD;F s32v v6DVv&D P\  )F#tFD)F ~ wЃ>Du~ vv&L >R=t v&L FR=] U vvF&D u R=&L Uv&D t vvLv&d &|u&DF n FV"| ++}R=F Fu+vvvvvD+~ F]UvvF&D u&D u6v&d F V #u#u&L &D&T&&T&Dv F #u#t`^&w~ v F ^&+w&GvF&7&G u&w&wYYF V v&D&Tzv&D t&D t&D tvv,YY#0v&D t&Pv&D+QP&D P *v&Dv&D u&t&tYYv&d v&L ]UFfFV++|"}+Dt DPODD#~ V;|FD]US&v6D*6T+ЉVRFPv\S|FP|FPq|FPFPv~v6DFFvBFVs* +$FFv6LF06\6@FrFF=} F뵋v6Dv6\6x0t+F@;}6D]US Fv6;D|vV|.6: .68  uvFPFP|.6> .6< Tv\S|Lv\Sq|v\S|.6B .6@  r@v6D#t-\S|D P|v\Sq|v6D]U6FPFPv~v&<tFPF#}*@F#t.PFPFP|FP|TFPq|FP|.6B .6@  sFP|D , P|FPq|FF**F#t0PFPFP|FP|FPq|FP|D P| s+FP|.6P .6N FPq|NF^*Et Gt"etftgt"FF+ F@P FV;|Rnx00~GG FvB^~&AFF~~Fv&]UvFP Sq|] USV==tHD;vR4$DDY]US\=V==t =rV=Y]USFDvV|.6: .68  s&vV|FvVq|@D-T=t@D+ T= -t@D FDlY]USPFFNF;FvD0tF+ҋN+;u;uT=u vD.uNFHv6DF+F)HD]UST=uT=u v6\FD#tP@DPb=^=T=u>DDu v6\Y]USP>JD>_Dt D.v6DX=#unv6TJD;}A+;rЉVʋJDLD!DBv6TF)X=6|t<R@@P.v6|t$T=u>V=t HDT=u v6D^v6DJD;|RLDPb=^=v6DJD;~ +Rd=P$v6D#tP DPb=^=X=#u/v6|t"JD#}أJDX=#t5;~' .v6tV|.6: .68  uFv6|t$T=uHD^9PR HDX=@@HD^PT uJD)X=X=v6T;rЉVʾLD D)X=v6T6|t PPd^PT Pb=^=6JDd=P$v6t DPb=^=v6|uX=#t Pd=P$]US FLDD>_Dt FƄD.FX=#u~v6T;rЉVʾMD^DV)X=FHv6D6|t Pv^v6t DPb=^=v6|u,X=#t%Pd=P$^FHP DPb=^=JD#F-#}@JDF+JDFF  /"JD #}у0vDJDNF>JD׋F=|ϊVvD^6WD@@PDVb=^=]USF>Z=uFF^*Et=Gtet3ftXguX>X=tQT=uFJDH=|;X=~nX=D(FfJD#~X=;r)X= JDX=]USJD#}؉FFF FF~c_D@*X=@@F]U.W>X=uX=>Z=uFFFPv6X=vvv v vvVRvJDF#tP4$vFPb=^=>X=u T=uFFF_D^*Et0Gt2et&ftgt#J 0D;|X=_D*+$>X=uHD`JDH=|;X=~ HHDBJD#~_D*X=H3;X=uAʉHD_D*X=+JD@HD>X=uHDHD\=DDv>DDu] ??? A00.UFVFV~tAV+~ uA+щVv ~N;s+~FV]U~P PFPF>fDu>dDu #u+`DbD]UDPPF#t hD0FD^+Fv&TR*;t FƄgD{v&LR*S^hDv&DR*F#t FvƄgD}v$ 1&D*#t FvƄgD[v&L*^hDv&D*F#t FvƄgD]v&D*#t FvƄgDFFv&L)**hDv&D)*F+vhD]UNv>F+6F^&vFv&&T>FuA+Ѱ^>FuA+Ѿ+>FuA+V;tFvF&@v&&Dv&<uv&<{t<[t<F6FvFuA+Ѱ>>FuA+BF+hDuA+ыAhD>Fv&<\tF>FF6FF6FV+hDuA+Ѿ~uA+Av>FFhDuA+ы6FFvF+>FuA+щVFN#t6F^&8/u&\v&"u<.t&|.t}&|\tsvF6FF@;FrlFv&<\tFFFN;u;uߺ+~uA+ыAvF~FNeF_FFv &&T+]U F#tyvvvFPFP%F#u[vvvv+~uA+RvvFV#u#t+~uA++Vt6A6A6A V@t}6A\H# 4^FvF3&L&;OsBV#t^FvFvF^Fv&Dv&+DF=@&| t#~u6A>A AF#t Pvvv&D ^&:G u2PSvv"tkPvvv&L&DNv&| tPvvVDPvvvv"v&D v&| t PVhA~uv>A6A6AK]U]U>t6A6A6A VgtK36A&D &:DtB&T6A&| t AB6A&DB>A6A&|tA6A V6A&L6A&|r6A6T% 5A6A&L6A&|rV\PSPS+6A&L+&t++>@+v~A#}6|FP6A6A6A&DA>A F6A&D6A6AK]U+FV~:v& u&DaNNv&!D~ tFN&#D/~u v&(Nv&!~ tN&#؈FF]U+PP]U+PP]U>t>~t"6A6AtXt6A6At96A6A6A&d 6AvFF&|?s5&| t~tB>Av&D A>Av&|?@r6`' 6A~v&D-??+ЉV w ~tFFvvv V;rR_F~ vvvVF- PAFv&| t(~t"v>AtBP$z>t6AvF&| t &| u&L F]U.6@.6>LR]?U~ UM]~tctgE ?uƀtE E Պϊ܊2҃t΀UM]]E E U~ ]MUu?||qĊߊ͊ցst l) 7F&E t΀ ~UM]]3333 CDOS_ALLOC sysallocU>Ft-F++FV|v6FFPF#t%FvFPF#t +FFFFFFV]sysfreeUvvF++ɾ+Q]allocated U]least_free_memoryU]>FF% ãF.FÛ>FPF%A=@t=XÛÛÛ.2636&-6&-.:Л&=۾֋6&-6&-uܛ6G6GF6GF.FFFFˋܛ6G6_&6_&6x+ 8_&?6_&/3tr@HÛ˻ >F.FFF˻>FFˋ6_&76_&'.F˻ U!v>A>uH6AvF&D%&D #t&d v&& D& D& D@&D #t&D ]U6A~>u6A&| t&| uv&L A]UF0FdPFP6G4~PP9,]U츌P]HEAPMGMT - heap error # Aborting...)*** Cheap-heap linked in => no heap dump.- 9U*>t6A6A6A VbtA6A~6A vF~u&| tAA>AA3ҊFv&:D tBVF-?&D@FVFPFPFNNFPZ~s~wv~~݀r'FFFFPFPFPv>A6A6AK]UP6G4P9,]UAAA+|A ]UA]UvvF&& D& D& Du+&D&D &D hv&|rB&DB~Hv&|s>VFv&L++| F&)DFv&/ :+DPVv&D]#***Floating point stack overflow***Uv~ 3ۋN&CC] UC v~ 3ۋN&CC] Uv~ 3ۋN&CC] UvN 3ۋCC]U~3ɋE]u=u Ëދ3҃sArE]u]U~%UUU]U~m]]]U~N BE]ur֋3ss 3ɃE]u]U~%UUUUU U U]U!>tvvt6A6Atvv6A6Ad]1 ;UGt6x=&d 6|=&d 6x=&L @6|=&L @Gt 6=&d 6=&L @]U,/6=6=6=vF&D &T ==VYY= =uȋ]UF*FV*V= v+/~r FuFFvF GV*ЉVF]U v~F* AF*AF*AF*AF*AF-lAvvIAAJ‰VFAJBB#}։AA; = AA Aڋ]Uv&4FFVPv\6>>PPv\]UAGvvPTM3 <D@GPO]U츢P]U6G4P9,]ː***Program aborted.******STACK/HEAP OVERFLOW***UPv v |D%GFA~v F% F^wV.Cafaf{{v&&DNA&DN~v&Y]Uv&&T& D& T u+ v&D-?]Uv v |vv,]Uv v ,vvq|]UnnormalInfinityDenormalUBGDGFVNvBG6DG]˸;DGu;BGt BGBGDG5 =PGXGU.>v .>v.`G3ۋˋPG#tXG#tʡPG#tZG#t ڃRG#tXG#t ڃTG#tXG#t RG#tZG#t PG#t\G#t VQS3΋ޡVG#tXG#t TG#tZG#t RG#t\G#t PG#t^G#t VG#tZG#t TG#t\G#t RG#t^G#t VG#t\G#t ʃTG#t^G#t ʃVG#t^G#tWU.`G~EEEEu M ]] U 6A 7 >~6AAv>A]U>t 6A&t 6A&| u&t ]U]U>t 6A&t 6A&| u&t L]U>t 6A&d  6A&D ]U!6A >A]U!>tvvt6A6Atvv6A6A<]Uv&& D& D& D@&D &D%&D ]pGUv .>vxG+؋U&G.vGtG>rGu>pGu>zGu >xGu;.~Gw rB;|Gwr:>zG;>rGw0r >xG;>pGw$>xG)>pG>zG>rG9 ?|G.~G u*uu>rGu>pGtUL&pGrGr~&pGrGr&;.~Gw rP;|GwrH>zG;>rGw>r >xG;>pGw2$u Ë3u L&G&G]G+G~& &]&E&u] ;.~Gwr;|Gr+|G.~G u uuvr;.~Gwr;|GrPLrU>t6A6A6A Vlt6A&| t&|u6A>A  u+[6A&D F&TV:u5 ~P6A6AFP"3:FtBVFFF*@]UPFF; @AY]UF@FF;F}F]UFz~F s3F ꖍFPv|v򍄐GP|FPq|n F~ uv~]?Uv&4FFVPv\]U6>>PPv\]U!v>A>t6AvF&| t &| u&L ]U$>uF ^މ^F^F& t & u&O v~FF HF@~N6A6AFPbtFvv܌F&| t &| u&L vvFP@tF#~N벍v>Ah6A~= AAF ^SF HF@~2FPF ^SL~~N΋]UP>tvv6A6Altvvd FAY]U !>tvvHt6A6AtF3v&| vBVA~A~FFrv^&$v^&FFPv~FPFPPFPFPFFPFPFPF#vNoF>@v>A6A6AK]U.>t6A6Atvv:t6A~F-?F? B~t v&D v&D ~?~FFFFv^&@ sFF#}Z=?~R?+RFPv~F Fu~ u~wFFFԈFF~t1F FuFV FҋF+VًF+҉FVF Fu F FuFFFvFڋV+ҋJ+ ؉Nډ^ u +FىB+vFڋVܹ B+PQvvښ FډV܈FًF#vN럍v~FrF*䖊F^&F*䖊Fٱ^&F<sFA]UP]&Cheap stack dump linked in => no dump.A CUF V 2~tDtHE ?]ƀtE E Ԋ2t΀UE3E]E E U~EU]?|I=Ċ֊t€t C2E t΀ ]333U>t6A6At-tFtRA;Au ;AuFAd6A~FF~tN@=~u vBuNN~uND ~rNA%V* ЉAF]UQQ^SPTF uNJPPPQTFPPPQT^SPPFD DPF u ^&ƇF]U^v]UQ~uFsN~ tHN FN10V::rA*ЈVF F^ &FN1FF륊F ] UQ^GPPv PP}F*ȵ^p~}^Y*F^&]UQF^&ODtF^&:FtFF]UQQFF@^&O&W+;r,&G :<u"S&G&xWRFPFF]UQQFFN;rAI^ 0^~9^YvVN^ _V1^Z_9Fs] U^ SPT uF<r<vx~vF Ej^ SPT uU9;F<F=^ S8PPPZD u^ &ƇF^ &F^ &]U^SPT uH^SPT u39; ^S8PPPZD u ^&Ƈ]U^ SPT uF=w 1 t ~vF?@FFPPPQT F @FFFPPPQT^ SPFPP uxFF^vP^PPQTF;FsNdr4^ SPFPP uF;FsFFF둃>u ^ & H FƇ] U^ SPT ux^ SPT uc~vU9;F<F=^ S8PPPZD u^ &ƇF^ &F^ &]U^SPT uH^SPT u39;^S8PPPZD u ^&Ƈ]UF P&T uW^ SPT uB9;<v>v^ S8PPPZD]UQQ^SPTF uH^SPTF u39;^S8PPFPZDF u ^&ƇF]UQQ,J G^SPTF uH^SPTF u39;^S8PPFPZDF u ^&ƇF]U^ SPT us^ SPT u^9; <v >vF@^ S8P PPZD u^ &Ƈ^ &Ƈ] U^SPT uo^&uSJPPP uH^SPT u39; ^S8PPPZD u ^&Ƈ]UQ~,s6<~v6-~t^&?\v6~]v^&]v 6&<^ ^8L H S^Sv^SvwmP^Sv 6 u^ &G :<t+~vv&D&G%^ &G%Fw{^ &G&^ 'vNFY9Nv<vF~v<<PPTvFY^&.H6$<PPTNvFY<vNF~r^&& uP6 u^ &w<PPM6 u=9;<J>^ S8PP4PZD6 t^ SrFV^ J^ J^ &Ƈ^ &G :<u ~vv&&G DN I^ &G 6]UQQ^SPTF uH^SPTF u39;^S8PPFPZDF u ^&ƇF]UQQ^SPTF uH^SPTF u39;^S8PPFPZDF u ^&ƇF]UQQ^ SPTF uw~4vFj~tF Fu ^&?v ~tFq^& v ~vFZ^&v ~vFC^& v ~vF,^& v ~ vF^&-v~-vF29Nv0^ vFYN2^w2^ ^^ PP JvNFYF;v;v ^&u^ P^ &wT9;^ <F^ SPTF u'^ S8PPFPZDF u^ &F] UF~ sF t&PvFP4 F tJ~ F^&O@t#wA^ 9LY^&G@F^ v8JFFNQ^ SP^G`P^&G_PrmPF tƆNNrF t&?uNJ~ƆN'^&Nw~LЉFVvzJF4FƆO\R KOrxPFv^ Sv PQPFP^Sv^SP4F u*F9FuPQNQP\ uONƆOv FF]U^Sv^ S^SvJP]U^SPT2 u`^&8G"tA&8G#t;^SPT2 u:9;^S8PP0PZD2>2u ^S22]U FP&TF=uF~ua^&F 9^SPTF u>;^S8PPFPZDC F u^S^ Sv ^SZDFF]U ^SPTF u!+F V;r 1hT L tFFv$FFPPPQTF_SFF@SFFFPPPQTF P^PPQT^SPFPFPF uxFF^vP^PPQTF;FsNdr4^SPFPFPF uF;FsFFF둃~u ^&ƇF] U^SPT6 uNJPPPQTFPPPQT^SPP4P6 u ^&Ƈ6]U^ SPT: ulJPPPQTFPPPQT~uJJPPPQT^ StV MPP8P: u ^ &Ƈ:]U^ SPT> uF=w 1 t >~vF@FFPPPQT F`@FFFPPPQT^ SPFP<P> uxFF^vP^PPQTF;FsNdr4^ SPFP<P> uF;FsFFF둃>>u ^ &Ƈ>] U^SPTB uNJPPPQTFPPPQT^SPP@PB u ^&ƇB]U^SPTF uNJPPPQTFPX NPPQT^SPPDPF u ^&ƇF] J~i^GP^Sv^SvHF t&FP4 F uWH^w@F^&wHPhMF^GP(F t^&G&G;G5P1F uT9FvFF1^&G;Fu&G^&G@&G^&G&G;FvSrFFGF^&GZ&W&Ov~ &w&&&W&O<&G ^&w;FFU^&wvO]UF> t=t P D 4]U~u]Z O^&GFĴ.GFF'F+FF+F&5^ć(FFğ|^Fv &F^&NFFu-#ȋ^H^&Z&Wv#^& F^&Z&W ^&G^&t () $^&t(() * ^S)P(PhFPv ^SvPF u^&G :ud TShhv ^Svh,a<F uF^&G8 @F^&srF F~u'~th4 FN^S F~t,UFPvQPQe]U^&G :u:u :t^S,]^&G :u:u:u ]^&G$&G ^&G,^&G(^&G2^&G3^&G0]^&G :u:u :t^Sh,^&G :uF:u=:u4:u+:u":u:u:u ^Sh F u^&f Uv#&wxh^&wx&GpPK^&u t1^&FFv&|^^F&7^&Gn@Ph4 F^&v&wxh^&wx&wp,^&u t^&7^&wnFU^ &G :u:u:u :t^ S^S,]^ &G :uF:u=:u4:u+:u":u:u:u ]^ &G|^&^ &G|]Ȇ^&^&G :t W^&G<t':t!&OFPtsFr^&G^&u2F ^h V&~ t^ &?utPPP^ Sv l _>0u!0FPF u ~ r0. ,ujj,P/ F t^&GF,&8G wF,X ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPP F t FF^&#tF ;Fv F&O#F ;Fw FrF9F w~^ &FF^&O&@^&G^&w6 FA:r > >%]?U.>><Ŀ&UB>"u$&U>tt u Ƈ3@y ^LJ@@H ; w3ǁFıV&t&u#&t&DŽ&DŽBřN tƇ23Uw(>Ƈ0Urx> uË ;$t6ķ&&,&FA +;$r3,z>ULJ@Hu H~U ;$t2uLJ@LJ@U"!#!!!!!.!?!!!!!*!+!!!!!.!?!!!!!U&.>>>ȋz>рp "t 2.9twx0>t ."t,<t<u$t\UƇL{ _2@uLJ@td+w"+fw u, t>Ft;wtt x>u3Ut2 2t'Ƈ2;$t@uLJ@0uS- Ƈ|UUpu51u.<t&<t".t5u < u Ƈ5 Ƈ5< t[苗d;r";wlpt@t9t0,ht :iuĿ&E&&&d;w;vLJ>:Ŀ&C;drXdrQჿ`u`+^"Ŀ&S&C+t&E3퉯^&FtLJF4LJ>:U`u`+^^&ĿX} `&S&cFtLJFUd;t&r";v ;drdrLJ>1ttĿV&&UƇ4tBRP.x>p$p>Ŀ&U >XZtLJ@40uS- U>ȋ=w>=wZ=wTĿ&U>t6t t3t'Ƈ3Ƈ0LJ@Ƈ3Ƈ0LJ@3tJz>Ƈ|"t5&d;w&";w;^s^ZFu33˥'^&G &w8 F^&G:t P)FFd aKIKKEG~eF =wmtAN=smt=pmu'^S^Sv^Svv ^Sv0F =rmt=tmuFrmF =wmt =mmt=amuFmm iFP^Sv^SvvLF=t=uB^S^Sv^Svv ^SvFt !t= uFFa~uv~mmuo^Sv^Sv^&w&&w$F=u^Sv^SvjhF~u FP^Sv^SvvLFFF t^G:P(F uM^&w:FP uF FuF^&G8#;u8 uhjP/ F tf& r p b9FvFF1F1F1F;s ^Sh %F^&GZ&WvF&MX&E&uF+ƹ1&EFF&Z&U&E$<&E&FYs߸&G&G<~ tmuv^S^GPvj^GPjFF usF =rmt=tmuU^&G &G 5^&G&G~ mmu&O FVj^&G FF^Svv,F t ^SPmF^&G"s&G :<tF ^&u&uF{FNs^&G$FP&O&xWF&wFPF u6^&Gt| c<uF ^&uSF u^&G~uFs ^&G#^&G#FF^&G :<tF 1^&G$r&G&F uF FF^F ^G'FF^SvP^OQP=F^&t&G"s^&wFPd F u*^&G"s2&w;^&G#sF^&G"rN^GEP F u-^&G&GG&G&GM&G5&G9GAPd F t1^&G"^&G5&G9&G t&G5^&wFPd F uJ^&G9&G5G5;vu;FuF^&G"&GIF^&wFP F u;^G5N d^;u;t&^GA;u;u^&G"&GIFF~uiFFs-^&wFP t@F~u؃~uF^G5P2F^&w)F~u u^&G ~uFF^&G$FU4Vnjޱ;u$:u ^&G(K~F =rmt =tmt ^&G ]^&^ &&W^&G :t WFP5F uC ~uF1~uF$^G^ &Z&W^&F^&GFUFN ȋN u F]S؋Ff ؋F[]U쾦K~ eF =amt=wmt=rmt=tmt =mmt&^&G F^&Z&WF^&G]U^&^&G :t ^&GN ^&]U^&^ &&W^&G :t ] vFP,F uqv~N^Y~u ЉFVsjjj ^SvN F,jjFP/ F uF^&G Z&W F&GF^Sv<Fv D ^&G :tSv^ S^SgD<^SFPIF u'^Sv^ S^SgDF^&G F^ &&W^&^&O :{v f^&z4Vnjޱ;u$:u0Dr)4PKPjRPQhrmRPQF u(^&G :Qu  FF^SDu ^&G s<&G s4~u ^&"^&G ^G ^ &Z&W^&}^&G&;Gr$Sv^ S^S9F uX^&?uL^&G&O+;FsFF^&^&FFv&t^^ &Z&W^F&G FFN F;vP~uJ^S+QFPFPDF t tu.^ v8vNFYFF릋F^&F^&G :tRS^ Sv ^SDF smV gnjޱ;u$:uH^SF9^SFPEF u'^S^ Sv ^SDF^&G F ^&^&O :{v ^&Vnjޱ;u$:u7r0 r)PKPjRPQhwmRPQF u(^&G :fu  FF^SDu FFN F;w~t^&W&;WrS^ R+QFPFT^&G&+GFV N+;sV^&FF^ v0~&}^9N^Y^F&GFFcF^&FU^&G :{v ]U^&G :{v ^ h&G ]U^&]U^&]U]U^& t^&G :Uu &G& u]U^S^Sv^Svv ^Svjp,]U^S^Sv^Svv ^Svjp,]UFPjv^ S^SQFPQj,]Uv&D t- / 0 1 7> t- / 0 1 - \/ 0 1 Љ2 4 6 8 : ; < ܓ k>$ u> t ; < @> @ B ~ rR D $ uut F \>$ t F `F cI H J 8$ tI H J !>$ tH 8$ tH >R r?L M ! N / P : utM R ;s;t>T r> sC>$ u9>: u/>% u%FPFPF tF: F; V I r Z >: t Z @Z >$ t>: u\ \ ] >$ u L rW X  lY W X Y F ;s;t~rL >R r_ @9FwF ~NFd P F u6d ^SvdUQF =rmt =tmt"6QrmP'|   Q^&G ]UQF =wmt =amt!6fv '|   f^&G ]U^&G :ft ^& SP( ]UQ^&^ &&W^&G :Qt  S) ]U^&G :fu Sv*$  ]j&jFP/ F u ^&G-hjFP/ F u^&G < m sA<v@"FFF FtFPjF t@^&FU#U$VWQ^S Y_^F^OGG w 3GGG؉GGGFG F GFGFGFGFGPSd ]UU^ SG PPFP [#uMG~&wr/^ F%;u^ ^ FF;tX F ;FuX]F :r10^&Fr^&0FFF 10^v&F@ vvFPF^SvhF^&:F@F^Pvj n]FF^&:F@F^Pvj6FF(FFF^SvRQPNQNQPF u$F t^ SNQvNQPjlF~uVFF^SKPvFP F u2~t,^SKPvFP F u~tF;Fv4N+NA^v0^ ~9^YFF+F@^&^&<{t<[tF FF^&^&?{uFSKPvFP F uoF sdt_NAv~^YF@^&^v&48K ^& ^SKPvFP F u ~uFHN;v9@ND +^vp  o^~&=9^YF@N+^&CFP4 F u^&O@wA^~&=9^Y^&G@^&^v&48K^&v&4^P^&wg&we^&^v&48K^&"^vFF^&F^&G^vNFY^&Gw^ &Gj^&GyF^&^vNFYFP4 F uQ^&G@^&^&O@wA^^Y^&Ƈ^&Ƈ^PF uN^ GkP^ &PFPFPjF u#FPvhjj^ShKPj p T^&G F =wmt =amt^SvFPFPjFF uݍFPvjjFPQ؍GPQF!t=u%~^&Gi^GePF9FvF^kvNFYF^&^S^Sv^SFPF tF~u;^SvRPPRPF=u^v&xF^&Gi뾃~tfhFP*F^&F^&G^vNFYFP&GP}F^Sh+FF7^SFPvRQjv PvF u '^&G Ks ^&G8^&G8Fvj^ $ qSj7F t^&F^GkPKP^&PFP F uFt @^&F^& ^ &Ow~&=^ 9^NOY^ &G^&F t$@^wk~ ^Y^ vxKK~ B^&G :'t j^&G ^SFPFPyF u^SrF u}^&FFvN^S^SvmF tJ^G8P^SvRPjhmmLF u"^&w8F t^&w8 FFU^&G :'t ~v F^&Gj]UFPFP" V^&?{t@&0 r?[uT6@:t. FPQSVSVQ\ ^[Y=Xt ],N~] t&<FFv^"&@Fv^"&x"ti&Gwub@JP(F u,vZ^F&^&G ^S1F tvF^"&@VZ&PX^&GFth~%^"&Gwt^F2FF6FF:FF>FFFFFF^"&OsN&OqN^&OcNNNNN&tFFFFFPFP tFF s u~r ЈFQ~ u?~uЈFF>ЈFF$~r)FFsF~ u~ r F$F~^SvFPvFPv` vF tlFƒwu{F^"&GF^"&GxF^"&GzF^"&^"&tu|FV^;u$:uF^"&Z&WF^"&G+ ؍ ^"&&_^"&G @% ^"&G^"&G^"&tuB^"&FFv"&t^^FF&F^&GF^&GF^&GFsZFƒtu^"S^SPRQP^"S^Sv^Sv͚F t^"S FF^"&G}^"&s &_ ^"&_KF^"&wLF&_v˷LF^"&vF&wxj^"&wxjl wF@F^"&Go^"&wx&wo^"&wxj^"&G :t:u^"&G tu ^"&wxj ^"&wxj^"&wxj^"&G :t@^"&G :u&G tu1Fֹ@@2^"&u&Gn(^"&u Fֹ@@Fֹ@@ ^"&Gn^"&wx&wn^"&wxjFֹ  ^"&Gp^"&wx&wp^"&tu^"&G# F&s&G&Ov ^"&G+&Wv"Ѷ &Gn^"&u&On^"&u&On^"&wxj`^&7^"&wn^&wj^&wj ^&wv^"&Gpx xsjFPh FFsvv$jF$PPF uc^"&GFF^"&G& GtvjFPPF u3^"&GFF^"&G& GtvjFPPF u F^&u2&9w&wxP^&wxj6^&tu)^&FFv&t^^F&wj^&Ltb&GZ tXFF&G^&wLFP t^&^&GL^&G^&G^&wLFPd F^&w &gp}^&wxj^&wx&wp^&tu^&wj^&Gwu&wF tF^&G FF;w|^ y&x"tf&Owu?&HJ tQ)F tFv^&@V t4P2F t&F!v^&XV^F&^&GFtzs}jFPh FFsgvjQF uY^&GFF^&G& GtvjQF u.^&GFF^&G& GtvjQF uFU^&G :t/:t):t#:t:t:t:t :t ^S ]$^ SvRPPNQNQP<F uM^ SvRPjFPFPjtF u$^FF;Fs4z0r vz9vq^ vJ܀0Fġ  uhDj  zP/ F uK &G ^;v ^ X ^F&u^& u@^ Vnjޱ;u$:uu^&GjjFP/ F t^&$ t~t} rv^&GQ6LQjRQPham^SvF @L~&F =amt =wmtFPtsFr^&G _^SvFPFPF uE^&G F^&GFsJLMLF^F^S^SvFPZD^&F^&&W^&G :t:u^Sv^S^S,^&G :t :t { g^&FtSj<F u^&Gb;FsFF^&O*&Od^&`tN&9Os-SP^&+Qv ^SvhZa<F uF^^&G^&Z&W^&G*^&^F&9Gw^&G^&^&^&)G^&^&G*^&G*&G^j^&G^&Z&W^&G*^&^&GFF^&G`F^&FN;s#&)^F&)G^F&G*F^&^F&)GF^&^&_㋇PLF u^&G*~uF ^&^&G*^&G^F&G`^&GFF^F&9G*tC u&G"FvN^&8uvv^FF^&w`^& |)FFs^&G4sSFP F u8s,jFPh FFs^&wvGPd FU^ &G :t :t Q^ &G^&^ &G^ &G&^ &G*^ &Gd^ &G^^ &G`^ &G4sS]^&G"&;Gw&4t^&Gte&w &wxj^&Op^&wx&wp8^&tu+^&&G&OFN؎&WRR P^&Gt j ^&G@^&G0rS- ^&G4U* PFP t > u ~r > s#^Sv^Sv ^Sv }Pe> s vN F F^FFFFFFFFFFFF FFFFFFFPd]U(> sF uv vvP'FڈFFF FFFFFFP ]U(> sFuvP FڈFFFFFP]U> sF uv v ^S$8> rv v ^S7<  FFv v ^S^Sd]UQQ> sF uv vv01> rv vv8t  FFv vvPd]U^&&GFP< F uFF^ ~&G&GSd F u(vFPd F uF;Ft ^&G]^ &G :t:t :t:u^ &G :t-:t':t!:t:t:t:t :t~ wc^ .p+A\e}^ &G~^ &Gu^ &G :u$&Gs&;Gqt'^ &su$^ &qu^ &G :uFFv^ &@q3^ &Gv@^ &G :tB^ &G8^ &G :t,^ &G6v^ &G :t^ &G.^^ &G :u ]^ &G/C^ &G<^ &Gh&Oi$^ &Gq^ &Gs^ &Gl^ &GjFF^&̼  F ^&G :<udFv&^&_.2:I|^SF1^SF u^&ud&G܁~t^&G}^&G1VS&xWvF&pF uB^SF u^SF t ^&G~u^&GFFFP&O&xWF&wF uI^&G1&WR&@F&Z&W_^&@&G&G&GF~t_^ GSP F uP^ &G&GU&G&G[FF&G]Z&W_F&GaG3F&GcZ&WeGOPd FYFFؾ  ^&G5&G9&G t&G5^&wFPd F u}^&G9&G5G5;vu;FuF ^&GWF^&wFP F u6^G5N^;u;t!^GO;u;u ^&GWFFFUv&D ~&] ~&] Y]&FFF=F\FzFFFFFF2FQF 1F1FF1Vu FFmFm1FF1VF1F ;vNvB;FvNFF^&F 1^&W^&8Os&vF+B@^&GF1^&WF <1^&WF 1F1^&WF 1º PF1Y^&GUj D ]Uj D ]Uj D ]Uj D ]Uj D ]U]  U+Zr tH]j&j^S/ u ^& +ZrHU3 &L&;Wt]U#tH3&GtH]UFV>]UV>] vjFPjF uxFV^&&W~u~tYFuRFVFV)F^v^ SPvvFP#F u^ &?Gu&G &W^&&W ^Sv^ SjFPF u_^ &G &W ^&&W~u~t\FuUFVFV)F^vvvv^ SPFPF u^ &?Gu&G &W^&&W  6r"^&&W&G &G;F s Wv  X^F&F&GFFF;FsN ;Nv &@FFڋF;Fr , v@^&Z&WS &_[&GU|s] &G@] ar  &G;FsGv X^F&F&GFFF;Fs &@FFFU> u P4 u> t &G  > u]ð]UQQ P<   Pd uJF6 Pd u8 =u0 Pd u!F6 Pd u =t=!t3] ^ &G :uSvv^ &G :tWSvvnj^ &G ^ SvvFNs=u8^ SFPD~u#^ &G ^ &dt@FsU률^ &G F,^ &G :{r^ &G :Utw&G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &O^ &O^ &O&W;Vu;Ns+^ &r &G&;Gwe^ &G &W"N~;u;wL&wщFVN;u;s&+O &"N։~؋F^ &G-sS F u^ &G-sG<PFP|F^ &G-FVFVF%Ff^ &G ^ &G^ &GNV^ &O &W"^ SPFPFP F u4F^ &G^ &G :jt :'t^ Sj\F t^ &G&G &W"FV&9Wu&9Gw&G&W9Fu9Fu^ &G&WFV^ &G&9G*s&G*^ &FF^ &G@1&@FތFF^ FV&9W"u&9G v&G*H1Fܺ&G &W"N~;u;r_F&+O &"N։~؋F։F&O,r&9G*sSlF tF^ &G^ &G*&;G(uF&G(F^ &G* ^ F&9G*s&G*^ F&9G(v&G(Fr^ Sj$TF u^ SlF uy^ &G ts&w  8&SP^ &w"&w G<P^ &w: |F t@^ &G-^ &G &W"&G4&W6^ &G&G.^ &F&G0Z&W2~Yt^ &G@1&W^ &w&@F&Z&W^ &GN^ &O^ &OF~+&G &"^ &G&G(^ &G&G*^ &G,^ &Yti&w8&Sh^ &w"&w FP#Fu^ &?^ &G,(~t^ &G&GF^ &G :t ^&FF^&G &W"&O*&;Wu&;GrI1&G^&G*1 uSj$TF u`^&G@1&@FF^&G*, 1&G &W"FV&w8^SQRPFP#FtK uX^&G*1V+^0^~&}*9^Y^&G*H13^SjTF u/v&|*&L+^9 ^&G*&G^&G,^ &G :uS^SzO^ &G :t S^S<6^ &duUj^ &G ^ S^SF^ &G FU^&G :{r^&G :jt:'u^&G&G &W"^&&Wc^&G :UuX&r&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :u^&&G 8 ]^&^ &&W^&G :Ut ^S F uk^&G;s]@1V&G&G &"F~&w8&XSv^&pWPG<P^&w:|F t@^&G-F^&GFrF@1V^&G&G &W"FV&G-sG<PFP|F^&G-3^&w8v&XSv^&pvvFP#FNVF׉NV~u t%^&9Wu&9Or&O&WFF t ^&Gv^&@F&Z&W^&GFV^&G &W"^&G&W;Vu;FYvF&GF^&D G8^&G^&G&W&+G &W"FVF&G^&uFF& ~6F =wmt =mmt=amu dF =rmt=tmuF smhFPjFt;v ^Sv^SvFPF t=c=u ~W=t& ~6FV^&G&WFF&Z&WF1&G&G;YsF^Sv^GPjFPF ui^&G(&W*&G&W~ tmu)&w&w^Sv^S^GPF uA^&G &G Sjj,F u^&G &w&wFF\RPts%jjP FP, F t~`t@\\s++^&GF<wu^.ouF:+wZF F<wNF+F< w>F+F+;FsF~ t ~r^F(*~v@PFN ^㉇|~C\ (*\|~\ ,.\\s\02\FP^GP^&GPRPjhrmF t?^&OwBF^&GvBQP<v^Ŀ(WhjjFP#F u3FFv^Ŀ|WPvvFP#F tv F) v F \ u ^&G}hjFP/ F^&G F A:r&Go$&_v˷L ^ &Go^ &wxj^ &wx&wo A^ &tub^&7F^ &vufN^&7v#^ &G :tRF^ &G86^ &G :t9F^ &G6^ &G :t ~w8F^ &G.Z^ &G :u K~wF^ &G/)~vF^ &G^ &G :u&Gt tFF^ &G :t&Gtt ^ &gn^ &On ^ &9we&wxP^ &wxF$P^ &wxj^ &wx&wn'Ft `tF1 u~uDRPjFP F u ^&GtУdfv^ SvRPbP#F>btvrPhPF`vPlPjF uiFH;`sBFFVdfdfv^ SvRPbP#F>bt{``df;ju;hrV^ 6`&^&>pu'^SpP8F>pur rp`^&? u& pr>`t`&F;fu;ds)dfH` v^Sv^ Sv F Phj4F uU^&FV~u~wov^SvFPFw|~t~ uFV^& _F:tu!rsv^SvFPF u5F< t0*< w#FFV Y|NY v N^& btF+FFF+F`F;FtFFHN;r"v^Sv^&0F ugFuӊFsv^Svj F ucNd>f;nu;lv)vRQ F u5vjhPj F uv^Sv6f6dFP$FFF;vP`;vH Vd>fd>fv^SPWRb P#F>btF )`)FFVd6fhj+lj^FNvvrPhVQFP#F~tFFVFVvrQhRPFP#FFFHN;r"v^Sh^&0nF u6FuӋF FtF9Fv~~ ~tvv^Shr6F udFFVFV uv^ShF u6FVdfN`v^SvRPFP# ~urrFFVFVvrQhRPFP#FF# F'F9Fs 1F~uF FF t-ȋF10vBF1VF  1Fv^Sv^ SvFPvy 4FH`;ruNd>f;nu;lvv RQ F urFFVss&v ^SPd>f+WQbP$F.v ^Sv6f6dbP$FFVdf>buF`F^6`&` Nd>f;nu;lvv RQ F uf`d>f;ju;ht+NVv jFPj F u*FVhjv ^Sv6f6dFP$v^&XV^F&t4^&u ^&?u!v^&@F^&^&G FF, Fv^F&9@su7~u~t^&G &;G$s&G0r&G2r &G3r^v^&x6u FFKv^&@VFF u/~uv^&@J vF^&@Bv^&x6u ^&GTv^&@6 F^&GF^&v^&@B^&G^&GF^&GF^&G vF^&@FvF ^&@NZ&PP~uav^&pBFPd P(F V ;Vu;Ft<svFPm F^&GF^Sv<F F+ FF^ &dtZSFP,^& uV^ &du&( G-sG<P^S|^&^ Shwmvv^& uj^ &G ^&^ &Gd<tN<uSh\^& uH^ SFP,^& u/^ Shrmvv^& uU^ &G ^&U].] ^&^SP$TF t^&G t~&w8&SP^&w"&w G<P^&w: |F t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2~Yt^&GFu^&G@1V&G&G &W"F^&Gv^&@F&Z&Wv^&@&G^&G*^&G(^&G^&G,4  ^&G :jt :'t F^&G-rG<PFP|F^&G-^&G0FF^F&G4&W6Ft.H^&O.+N^v0^9^Y^&O.N^F&)G.^v^&G0Z&W2F^&.uF tuSvTF tF^&G0FF^&w8^S^&w.&w6&w4FP$FFt.H^&O.+N^v0^9^Y^&O.N^F&G4&W6^F&)G.^v^&G0Z&W2F t ^&.u%FsFr^ShTF u^&G :jt :'t ^&G&WFV&O@ &O &"N~;u;wN~Fs FF%u =F uFFPF tF= r= rF= t = t= ts*v^Sv^Sv^Sv ^SvvZEs'^Sv^Sv^Sv ^Svv*jvv^Sv^Sv^Sv ^Sv\F hFPjF up~tjEs-hv^Sv^Sv^Sv ^Sv\(v^Sv^Sv^Sv ^Sv| F~uCF!>tF tt !tF*~ v~v~v ~vv~ڋNFv~ՋNF~ r'vRPQRPQPjPjF~tFF9FvJtFF t Ⱦ~F t ȍvڿ~u~tI~ r)vPvPvRPQRPQFvPP4F u,FP< F umFڈFF F܈F݋FFދF؉FF FFFFFFFFFFFFFFF FFFFFFFPd F u,v؍FPd F u^&G ;F t ^&GF~ uN~uNP~uN F Pj@F t˸PPF t˃> u>s> v>uf>t_FF~uy>urjvP, F u)=8t =9t=9uFHP@X`F믂>u'>t&>u =F ucFP4 F u^&G^&uvjP/>u :Fu vQhFFvjhF ue>t[>uv^ S^S>uv^ S^SF u#>uv^   S^S F u &s6^&uFFFPPNQjRQPRQP5 ^&u "^&7&w&w&w&wtF^&tFF<wH FFߠsRPQ^SjRPQRPQ5 F^ F&@FuFF<wF FFߠsRPQ^SjRPQRPQ5 F^ F&@FuFF<w< FFߠsRPQ^SjRPQRPQ5 Fİ FuF FߠsRPQ^SjRPQRPQ5 FİFF<w: FFߠsRPQ^SjRPQRP  Q5 Fİ FuFFߠsRPQ^SjRPQRPQ5 Fİ̊F FߠsRPQ^SjRPQRPQ5 F^ &GȊF FߠsRPQ^SjRPQRPQ5 F^ &GȊF FߠsRPQ^SjRPQRPQ5 F^ &GȊF Fߠs RPSvVQRPSRPS5 F^ &GȊF FߠsRPQ^SjRPQRPQ5 F^ &GȊF FߠsRPQ^SjRPQRPQ5 F^ &GȊF FߠsRPQ^SjRPQRPQ5 F^ &GȊFFߠs RPQ^SjRPQRPQ5 F^ &ȠsRPQ^SjRPQRPQ5 FhjP/ F uF& &s#FRPQ^SjRPQRPQ5 ^&8GtB>9t&u"F݊F<wаFu^&^ 0~޵FFF<wB޴PNݵBFuFF<wNЋBFu4^&u,FF<wаFuj^&^ 0~޵FFF<wB޴P@NݵBFuFF<w:ЋBF u FF<wаFu>9u,FF<wаFu>8ud^&u\~v FFF<wB޴P{NݵBFuFF<w>ЋBFu'FF<wаFu FP F u vv~tvFFFNNF NFF F?F*F r> u>rrsv  RPQRPQFPjFPjF uH~u~~vNFv FPjRPQRPQRPQF uFP F uv^SvUFP< F uNFFFFNNFFFFFPd F uvFPd F uF]UFP< F uTFFFFNNFFFFFFFPd F uvFPd F uF]UFP< F uNFFFFNNFFFFFPd F uvFPd F uF]UFP< F ucF  FFFNNFFFFF FFFFFFFPd F uvFPd F uF] ^ &GF&Z&W&G&O&G &G &O&G &W"&G(&G*&G,&G-&G.&G4&W6&O0&2<(Y~ rmuU^ &G &Gd&G&G j^ &G &Gd&G&G ^ SvvF^ &O UP3P%]UPP%]U#t4&F#t N#N&3&]UFV v]UFV N|]UFf]UFV%] ^ &G :uSvv' 0^ &G :t k^ &G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &G^ &G^ &O&W;Vu;Ns^ &Gs &G&;GwH^ &G&WN~;u;w/&wщFVN;u;s&+O&N։~؋FgFVFVF%Ff^ &G^ &GNV^ &O&W^ &G^ SPFPFPF u F^ &G^ &G :u S^S  U^&G :uY&Gs&G&;Gv &G&W^&G&G&W^&&W^&G s7&G s/^&/ &_!^&G :u^&&G ]^&vvvvv&<^ Pv ^SF-u~FN ;sNFF~u\FsUvvvvv&4^ PvFPF^F&~uFFV^&;F rF랋F^&^ &&W^&G :t ^&Gs^&G&G&WFV&w&wRP&S^&wFPFV~NV~=]=u# t^&GF^&G^&GFF up^&GFV^&G&WF^&G^&G&W;Vu;Fw4&G^&G&W&+G&WFV F&G^&uFF^SLPvFP F uJ~u ^Sv^SvRPjFPFPj<F~t ~s ~uL^&GM&_O^&GL&^v@^&GMZ&WOF@N+^&OL^S^Sv^Svv ^Sv F uJt'~tv &*P v &*L&4v &^&~tv &FPts Frb>rkF sMFF M *MFF.MF< :ujj:P/ F um:&G ^ &:GwW^ &G:X ^F&G;FsF^ &GPj^&GȴP^Svl F twEF^&~u8F ^ &OQP^&OɵQPv FF tmn~uF~ t~uF r~t4FRPPNQNQPF u<' FPFPoF uP뻋F U^ Sh^Sm]U^ Sj^Sm] ^ &G :t :ft bF FuTFPt^ &O f:ʱtA sUFs&8W uH^&^&G^&GP^&G^&G^&G^&G^&GA^&G2< :ujj:P/ F u:&G ^ &:Gw^ &G:@ FF^ &G^&^&G^&G^&G^&G^&G^&G^&G^&G^&8G uA^&O^&8G u@^&G^ &GA^&G^ &G^&G^ SjFP4F=4t=4H) uF*~u^G^&Z&W @^&&_FPFPFrmFQ^Sv^ SvPF uQ6jFPjF t:~ r46 F u"P^Sv^ SvhpmF uv6jFPjF t6 F uFV%FVuw u6 F u4FNs PP,6P*F~uf6S6jjFP#F uC&?mJtF41&G&W6 F uB6 F uT+ sS6-S6+FFFs)6 FsS6- u߸4S6+FУFF  tˋFr4Lj^FFF&9Gvr^&;V u[>&M&U&;Pu&;Hs4DF^&p4v&Z&TF^&A&DF끸4FFF^ FV;u;t^SF tsqGFFFFF9F v=Ns6^S^&Z[& S^ &[&:uFF뻊Fs`-  ^&F^S^ Sv \ ^&^SjP4F=4t=4uF~t@FVUF Ful;C^&F F uc;.F Fui;!^ &~N u+J^&]UF Ful;B^&F F uc;-F Fui; ^ &~N OtI^&]FP^Sv^ Sv hrmF tvPhjjFP#F ucGWtFTPFVZ+FP^S*F u!v^&SvvvFP#Fv F~uFF ^l/ Sv FP4F uCFF^SFPdF u*FNȋV;v+ЉVv~N^YF RPv^SvF=4tuPFP^Sv ^SvhrmF u,vPhjjFP#F u?GWtPFVZ+FPFP*F uSv^SvvvFP#F u^Sv^SvF^Sv+F~uFv F~uFFUPF F uk;+v&;Vu ;F uj;{F<w*Pvv 6~uvv 5F#uv&F?~t6~u0F Fui;x1 &~tv&v &v&+h;UF Fuk;\+v&;Vu ;Fui;CF F uj;6F#t,V;r#u`;v^&@v &v&+h;^&FFF^&Gu PF> r!vvv^Sv ^SvE O9 jjFP/ F u^&G N;wukF=s5^_ ^F&HN&HN&HN&^&G F&G FܸFމFF;FsF;Fr@Fv9F u"F uFFfFPFfY;v ^&?tqjjFP/ F uhjFP/ F uҸFF^&GFԌF֚0\ ~svvv^&/^&?uFFPFڹY FFN^ԋFFFFHN;sFFF^&?u_F^غ#ډ^v^&^&~v^&0^&74PFNX^&@CvF; ~^&^& ~vS^&^[&Av^&^&@FH;Fu 1 FtF)FFFFFtFFFtNFtNFtNF>uPFF> r&F=sPvvv v vv FF~FF ;FveFF~uQN F;vG;sV F +FFvFFPFFPFPvFPj4FFFF듋FUFF F uvvvjjFPj j{j}j|F#tF#t)Fv^@‰FV~u~~u v&<[uovvvv= v v vj j[j]j|F#to~tEv&<u<^&?[t3vvvvv v vj jj^j|F#t ,v&v&<uvvvj vv V|F~uFFVNF؎hFPSjF t@~uA"F^GFF^&&FV~uW^&8=sJF<+ȉNvvWRj^@PQF u^v&@@^&8^&LJ8~t%^&&F^&&F^_^F&8^^SCD^GFF~}? F^Sv^Sv RQj^OQPFP}SF uB^&ƇFV^&&^&G^&G^&8^SCD^ GFF&8F=r ^ &tSDF^&8F^v&8u@^v&^&G^v@^&Z&WF^&G@F^&8U>u &G%&G&G!]U>u &G%&G&GRS^!]U>u &G%&G&Gj!]U>u&G&G&GA &Gv!GP0MP&GPP GP1MP&GPP 9u9t &G &G]U츂!P2MP6P !P3MP6P 9u9t &G &G&O)t+w*Z^Y&G)&G &G&wZ!&G]UF\v^Sv4]U^ &GF^ &Z&W^ S^Sj\] &ORwS^!F&Owj!F&C Gs6&Owv!F&Gs6&OZ!F&Gr&Gr&GrP QQQj\P^!Q6j!Q6v!Q6!Q6P!Q6PP t Fr>uFs}^ t^! F tj!^ F tv!^ F!^ FF&_) &&_&Gs&O)+&O&O)+&G F&ƇE ~s) ~N&Ƈ&FN &GZ&WF &G&ƇSF PPFP0SFP'S t~uFFFA9F rD'&8u98Nu4O)&OZ&W&O&i&_S4MP&wP  u[&_S5MP&wP  u39u9u&Ƈ&Sj_ tPS6P^!QQj!QQv!QQ!QQ!QQPP tA>t>u &GR>tq>uj>ucG FsH^Sv GP&GP^Sv6DF=c=t=V=t=W=t !tt~t>u>u>tF&G)P!QQQjiP^!Q6j!Q6v!Q6!Q6P=P!QQQjiP^!Q6j!Q6v!Q6!Q6h!Q6PP>t u4 ui u&Gr&Gs&Gr >ux u& u&GrGP&wTsGSP&GRPGP&GPGP&GPPh& tGr^Sv GJ P&GP^Sv6DF=c=u~t&GZP&wTs( GSP&GRPGP&GPGP&GPGP&GPGPh< tC s7^Sv GP&GP^Sv6DF=c=t&~t&G&u&Ƈ B^&GF ؍FGS&GZ&W&GR&GG&G Z&W &G&G &8u*&u&Ƈ&Gs&uPP(F tI&uSL &G;t@Fs]RPGPSQFP|SF t~u,F&GP&GPS62LFFscGSP&GRPGP&GPS6GP&GPGPh<F uf&G&Gs]&u^ S^SDGPPPGPEF t&Gr&Gr&uH&9GtANsYRQ&_SSPFP)SF uB~u*F$ZP&wS62LFFrjFB^&GF ؍ N FGS&GZ&W&GR&GG&G Z&W &G&G &8u+&u&Ƈ&Gs&uPP(F tI&uS&G;t@Fs]RPGPSQFPSF t~u,F&GP&GPS62LFFscGSP&GRPGP&GPS6GP&GPGPh<F uf&G&Gs]&u^ S^SDGPPG PGPEF t&Gr,P &Gr&uH&9GtANsYRQ&_SSPFPlSF uC~u*F$ZP&wS62LFFrvF U^&u && t&&]9Fu^&?*u N^ &9^&~u ~t@~uF^&F<*tF9Fv^&8*u N^ &FFFHN;sr^vPF+P^PF+P^ PFPLs^vPFP8FFF뜀~?u}~u ^ &^SFP8FFF^vQN+Q^ QN+Q8R ^ PFPLrvNF^ &FF^&F^PFP8FFFFFF9Fv6^vPFP8FFFu^v&F<*tj|F~uv&<tF~to~tEv&<u<^&?MQv\ t@Y F^SDMPv\ tFsah @FPjF t@"FN ɲuB"ƒ uA"FNQj PtF u"@"vNFF>"] >*"t>"@":"<"~tXMPj^SvYMPjZMPj^Sv[MPjx\MPj n*"P:"S6>"^Sv hrmF ul6*"j^ShF tFJF,"."6*"^ShPRPFP#F^6"8"O0"2"N4".8" 6"uN6"FF>."s 0"&?uJ,"@,"6*"d 6"ShPRPFP#F t^FU."^G0"2"0"G^ &Z&W0"&^&."@."#@^0"2"6*" F*" ^SvFPFPjF u5FPF PFPjXF uF;F vdS~ vHhM~^vNFY^vxiMFF^&F F t~u5^&~u^S^Sv^ SvFFUFF F u4vvvjjFPj j{j}j|F#t F#t)Fv^@‰FVvf vvjjFPj j[j]j|F#tF#t)Fv^@‰FV~t~u v&<j|F#ukF#t)Fv^@‰FVvvvvv v vj2jj^j|F#u$v&<uvvvj2vv V|F~uFF F FuFFPFPFPjj^XF uF F;FvdbF F2vRF t$N t~^Y^vFFv~N ^YFFF ^&F Ft~uF F t~u=^&~u'^S^Sv^Sv^ SvFh FUFF F uRvvvjjFPj j{j}j|F#t)F#t)Fv^@‰FVvvvjjFPj j[j]j|F#tF#t)Fv^@‰FVvvvjjFPj jj|F#tF#t)Fv^@‰FVvvvjjFPj2jj^j|F#uWF;Fs v&8^uFF#t)FF~tv~vvvj vv v v|F~uFFUF l"n"FF&Z&Wl"&GFp"Y] l"&FFl"&GNȋp";v+ЉV^6l"&t8j vNFYl"F&G"s;"r"Pt"PF u7r" ;w;u+t"v# t""s*v ^Sva""P(F tI"|"F z"F""F"v"Pd F u6"FPd F u^&GUFЋF ]~<s 9Fw 9Fw9F v~t9^&Ƈ[^vNFY^v&ƀ]FFF^v&ƀFF@^&*^+vN FYF ^&7^&:^&8l ^S~<s 9Fw9Fw 9Fw9F vF~t:^&Ƈ{^v NFY^v&ƀ}FFF~tC^v&ƀ[^vvNFYvv^&ƀ]FFF^v&ƀFF@^&*^+vN FYF ^&7^&:^&8^S^&8&8uSoF tb^&8F&^ &^v@^&Z&WF^ &@F^0~^YF^&8^&8rM^P^&*n P+P^&7P&:SF u^&LJ8^&:Fp  LIBRARY: LibraryService.lib VERSION: R2.1.8-(10/21/93-19:56) LIBRARY: mouse.lib VERSION: R12.3.0 (friday october 15, 1993, 18:22) LIBRARY: hcbe.lib VERSION: 1.0 (Wednesday November 2, 1988, 16:31) LIBRARY: Gpam.lib VERSION: R2.6.5 (Friday October 15, 1993, 22:02) LIBRARY: ctos.lib VERSION: R12.3.0 (friday october 15, 1993, 17:24) LIBRARY: enls.lib VERSION: R12.3.0 (friday october 15, 1993, 17:28) LIBRARY: ctostoolkit.lib VERSION: R12.3.0 (friday october 15, 1993, 17:26) COPYRIGHT 1989, 1992 XVT SOFTWARr E, INC. ALL RIGHTS RESERVED. COPYRIGHT 1993 UNISYS CORPORATION. ALL RIGHTS RESERVED. THIS SOFTWARE IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH THE APPLICABLE PROGRAM LICENSE OR UPON G WRITTEN AUTHORIZATION OF THE OFFICE OF THE GENERAL COUNSEL, PATENT AND TECHNOLOGY DIVISION, BLUE BELL, PENNSYLVANIA, 19424, USA. u 0<2.0>DeinstallXvtChService.runXvtChDev<2 vvjvvv GWt   @ fv Copyright 1992 Unisys Corporation. All rights reserved.Ver XVT/CH-R2.1.8-(10/21/93-23:04) Linker x12.2-j_vjm_07|02|92-08:13/0O+@'RPTpUOU?U_VpWWXZ_@\/]_defhh?pru0~0@PO0 oP?@x Н?pO@/?/O pp0и/p`PPPPPP/P 0@P`p 0@P`p(z *'(}" )#+7* 8% e/!) %8%O%v%%%% %TTTTTAT-TT[TTTTTT^TQTBT%TTTuT T4|  T T T} Tj T T TM T: T TT3T TTZTT TTTzTTTTT@T+!TTTsTI"T$T(Tz(TP(T=(T8= =_A_a i q y -\----'?MH ``/`F`X`h)h< _    ;;F;;;0;;;";2;;%;8; F#G#_HyH3RrR7^H^0uCucuulv+B {  ! T   k   1 g @~    t&tattttt t-h j  D i y /9 9 .I I + F f   U      1 m ;m m m m ; T j * : _      & E = P , *T*T*T)T:+T(+T2 `       T %78=AW_m-?H`h ;#HR^ut 9 I h { 1 m   % % % % % % U ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D L E F G H I J  TT      z q f ] H ? + #          v J A (  ,Y (Y $Y &%d%%%T TTTT~TvTKTTTTTTTT :TTTOT)T TTTY  T T TTTTTTC TTT7TZTJTmTTcTSTTTTTT$TTToTyTdTWTTT}TmTTRTTT!Tu TV T2 T TTT*TY   c&TY&T&T$T$T$T$Tm$T#TX #Tm#T'T  (T(Tr(T_(T2(T$(T-~*Bn+7mM=jY dY DY  Y Y Y Y Y Y W]8W<WfW_ " , 6 B N [ _ mg =mo kmw m m m #m Qm m         # ( , 0 4 8 = A E I M R V Z ^ b g k o d s w |                       O#Q ~}sg?  h8hThrhhh3hihnhhh!hhhh5 A    m  I l;;*;P;t; ;o;s;;;_;;;;;;C\Q`b%#N###I#HaRRu;A     $ tttttt"`9 Z 0I 3h p  h h h { { 3 z 9 k F  4 u  R 1 1 1 !1 m ym m m m ,m bm    *Tx*T`*T%*T *T)T)T)Ti)T+T |  ؎м3¹l JV2UWQF PvvP0 FPWF_]ː  IgPg Pgg&PPXLNPIt,6666}6{P6POP 3 &=uG&=t2(ыt3tS,Ar ,Ar ªÔRԀSPSPR Xu@<t<uSKyZ3PPPRS@XX$)6 &36"s 6*ڻ6"....U3UUVWU  VWQ ul l \.2S22J22A tX Pu ~uFX u PFP+_^]ˋ$";s EtUP>tP]ˏ  Nt|u666u663ҿB u< t< t tcGN< t< t tT<"t$<\tB3A<\t<"t׋ѨuN t'<"t<\tB3A<\t<"tߋѨu>{G@$s}&?&G6  u3< t< t tu&?&GN< t< t tZ<"t'<\t3A<\t<"t\հ\s"N t*<"t<\t3A<\t  <"t\ݰ\s"3&&G.V3B22Ut?P^U~3I]UV^9\s KK9\v\^]UVWNwRsOQrsE um $уr"r;sQRʋ6ZYr 3_^]QWGtft+IAAw tOs 33B&= t;ru"rHs3#R.Zs t+WGw JBw _YËGtJwN;r9WsBP.* uGtJWWw;w uw=t$OO_Ãr~Iry+A;wrM;w wnw֭=t^$;r  tTuJ;rD+`u6h u;wsIwD;v ;r;w +ww!IIWI  XG G++tII<+I ËBB+t؋ЉUSVF uN F3؋F8ȋ^ VF uf F r ;Vwr;FvN3Җ^[]UQP[ u]UVW؎Vg ;t@t 3_^]UWv t3IPĻSRQP [_]ASw_ 3#[uBSw_;t6K3 T;sr#tH;s#rЭtD[GG[Lt +H+ %UVWvt uXǒD uHuCW t!DTTDEL SP[[ tW3_^]UVWvǒt-3ۊ\ S@t!V~t3EDDD_^]ø*U׋v ؎3~ǨtI]U F^333&:tFu@$FrVPr V ϋ3_I5F&;(uQVW(_^YFt ^?G^ uˎ^O]Uv ^ t-&'C:t,A<ɀ A,A<ɀ A:t]UNWVHv  ~H+#‹+#@+ u unj뾋FV^_]ˈ  : l UqVW3FFv &v F t~}F, @tG~uF^_]UVv&L^]UVWNwi tHX6VW_^s+_ ;uX6&t;ut^Xt r3_^]UVWvD td@u`Dt tSL $ $D ǒ3ۊ\ uKuuBtu&S@tQ~WSFL eSV[D tы T+BUJT%QQttSY|V&;u3F3S tQPPSV3_^]у'PRP3PX) u3&E G&E u &]&&u &\&\ Gw&] &]&]&]U ^;Qr 3SS tS3QQAAQFPSt}^F V3FFWVfN ? uR^=vLܺ=(s+ԋN < t ;t( ;u F^_^iPSQ+!Q^SRQFP Y u^^;rY[X~u< t=mt = u &^S@t^ ^?u3F+Ff^_^r]N uVSRQFP  t=mt = u̺Ǻ ‹F uS@t &?u릺3WOO-w HƌڎGG3_ U^;Qr 3vSv vv QYZuဧS]        5A CR S W Y l m pr   OH]]ˣO$ u.:tCC<r<$v Cuw>,1|:, u/F‰FVF FFN t^F&F<u^tj=u>u=u>^uN F~ t^&?>u FN FF~u>u>^u~u^F^~ uFރ~u21^ވ^&G>^&G>v FVRPv  v@! ^v &@~t>hah|  u*~uFFFP~uFPFVRPFPFPjjj~%Pjjj t` &6D v~uFFPv욬~t ~uFFPjjjFP~tEhh^^2vFB^F&? uːF N uFvF uvvFPvvv tYvvvF t^F&"^&^&FFFN u9Ft ^F&"^F& FFN tsFV ː4 ~tmF+ FFFF9Fv-j FPFP tFFFFBFvF؋FN tvvFFPF@FڋF+FVjFvFP tߋF+FV܃~u~vh FډFPFP*F tP F FVFVjvFFP tOvvvvvޚ@! FFFFPFPNQ tF+FFډV u=vh FډF֎b &>Bt PFP, v֍FP*F tP FVFV~uF^&?u^&^F&F&?tF+҉FډV u=vh $ FډF֎b &>Bt PFP, v֍FP*F tP FVFV ^&FF+FF-;FwFV~jjFPF~uU u9Fu F^^F&^F& tfFދVFV^F&^F&FN u. u4FދVFV^F&^F&FN u^F&Fvvv FVFF9Fv^& uGF ^&FFF;Fw~FF^F&?uF u+^F&^ F &8tːd &QFP! u+jvR6\!&&G0 0&G&O&G&O d &QːUV>uy u+^ːF9v6&&P^V>uB u^FF9v6&H& uNV&&P^FАVvnFV tA09Fu9Nt9Fu9Ntvv`"^6+&@&^ː^&?!Cu FFFFFV@@RPv v v v PjjjvF u^&wjGPjF t^&w Fː^&G&W %&G &W&!C+&G&G&G&G&G&G&G&G&GF&G+v v v v n< PjjjjjF t=tFV@@RPv v v v 2PjjjhmmF uu^&!C&G&G&G &G&G&G &G&G&G&G&G&G&G&Gmm~u*&wjGPj F t^&w F+^&t\&G&W %&;G u&;Wt#&wRP F t^&w F^&wjGPj F u^&w FːF^&G&W &+G&WFVN+;v-r;r$F^&G&W &9Wvr &9Gr&G&WFV&9Ww r&9Gw+F tMFuFF u@~r9f%F&wv v P&w&wFH P#F tzN^&ː u&G&W&9Wwr&9GshSF u^&G&+GF&+OىN;NvFFvv v ÌF RP@! F)FFF +^&G&W~tF^&+ːF^&rmt^&^&G&WFV&9Ww r&9Gw+F uFtF t~sf%F+&G&W&;Wrlw&;G vd&wRP F t N^&ːF+^&G&W&G &W&wjG Pj F u^&G^&wv v v&w&wFP$F uT u&G&W&9Wsw &9Gw~T r F%FPSF t:F^&9Gsr&w&G &WRP F t ^&G &W&wjG Pj F t^&GF+&G&W&G&WF&G^&G&+GF&+OىN;NvFFvÌF RPv v @! ^&wG P&w&w&wFP$F tOF^&9GtF^&ːF)FFF +^&G&W&G&W&9W wr&9Gs&G&W &G~thF^&+ːUF tHt1HtBF V ^&G&W^&}A+&G&GːF V ^&G&WҐ^&G&W &G&WF V ڐ&G&W^` &wF V %FVRP tFV^&G &W&wjG Pj u|F V ^&G&W &9Wrw&9Gv&G&WFV^&9Wr;w&9Gv3&9Wrw&9Gr+&G&G&G&G &G&W&+G&G^&G+ː^&G&W%&G&W&G&9W wr&9Gw&G&^&wG Pv &w&wGP#=w^&G&W&G&G&W+^&?{u^F&<}t u+ˋ^&?tmF^6+&@&F9Fs,vV tvP tv66`"+^UZ^&jjqV@v EFV u jjJ^^&?uvPQ^&=uLjӐ&7V tvP? t ^&7dFV^&6&&Pvv u ^&G)0;Fu;Nt;Fu;Nt^&jCijj WFv WFV u jj\vP uv  vvvFjvF %FF %FF %Fvv uQF tHt+Ht(jjFrmh!FV u ,FwmvP^&=uvv`"jh멐jhvv\!vvvvvvPjjjvFVRPhF tF^&7F=u2wR=u,wh,t,u,u~Tjhj~t3vv^&7BjP-u-u-u0-X!u~rj;F t Ht$Ht!Frmh !FV u FmmvP^&=ujjvv\! !vvvvv F u=tb^&7~F=tw3=w=s jGvjj -t]-s--v%-tHHtHHt-t-!~u^&7j뭐vvvv6F t bjj^&^&~uvvt~tvvvvvvF tb^&7F=tw+=w=s -!uJjp-uh-t4-t-t- t-t-4uD^&^&j}vFV u jj vPF tjvv vv ^&w j(%v "*FV u jj/ vP tjjjFP\!~vFvFPv v@! ~u ~u^&wjFPjvvFP~t&F*FF$ȈFF$FF~t F*FF$?FF$FFPFPF tjP^&wjFPj F tjjvV u jj vP^ &+^&P+^&FvFV u jj vPn tU0;Fu;Nt;Fu;Nuv vv (^&;vvvv v vvv #vv vv vv/F~t~rj;v`jjUjjH vFV u jj vP t?vvvv v vvZF u=0;Fu;Nt-vv vvv vv vvFF ^&9t,~r j;vr~vj~ujjpjN66>D6>6t3X6&ːF=w1=s u7^&&Wvv v  tjP-t-$r- vjjo j;FP$ t ^& F $^&+^&G&GPP,jjjjFPF t jPvvFPFF^&F&GF&G&GF&GF&GF&G&GF&G jvgjj UF^ &F^&jjZU* =^&jj6U^&&G jjU uGjF' u jhjjFR6\!&G &G uOj' tjjR6\!&&G&G&G ^ &^&jje#jj %Ajj3jj%jjF Fu jjjjdvvpF uFvАjjUVWv~ Ns_^]UW~N F s_]+ːFFuFFFFuFFː~u FFFHFFV+FF FtUF^&9Gr3F Fu&&W&&W^&&WFVː^F&&WFV륐vFP* u FVː+ː VFP-F^&G+FFFV Ft@F^&9Gr$v&&TF Fu4FV &^ˉ^F&&W봐^+&G&F Ft̋FV^&&W^ːUVF^6&F &@^ː tf &h &+j & u+ːFP! tjvR6\!F,h &P!$<ujjv>FFj &9wơːVA u+^FFj &9v&xtFڐ^&F(&xuFF9FuF^FFj &9w딐Vv!FV Fu^ː‰FP!Fv!FvvjFP tvv '`"봐Fh &FPvvvF*P}  uă~ $FPvvFv&@^&+^ Fh &FFF N tvFjvF t+˃~ t0vFv vF ujjvFXFF9FwFːWVFj &9s^_ː6&F&G*F~ tHt҃~t~ubv!FNI;scv vv7 u^6&NAQ+PQFPQ@! VW`"v vv tM+^_ːFFN tvFjvF  tݸː~ t (vv v u+>^&t!& t +PQ`"jjvFFN uVFh &9v^ː&+Fj &;s tڋv&xu^&F@F&xvF^&Fj &9w֋F^FPj u+ːv~PjvKF tۋ+ːFPvF=tvPːUhh0F*PUvːjFP6 uFːhh0hjFPZFP5Fhh0hjFPZ뿐FjFP6 uF> )v jhːFn`F<u%~t\NF Nj j j6F^F&FN < t <t<t<uj FˊF*P~ uFFPj# u jj+F Pjjv4%^& ujhj~ tF P^&+PQ\!j ~u j j%v!t vj+FPv('F=uh;뾐vP&j NЉFF9Fu~ s jjjP!F;FsߍFPv('F=uh;Fv~Pv& tjh롐)F t9F  *+PQvv u^&7j  u jjh;v j  uF ^&Ր~tFPF^&%j jj VjjjjjhFF t h4FFPF-cPPX~OvFOvvv^db Ĝbv&F~rPX^ X*FFFFFFPPXFFtFFVFFPBPXFPvPX~tvhhRˍFPjhPX^&$t(vPXv. +PXvlPX~uhhhnːvhhRWVv^_WVvv vl<^_WVv^_WVvv^_WVv(^_WVv)^_WV<^_WVv ^_WVvv(^_WVvvv vv vFP<^_WVvvv v /^_WVvv v^_tU s v3P^Se u+^&&WF2^F &&W3] UF>@t=t P  L]U~u ,] v ~FF=s=r~sF-F-F~to~ vFt ^8 s~u~uF1 t ZFPF%mY^l NHF=v ĊF~&] ~&] Y]&FFF=F\FzFFFFFF2FQF 1F1FF1Vu FFmFm1FF1VF1F ;vNvB;FvNFF^&F 1^&W^&8Os&vF+B@^&GF1^&WF <1^&WF 1F1^&WF 1º PF1Y^&GU^ &G 33&:t :.t$C^Y tt &^&] ]U^&G :w):u&G t&G uF&G &G 3  ]U^&G uP u>t&G>u]ð] 5UQQPP uJF6P u8=u0P u!F6P u=t=!t3]^ &G :-uSvv^ &G :tWSvv$n^ &G ^ Svv$FNs=u8^ SFPD~u#^ &G ^ &dt@Fs률^ &G F,^ &G :r^ &G :tw&G 9Fu9Fu^ &G&WFV^ &G&W;Vu;Fw3&G^ &O^ &O^ &O&W;Vu;Ns+^ &r &G&;Gwe^ &G &W"N~;u;wL&wщFVN; 6u;s&+O &"N։~؋F^ &G-sS,F u^ &G-sG<PFPTF^ &G-FVFVF%Ff^ &G^ &G^ &GNV^ &O &W"^ SPFPFP,F u4F^ &G^ &G :t :t^ Sj4F t^ &G&G &W"FV&9Wu&9Gw&G&W9Fu9Fu^ &G&WFV^ &G&9G*s&G*^ &FF^ &G@1&@FތFF^ FV&9W"u&9G v&G*H1Fܺ&G &W"N~;u;r_F&+O &"N։~؋F։F&O,r&9G*sSl$F tF^  7&G^ &G*&;G(uF&G(F^ &G* ^ F&9G*s&G*^ F&9G(v&G(Fr^ Sj$\F u^ Sl$F uy^ &G ts&w8&SP^ &w"&w G<P^ &w: TF t@^ &G-^ &G &W"&G4&W6^ &G&G.^ &F&G0Z&W2~Yt^ &G@1&W^ &w&@F&Z&W^ &GN^ &O^ &OF~+&G &"^ &G&G(^ &G&G*^ &G,^ &Yti&w8&Sh^ &w"&w FP#Fu^ &?^ &G,(~t^ &G&GF^ &G :t ^&FF^& 8G &W"&O*&;Wu&;GrI1&G^&G*1 uSj$\F u`^&G@1&@FF^&G*1&G &W"FV&w8^SQRPFP#FtK uX^&G*1V+^0^~&}*9^Y^&G*H13^Sj\F u/v&|*&L+^9 ^&G*&G^&G,^ &G :-uS^SzO^ &G :t S^S<6^ &du^ &G ^ S^SF^ &G FU^&G :r^&G :t:u^&G&G &W"^&&Wc^& 9G :uX&r&G&;Gv &G&W^&G&G &W"^&&W^&G s7&G s/^&/&_!^&G :u^&&G ]^&^ &&W^&G :t ^S,F uk^&G;s]@1V&G&G &"F~&w8&XSv^&pWPG<P^&w:TF t@^&G-F^&GFrF@1V^&G&G &W"FV&G-sG<PFPTF^&G-3^&w8v&XSv^&pvvFP#FNVF׉NV~u t%^&9Wu&9O :r&O&WFF t ^&Gv^&@F&Z&W^&GFV^&G &W"^&G&W;Vu;FYvF&GF^&G8^&G^&G&W&+G &W"FVF&G^&uFF^&G :t SvW46^&du^&G ^SvW4F^&G F^&G :t:t :t^&G&G &W"FV&9Wu&9Gw&G&W^&G&9G*s&G*FP&t@"FP$\F u^&uSl$F t^&w8&S^&w&w"&w G<P^&w: TF t@^&G- ;^&G &W"&G4&W6^&G&G.^&F&G0Z&W2^Sv$\F Yu,^&w8jGPj ^&G :u ^&G :t@&& tA"F&G :uC&du ^&du&G ^&G-sS&G :u0G<PFPT1^&G :t:t:t ^G<PFPTFF^&w:FPD u ~u~uߊFs^&w8jGPj FF^&w8 F^&w:)F^&G F u F uFF :r10^&Fr^&0FFF 10^v& <F@ vvFPF^SvhF^&:F@F^Pvj]FF^&:F@F^Pvj6FF(FFF^SvRQPNQNQPF u$F t^ SNQvNQPjF~uVFF^S PvFPDF u2~t,^S PvFPDF u~tF;Fv4N+NA^v0^ ~9^YFF+F@^&^&<{t<[tF FF^&^&?{uFS PvFPDF uoF sdt_NAv~^YF@^&^v&48  =^& ^S PvFPDF u ~uFHN;v9@N+^vp^~&=9^YF@N+^&CFPF u^&O@wA^~&=9^Y^&G@^&^v&48 ^&v&4^P^&wg&we^&^v&48 ^&"^vFF^&F^&G^vNFY^&Gw^ &Gj^&GyF^&^vNFYFPF uQ^&G@^&^&O@wA^^Y^&Ƈ^&Ƈ^PF u >N^ GkP^ &PFPFPj<F u#FPvhjj^Sh Pj T^&G F =wmt =amt^SvFPFPjF<F uݍFPvjjFPQ؍GPQF!t=u%~^&Gi^GePF9FvF^kvNFYF^&^S^Sv^SFP<F tF~u;^SvRPPRPF=u^v&xF^&Gi뾃~tfhFP*F^&F^&G^vNFYFP&GP}F^Sh+FF7^SFPv ?RQjv PvF u ^&G  s ^&G8^&G8Fvj^ Sj7F t^&F^GkP P^&PFPDF uFt @^&F^& ^ &Ow~&=^ 9^NOY^ &G^&F t$@^wk~ ^Y^ vx  ~ B^&G :t ^&G ^SFPFPy<F u^SrF u}^&FFvN^S^Svm<F tJ^G8P^SvRPjhmmLF u"^&w8F t^&w8 FFU^&G  @:t ~v F^&Gj]^ &dtZSFP^& uV^ &du&G-sG<P^ST^&^ Shwmvv^& u^ &G ^&^ &Gd<tN<uSh4^& uH^ SFP^& u/^ Shrmvv^& u^ &G ^&U]. ]U#U$VWQ^S4Y_^F^OGG w 3GGG؉GGGFG F GFGFGFGFGPS]UU^ SG PPFP\[#uMG~&w A r/^ F%;u^ ^ FF;tX F ;FuX] ^&^SP$\F t^&G t~&w8&SP^&w"&w G<P^&w: TF t@^&G-^&G &W"&G4&W6^&G&G.^&F&G0Z&W2~Yt^&GFu^&G@1V&G&G &W"F^&Gv^&@F&Z&Wv^&@&G^&G*^&G(^&G^&G, ^&G :t :t F^&G-rG<PFPTF^&G-^&G0FF^F&G4&W6Ft.H^&O.+N^v0^9 B^Y^&O.N^F&)G.^v^&G0Z&W2F^&.uF tuSv\F tF^&G0FF^&w8^S^&w.&w6&w4FP$FFt.H^&O.+N^v0^9^Y^&O.N^F&G4&W6^F&)G.^v^&G0Z&W2F t ^&.u%FsFr^Sh\F u^&G :t :t ^&G&WFV&O&O &"N~;u;wN~Fs FF% uG^&w8> u4^&G&G^&G-^S4>^_]U ~F =amt =wmt@ EO F^PFPtF u1~Ps &F^&G^&G F^&Z&W]U ^&^&G :t ^&FF^&GF u^&O;wINF FF)F v ~^Y~ Nu+JVFt)N+^p^9^YN^&^v&FPFPtFv u^F&L]U^ S^S]FFFFFPFFFFP4FFFF^FFPFuFF u)vFPFF^&F^ &L FȆ^&^&G :;t W^&G<t':t!&OFPsFr^&G^&u2F ^&~ t^ &?utPPP^ Sv _>Du!DFPF u I ~ rDB @ujj@P/F t^&GF@&8G wF@X ^Fv&DF&GF&GF&GF^&GF&GF&GF&GF&G F&8G uANsNQPPF t FF^&#tF ;Fv F&O#F ;Fw FrF9F w~^ &FF^&O&@^&G^&w6 FA:r j F~uv&<tF~to~tEv&<u<^&?t'~tv &* v &*&4v &^&~tv &J &M&U&;Pu&;Hs4DF^&p4v&Z&TF^&A&DF끸4FJ FL F^UF Ful;C^&F F uc;.F Fui;!^ &~N : au+J^&]UF Ful;B^&F F uc;-F Fui; ^ &~N OtI^&]UPF F uk;+v&;Vu ;F uj;{F<w*Pvv 6~uvv 5F#uv&F?~t6~u0F Fui;&~tv&v &v&+h;UF Fuk;\+v&;Vu ;Fui;CF F uj;6F#t,V;r#u`;v^&@v &v&+h;^&&WF F u cFPF u6F;Ft )F։F u F^ &~!t FtFF]@ dMS Run-Time Library - Copyright (c) 1990, Microsoft Corp[sys]2.0>XvtChMsg.binR%s EnvironmentB erRUN>VNVF_C_FILE_INFO= RRD fEEE50P 0PX0F g00WP ``````ppxxxx(null)l[Kbd][Vid] d[Lpt][Nul][Debug]|[SysIn][SysOut]>$$$!$#d>$%$)$$*]$7u$8,44\44,\44a]y]yB.\B\B.\Z]y \4H hx<F<y|]y ]y {y24$$t;t4< [KBD][VID]>>J iJ      2Q=\z[KBD][VID][]}[!Scr]]$$.TmpL j}[!Scr][!Scr][scr]<$>BsFilter.tmpVNVFp        ~DD{}MASTERSERVERLOCAL{}[]{}[]<>[sys]LptConfig.Sys&Press NEXT PAGE or SCROLL UP to continue (Press NEXT PAGE to continue XVT/CH-R2.1.8-(10/21/93-23:04)<>R6000 - stack overflow R6003 - integer divide by 0 R6008 - nO kot enough space for arguments R6009 - not enough space for environment run-time error R6001 - null pointer assignment R6002 - floating-point support not loaded Q l S m,U n8W oDY pP[ q\] rh_ sta tc u LIBRARY: ctos.lib VERSION: R12.3.0 (friday october 15, 1993, 17:24) LIBRARY: ctostoolkit.lib VERSION: R12.3.0 (friday october 15, 1993, 17:26) LIBRARY: enls.lib VERSION: R12.3.0 (friday october 15, 1993, 17:28) COPYRIGHT 1989, 1992 XVT SOFTWARE, INC. ALL RIGHTS RESERVED. COPYRIGHT 1993 UNISYS CORPORATION. ALL RIGHTS RESERVED. THIS SOFTWARE IS PROPRIETARY TO UNISYS CORPORATION AND IS NOT TO BE REPRODUCED, USED OR DISCLOSED EXCEPT IN ACCORDANCE WITH THE APPLICABLE PROGRAM LICENSE OR UPON WRITTEN AUTHe vORIZATION OF THE OFFICE OF THE GENERAL COUNSEL, PATENT AND TECHNOLOGY DIVISION, BLUE BELL, PENNSYLVANIA, 19424, USA. <)D<*]<7u<8DLLtLLDtLLa]y]yB.\B\B.\Z]y tLxTFTy]y ]y {y2L<<;4T g mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmK mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmK mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmL mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmL mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmM mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmM mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmN mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmN mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmO mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmO mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm