파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파파