From: fincs Date: Thu, 24 Dec 2015 11:39:26 +0000 (+0100) Subject: Examples have been moved to https://github.com/devkitPro/3ds-examples X-Git-Tag: v1.1.0~11 X-Git-Url: https://chaos.moe/g/?a=commitdiff_plain;h=20e542c2c888a6c6608183667933792504d4b0b5;p=corbenik%2Fctrulib.git Examples have been moved to https://github.com/devkitPro/3ds-examples --- diff --git a/.gitignore b/.gitignore index bdb1a70..9c3f938 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,6 @@ Thumbs.db build/ lib/ docs/ +examples/ internal_docs build.sh diff --git a/examples/.gitignore b/examples/.gitignore deleted file mode 100644 index a4149ca..0000000 --- a/examples/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build/ -*.3dsx -*.elf diff --git a/examples/Makefile b/examples/Makefile deleted file mode 100644 index 444e135..0000000 --- a/examples/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -SUBDIRS:= $(shell ls | egrep -v '^(CVS)$$') - -DATESTRING := $(shell date +%Y)$(shell date +%m)$(shell date +%d) - -#--------------------------------------------------------------------------------- -all: examples -#--------------------------------------------------------------------------------- - @rm -fr bin - @mkdir -p bin - @find . -name "*.3dsx" ! -path "./bin/*" -exec cp -fv {} bin \; - -examples: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done; - -#--------------------------------------------------------------------------------- -clean: -#--------------------------------------------------------------------------------- - @rm -fr bin - @rm -f *.bz2 - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done; - -#--------------------------------------------------------------------------------- -dist: clean -#--------------------------------------------------------------------------------- - @rm -fr bin - @tar --exclude=.svn --exclude=*CVS* -cvjf 3ds-examples-$(DATESTRING).tar.bz2 * diff --git a/examples/app_launch/Makefile b/examples/app_launch/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/app_launch/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/app_launch/README.md b/examples/app_launch/README.md deleted file mode 100644 index 2fa1986..0000000 --- a/examples/app_launch/README.md +++ /dev/null @@ -1,9 +0,0 @@ -app_launch -======= - -Example for launching other apps/applets with ctrulib. Press the A button to launch the app or applet specified in the source. - - -Note: The title ID of the EUR Nintendo 3DS Camera app is hardcoded and you need to change it if your 3DS is not an european one. See here for title IDs: http://3dbrew.org/wiki/Title_list#00040010_-_System_Applications -This example only works if launched as regular app by the home menu. It will not work with the homebrew menu. - diff --git a/examples/app_launch/source/main.c b/examples/app_launch/source/main.c deleted file mode 100644 index 6838e5c..0000000 --- a/examples/app_launch/source/main.c +++ /dev/null @@ -1,49 +0,0 @@ -#include -#include -#include <3ds.h> - - - -int main() -{ - gfxInitDefault(); // Init graphic stuff - - - // We need these 2 buffers for APT_DoAppJump() later. They can be smaller too - u8 buf0[0x300]; - u8 buf1[0x20]; - - - // Loop as long as the status is not exit - while(aptMainLoop()) - { - // Scan hid shared memory for input events - hidScanInput(); - - if(hidKeysDown() & KEY_A) // If the A button got pressed, start the app launch - { - // Clear both buffers - memset(buf0, 0, 0x300); - memset(buf1, 0, 0x20); - - // Open an APT session so we can talk to the APT service - aptOpenSession(); - // Prepare for the app launch - APT_PrepareToDoAppJump(0, 0x0004001000022400LL, 0); // *EUR* camera app title ID - // Tell APT to trigger the app launch and set the status of this app to exit - APT_DoAppJump(0x300 /* size of buf0 */, 0x20 /* size of buf1 */, buf0, buf1); - // Close the APT session because we don't need APT anymore - aptCloseSession(); - } - - // Flush + swap framebuffers and wait for VBlank. Not really needed in this example - gfxFlushBuffers(); - gfxSwapBuffers(); - gspWaitForVBlank(); - } - - - gfxExit(); - - return 0; -} diff --git a/examples/audio/mic/Makefile b/examples/audio/mic/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/audio/mic/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/audio/mic/README.md b/examples/audio/mic/README.md deleted file mode 100644 index f3e6d72..0000000 --- a/examples/audio/mic/README.md +++ /dev/null @@ -1,5 +0,0 @@ -mic -======= - -Example for using the microphone with ctrulib. Hold down the A button to record, the app will then play the recorded audio once the A button is released. Roughly 32 seconds of audio can be recorded with the default audiobuf size in this app. - diff --git a/examples/audio/mic/source/main.c b/examples/audio/mic/source/main.c deleted file mode 100644 index a180c4e..0000000 --- a/examples/audio/mic/source/main.c +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include -#include -#include -#include <3ds.h> - -int main() -{ - gfxInitDefault(); - consoleInit(GFX_BOTTOM, NULL); - - bool initialized = true; - - u32 micbuf_size = 0x30000; - u32 micbuf_pos = 0; - u8* micbuf = memalign(0x1000, micbuf_size); - - printf("Initializing CSND...\n"); - if(R_FAILED(csndInit())) - { - initialized = false; - printf("Could not initialize CSND.\n"); - } else printf("CSND initialized.\n"); - - printf("Initializing MIC...\n"); - if(R_FAILED(micInit(micbuf, micbuf_size))) - { - initialized = false; - printf("Could not initialize MIC.\n"); - } else printf("MIC initialized.\n"); - - u32 micbuf_datasize = micGetSampleDataSize(); - - u32 audiobuf_size = 0x100000; - u32 audiobuf_pos = 0; - u8* audiobuf = linearAlloc(audiobuf_size); - - if(initialized) printf("Hold A to record, release to play.\n"); - printf("Press START to exit.\n"); - - while(aptMainLoop()) - { - hidScanInput(); - gspWaitForVBlank(); - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - if(initialized) - { - if(kDown & KEY_A) - { - audiobuf_pos = 0; - micbuf_pos = 0; - - printf("Stopping audio playback...\n"); - CSND_SetPlayState(0x8, 0); - if(R_FAILED(CSND_UpdateInfo(0))) printf("Failed to stop audio playback.\n"); - - printf("Starting sampling...\n"); - if(R_SUCCEEDED(MICU_StartSampling(MICU_ENCODING_PCM16_SIGNED, MICU_SAMPLE_RATE_16360, 0, micbuf_datasize, true))) printf("Now recording.\n"); - else printf("Failed to start sampling.\n"); - } - - if((hidKeysHeld() & KEY_A) && audiobuf_pos < audiobuf_size) - { - u32 micbuf_readpos = micbuf_pos; - micbuf_pos = micGetLastSampleOffset(); - while(audiobuf_pos < audiobuf_size && micbuf_readpos != micbuf_pos) - { - audiobuf[audiobuf_pos] = micbuf[micbuf_readpos]; - audiobuf_pos++; - micbuf_readpos = (micbuf_readpos + 1) % micbuf_datasize; - } - } - - if(hidKeysUp() & KEY_A) - { - printf("Stoping sampling...\n"); - if(R_FAILED(MICU_StopSampling())) printf("Failed to stop sampling.\n"); - - printf("Starting audio playback...\n"); - if(R_SUCCEEDED(GSPGPU_FlushDataCache(audiobuf, audiobuf_pos)) && R_SUCCEEDED(csndPlaySound(0x8, SOUND_ONE_SHOT | SOUND_FORMAT_16BIT, 16360, 1.0, 0.0, (u32*)audiobuf, NULL, audiobuf_pos))) printf("Now playing.\n"); - else printf("Failed to start playback.\n"); - } - } - - gfxFlushBuffers(); - gfxSwapBuffers(); - } - - linearFree(audiobuf); - - micExit(); - free(micbuf); - - csndExit(); - gfxExit(); - return 0; -} - diff --git a/examples/camera/image/Makefile b/examples/camera/image/Makefile deleted file mode 100644 index a56a373..0000000 --- a/examples/camera/image/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/camera/image/README.md b/examples/camera/image/README.md deleted file mode 100644 index 5c444a1..0000000 --- a/examples/camera/image/README.md +++ /dev/null @@ -1,7 +0,0 @@ -image -======= - -Example for using the camera to take 3D pictures with ctrulib. Press the R button to take a picture - it will be displayed on the top screen. - -Currently this example does not make use of the 3DS camera's calibration data to get a correct 3D effect. - diff --git a/examples/camera/image/image.xml b/examples/camera/image/image.xml deleted file mode 100644 index 30545b3..0000000 --- a/examples/camera/image/image.xml +++ /dev/null @@ -1,3 +0,0 @@ - - 0004001000021400 - diff --git a/examples/camera/image/src/main.c b/examples/camera/image/src/main.c deleted file mode 100644 index 3f2827d..0000000 --- a/examples/camera/image/src/main.c +++ /dev/null @@ -1,190 +0,0 @@ -#include -#include -#include -#include -#include -#include <3ds.h> -#include -#include -#include -#include - -#define CONFIG_3D_SLIDERSTATE (*(volatile float*)0x1FF81080) -#define WAIT_TIMEOUT 300000000ULL - -#define WIDTH 400 -#define HEIGHT 240 -#define SCREEN_SIZE WIDTH * HEIGHT * 2 -#define BUF_SIZE SCREEN_SIZE * 2 - -static jmp_buf exitJmp; - -inline void clearScreen(void) { - u8 *frame = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); - memset(frame, 0, 320 * 240 * 3); -} - -void hang(char *message) { - clearScreen(); - printf("%s", message); - printf("Press start to exit"); - - while (aptMainLoop()) { - hidScanInput(); - - u32 kHeld = hidKeysHeld(); - if (kHeld & KEY_START) longjmp(exitJmp, 1); - } -} - -void cleanup() { - camExit(); - gfxExit(); - acExit(); -} - -void writePictureToFramebufferRGB565(void *fb, void *img, u16 x, u16 y, u16 width, u16 height) { - u8 *fb_8 = (u8*) fb; - u16 *img_16 = (u16*) img; - int i, j, draw_x, draw_y; - for(j = 0; j < height; j++) { - for(i = 0; i < width; i++) { - draw_y = y + height - j; - draw_x = x + i; - u32 v = (draw_y + draw_x * height) * 3; - u16 data = img_16[j * width + i]; - uint8_t b = ((data >> 11) & 0x1F) << 3; - uint8_t g = ((data >> 5) & 0x3F) << 2; - uint8_t r = (data & 0x1F) << 3; - fb_8[v] = r; - fb_8[v+1] = g; - fb_8[v+2] = b; - } - } -} - -// TODO: Figure out how to use CAMU_GetStereoCameraCalibrationData -void takePicture3D(u8 *buf) { - u32 bufSize; - printf("CAMU_GetMaxBytes: 0x%08X\n", (unsigned int) CAMU_GetMaxBytes(&bufSize, WIDTH, HEIGHT)); - printf("CAMU_SetTransferBytes: 0x%08X\n", (unsigned int) CAMU_SetTransferBytes(PORT_BOTH, bufSize, WIDTH, HEIGHT)); - - printf("CAMU_Activate: 0x%08X\n", (unsigned int) CAMU_Activate(SELECT_OUT1_OUT2)); - - Handle camReceiveEvent = 0; - Handle camReceiveEvent2 = 0; - - printf("CAMU_ClearBuffer: 0x%08X\n", (unsigned int) CAMU_ClearBuffer(PORT_BOTH)); - printf("CAMU_SynchronizeVsyncTiming: 0x%08X\n", (unsigned int) CAMU_SynchronizeVsyncTiming(SELECT_OUT1, SELECT_OUT2)); - - printf("CAMU_StartCapture: 0x%08X\n", (unsigned int) CAMU_StartCapture(PORT_BOTH)); - - printf("CAMU_SetReceiving: 0x%08X\n", (unsigned int) CAMU_SetReceiving(&camReceiveEvent, buf, PORT_CAM1, SCREEN_SIZE, (s16) bufSize)); - printf("CAMU_SetReceiving: 0x%08X\n", (unsigned int) CAMU_SetReceiving(&camReceiveEvent2, buf + SCREEN_SIZE, PORT_CAM2, SCREEN_SIZE, (s16) bufSize)); - printf("svcWaitSynchronization: 0x%08X\n", (unsigned int) svcWaitSynchronization(camReceiveEvent, WAIT_TIMEOUT)); - printf("svcWaitSynchronization: 0x%08X\n", (unsigned int) svcWaitSynchronization(camReceiveEvent2, WAIT_TIMEOUT)); - printf("CAMU_PlayShutterSound: 0x%08X\n", (unsigned int) CAMU_PlayShutterSound(SHUTTER_SOUND_TYPE_NORMAL)); - - printf("CAMU_StopCapture: 0x%08X\n", (unsigned int) CAMU_StopCapture(PORT_BOTH)); - - svcCloseHandle(camReceiveEvent); - svcCloseHandle(camReceiveEvent2); - - printf("CAMU_Activate: 0x%08X\n", (unsigned int) CAMU_Activate(SELECT_NONE)); -} - -int main() { - // Initializations - acInit(); - gfxInitDefault(); - consoleInit(GFX_BOTTOM, NULL); - - // Enable double buffering to remove screen tearing - gfxSetDoubleBuffering(GFX_TOP, true); - gfxSetDoubleBuffering(GFX_BOTTOM, false); - - // Save current stack frame for easy exit - if(setjmp(exitJmp)) { - cleanup(); - return 0; - } - - u32 kDown; - u32 kHeld; - - printf("Initializing camera\n"); - - printf("camInit: 0x%08X\n", (unsigned int) camInit()); - - printf("CAMU_SetSize: 0x%08X\n", (unsigned int) CAMU_SetSize(SELECT_OUT1_OUT2, SIZE_CTR_TOP_LCD, CONTEXT_A)); - printf("CAMU_SetOutputFormat: 0x%08X\n", (unsigned int) CAMU_SetOutputFormat(SELECT_OUT1_OUT2, OUTPUT_RGB_565, CONTEXT_A)); - - printf("CAMU_SetNoiseFilter: 0x%08X\n", (unsigned int) CAMU_SetNoiseFilter(SELECT_OUT1_OUT2, true)); - printf("CAMU_SetAutoExposure: 0x%08X\n", (unsigned int) CAMU_SetAutoExposure(SELECT_OUT1_OUT2, true)); - printf("CAMU_SetAutoWhiteBalance: 0x%08X\n", (unsigned int) CAMU_SetAutoWhiteBalance(SELECT_OUT1_OUT2, true)); - //printf("CAMU_SetEffect: 0x%08X\n", (unsigned int) CAMU_SetEffect(SELECT_OUT1_OUT2, EFFECT_MONO, CONTEXT_A)); - - printf("CAMU_SetTrimming: 0x%08X\n", (unsigned int) CAMU_SetTrimming(PORT_CAM1, false)); - printf("CAMU_SetTrimming: 0x%08X\n", (unsigned int) CAMU_SetTrimming(PORT_CAM2, false)); - //printf("CAMU_SetTrimmingParamsCenter: 0x%08X\n", (unsigned int) CAMU_SetTrimmingParamsCenter(PORT_CAM1, 512, 240, 512, 384)); - - u8 *buf = malloc(BUF_SIZE); - if(!buf) { - hang("Failed to allocate memory!"); - } - - gfxFlushBuffers(); - gspWaitForVBlank(); - gfxSwapBuffers(); - - bool held_R = false; - - printf("\nPress R to take a new picture\n"); - printf("Use slider to enable/disable 3D\n"); - printf("Press Start to exit to Homebrew Launcher\n"); - - // Main loop - while (aptMainLoop()) { - // Read which buttons are currently pressed or not - hidScanInput(); - kDown = hidKeysDown(); - kHeld = hidKeysHeld(); - - // If START button is pressed, break loop and quit - if (kDown & KEY_START) { - break; - } - - if ((kHeld & KEY_R) && !held_R) { - printf("Capturing new image\n"); - gfxFlushBuffers(); - gspWaitForVBlank(); - gfxSwapBuffers(); - held_R = true; - takePicture3D(buf); - } else if (!(kHeld & KEY_R)) { - held_R = false; - } - - if(CONFIG_3D_SLIDERSTATE > 0.0f) { - gfxSet3D(true); - writePictureToFramebufferRGB565(gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), buf, 0, 0, WIDTH, HEIGHT); - writePictureToFramebufferRGB565(gfxGetFramebuffer(GFX_TOP, GFX_RIGHT, NULL, NULL), buf + SCREEN_SIZE, 0, 0, WIDTH, HEIGHT); - } else { - gfxSet3D(false); - writePictureToFramebufferRGB565(gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), buf, 0, 0, WIDTH, HEIGHT); - } - - // Flush and swap framebuffers - gfxFlushBuffers(); - gspWaitForVBlank(); - gfxSwapBuffers(); - } - - // Exit - free(buf); - cleanup(); - - // Return to hbmenu - return 0; -} diff --git a/examples/camera/video/Makefile b/examples/camera/video/Makefile deleted file mode 100644 index a56a373..0000000 --- a/examples/camera/video/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/camera/video/README.md b/examples/camera/video/README.md deleted file mode 100644 index 7c1e3c1..0000000 --- a/examples/camera/video/README.md +++ /dev/null @@ -1,7 +0,0 @@ -video -======= - -Example for using the camera to capture 3D videos with ctrulib. - -Currently this example does not make use of the 3DS camera's calibration data to get a correct 3D effect. - diff --git a/examples/camera/video/src/main.c b/examples/camera/video/src/main.c deleted file mode 100644 index f083034..0000000 --- a/examples/camera/video/src/main.c +++ /dev/null @@ -1,206 +0,0 @@ -#include -#include -#include -#include -#include -#include <3ds.h> -#include -#include -#include -#include - -#define CONFIG_3D_SLIDERSTATE (*(volatile float*)0x1FF81080) -#define WAIT_TIMEOUT 1000000000ULL - -#define WIDTH 400 -#define HEIGHT 240 -#define SCREEN_SIZE WIDTH * HEIGHT * 2 -#define BUF_SIZE SCREEN_SIZE * 2 - -static jmp_buf exitJmp; - -inline void clearScreen(void) { - u8 *frame = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); - memset(frame, 0, 320 * 240 * 3); -} - -void hang(char *message) { - clearScreen(); - printf("%s", message); - printf("Press start to exit"); - - while (aptMainLoop()) { - hidScanInput(); - - u32 kHeld = hidKeysHeld(); - if (kHeld & KEY_START) longjmp(exitJmp, 1); - } -} - -void cleanup() { - camExit(); - gfxExit(); - acExit(); -} - -void writePictureToFramebufferRGB565(void *fb, void *img, u16 x, u16 y, u16 width, u16 height) { - u8 *fb_8 = (u8*) fb; - u16 *img_16 = (u16*) img; - int i, j, draw_x, draw_y; - for(j = 0; j < height; j++) { - for(i = 0; i < width; i++) { - draw_y = y + height - j; - draw_x = x + i; - u32 v = (draw_y + draw_x * height) * 3; - u16 data = img_16[j * width + i]; - uint8_t b = ((data >> 11) & 0x1F) << 3; - uint8_t g = ((data >> 5) & 0x3F) << 2; - uint8_t r = (data & 0x1F) << 3; - fb_8[v] = r; - fb_8[v+1] = g; - fb_8[v+2] = b; - } - } -} - -// TODO: Figure out how to use CAMU_GetStereoCameraCalibrationData -void takePicture3D(u8 *buf) { - u32 bufSize; - printf("CAMU_GetMaxBytes: 0x%08X\n", (unsigned int) CAMU_GetMaxBytes(&bufSize, WIDTH, HEIGHT)); - printf("CAMU_SetTransferBytes: 0x%08X\n", (unsigned int) CAMU_SetTransferBytes(PORT_BOTH, bufSize, WIDTH, HEIGHT)); - - printf("CAMU_Activate: 0x%08X\n", (unsigned int) CAMU_Activate(SELECT_OUT1_OUT2)); - - Handle camReceiveEvent = 0; - Handle camReceiveEvent2 = 0; - - printf("CAMU_ClearBuffer: 0x%08X\n", (unsigned int) CAMU_ClearBuffer(PORT_BOTH)); - printf("CAMU_SynchronizeVsyncTiming: 0x%08X\n", (unsigned int) CAMU_SynchronizeVsyncTiming(SELECT_OUT1, SELECT_OUT2)); - - printf("CAMU_StartCapture: 0x%08X\n", (unsigned int) CAMU_StartCapture(PORT_BOTH)); - - printf("CAMU_SetReceiving: 0x%08X\n", (unsigned int) CAMU_SetReceiving(&camReceiveEvent, buf, PORT_CAM1, SCREEN_SIZE, (s16) bufSize)); - printf("CAMU_SetReceiving: 0x%08X\n", (unsigned int) CAMU_SetReceiving(&camReceiveEvent2, buf + SCREEN_SIZE, PORT_CAM2, SCREEN_SIZE, (s16) bufSize)); - printf("svcWaitSynchronization: 0x%08X\n", (unsigned int) svcWaitSynchronization(camReceiveEvent, WAIT_TIMEOUT)); - printf("svcWaitSynchronization: 0x%08X\n", (unsigned int) svcWaitSynchronization(camReceiveEvent2, WAIT_TIMEOUT)); - printf("CAMU_PlayShutterSound: 0x%08X\n", (unsigned int) CAMU_PlayShutterSound(SHUTTER_SOUND_TYPE_NORMAL)); - - printf("CAMU_StopCapture: 0x%08X\n", (unsigned int) CAMU_StopCapture(PORT_BOTH)); - - svcCloseHandle(camReceiveEvent); - svcCloseHandle(camReceiveEvent2); - - printf("CAMU_Activate: 0x%08X\n", (unsigned int) CAMU_Activate(SELECT_NONE)); -} - -int main() { - // Initializations - acInit(); - gfxInitDefault(); - consoleInit(GFX_BOTTOM, NULL); - - // Enable double buffering to remove screen tearing - gfxSetDoubleBuffering(GFX_TOP, true); - gfxSetDoubleBuffering(GFX_BOTTOM, false); - - // Save current stack frame for easy exit - if(setjmp(exitJmp)) { - cleanup(); - return 0; - } - - u32 kDown; - - printf("Initializing camera\n"); - - printf("camInit: 0x%08X\n", (unsigned int) camInit()); - - printf("CAMU_SetSize: 0x%08X\n", (unsigned int) CAMU_SetSize(SELECT_OUT1_OUT2, SIZE_CTR_TOP_LCD, CONTEXT_A)); - printf("CAMU_SetOutputFormat: 0x%08X\n", (unsigned int) CAMU_SetOutputFormat(SELECT_OUT1_OUT2, OUTPUT_RGB_565, CONTEXT_A)); - - // TODO: For some reason frame grabbing times out above 10fps. Figure out why this is. - printf("CAMU_SetFrameRate: 0x%08X\n", (unsigned int) CAMU_SetFrameRate(SELECT_OUT1_OUT2, FRAME_RATE_10)); - - printf("CAMU_SetNoiseFilter: 0x%08X\n", (unsigned int) CAMU_SetNoiseFilter(SELECT_OUT1_OUT2, true)); - printf("CAMU_SetAutoExposure: 0x%08X\n", (unsigned int) CAMU_SetAutoExposure(SELECT_OUT1_OUT2, true)); - printf("CAMU_SetAutoWhiteBalance: 0x%08X\n", (unsigned int) CAMU_SetAutoWhiteBalance(SELECT_OUT1_OUT2, true)); - // TODO: Figure out how to use the effects properly. - //printf("CAMU_SetEffect: 0x%08X\n", (unsigned int) CAMU_SetEffect(SELECT_OUT1_OUT2, EFFECT_SEPIA, CONTEXT_A)); - - printf("CAMU_SetTrimming: 0x%08X\n", (unsigned int) CAMU_SetTrimming(PORT_CAM1, false)); - printf("CAMU_SetTrimming: 0x%08X\n", (unsigned int) CAMU_SetTrimming(PORT_CAM2, false)); - //printf("CAMU_SetTrimmingParamsCenter: 0x%08X\n", (unsigned int) CAMU_SetTrimmingParamsCenter(PORT_CAM1, 512, 240, 512, 384)); - - u8 *buf = malloc(BUF_SIZE); - if(!buf) { - hang("Failed to allocate memory!"); - } - - u32 bufSize; - printf("CAMU_GetMaxBytes: 0x%08X\n", (unsigned int) CAMU_GetMaxBytes(&bufSize, WIDTH, HEIGHT)); - printf("CAMU_SetTransferBytes: 0x%08X\n", (unsigned int) CAMU_SetTransferBytes(PORT_BOTH, bufSize, WIDTH, HEIGHT)); - - printf("CAMU_Activate: 0x%08X\n", (unsigned int) CAMU_Activate(SELECT_OUT1_OUT2)); - - Handle camReceiveEvent = 0; - Handle camReceiveEvent2 = 0; - - printf("CAMU_ClearBuffer: 0x%08X\n", (unsigned int) CAMU_ClearBuffer(PORT_BOTH)); - printf("CAMU_SynchronizeVsyncTiming: 0x%08X\n", (unsigned int) CAMU_SynchronizeVsyncTiming(SELECT_OUT1, SELECT_OUT2)); - - printf("CAMU_StartCapture: 0x%08X\n", (unsigned int) CAMU_StartCapture(PORT_BOTH)); - printf("CAMU_PlayShutterSound: 0x%08X\n", (unsigned int) CAMU_PlayShutterSound(SHUTTER_SOUND_TYPE_MOVIE)); - - gfxFlushBuffers(); - gspWaitForVBlank(); - gfxSwapBuffers(); - - printf("\nUse slider to enable/disable 3D\n"); - printf("Press Start to exit to Homebrew Launcher\n"); - - // Main loop - while (aptMainLoop()) { - // Read which buttons are currently pressed or not - hidScanInput(); - kDown = hidKeysDown(); - - // If START button is pressed, break loop and quit - if (kDown & KEY_START) { - break; - } - - printf("CAMU_SetReceiving: 0x%08X\n", (unsigned int) CAMU_SetReceiving(&camReceiveEvent, buf, PORT_CAM1, SCREEN_SIZE, (s16) bufSize)); - CAMU_SetReceiving(&camReceiveEvent2, buf + SCREEN_SIZE, PORT_CAM2, SCREEN_SIZE, (s16) bufSize); - - printf("svcWaitSynchronization: 0x%08X\n", (unsigned int) svcWaitSynchronization(camReceiveEvent, WAIT_TIMEOUT)); - svcWaitSynchronization(camReceiveEvent2, WAIT_TIMEOUT); - - if(CONFIG_3D_SLIDERSTATE > 0.0f) { - gfxSet3D(true); - writePictureToFramebufferRGB565(gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), buf, 0, 0, WIDTH, HEIGHT); - writePictureToFramebufferRGB565(gfxGetFramebuffer(GFX_TOP, GFX_RIGHT, NULL, NULL), buf + SCREEN_SIZE, 0, 0, WIDTH, HEIGHT); - } else { - gfxSet3D(false); - writePictureToFramebufferRGB565(gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), buf, 0, 0, WIDTH, HEIGHT); - } - - printf("svcCloseHandle: 0x%08X\n", (unsigned int) svcCloseHandle(camReceiveEvent)); - svcCloseHandle(camReceiveEvent2); - - // Flush and swap framebuffers - gfxFlushBuffers(); - gspWaitForVBlank(); - gfxSwapBuffers(); - } - - printf("CAMU_StopCapture: 0x%08X\n", (unsigned int) CAMU_StopCapture(PORT_BOTH)); - - printf("CAMU_Activate: 0x%08X\n", (unsigned int) CAMU_Activate(SELECT_NONE)); - - // Exit - free(buf); - cleanup(); - - // Return to hbmenu - return 0; -} diff --git a/examples/camera/video/video.xml b/examples/camera/video/video.xml deleted file mode 100644 index 30545b3..0000000 --- a/examples/camera/video/video.xml +++ /dev/null @@ -1,3 +0,0 @@ - - 0004001000021400 - diff --git a/examples/get_system_language/Makefile b/examples/get_system_language/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/get_system_language/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/get_system_language/README.md b/examples/get_system_language/README.md deleted file mode 100644 index a54dbd6..0000000 --- a/examples/get_system_language/README.md +++ /dev/null @@ -1,4 +0,0 @@ -get_system_language -======= - -This is an example on how to get the system language on the 3DS. diff --git a/examples/get_system_language/source/main.c b/examples/get_system_language/source/main.c deleted file mode 100644 index 2672f47..0000000 --- a/examples/get_system_language/source/main.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include <3ds.h> - - -int main(int argc, char** argv) -{ - // Initialize services - gfxInitDefault(); - cfguInit(); - - - u8 language = 0; - Result res; - - // Init console for text output - consoleInit(GFX_BOTTOM, NULL); - - // Read the language field from the config savegame. - res = CFGU_GetSystemLanguage(&language); - - // Print return value and language code - printf(" Result: 0x%x\n", (int)res); - printf("Language code: %d", (int)language); - - - // Main loop - while (aptMainLoop()) - { - hidScanInput(); - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - gspWaitForVBlank(); - } - - // Exit services - cfguExit(); - gfxExit(); - return 0; -} diff --git a/examples/graphics/Makefile b/examples/graphics/Makefile deleted file mode 100644 index bce05ec..0000000 --- a/examples/graphics/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SUBDIRS:= `ls | egrep -v '^(CVS)$$'` -all: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done; -clean: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done; -install: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i install || { exit 1;} fi; done; diff --git a/examples/graphics/bitmap/24bit-color/Makefile b/examples/graphics/bitmap/24bit-color/Makefile deleted file mode 100644 index d91ef1b..0000000 --- a/examples/graphics/bitmap/24bit-color/Makefile +++ /dev/null @@ -1,193 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := -INCLUDES := include -GRAPHICS := gfx - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffast-math \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) \ - $(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) -PNGFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.png))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PNGFILES:.png=.bgr.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) \ - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -IMAGEMAGICK := $(shell which convert) - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -ifeq ($(strip $(IMAGEMAGICK)),) - -all: - @echo "Image Magick not found!" - @echo - @echo "Please install Image Magick from http://www.imagemagick.org/ to build this example" - -else - -all: $(BUILD) - -endif - -#--------------------------------------------------------------------------------- -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -.PHONY: all -all : $(OUTPUT).3dsx $(OUTPUT).smdh -endif -$(OUTPUT).3dsx : $(OUTPUT).elf -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - - - -#--------------------------------------------------------------------------------- -%.bgr.o: %.bgr -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -%.bgr: %.png -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @convert $< -rotate 90 $@ - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/bitmap/24bit-color/README.md b/examples/graphics/bitmap/24bit-color/README.md deleted file mode 100644 index 50fff6d..0000000 --- a/examples/graphics/bitmap/24bit-color/README.md +++ /dev/null @@ -1,16 +0,0 @@ -24bit Bitmap Example -======= - -This example shows on bottom screen an upscaled version of the nds examples Drunken Coders logo that can be found in devkitPro. - -If you want to try with your own image follow these steps: - -1. Download & install: http://www.imagemagick.org/ (If you get an option to add the application to the path make sure to check it!). -2. convert fileIn.png -channel B -separate fileIn.png -channel G -separate fileIn.png -channel R -separate -channel RGB -combine -rotate 90 fileOut.rgb -3. Rename fileOut.rgb in fileOut.bin -4. Copy fileOut.bin in the data folder of your project -5. Replace any reference of drunkenlogo_bin in main.cpp with fileOut_bin (or however you named it) -6. Re-Build the project - - -As you can see from the previos steps the image is clockwise rotated by 90 degrees and its B and R channels are swapped. The first operation is done because the 3DS screens are actually portrait screens rotated by 90 degrees (in a counter-clockwise direction), while the second one is done because the 3DS screens' framebuffers have a BGR888 color format, by default. \ No newline at end of file diff --git a/examples/graphics/bitmap/24bit-color/gfx/brew.png b/examples/graphics/bitmap/24bit-color/gfx/brew.png deleted file mode 100644 index 6ac625b..0000000 Binary files a/examples/graphics/bitmap/24bit-color/gfx/brew.png and /dev/null differ diff --git a/examples/graphics/bitmap/24bit-color/source/main.c b/examples/graphics/bitmap/24bit-color/source/main.c deleted file mode 100644 index a6ac76e..0000000 --- a/examples/graphics/bitmap/24bit-color/source/main.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - Hello World example made by Aurelio Mannara for ctrulib - This code was modified for the last time on: 12/13/2014 01:00 UTC+1 - - This wouldn't be possible without the amazing work done by: - -Smealum - -fincs - -WinterMute - -yellows8 - -plutoo - -mtheall - -Many others who worked on 3DS and I'm surely forgetting about -*/ - -#include <3ds.h> -#include -#include - -//This include a header containing definitions of our image -#include "brew_bgr.h" - -int main(int argc, char **argv) -{ - gfxInitDefault(); - - //Initialize console on top screen. Using NULL as the second argument tells the console library to use the internal console structure as current one - consoleInit(GFX_TOP, NULL); - - printf("Why so sad Smealum? We can haz 3DS homebrew!"); - - printf("\x1b[20;15HPress Start to exit."); - - //We don't need double buffering in this example. In this way we can draw our image only once on screen. - gfxSetDoubleBuffering(GFX_BOTTOM, false); - - //Get the bottom screen's frame buffer - u8* fb = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); - - //Copy our image in the bottom screen's frame buffer - memcpy(fb, brew_bgr, brew_bgr_size); - - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - // Exit services - gfxExit(); - return 0; -} diff --git a/examples/graphics/gpu/Makefile b/examples/graphics/gpu/Makefile deleted file mode 100644 index bce05ec..0000000 --- a/examples/graphics/gpu/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SUBDIRS:= `ls | egrep -v '^(CVS)$$'` -all: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done; -clean: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done; -install: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i install || { exit 1;} fi; done; diff --git a/examples/graphics/gpu/geoshader/Makefile b/examples/graphics/gpu/geoshader/Makefile deleted file mode 100644 index 3b72824..0000000 --- a/examples/graphics/gpu/geoshader/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffast-math \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pica))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) $(PICAFILES:.pica=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rule for assembling GPU shaders -#--------------------------------------------------------------------------------- -%.shbin.o: %.pica - @echo $(notdir $<) - $(eval CURBIN := $(patsubst %.pica,%.shbin,$(notdir $<))) - $(eval CURH := $(patsubst %.pica,%.psh.h,$(notdir $<))) - @picasso -h $(CURH) -o $(CURBIN) $< - @bin2s $(CURBIN) | $(AS) -o $@ - @echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - @echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - @echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/gpu/geoshader/README.md b/examples/graphics/gpu/geoshader/README.md deleted file mode 100644 index 5e3b6dd..0000000 --- a/examples/graphics/gpu/geoshader/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# GPU example - -This is a simple GPU example using the `picasso` shader assembler which comes with devkitARM r45 and up. -Users of earlier versions of devkitARM need to install the tool, which can be found in the address below: - -https://github.com/fincs/picasso/releases diff --git a/examples/graphics/gpu/geoshader/source/3dmath.c b/examples/graphics/gpu/geoshader/source/3dmath.c deleted file mode 100644 index eb8d03f..0000000 --- a/examples/graphics/gpu/geoshader/source/3dmath.c +++ /dev/null @@ -1,172 +0,0 @@ -#include "3dmath.h" - -void m4x4_identity(matrix_4x4* out) -{ - m4x4_zeros(out); - out->r[0].x = out->r[1].y = out->r[2].z = out->r[3].w = 1.0f; -} - -void m4x4_multiply(matrix_4x4* out, const matrix_4x4* a, const matrix_4x4* b) -{ - int i, j; - for (i = 0; i < 4; i ++) - for (j = 0; j < 4; j ++) - out->r[j].c[i] = a->r[j].x*b->r[0].c[i] + a->r[j].y*b->r[1].c[i] + a->r[j].z*b->r[2].c[i] + a->r[j].w*b->r[3].c[i]; -} - -void m4x4_translate(matrix_4x4* mtx, float x, float y, float z) -{ - matrix_4x4 tm, om; - - m4x4_identity(&tm); - tm.r[0].w = x; - tm.r[1].w = y; - tm.r[2].w = z; - - m4x4_multiply(&om, mtx, &tm); - m4x4_copy(mtx, &om); -} - -void m4x4_scale(matrix_4x4* mtx, float x, float y, float z) -{ - int i; - for (i = 0; i < 4; i ++) - { - mtx->r[i].x *= x; - mtx->r[i].y *= y; - mtx->r[i].z *= z; - } -} - -void m4x4_rotate_x(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = 1.0f; - rm.r[1].y = cosAngle; - rm.r[1].z = sinAngle; - rm.r[2].y = -sinAngle; - rm.r[2].z = cosAngle; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_rotate_y(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = cosAngle; - rm.r[0].z = sinAngle; - rm.r[1].y = 1.0f; - rm.r[2].x = -sinAngle; - rm.r[2].z = cosAngle; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_rotate_z(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = cosAngle; - rm.r[0].y = sinAngle; - rm.r[1].x = -sinAngle; - rm.r[1].y = cosAngle; - rm.r[2].z = 1.0f; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_ortho_tilt(matrix_4x4* mtx, float left, float right, float bottom, float top, float near, float far) -{ - matrix_4x4 mp; - m4x4_zeros(&mp); - - // Build standard orthogonal projection matrix - mp.r[0].x = 2.0f / (right - left); - mp.r[0].w = (left + right) / (left - right); - mp.r[1].y = 2.0f / (top - bottom); - mp.r[1].w = (bottom + top) / (bottom - top); - mp.r[2].z = 2.0f / (near - far); - mp.r[2].w = (far + near) / (far - near); - mp.r[3].w = 1.0f; - - // Fix depth range to [-1, 0] - matrix_4x4 mp2, mp3; - m4x4_identity(&mp2); - mp2.r[2].z = 0.5; - mp2.r[2].w = -0.5; - m4x4_multiply(&mp3, &mp2, &mp); - - // Fix the 3DS screens' orientation by swapping the X and Y axis - m4x4_identity(&mp2); - mp2.r[0].x = 0.0; - mp2.r[0].y = 1.0; - mp2.r[1].x = -1.0; // flipped - mp2.r[1].y = 0.0; - m4x4_multiply(mtx, &mp2, &mp3); -} - -void m4x4_persp_tilt(matrix_4x4* mtx, float fovx, float invaspect, float near, float far) -{ - // Notes: - // We are passed "fovy" and the "aspect ratio". However, the 3DS screens are sideways, - // and so are these parameters -- in fact, they are actually the fovx and the inverse - // of the aspect ratio. Therefore the formula for the perspective projection matrix - // had to be modified to be expressed in these terms instead. - - // Notes: - // fovx = 2 atan(tan(fovy/2)*w/h) - // fovy = 2 atan(tan(fovx/2)*h/w) - // invaspect = h/w - - // a0,0 = h / (w*tan(fovy/2)) = - // = h / (w*tan(2 atan(tan(fovx/2)*h/w) / 2)) = - // = h / (w*tan( atan(tan(fovx/2)*h/w) )) = - // = h / (w * tan(fovx/2)*h/w) = - // = 1 / tan(fovx/2) - - // a1,1 = 1 / tan(fovy/2) = (...) = w / (h*tan(fovx/2)) - - float fovx_tan = tanf(fovx / 2); - matrix_4x4 mp; - m4x4_zeros(&mp); - - // Build standard perspective projection matrix - mp.r[0].x = 1.0f / fovx_tan; - mp.r[1].y = 1.0f / (fovx_tan*invaspect); - mp.r[2].z = (near + far) / (near - far); - mp.r[2].w = (2 * near * far) / (near - far); - mp.r[3].z = -1.0f; - - // Fix depth range to [-1, 0] - matrix_4x4 mp2; - m4x4_identity(&mp2); - mp2.r[2].z = 0.5; - mp2.r[2].w = -0.5; - m4x4_multiply(mtx, &mp2, &mp); - - // Rotate the matrix one quarter of a turn CCW in order to fix the 3DS screens' orientation - m4x4_rotate_z(mtx, M_PI / 2, true); -} diff --git a/examples/graphics/gpu/geoshader/source/3dmath.h b/examples/graphics/gpu/geoshader/source/3dmath.h deleted file mode 100644 index a9a8596..0000000 --- a/examples/graphics/gpu/geoshader/source/3dmath.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Bare-bones simplistic 3D math library - * This library is common to all libctru GPU examples - */ - -#pragma once -#include -#include -#include - -typedef union { struct { float w, z, y, x; }; float c[4]; } vector_4f; -typedef struct { vector_4f r[4]; } matrix_4x4; - -static inline float v4f_dp4(const vector_4f* a, const vector_4f* b) -{ - return a->x*b->x + a->y*b->y + a->z*b->z + a->w*b->w; -} - -static inline float v4f_mod4(const vector_4f* a) -{ - return sqrtf(v4f_dp4(a,a)); -} - -static inline void v4f_norm4(vector_4f* vec) -{ - float m = v4f_mod4(vec); - if (m == 0.0) return; - vec->x /= m; - vec->y /= m; - vec->z /= m; - vec->w /= m; -} - -static inline void m4x4_zeros(matrix_4x4* out) -{ - memset(out, 0, sizeof(*out)); -} - -static inline void m4x4_copy(matrix_4x4* out, const matrix_4x4* in) -{ - memcpy(out, in, sizeof(*out)); -} - -void m4x4_identity(matrix_4x4* out); -void m4x4_multiply(matrix_4x4* out, const matrix_4x4* a, const matrix_4x4* b); - -void m4x4_translate(matrix_4x4* mtx, float x, float y, float z); -void m4x4_scale(matrix_4x4* mtx, float x, float y, float z); - -void m4x4_rotate_x(matrix_4x4* mtx, float angle, bool bRightSide); -void m4x4_rotate_y(matrix_4x4* mtx, float angle, bool bRightSide); -void m4x4_rotate_z(matrix_4x4* mtx, float angle, bool bRightSide); - -// Special versions of the projection matrices that take the 3DS' screen orientation into account -void m4x4_ortho_tilt(matrix_4x4* mtx, float left, float right, float bottom, float top, float near, float far); -void m4x4_persp_tilt(matrix_4x4* mtx, float fovy, float aspect, float near, float far); diff --git a/examples/graphics/gpu/geoshader/source/gpu.c b/examples/graphics/gpu/geoshader/source/gpu.c deleted file mode 100644 index d16f1ff..0000000 --- a/examples/graphics/gpu/geoshader/source/gpu.c +++ /dev/null @@ -1,94 +0,0 @@ -#include "gpu.h" - -#define DISPLAY_TRANSFER_FLAGS \ - (GX_TRANSFER_FLIP_VERT(0) | GX_TRANSFER_OUT_TILED(0) | GX_TRANSFER_RAW_COPY(0) | \ - GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGBA8) | GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8) | \ - GX_TRANSFER_SCALING(GX_TRANSFER_SCALE_NO)) - -static u32 *colorBuf, *depthBuf; -static u32 *cmdBuf; - -void gpuInit(void) -{ - colorBuf = vramAlloc(400*240*4); - depthBuf = vramAlloc(400*240*4); - cmdBuf = linearAlloc(0x40000*4); - - GPU_Init(NULL); - GPU_Reset(NULL, cmdBuf, 0x40000); -} - -void gpuExit(void) -{ - linearFree(cmdBuf); - vramFree(depthBuf); - vramFree(colorBuf); -} - -void gpuClearBuffers(u32 clearColor) -{ - GX_MemoryFill( - colorBuf, clearColor, &colorBuf[240*400], GX_FILL_TRIGGER | GX_FILL_32BIT_DEPTH, - depthBuf, 0, &depthBuf[240*400], GX_FILL_TRIGGER | GX_FILL_32BIT_DEPTH); - gspWaitForPSC0(); // Wait for the fill to complete -} - -void gpuFrameBegin(void) -{ - // Configure the viewport and the depth linear conversion function - GPU_SetViewport( - (u32*)osConvertVirtToPhys(depthBuf), - (u32*)osConvertVirtToPhys(colorBuf), - 0, 0, 240, 400); // The top screen is physically 240x400 pixels - GPU_DepthMap(-1.0f, 0.0f); // calculate the depth value from the Z coordinate in the following way: -1.0*z + 0.0 - - // Configure some boilerplate - GPU_SetFaceCulling(GPU_CULL_BACK_CCW); - GPU_SetStencilTest(false, GPU_ALWAYS, 0x00, 0xFF, 0x00); - GPU_SetStencilOp(GPU_STENCIL_KEEP, GPU_STENCIL_KEEP, GPU_STENCIL_KEEP); - GPU_SetBlendingColor(0,0,0,0); - GPU_SetDepthTestAndWriteMask(true, GPU_GREATER, GPU_WRITE_ALL); - - // This is unknown - GPUCMD_AddMaskedWrite(GPUREG_0062, 0x1, 0); - GPUCMD_AddWrite(GPUREG_0118, 0); - - // Configure alpha blending and test - GPU_SetAlphaBlending(GPU_BLEND_ADD, GPU_BLEND_ADD, GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA); - GPU_SetAlphaTest(false, GPU_ALWAYS, 0x00); - - int i; - for (i = 0; i < 6; i ++) - GPU_SetDummyTexEnv(i); -} - -void gpuFrameEnd(void) -{ - // Finish rendering - GPU_FinishDrawing(); - GPUCMD_Finalize(); - GPUCMD_FlushAndRun(); - gspWaitForP3D(); // Wait for the rendering to complete - - // Transfer the GPU output to the framebuffer - GX_DisplayTransfer( - colorBuf, GX_BUFFER_DIM(240, 400), - (u32*)gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), GX_BUFFER_DIM(240, 400), - DISPLAY_TRANSFER_FLAGS); - gspWaitForPPF(); // Wait for the transfer to complete - - // Reset the command buffer - GPUCMD_SetBufferOffset(0); -}; - -void GPU_SetDummyTexEnv(int id) -{ - GPU_SetTexEnv(id, - GPU_TEVSOURCES(GPU_PREVIOUS, 0, 0), - GPU_TEVSOURCES(GPU_PREVIOUS, 0, 0), - GPU_TEVOPERANDS(0, 0, 0), - GPU_TEVOPERANDS(0, 0, 0), - GPU_REPLACE, - GPU_REPLACE, - 0xFFFFFFFF); -} diff --git a/examples/graphics/gpu/geoshader/source/gpu.h b/examples/graphics/gpu/geoshader/source/gpu.h deleted file mode 100644 index 845d139..0000000 --- a/examples/graphics/gpu/geoshader/source/gpu.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Bare-bones simplistic GPU wrapper - * This library is common to all libctru GPU examples - */ - -#pragma once -#include -#include <3ds.h> -#include "3dmath.h" - -void gpuInit(void); -void gpuExit(void); - -void gpuClearBuffers(u32 clearColor); - -void gpuFrameBegin(void); -void gpuFrameEnd(void); - -// Configures the specified fixed-function fragment shading substage to be a no-operation -void GPU_SetDummyTexEnv(int id); - -// Uploads an uniform matrix -static inline void GPU_SetFloatUniformMatrix(GPU_SHADER_TYPE type, int location, matrix_4x4* matrix) -{ - GPU_SetFloatUniform(type, location, (u32*)matrix, 4); -} diff --git a/examples/graphics/gpu/geoshader/source/gshader.pica b/examples/graphics/gpu/geoshader/source/gshader.pica deleted file mode 100644 index 3b65db3..0000000 --- a/examples/graphics/gpu/geoshader/source/gshader.pica +++ /dev/null @@ -1,91 +0,0 @@ -; Example PICA200 geometry shader - -; Uniforms -.fvec projection[4] - -; Constants -.constf myconst(0.0, 1.0, -1.0, 0.5) -.alias zeros myconst.xxxx ; Vector full of zeros -.alias ones myconst.yyyy ; Vector full of ones -.alias half myconst.wwww - -; Outputs - this time the type *is* used -.out outpos position -.out outclr color - -; Inputs: we will receive the following inputs: -; v0-v1: position/color of the first vertex -; v2-v3: position/color of the second vertex -; v4-v5: position/color of the third vertex - -.proc main - ; Calculate the midpoints of the vertices - mov r4, v0 - add r4, v2, r4 - mul r4, half, r4 - mov r5, v2 - add r5, v4, r5 - mul r5, half, r5 - mov r6, v4 - add r6, v0, r6 - mul r6, half, r6 - - ; Emit the first triangle - mov r0, v0 - mov r1, r4 - mov r2, r6 - call emit_triangle - - ; Emit the second triangle - mov r0, r4 - mov r1, v2 - mov r2, r5 - call emit_triangle - - ; Emit the third triangle - mov r0, r6 - mov r1, r5 - mov r2, v4 - call emit_triangle - - ; We're finished - end -.end - -.proc emit_triangle - ; Emit the first vertex - setemit 0 - mov r8, r0 - mov r9, v1 - call process_vertex - emit - - ; Emit the second vertex - setemit 1 - mov r8, r1 - mov r9, v3 - call process_vertex - emit - - ; Emit the third vertex and finish the primitive - setemit 2, prim - mov r8, r2 - mov r9, v5 - call process_vertex - emit -.end - -; Subroutine -; Inputs: -; r8: vertex position -; r9: vertex color -.proc process_vertex - ; outpos = projectionMatrix * r8 - dp4 outpos.x, projection[0], r8 - dp4 outpos.y, projection[1], r8 - dp4 outpos.z, projection[2], r8 - dp4 outpos.w, projection[3], r8 - - ; outclr = r9 - mov outclr, r9 -.end diff --git a/examples/graphics/gpu/geoshader/source/main.c b/examples/graphics/gpu/geoshader/source/main.c deleted file mode 100644 index 83501e2..0000000 --- a/examples/graphics/gpu/geoshader/source/main.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * ~~ Simple libctru GPU geometry shader example ~~ - * This example demonstrates the basics of using the PICA200 in a 3DS homebrew - * application in order to render a basic scene using a geoshader. - * The example geoshader receives the vertices of a triangle and emits three - * smaller triangles, thus forming a 'triforce' shape. - */ - -#include "gpu.h" -#include "vshader_shbin.h" -#include "gshader_shbin.h" - -#define CLEAR_COLOR 0x68B0D8FF - -typedef struct { float position[3]; float color[4]; } vertex; - -static const vertex vertex_list[] = -{ - { {200.0f, 200.0f, 0.5f}, {1.0f, 0.0f, 0.0f, 1.0f} }, - { {100.0f, 40.0f, 0.5f}, {0.0f, 1.0f, 0.0f, 1.0f} }, - { {300.0f, 40.0f, 0.5f}, {0.0f, 0.0f, 1.0f, 1.0f} }, -}; - -#define vertex_list_count (sizeof(vertex_list)/sizeof(vertex_list[0])) - -static DVLB_s *vshader_dvlb, *gshader_dvlb; -static shaderProgram_s program; -static int uLoc_projection; -static matrix_4x4 projection; - -static void* vbo_data; - -static void sceneInit(void) -{ - // Load the shaders and create a shader program - // The geoshader stride is set to 6 so that it processes a triangle at a time - vshader_dvlb = DVLB_ParseFile((u32*)vshader_shbin, vshader_shbin_size); - gshader_dvlb = DVLB_ParseFile((u32*)gshader_shbin, gshader_shbin_size); - shaderProgramInit(&program); - shaderProgramSetVsh(&program, &vshader_dvlb->DVLE[0]); - shaderProgramSetGsh(&program, &gshader_dvlb->DVLE[0], 6); - - // Get the location of the projection matrix uniform - uLoc_projection = shaderInstanceGetUniformLocation(program.geometryShader, "projection"); - - // Compute the projection matrix - m4x4_ortho_tilt(&projection, 0.0, 400.0, 0.0, 240.0, 0.0, 1.0); - - // Create the VBO (vertex buffer object) - vbo_data = linearAlloc(sizeof(vertex_list)); - memcpy(vbo_data, vertex_list, sizeof(vertex_list)); -} - -static void sceneRender(void) -{ - // Bind the shader program - shaderProgramUse(&program); - - // Configure the first fragment shading substage to just pass through the vertex color - // See https://www.opengl.org/sdk/docs/man2/xhtml/glTexEnv.xml for more insight - GPU_SetTexEnv(0, - GPU_TEVSOURCES(GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR), // RGB channels - GPU_TEVSOURCES(GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR), // Alpha - GPU_TEVOPERANDS(0, 0, 0), // RGB - GPU_TEVOPERANDS(0, 0, 0), // Alpha - GPU_REPLACE, GPU_REPLACE, // RGB, Alpha - 0xFFFFFFFF); - - // Configure the "attribute buffers" (that is, the vertex input buffers) - GPU_SetAttributeBuffers( - 2, // Number of inputs per vertex - (u32*)osConvertVirtToPhys(vbo_data), // Location of the VBO - GPU_ATTRIBFMT(0, 3, GPU_FLOAT) | - GPU_ATTRIBFMT(1, 4, GPU_FLOAT), // Format of the inputs (in this case the only input is a 3-element float vector) - 0xFFC, // Unused attribute mask, in our case bit 0 is cleared since it is used - 0x10, // Attribute permutations (here it is the identity) - 1, // Number of buffers - (u32[]) { 0x0 }, // Buffer offsets (placeholders) - (u64[]) { 0x10 }, // Attribute permutations for each buffer (identity again) - (u8[]) { 2 }); // Number of attributes for each buffer - - // Upload the projection matrix - GPU_SetFloatUniformMatrix(GPU_GEOMETRY_SHADER, uLoc_projection, &projection); - - // Draw the VBO - GPU_GEOMETRY_PRIM allows the geoshader to control primitive emission - GPU_DrawArray(GPU_GEOMETRY_PRIM, 0, vertex_list_count); -} - -static void sceneExit(void) -{ - // Free the VBO - linearFree(vbo_data); - - // Free the shader program - shaderProgramFree(&program); - DVLB_Free(vshader_dvlb); - DVLB_Free(gshader_dvlb); -} - -int main() -{ - // Initialize graphics - gfxInitDefault(); - gpuInit(); - - // Initialize the scene - sceneInit(); - gpuClearBuffers(CLEAR_COLOR); - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); // Synchronize with the start of VBlank - gfxSwapBuffersGpu(); // Swap the framebuffers so that the frame that we rendered last frame is now visible - hidScanInput(); // Read the user input - - // Respond to user input - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - // Render the scene - gpuFrameBegin(); - sceneRender(); - gpuFrameEnd(); - gpuClearBuffers(CLEAR_COLOR); - - // Flush the framebuffers out of the data cache (not necessary with pure GPU rendering) - //gfxFlushBuffers(); - } - - // Deinitialize the scene - sceneExit(); - - // Deinitialize graphics - gpuExit(); - gfxExit(); - return 0; -} diff --git a/examples/graphics/gpu/geoshader/source/vshader.pica b/examples/graphics/gpu/geoshader/source/vshader.pica deleted file mode 100644 index 8bcbc22..0000000 --- a/examples/graphics/gpu/geoshader/source/vshader.pica +++ /dev/null @@ -1,24 +0,0 @@ -; Example PICA200 vertex shader - -; Constants -.constf myconst(0.0, 1.0, -1.0, -0.5) -.alias zeros myconst.xxxx ; Vector full of zeros -.alias ones myconst.yyyy ; Vector full of ones - -; Outputs - since we are also using a geoshader the output type isn't really used -.out outpos position -.out outclr color - -; Inputs (defined as aliases for convenience) -.alias inpos v0 -.alias inclr v1 - -.proc main - ; Pass through both inputs to the geoshader - mov outpos.xyz, inpos - mov outpos.w, ones - mov outclr, inclr - - ; We're finished - end -.end diff --git a/examples/graphics/gpu/simple_tri/Makefile b/examples/graphics/gpu/simple_tri/Makefile deleted file mode 100644 index 3b72824..0000000 --- a/examples/graphics/gpu/simple_tri/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffast-math \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pica))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) $(PICAFILES:.pica=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rule for assembling GPU shaders -#--------------------------------------------------------------------------------- -%.shbin.o: %.pica - @echo $(notdir $<) - $(eval CURBIN := $(patsubst %.pica,%.shbin,$(notdir $<))) - $(eval CURH := $(patsubst %.pica,%.psh.h,$(notdir $<))) - @picasso -h $(CURH) -o $(CURBIN) $< - @bin2s $(CURBIN) | $(AS) -o $@ - @echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - @echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - @echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/gpu/simple_tri/README.md b/examples/graphics/gpu/simple_tri/README.md deleted file mode 100644 index 5e3b6dd..0000000 --- a/examples/graphics/gpu/simple_tri/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# GPU example - -This is a simple GPU example using the `picasso` shader assembler which comes with devkitARM r45 and up. -Users of earlier versions of devkitARM need to install the tool, which can be found in the address below: - -https://github.com/fincs/picasso/releases diff --git a/examples/graphics/gpu/simple_tri/source/3dmath.c b/examples/graphics/gpu/simple_tri/source/3dmath.c deleted file mode 100644 index eb8d03f..0000000 --- a/examples/graphics/gpu/simple_tri/source/3dmath.c +++ /dev/null @@ -1,172 +0,0 @@ -#include "3dmath.h" - -void m4x4_identity(matrix_4x4* out) -{ - m4x4_zeros(out); - out->r[0].x = out->r[1].y = out->r[2].z = out->r[3].w = 1.0f; -} - -void m4x4_multiply(matrix_4x4* out, const matrix_4x4* a, const matrix_4x4* b) -{ - int i, j; - for (i = 0; i < 4; i ++) - for (j = 0; j < 4; j ++) - out->r[j].c[i] = a->r[j].x*b->r[0].c[i] + a->r[j].y*b->r[1].c[i] + a->r[j].z*b->r[2].c[i] + a->r[j].w*b->r[3].c[i]; -} - -void m4x4_translate(matrix_4x4* mtx, float x, float y, float z) -{ - matrix_4x4 tm, om; - - m4x4_identity(&tm); - tm.r[0].w = x; - tm.r[1].w = y; - tm.r[2].w = z; - - m4x4_multiply(&om, mtx, &tm); - m4x4_copy(mtx, &om); -} - -void m4x4_scale(matrix_4x4* mtx, float x, float y, float z) -{ - int i; - for (i = 0; i < 4; i ++) - { - mtx->r[i].x *= x; - mtx->r[i].y *= y; - mtx->r[i].z *= z; - } -} - -void m4x4_rotate_x(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = 1.0f; - rm.r[1].y = cosAngle; - rm.r[1].z = sinAngle; - rm.r[2].y = -sinAngle; - rm.r[2].z = cosAngle; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_rotate_y(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = cosAngle; - rm.r[0].z = sinAngle; - rm.r[1].y = 1.0f; - rm.r[2].x = -sinAngle; - rm.r[2].z = cosAngle; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_rotate_z(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = cosAngle; - rm.r[0].y = sinAngle; - rm.r[1].x = -sinAngle; - rm.r[1].y = cosAngle; - rm.r[2].z = 1.0f; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_ortho_tilt(matrix_4x4* mtx, float left, float right, float bottom, float top, float near, float far) -{ - matrix_4x4 mp; - m4x4_zeros(&mp); - - // Build standard orthogonal projection matrix - mp.r[0].x = 2.0f / (right - left); - mp.r[0].w = (left + right) / (left - right); - mp.r[1].y = 2.0f / (top - bottom); - mp.r[1].w = (bottom + top) / (bottom - top); - mp.r[2].z = 2.0f / (near - far); - mp.r[2].w = (far + near) / (far - near); - mp.r[3].w = 1.0f; - - // Fix depth range to [-1, 0] - matrix_4x4 mp2, mp3; - m4x4_identity(&mp2); - mp2.r[2].z = 0.5; - mp2.r[2].w = -0.5; - m4x4_multiply(&mp3, &mp2, &mp); - - // Fix the 3DS screens' orientation by swapping the X and Y axis - m4x4_identity(&mp2); - mp2.r[0].x = 0.0; - mp2.r[0].y = 1.0; - mp2.r[1].x = -1.0; // flipped - mp2.r[1].y = 0.0; - m4x4_multiply(mtx, &mp2, &mp3); -} - -void m4x4_persp_tilt(matrix_4x4* mtx, float fovx, float invaspect, float near, float far) -{ - // Notes: - // We are passed "fovy" and the "aspect ratio". However, the 3DS screens are sideways, - // and so are these parameters -- in fact, they are actually the fovx and the inverse - // of the aspect ratio. Therefore the formula for the perspective projection matrix - // had to be modified to be expressed in these terms instead. - - // Notes: - // fovx = 2 atan(tan(fovy/2)*w/h) - // fovy = 2 atan(tan(fovx/2)*h/w) - // invaspect = h/w - - // a0,0 = h / (w*tan(fovy/2)) = - // = h / (w*tan(2 atan(tan(fovx/2)*h/w) / 2)) = - // = h / (w*tan( atan(tan(fovx/2)*h/w) )) = - // = h / (w * tan(fovx/2)*h/w) = - // = 1 / tan(fovx/2) - - // a1,1 = 1 / tan(fovy/2) = (...) = w / (h*tan(fovx/2)) - - float fovx_tan = tanf(fovx / 2); - matrix_4x4 mp; - m4x4_zeros(&mp); - - // Build standard perspective projection matrix - mp.r[0].x = 1.0f / fovx_tan; - mp.r[1].y = 1.0f / (fovx_tan*invaspect); - mp.r[2].z = (near + far) / (near - far); - mp.r[2].w = (2 * near * far) / (near - far); - mp.r[3].z = -1.0f; - - // Fix depth range to [-1, 0] - matrix_4x4 mp2; - m4x4_identity(&mp2); - mp2.r[2].z = 0.5; - mp2.r[2].w = -0.5; - m4x4_multiply(mtx, &mp2, &mp); - - // Rotate the matrix one quarter of a turn CCW in order to fix the 3DS screens' orientation - m4x4_rotate_z(mtx, M_PI / 2, true); -} diff --git a/examples/graphics/gpu/simple_tri/source/3dmath.h b/examples/graphics/gpu/simple_tri/source/3dmath.h deleted file mode 100644 index a9a8596..0000000 --- a/examples/graphics/gpu/simple_tri/source/3dmath.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Bare-bones simplistic 3D math library - * This library is common to all libctru GPU examples - */ - -#pragma once -#include -#include -#include - -typedef union { struct { float w, z, y, x; }; float c[4]; } vector_4f; -typedef struct { vector_4f r[4]; } matrix_4x4; - -static inline float v4f_dp4(const vector_4f* a, const vector_4f* b) -{ - return a->x*b->x + a->y*b->y + a->z*b->z + a->w*b->w; -} - -static inline float v4f_mod4(const vector_4f* a) -{ - return sqrtf(v4f_dp4(a,a)); -} - -static inline void v4f_norm4(vector_4f* vec) -{ - float m = v4f_mod4(vec); - if (m == 0.0) return; - vec->x /= m; - vec->y /= m; - vec->z /= m; - vec->w /= m; -} - -static inline void m4x4_zeros(matrix_4x4* out) -{ - memset(out, 0, sizeof(*out)); -} - -static inline void m4x4_copy(matrix_4x4* out, const matrix_4x4* in) -{ - memcpy(out, in, sizeof(*out)); -} - -void m4x4_identity(matrix_4x4* out); -void m4x4_multiply(matrix_4x4* out, const matrix_4x4* a, const matrix_4x4* b); - -void m4x4_translate(matrix_4x4* mtx, float x, float y, float z); -void m4x4_scale(matrix_4x4* mtx, float x, float y, float z); - -void m4x4_rotate_x(matrix_4x4* mtx, float angle, bool bRightSide); -void m4x4_rotate_y(matrix_4x4* mtx, float angle, bool bRightSide); -void m4x4_rotate_z(matrix_4x4* mtx, float angle, bool bRightSide); - -// Special versions of the projection matrices that take the 3DS' screen orientation into account -void m4x4_ortho_tilt(matrix_4x4* mtx, float left, float right, float bottom, float top, float near, float far); -void m4x4_persp_tilt(matrix_4x4* mtx, float fovy, float aspect, float near, float far); diff --git a/examples/graphics/gpu/simple_tri/source/gpu.c b/examples/graphics/gpu/simple_tri/source/gpu.c deleted file mode 100644 index d16f1ff..0000000 --- a/examples/graphics/gpu/simple_tri/source/gpu.c +++ /dev/null @@ -1,94 +0,0 @@ -#include "gpu.h" - -#define DISPLAY_TRANSFER_FLAGS \ - (GX_TRANSFER_FLIP_VERT(0) | GX_TRANSFER_OUT_TILED(0) | GX_TRANSFER_RAW_COPY(0) | \ - GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGBA8) | GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8) | \ - GX_TRANSFER_SCALING(GX_TRANSFER_SCALE_NO)) - -static u32 *colorBuf, *depthBuf; -static u32 *cmdBuf; - -void gpuInit(void) -{ - colorBuf = vramAlloc(400*240*4); - depthBuf = vramAlloc(400*240*4); - cmdBuf = linearAlloc(0x40000*4); - - GPU_Init(NULL); - GPU_Reset(NULL, cmdBuf, 0x40000); -} - -void gpuExit(void) -{ - linearFree(cmdBuf); - vramFree(depthBuf); - vramFree(colorBuf); -} - -void gpuClearBuffers(u32 clearColor) -{ - GX_MemoryFill( - colorBuf, clearColor, &colorBuf[240*400], GX_FILL_TRIGGER | GX_FILL_32BIT_DEPTH, - depthBuf, 0, &depthBuf[240*400], GX_FILL_TRIGGER | GX_FILL_32BIT_DEPTH); - gspWaitForPSC0(); // Wait for the fill to complete -} - -void gpuFrameBegin(void) -{ - // Configure the viewport and the depth linear conversion function - GPU_SetViewport( - (u32*)osConvertVirtToPhys(depthBuf), - (u32*)osConvertVirtToPhys(colorBuf), - 0, 0, 240, 400); // The top screen is physically 240x400 pixels - GPU_DepthMap(-1.0f, 0.0f); // calculate the depth value from the Z coordinate in the following way: -1.0*z + 0.0 - - // Configure some boilerplate - GPU_SetFaceCulling(GPU_CULL_BACK_CCW); - GPU_SetStencilTest(false, GPU_ALWAYS, 0x00, 0xFF, 0x00); - GPU_SetStencilOp(GPU_STENCIL_KEEP, GPU_STENCIL_KEEP, GPU_STENCIL_KEEP); - GPU_SetBlendingColor(0,0,0,0); - GPU_SetDepthTestAndWriteMask(true, GPU_GREATER, GPU_WRITE_ALL); - - // This is unknown - GPUCMD_AddMaskedWrite(GPUREG_0062, 0x1, 0); - GPUCMD_AddWrite(GPUREG_0118, 0); - - // Configure alpha blending and test - GPU_SetAlphaBlending(GPU_BLEND_ADD, GPU_BLEND_ADD, GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA); - GPU_SetAlphaTest(false, GPU_ALWAYS, 0x00); - - int i; - for (i = 0; i < 6; i ++) - GPU_SetDummyTexEnv(i); -} - -void gpuFrameEnd(void) -{ - // Finish rendering - GPU_FinishDrawing(); - GPUCMD_Finalize(); - GPUCMD_FlushAndRun(); - gspWaitForP3D(); // Wait for the rendering to complete - - // Transfer the GPU output to the framebuffer - GX_DisplayTransfer( - colorBuf, GX_BUFFER_DIM(240, 400), - (u32*)gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), GX_BUFFER_DIM(240, 400), - DISPLAY_TRANSFER_FLAGS); - gspWaitForPPF(); // Wait for the transfer to complete - - // Reset the command buffer - GPUCMD_SetBufferOffset(0); -}; - -void GPU_SetDummyTexEnv(int id) -{ - GPU_SetTexEnv(id, - GPU_TEVSOURCES(GPU_PREVIOUS, 0, 0), - GPU_TEVSOURCES(GPU_PREVIOUS, 0, 0), - GPU_TEVOPERANDS(0, 0, 0), - GPU_TEVOPERANDS(0, 0, 0), - GPU_REPLACE, - GPU_REPLACE, - 0xFFFFFFFF); -} diff --git a/examples/graphics/gpu/simple_tri/source/gpu.h b/examples/graphics/gpu/simple_tri/source/gpu.h deleted file mode 100644 index 845d139..0000000 --- a/examples/graphics/gpu/simple_tri/source/gpu.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Bare-bones simplistic GPU wrapper - * This library is common to all libctru GPU examples - */ - -#pragma once -#include -#include <3ds.h> -#include "3dmath.h" - -void gpuInit(void); -void gpuExit(void); - -void gpuClearBuffers(u32 clearColor); - -void gpuFrameBegin(void); -void gpuFrameEnd(void); - -// Configures the specified fixed-function fragment shading substage to be a no-operation -void GPU_SetDummyTexEnv(int id); - -// Uploads an uniform matrix -static inline void GPU_SetFloatUniformMatrix(GPU_SHADER_TYPE type, int location, matrix_4x4* matrix) -{ - GPU_SetFloatUniform(type, location, (u32*)matrix, 4); -} diff --git a/examples/graphics/gpu/simple_tri/source/main.c b/examples/graphics/gpu/simple_tri/source/main.c deleted file mode 100644 index 656fb70..0000000 --- a/examples/graphics/gpu/simple_tri/source/main.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * ~~ Simple libctru GPU triangle example ~~ - * This example demonstrates the basics of using the PICA200 in a 3DS homebrew - * application in order to render a basic scene consisting of a white solid triangle. - */ - -#include "gpu.h" -#include "vshader_shbin.h" - -#define CLEAR_COLOR 0x68B0D8FF - -typedef struct { float x, y, z; } vertex; - -static const vertex vertex_list[] = -{ - { 200.0f, 200.0f, 0.5f }, - { 100.0f, 40.0f, 0.5f }, - { 300.0f, 40.0f, 0.5f }, -}; - -#define vertex_list_count (sizeof(vertex_list)/sizeof(vertex_list[0])) - -static DVLB_s* vshader_dvlb; -static shaderProgram_s program; -static int uLoc_projection; -static matrix_4x4 projection; - -static void* vbo_data; - -static void sceneInit(void) -{ - // Load the vertex shader and create a shader program - vshader_dvlb = DVLB_ParseFile((u32*)vshader_shbin, vshader_shbin_size); - shaderProgramInit(&program); - shaderProgramSetVsh(&program, &vshader_dvlb->DVLE[0]); - - // Get the location of the projection matrix uniform - uLoc_projection = shaderInstanceGetUniformLocation(program.vertexShader, "projection"); - - // Compute the projection matrix - m4x4_ortho_tilt(&projection, 0.0, 400.0, 0.0, 240.0, 0.0, 1.0); - - // Create the VBO (vertex buffer object) - vbo_data = linearAlloc(sizeof(vertex_list)); - memcpy(vbo_data, vertex_list, sizeof(vertex_list)); -} - -static void sceneRender(void) -{ - // Bind the shader program - shaderProgramUse(&program); - - // Configure the first fragment shading substage to just pass through the vertex color - // See https://www.opengl.org/sdk/docs/man2/xhtml/glTexEnv.xml for more insight - GPU_SetTexEnv(0, - GPU_TEVSOURCES(GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR), // RGB channels - GPU_TEVSOURCES(GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR), // Alpha - GPU_TEVOPERANDS(0, 0, 0), // RGB - GPU_TEVOPERANDS(0, 0, 0), // Alpha - GPU_REPLACE, GPU_REPLACE, // RGB, Alpha - 0xFFFFFFFF); - - // Configure the "attribute buffers" (that is, the vertex input buffers) - GPU_SetAttributeBuffers( - 1, // Number of inputs per vertex - (u32*)osConvertVirtToPhys((u32)vbo_data), // Location of the VBO - GPU_ATTRIBFMT(0, 3, GPU_FLOAT), // Format of the inputs (in this case the only input is a 3-element float vector) - 0xFFE, // Unused attribute mask, in our case bit 0 is cleared since it is used - 0x0, // Attribute permutations (here it is the identity) - 1, // Number of buffers - (u32[]) { 0x0 }, // Buffer offsets (placeholders) - (u64[]) { 0x0 }, // Attribute permutations for each buffer (identity again) - (u8[]) { 1 }); // Number of attributes for each buffer - - // Upload the projection matrix - GPU_SetFloatUniformMatrix(GPU_VERTEX_SHADER, uLoc_projection, &projection); - - // Draw the VBO - GPU_DrawArray(GPU_TRIANGLES, 0, vertex_list_count); -} - -static void sceneExit(void) -{ - // Free the VBO - linearFree(vbo_data); - - // Free the shader program - shaderProgramFree(&program); - DVLB_Free(vshader_dvlb); -} - -int main() -{ - // Initialize graphics - gfxInitDefault(); - gpuInit(); - - // Initialize the scene - sceneInit(); - gpuClearBuffers(CLEAR_COLOR); - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); // Synchronize with the start of VBlank - gfxSwapBuffersGpu(); // Swap the framebuffers so that the frame that we rendered last frame is now visible - hidScanInput(); // Read the user input - - // Respond to user input - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - // Render the scene - gpuFrameBegin(); - sceneRender(); - gpuFrameEnd(); - gpuClearBuffers(CLEAR_COLOR); - - // Flush the framebuffers out of the data cache (not necessary with pure GPU rendering) - //gfxFlushBuffers(); - } - - // Deinitialize the scene - sceneExit(); - - // Deinitialize graphics - gpuExit(); - gfxExit(); - return 0; -} diff --git a/examples/graphics/gpu/simple_tri/source/vshader.pica b/examples/graphics/gpu/simple_tri/source/vshader.pica deleted file mode 100644 index cdd9759..0000000 --- a/examples/graphics/gpu/simple_tri/source/vshader.pica +++ /dev/null @@ -1,34 +0,0 @@ -; Example PICA200 vertex shader - -; Uniforms -.fvec projection[4] - -; Constants -.constf myconst(0.0, 1.0, -1.0, -0.5) -.alias zeros myconst.xxxx ; Vector full of zeros -.alias ones myconst.yyyy ; Vector full of ones - -; Outputs -.out outpos position -.out outclr color - -; Inputs (defined as aliases for convenience) -.alias inpos v0 - -.proc main - ; Force the w component of inpos to be 1.0 - mov r0.xyz, inpos - mov r0.w, ones - - ; outpos = projectionMatrix * inpos - dp4 outpos.x, projection[0], r0 - dp4 outpos.y, projection[1], r0 - dp4 outpos.z, projection[2], r0 - dp4 outpos.w, projection[3], r0 - - ; outclr = solid white color - mov outclr, ones - - ; We're finished - end -.end diff --git a/examples/graphics/gpu/textured_cube/Makefile b/examples/graphics/gpu/textured_cube/Makefile deleted file mode 100644 index 3b72824..0000000 --- a/examples/graphics/gpu/textured_cube/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffast-math \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pica))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) $(PICAFILES:.pica=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rule for assembling GPU shaders -#--------------------------------------------------------------------------------- -%.shbin.o: %.pica - @echo $(notdir $<) - $(eval CURBIN := $(patsubst %.pica,%.shbin,$(notdir $<))) - $(eval CURH := $(patsubst %.pica,%.psh.h,$(notdir $<))) - @picasso -h $(CURH) -o $(CURBIN) $< - @bin2s $(CURBIN) | $(AS) -o $@ - @echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - @echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - @echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/gpu/textured_cube/README.md b/examples/graphics/gpu/textured_cube/README.md deleted file mode 100644 index 5e3b6dd..0000000 --- a/examples/graphics/gpu/textured_cube/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# GPU example - -This is a simple GPU example using the `picasso` shader assembler which comes with devkitARM r45 and up. -Users of earlier versions of devkitARM need to install the tool, which can be found in the address below: - -https://github.com/fincs/picasso/releases diff --git a/examples/graphics/gpu/textured_cube/data/kitten.bin b/examples/graphics/gpu/textured_cube/data/kitten.bin deleted file mode 100644 index a87ac4a..0000000 Binary files a/examples/graphics/gpu/textured_cube/data/kitten.bin and /dev/null differ diff --git a/examples/graphics/gpu/textured_cube/source/3dmath.c b/examples/graphics/gpu/textured_cube/source/3dmath.c deleted file mode 100644 index eb8d03f..0000000 --- a/examples/graphics/gpu/textured_cube/source/3dmath.c +++ /dev/null @@ -1,172 +0,0 @@ -#include "3dmath.h" - -void m4x4_identity(matrix_4x4* out) -{ - m4x4_zeros(out); - out->r[0].x = out->r[1].y = out->r[2].z = out->r[3].w = 1.0f; -} - -void m4x4_multiply(matrix_4x4* out, const matrix_4x4* a, const matrix_4x4* b) -{ - int i, j; - for (i = 0; i < 4; i ++) - for (j = 0; j < 4; j ++) - out->r[j].c[i] = a->r[j].x*b->r[0].c[i] + a->r[j].y*b->r[1].c[i] + a->r[j].z*b->r[2].c[i] + a->r[j].w*b->r[3].c[i]; -} - -void m4x4_translate(matrix_4x4* mtx, float x, float y, float z) -{ - matrix_4x4 tm, om; - - m4x4_identity(&tm); - tm.r[0].w = x; - tm.r[1].w = y; - tm.r[2].w = z; - - m4x4_multiply(&om, mtx, &tm); - m4x4_copy(mtx, &om); -} - -void m4x4_scale(matrix_4x4* mtx, float x, float y, float z) -{ - int i; - for (i = 0; i < 4; i ++) - { - mtx->r[i].x *= x; - mtx->r[i].y *= y; - mtx->r[i].z *= z; - } -} - -void m4x4_rotate_x(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = 1.0f; - rm.r[1].y = cosAngle; - rm.r[1].z = sinAngle; - rm.r[2].y = -sinAngle; - rm.r[2].z = cosAngle; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_rotate_y(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = cosAngle; - rm.r[0].z = sinAngle; - rm.r[1].y = 1.0f; - rm.r[2].x = -sinAngle; - rm.r[2].z = cosAngle; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_rotate_z(matrix_4x4* mtx, float angle, bool bRightSide) -{ - matrix_4x4 rm, om; - - float cosAngle = cosf(angle); - float sinAngle = sinf(angle); - - m4x4_zeros(&rm); - rm.r[0].x = cosAngle; - rm.r[0].y = sinAngle; - rm.r[1].x = -sinAngle; - rm.r[1].y = cosAngle; - rm.r[2].z = 1.0f; - rm.r[3].w = 1.0f; - - if (bRightSide) m4x4_multiply(&om, mtx, &rm); - else m4x4_multiply(&om, &rm, mtx); - m4x4_copy(mtx, &om); -} - -void m4x4_ortho_tilt(matrix_4x4* mtx, float left, float right, float bottom, float top, float near, float far) -{ - matrix_4x4 mp; - m4x4_zeros(&mp); - - // Build standard orthogonal projection matrix - mp.r[0].x = 2.0f / (right - left); - mp.r[0].w = (left + right) / (left - right); - mp.r[1].y = 2.0f / (top - bottom); - mp.r[1].w = (bottom + top) / (bottom - top); - mp.r[2].z = 2.0f / (near - far); - mp.r[2].w = (far + near) / (far - near); - mp.r[3].w = 1.0f; - - // Fix depth range to [-1, 0] - matrix_4x4 mp2, mp3; - m4x4_identity(&mp2); - mp2.r[2].z = 0.5; - mp2.r[2].w = -0.5; - m4x4_multiply(&mp3, &mp2, &mp); - - // Fix the 3DS screens' orientation by swapping the X and Y axis - m4x4_identity(&mp2); - mp2.r[0].x = 0.0; - mp2.r[0].y = 1.0; - mp2.r[1].x = -1.0; // flipped - mp2.r[1].y = 0.0; - m4x4_multiply(mtx, &mp2, &mp3); -} - -void m4x4_persp_tilt(matrix_4x4* mtx, float fovx, float invaspect, float near, float far) -{ - // Notes: - // We are passed "fovy" and the "aspect ratio". However, the 3DS screens are sideways, - // and so are these parameters -- in fact, they are actually the fovx and the inverse - // of the aspect ratio. Therefore the formula for the perspective projection matrix - // had to be modified to be expressed in these terms instead. - - // Notes: - // fovx = 2 atan(tan(fovy/2)*w/h) - // fovy = 2 atan(tan(fovx/2)*h/w) - // invaspect = h/w - - // a0,0 = h / (w*tan(fovy/2)) = - // = h / (w*tan(2 atan(tan(fovx/2)*h/w) / 2)) = - // = h / (w*tan( atan(tan(fovx/2)*h/w) )) = - // = h / (w * tan(fovx/2)*h/w) = - // = 1 / tan(fovx/2) - - // a1,1 = 1 / tan(fovy/2) = (...) = w / (h*tan(fovx/2)) - - float fovx_tan = tanf(fovx / 2); - matrix_4x4 mp; - m4x4_zeros(&mp); - - // Build standard perspective projection matrix - mp.r[0].x = 1.0f / fovx_tan; - mp.r[1].y = 1.0f / (fovx_tan*invaspect); - mp.r[2].z = (near + far) / (near - far); - mp.r[2].w = (2 * near * far) / (near - far); - mp.r[3].z = -1.0f; - - // Fix depth range to [-1, 0] - matrix_4x4 mp2; - m4x4_identity(&mp2); - mp2.r[2].z = 0.5; - mp2.r[2].w = -0.5; - m4x4_multiply(mtx, &mp2, &mp); - - // Rotate the matrix one quarter of a turn CCW in order to fix the 3DS screens' orientation - m4x4_rotate_z(mtx, M_PI / 2, true); -} diff --git a/examples/graphics/gpu/textured_cube/source/3dmath.h b/examples/graphics/gpu/textured_cube/source/3dmath.h deleted file mode 100644 index a9a8596..0000000 --- a/examples/graphics/gpu/textured_cube/source/3dmath.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Bare-bones simplistic 3D math library - * This library is common to all libctru GPU examples - */ - -#pragma once -#include -#include -#include - -typedef union { struct { float w, z, y, x; }; float c[4]; } vector_4f; -typedef struct { vector_4f r[4]; } matrix_4x4; - -static inline float v4f_dp4(const vector_4f* a, const vector_4f* b) -{ - return a->x*b->x + a->y*b->y + a->z*b->z + a->w*b->w; -} - -static inline float v4f_mod4(const vector_4f* a) -{ - return sqrtf(v4f_dp4(a,a)); -} - -static inline void v4f_norm4(vector_4f* vec) -{ - float m = v4f_mod4(vec); - if (m == 0.0) return; - vec->x /= m; - vec->y /= m; - vec->z /= m; - vec->w /= m; -} - -static inline void m4x4_zeros(matrix_4x4* out) -{ - memset(out, 0, sizeof(*out)); -} - -static inline void m4x4_copy(matrix_4x4* out, const matrix_4x4* in) -{ - memcpy(out, in, sizeof(*out)); -} - -void m4x4_identity(matrix_4x4* out); -void m4x4_multiply(matrix_4x4* out, const matrix_4x4* a, const matrix_4x4* b); - -void m4x4_translate(matrix_4x4* mtx, float x, float y, float z); -void m4x4_scale(matrix_4x4* mtx, float x, float y, float z); - -void m4x4_rotate_x(matrix_4x4* mtx, float angle, bool bRightSide); -void m4x4_rotate_y(matrix_4x4* mtx, float angle, bool bRightSide); -void m4x4_rotate_z(matrix_4x4* mtx, float angle, bool bRightSide); - -// Special versions of the projection matrices that take the 3DS' screen orientation into account -void m4x4_ortho_tilt(matrix_4x4* mtx, float left, float right, float bottom, float top, float near, float far); -void m4x4_persp_tilt(matrix_4x4* mtx, float fovy, float aspect, float near, float far); diff --git a/examples/graphics/gpu/textured_cube/source/gpu.c b/examples/graphics/gpu/textured_cube/source/gpu.c deleted file mode 100644 index d16f1ff..0000000 --- a/examples/graphics/gpu/textured_cube/source/gpu.c +++ /dev/null @@ -1,94 +0,0 @@ -#include "gpu.h" - -#define DISPLAY_TRANSFER_FLAGS \ - (GX_TRANSFER_FLIP_VERT(0) | GX_TRANSFER_OUT_TILED(0) | GX_TRANSFER_RAW_COPY(0) | \ - GX_TRANSFER_IN_FORMAT(GX_TRANSFER_FMT_RGBA8) | GX_TRANSFER_OUT_FORMAT(GX_TRANSFER_FMT_RGB8) | \ - GX_TRANSFER_SCALING(GX_TRANSFER_SCALE_NO)) - -static u32 *colorBuf, *depthBuf; -static u32 *cmdBuf; - -void gpuInit(void) -{ - colorBuf = vramAlloc(400*240*4); - depthBuf = vramAlloc(400*240*4); - cmdBuf = linearAlloc(0x40000*4); - - GPU_Init(NULL); - GPU_Reset(NULL, cmdBuf, 0x40000); -} - -void gpuExit(void) -{ - linearFree(cmdBuf); - vramFree(depthBuf); - vramFree(colorBuf); -} - -void gpuClearBuffers(u32 clearColor) -{ - GX_MemoryFill( - colorBuf, clearColor, &colorBuf[240*400], GX_FILL_TRIGGER | GX_FILL_32BIT_DEPTH, - depthBuf, 0, &depthBuf[240*400], GX_FILL_TRIGGER | GX_FILL_32BIT_DEPTH); - gspWaitForPSC0(); // Wait for the fill to complete -} - -void gpuFrameBegin(void) -{ - // Configure the viewport and the depth linear conversion function - GPU_SetViewport( - (u32*)osConvertVirtToPhys(depthBuf), - (u32*)osConvertVirtToPhys(colorBuf), - 0, 0, 240, 400); // The top screen is physically 240x400 pixels - GPU_DepthMap(-1.0f, 0.0f); // calculate the depth value from the Z coordinate in the following way: -1.0*z + 0.0 - - // Configure some boilerplate - GPU_SetFaceCulling(GPU_CULL_BACK_CCW); - GPU_SetStencilTest(false, GPU_ALWAYS, 0x00, 0xFF, 0x00); - GPU_SetStencilOp(GPU_STENCIL_KEEP, GPU_STENCIL_KEEP, GPU_STENCIL_KEEP); - GPU_SetBlendingColor(0,0,0,0); - GPU_SetDepthTestAndWriteMask(true, GPU_GREATER, GPU_WRITE_ALL); - - // This is unknown - GPUCMD_AddMaskedWrite(GPUREG_0062, 0x1, 0); - GPUCMD_AddWrite(GPUREG_0118, 0); - - // Configure alpha blending and test - GPU_SetAlphaBlending(GPU_BLEND_ADD, GPU_BLEND_ADD, GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA, GPU_SRC_ALPHA, GPU_ONE_MINUS_SRC_ALPHA); - GPU_SetAlphaTest(false, GPU_ALWAYS, 0x00); - - int i; - for (i = 0; i < 6; i ++) - GPU_SetDummyTexEnv(i); -} - -void gpuFrameEnd(void) -{ - // Finish rendering - GPU_FinishDrawing(); - GPUCMD_Finalize(); - GPUCMD_FlushAndRun(); - gspWaitForP3D(); // Wait for the rendering to complete - - // Transfer the GPU output to the framebuffer - GX_DisplayTransfer( - colorBuf, GX_BUFFER_DIM(240, 400), - (u32*)gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), GX_BUFFER_DIM(240, 400), - DISPLAY_TRANSFER_FLAGS); - gspWaitForPPF(); // Wait for the transfer to complete - - // Reset the command buffer - GPUCMD_SetBufferOffset(0); -}; - -void GPU_SetDummyTexEnv(int id) -{ - GPU_SetTexEnv(id, - GPU_TEVSOURCES(GPU_PREVIOUS, 0, 0), - GPU_TEVSOURCES(GPU_PREVIOUS, 0, 0), - GPU_TEVOPERANDS(0, 0, 0), - GPU_TEVOPERANDS(0, 0, 0), - GPU_REPLACE, - GPU_REPLACE, - 0xFFFFFFFF); -} diff --git a/examples/graphics/gpu/textured_cube/source/gpu.h b/examples/graphics/gpu/textured_cube/source/gpu.h deleted file mode 100644 index 845d139..0000000 --- a/examples/graphics/gpu/textured_cube/source/gpu.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Bare-bones simplistic GPU wrapper - * This library is common to all libctru GPU examples - */ - -#pragma once -#include -#include <3ds.h> -#include "3dmath.h" - -void gpuInit(void); -void gpuExit(void); - -void gpuClearBuffers(u32 clearColor); - -void gpuFrameBegin(void); -void gpuFrameEnd(void); - -// Configures the specified fixed-function fragment shading substage to be a no-operation -void GPU_SetDummyTexEnv(int id); - -// Uploads an uniform matrix -static inline void GPU_SetFloatUniformMatrix(GPU_SHADER_TYPE type, int location, matrix_4x4* matrix) -{ - GPU_SetFloatUniform(type, location, (u32*)matrix, 4); -} diff --git a/examples/graphics/gpu/textured_cube/source/main.c b/examples/graphics/gpu/textured_cube/source/main.c deleted file mode 100644 index 1e9687c..0000000 --- a/examples/graphics/gpu/textured_cube/source/main.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * ~~ Simple libctru GPU textured cube example ~~ - * This example demonstrates the basics of using the PICA200 in a 3DS homebrew - * application in order to render a basic scene consisting of a rotating - * textured cube which is also shaded using a simple shading algorithm. - * The shading algorithm is explained in the vertex shader source code. - */ - -#include "gpu.h" -#include "vshader_shbin.h" -#include "kitten_bin.h" - -#define CLEAR_COLOR 0x68B0D8FF - -typedef struct { float position[3]; float texcoord[2]; float normal[3]; } vertex; - -static const vertex vertex_list[] = -{ - // First face (PZ) - // First triangle - { {-0.5f, -0.5f, +0.5f}, {0.0f, 0.0f}, {0.0f, 0.0f, +1.0f} }, - { {+0.5f, -0.5f, +0.5f}, {1.0f, 0.0f}, {0.0f, 0.0f, +1.0f} }, - { {+0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {0.0f, 0.0f, +1.0f} }, - // Second triangle - { {+0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {0.0f, 0.0f, +1.0f} }, - { {-0.5f, +0.5f, +0.5f}, {0.0f, 1.0f}, {0.0f, 0.0f, +1.0f} }, - { {-0.5f, -0.5f, +0.5f}, {0.0f, 0.0f}, {0.0f, 0.0f, +1.0f} }, - - // Second face (MZ) - // First triangle - { {-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {0.0f, 0.0f, -1.0f} }, - { {-0.5f, +0.5f, -0.5f}, {1.0f, 0.0f}, {0.0f, 0.0f, -1.0f} }, - { {+0.5f, +0.5f, -0.5f}, {1.0f, 1.0f}, {0.0f, 0.0f, -1.0f} }, - // Second triangle - { {+0.5f, +0.5f, -0.5f}, {1.0f, 1.0f}, {0.0f, 0.0f, -1.0f} }, - { {+0.5f, -0.5f, -0.5f}, {0.0f, 1.0f}, {0.0f, 0.0f, -1.0f} }, - { {-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {0.0f, 0.0f, -1.0f} }, - - // Third face (PX) - // First triangle - { {+0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {+1.0f, 0.0f, 0.0f} }, - { {+0.5f, +0.5f, -0.5f}, {1.0f, 0.0f}, {+1.0f, 0.0f, 0.0f} }, - { {+0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {+1.0f, 0.0f, 0.0f} }, - // Second triangle - { {+0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {+1.0f, 0.0f, 0.0f} }, - { {+0.5f, -0.5f, +0.5f}, {0.0f, 1.0f}, {+1.0f, 0.0f, 0.0f} }, - { {+0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {+1.0f, 0.0f, 0.0f} }, - - // Fourth face (MX) - // First triangle - { {-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {-1.0f, 0.0f, 0.0f} }, - { {-0.5f, -0.5f, +0.5f}, {1.0f, 0.0f}, {-1.0f, 0.0f, 0.0f} }, - { {-0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {-1.0f, 0.0f, 0.0f} }, - // Second triangle - { {-0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {-1.0f, 0.0f, 0.0f} }, - { {-0.5f, +0.5f, -0.5f}, {0.0f, 1.0f}, {-1.0f, 0.0f, 0.0f} }, - { {-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {-1.0f, 0.0f, 0.0f} }, - - // Fifth face (PY) - // First triangle - { {-0.5f, +0.5f, -0.5f}, {0.0f, 0.0f}, {0.0f, +1.0f, 0.0f} }, - { {-0.5f, +0.5f, +0.5f}, {1.0f, 0.0f}, {0.0f, +1.0f, 0.0f} }, - { {+0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {0.0f, +1.0f, 0.0f} }, - // Second triangle - { {+0.5f, +0.5f, +0.5f}, {1.0f, 1.0f}, {0.0f, +1.0f, 0.0f} }, - { {+0.5f, +0.5f, -0.5f}, {0.0f, 1.0f}, {0.0f, +1.0f, 0.0f} }, - { {-0.5f, +0.5f, -0.5f}, {0.0f, 0.0f}, {0.0f, +1.0f, 0.0f} }, - - // Sixth face (MY) - // First triangle - { {-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {0.0f, -1.0f, 0.0f} }, - { {+0.5f, -0.5f, -0.5f}, {1.0f, 0.0f}, {0.0f, -1.0f, 0.0f} }, - { {+0.5f, -0.5f, +0.5f}, {1.0f, 1.0f}, {0.0f, -1.0f, 0.0f} }, - // Second triangle - { {+0.5f, -0.5f, +0.5f}, {1.0f, 1.0f}, {0.0f, -1.0f, 0.0f} }, - { {-0.5f, -0.5f, +0.5f}, {0.0f, 1.0f}, {0.0f, -1.0f, 0.0f} }, - { {-0.5f, -0.5f, -0.5f}, {0.0f, 0.0f}, {0.0f, -1.0f, 0.0f} }, -}; - -#define vertex_list_count (sizeof(vertex_list)/sizeof(vertex_list[0])) - -static DVLB_s* vshader_dvlb; -static shaderProgram_s program; -static int uLoc_projection, uLoc_modelView; -static int uLoc_lightVec, uLoc_lightHalfVec, uLoc_lightClr, uLoc_material; -static matrix_4x4 projection; -static matrix_4x4 material = -{ - { - { { 0.0f, 0.2f, 0.2f, 0.2f } }, // Ambient - { { 0.0f, 0.4f, 0.4f, 0.4f } }, // Diffuse - { { 0.0f, 0.8f, 0.8f, 0.8f } }, // Specular - { { 1.0f, 0.0f, 0.0f, 0.0f } }, // Emission - } -}; - -static void* vbo_data; -static void* tex_data; -static float angleX = 0.0, angleY = 0.0; - -static void sceneInit(void) -{ - // Load the vertex shader and create a shader program - vshader_dvlb = DVLB_ParseFile((u32*)vshader_shbin, vshader_shbin_size); - shaderProgramInit(&program); - shaderProgramSetVsh(&program, &vshader_dvlb->DVLE[0]); - - // Get the location of the uniforms - uLoc_projection = shaderInstanceGetUniformLocation(program.vertexShader, "projection"); - uLoc_modelView = shaderInstanceGetUniformLocation(program.vertexShader, "modelView"); - uLoc_lightVec = shaderInstanceGetUniformLocation(program.vertexShader, "lightVec"); - uLoc_lightHalfVec = shaderInstanceGetUniformLocation(program.vertexShader, "lightHalfVec"); - uLoc_lightClr = shaderInstanceGetUniformLocation(program.vertexShader, "lightClr"); - uLoc_material = shaderInstanceGetUniformLocation(program.vertexShader, "material"); - - // Compute the projection matrix - m4x4_persp_tilt(&projection, 80.0f*M_PI/180.0f, 400.0f/240.0f, 0.01f, 1000.0f); - - // Create the VBO (vertex buffer object) - vbo_data = linearAlloc(sizeof(vertex_list)); - memcpy(vbo_data, vertex_list, sizeof(vertex_list)); - - // Load the texture - tex_data = linearAlloc(kitten_bin_size); - memcpy(tex_data, kitten_bin, kitten_bin_size); -} - -static void sceneRender(void) -{ - // Bind the shader program - shaderProgramUse(&program); - - // Configure the first fragment shading substage to blend the texture color with - // the vertex color (calculated by the vertex shader using a lighting algorithm) - // See https://www.opengl.org/sdk/docs/man2/xhtml/glTexEnv.xml for more insight - GPU_SetTexEnv(0, - GPU_TEVSOURCES(GPU_TEXTURE0, GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR), // RGB channels - GPU_TEVSOURCES(GPU_TEXTURE0, GPU_PRIMARY_COLOR, GPU_PRIMARY_COLOR), // Alpha - GPU_TEVOPERANDS(0, 0, 0), // RGB - GPU_TEVOPERANDS(0, 0, 0), // Alpha - GPU_MODULATE, GPU_MODULATE, // RGB, Alpha - 0xFFFFFFFF); - - // Configure the first texture unit - GPU_SetTextureEnable(GPU_TEXUNIT0); - GPU_SetTexture( - GPU_TEXUNIT0, - (u32*)osConvertVirtToPhys(tex_data), - 64, // Width - 64, // Height - GPU_TEXTURE_MAG_FILTER(GPU_LINEAR) | GPU_TEXTURE_WRAP_S(GPU_REPEAT) | GPU_TEXTURE_WRAP_T(GPU_REPEAT), // Flags - GPU_RGBA8 // Pixel format - ); - - // Configure the "attribute buffers" (that is, the vertex input buffers) - GPU_SetAttributeBuffers( - 3, // Number of inputs per vertex - (u32*)osConvertVirtToPhys(vbo_data), // Location of the VBO - GPU_ATTRIBFMT(0, 3, GPU_FLOAT) | // Format of the inputs - GPU_ATTRIBFMT(1, 2, GPU_FLOAT) | - GPU_ATTRIBFMT(2, 3, GPU_FLOAT), - 0xFFC, // Unused attribute mask, in our case bits 0~2 are cleared since they are used - 0x210, // Attribute permutations (here it is the identity, passing each attribute in order) - 1, // Number of buffers - (u32[]) { 0x0 }, // Buffer offsets (placeholders) - (u64[]) { 0x210 }, // Attribute permutations for each buffer (identity again) - (u8[]) { 3 }); // Number of attributes for each buffer - - // Calculate the modelView matrix - matrix_4x4 modelView; - m4x4_identity(&modelView); - m4x4_translate(&modelView, 0.0, 0.0, -2.0 + 0.5*sinf(angleX)); - m4x4_rotate_x(&modelView, angleX, true); - m4x4_rotate_y(&modelView, angleY, true); - - // Rotate the cube each frame - angleX += M_PI / 180; - angleY += M_PI / 360; - - // Upload the uniforms - GPU_SetFloatUniformMatrix(GPU_VERTEX_SHADER, uLoc_projection, &projection); - GPU_SetFloatUniformMatrix(GPU_VERTEX_SHADER, uLoc_modelView, &modelView); - GPU_SetFloatUniformMatrix(GPU_VERTEX_SHADER, uLoc_material, &material); - GPU_SetFloatUniform(GPU_VERTEX_SHADER, uLoc_lightVec, (u32*)(float[]){0.0f, -1.0f, 0.0f, 0.0f}, 1); - GPU_SetFloatUniform(GPU_VERTEX_SHADER, uLoc_lightHalfVec, (u32*)(float[]){0.0f, -1.0f, 0.0f, 0.0f}, 1); - GPU_SetFloatUniform(GPU_VERTEX_SHADER, uLoc_lightClr, (u32*)(float[]){1.0f, 1.0f, 1.0f, 1.0f}, 1); - - // Draw the VBO - GPU_DrawArray(GPU_TRIANGLES, 0, vertex_list_count); -} - -static void sceneExit(void) -{ - // Free the texture - linearFree(tex_data); - - // Free the VBO - linearFree(vbo_data); - - // Free the shader program - shaderProgramFree(&program); - DVLB_Free(vshader_dvlb); -} - -int main() -{ - // Initialize graphics - gfxInitDefault(); - gpuInit(); - - // Initialize the scene - sceneInit(); - gpuClearBuffers(CLEAR_COLOR); - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); // Synchronize with the start of VBlank - gfxSwapBuffersGpu(); // Swap the framebuffers so that the frame that we rendered last frame is now visible - hidScanInput(); // Read the user input - - // Respond to user input - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - // Render the scene - gpuFrameBegin(); - sceneRender(); - gpuFrameEnd(); - gpuClearBuffers(CLEAR_COLOR); - - // Flush the framebuffers out of the data cache (not necessary with pure GPU rendering) - //gfxFlushBuffers(); - } - - // Deinitialize the scene - sceneExit(); - - // Deinitialize graphics - gpuExit(); - gfxExit(); - return 0; -} diff --git a/examples/graphics/gpu/textured_cube/source/vshader.pica b/examples/graphics/gpu/textured_cube/source/vshader.pica deleted file mode 100644 index 0f0ac5d..0000000 --- a/examples/graphics/gpu/textured_cube/source/vshader.pica +++ /dev/null @@ -1,90 +0,0 @@ -; Example PICA200 vertex shader - -; Uniforms -.fvec projection[4], modelView[4] -.fvec lightVec, lightHalfVec, lightClr, material[4] -.alias mat_amb material[0] -.alias mat_dif material[1] -.alias mat_spe material[2] -.alias mat_emi material[3] - -; Constants -.constf myconst(0.0, 1.0, -1.0, -0.5) -.alias zeros myconst.xxxx ; Vector full of zeros -.alias ones myconst.yyyy ; Vector full of ones - -; Outputs -.out outpos position -.out outtc0 texcoord0 -.out outclr color - -; Inputs (defined as aliases for convenience) -.alias inpos v0 -.alias intex v1 -.alias innrm v2 - -.proc main - ; Force the w component of inpos to be 1.0 - mov r0.xyz, inpos - mov r0.w, ones - - ; r1 = modelView * inpos - dp4 r1.x, modelView[0], r0 - dp4 r1.y, modelView[1], r0 - dp4 r1.z, modelView[2], r0 - dp4 r1.w, modelView[3], r0 - - ; outpos = projection * r1 - dp4 outpos.x, projection[0], r1 - dp4 outpos.y, projection[1], r1 - dp4 outpos.z, projection[2], r1 - dp4 outpos.w, projection[3], r1 - - ; outtex = intex - mov outtc0, intex - - ; Transform the normal vector with the modelView matrix - ; r1 = normalize(modelView * innrm) - mov r0.xyz, innrm - mov r0.w, zeros - dp4 r1.x, modelView[0], r0 - dp4 r1.y, modelView[1], r0 - dp4 r1.z, modelView[2], r0 - mov r1.w, zeros - dp3 r2, r1, r1 ; r2 = x^2+y^2+z^2 for each component - rsq r2, r2 ; r2 = 1/sqrt(r2) '' - mul r1, r2, r1 ; r1 = r1*r2 - - ; Calculate the diffuse level (r0.x) and the shininess level (r0.y) - ; r0.x = max(0, -(lightVec * r1)) - ; r0.y = max(0, (-lightHalfVec[i]) * r1) ^ 2 - dp3 r0.x, lightVec, r1 - add r0.x, zeros, -r0 - dp3 r0.y, -lightHalfVec, r1 - max r0, zeros, r0 - mul r0.y, r0, r0 - - ; Accumulate the vertex color in r1, initializing it to the emission color - mov r1, mat_emi - - ; r1 += specularColor * lightClr * shininessLevel - mul r2, lightClr, r0.yyyy - mul r2, mat_spe, r2 - add r1, r2, r1 - - ; r1 += diffuseColor * lightClr * diffuseLevel - mul r2, lightClr, r0.xxxx - mul r2, mat_dif, r2 - add r1, r2, r1 - - ; r1 += ambientColor * lightClr - mov r2, lightClr - mul r2, mat_amb, r2 - add r1, r2, r1 - - ; outclr = clamp r1 to [0,1] - min outclr, ones, r1 - - ; We're finished - end -.end diff --git a/examples/graphics/printing/Makefile b/examples/graphics/printing/Makefile deleted file mode 100644 index bce05ec..0000000 --- a/examples/graphics/printing/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SUBDIRS:= `ls | egrep -v '^(CVS)$$'` -all: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done; -clean: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done; -install: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i install || { exit 1;} fi; done; diff --git a/examples/graphics/printing/both-screen-text/Makefile b/examples/graphics/printing/both-screen-text/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/graphics/printing/both-screen-text/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/printing/both-screen-text/source/main.c b/examples/graphics/printing/both-screen-text/source/main.c deleted file mode 100644 index d2ddd95..0000000 --- a/examples/graphics/printing/both-screen-text/source/main.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - Both Screen Text example made by Aurelio Mannara for ctrulib - This code was modified for the last time on: 12/12/2014 23:20 UTC+1 - -*/ - -#include <3ds.h> -#include - -int main(int argc, char **argv) -{ - // Initialize services - gfxInitDefault(); - - //In this example we need one PrintConsole for each screen - PrintConsole topScreen, bottomScreen; - - //Initialize console for both screen using the two different PrintConsole we have defined - consoleInit(GFX_TOP, &topScreen); - consoleInit(GFX_BOTTOM, &bottomScreen); - - //Before doing any text printing we should select the PrintConsole in which we are willing to write, otherwise the library will print on the last selected/initialized one - //Let's start by printing something on the top screen - consoleSelect(&topScreen); - printf("This is the top screen. We have lot of space here!\n"); - - //Now write something else on the bottom screen - consoleSelect(&bottomScreen); - printf("This is the bottom screen. We don't have much space...\nStill better than DS screens :D"); - - consoleSelect(&topScreen); - printf("\x1b[29;15HPress Start to exit."); - - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - // Exit services - gfxExit(); - - return 0; -} diff --git a/examples/graphics/printing/colored-text/Makefile b/examples/graphics/printing/colored-text/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/graphics/printing/colored-text/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/printing/colored-text/source/main.c b/examples/graphics/printing/colored-text/source/main.c deleted file mode 100644 index 26afc15..0000000 --- a/examples/graphics/printing/colored-text/source/main.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - Colored Text example made by Aurelio Mannara for ctrulib - This code was modified for the last time on: 12/12/2014 23:00 UTC+1 - -*/ - -#include <3ds.h> -#include - -int main(int argc, char **argv) -{ - // Initialize services - gfxInitDefault(); - - //Initialize console on top screen. Using NULL as the second argument tells the console library to use the internal console structure as current one - consoleInit(GFX_TOP, NULL); - - //Move the cursor to row 15 and column 19 and then prints "Hello World!" - //To move the cursor you have tu print "\x1b[r;cH", where r and c are respectively - //the row and column where you want your cursor to move - //The top screen has 30 rows and 50 columns - //The bottom screen has 30 rows and 40 columns - printf("\x1b[15;19HHello World!"); - - //Move the cursor to the top left corner of the screen - printf("\x1b[0;0H"); - - //Print a REALLY crappy poeam with colored text - //\x1b[cm set a SGR (Select Graphic Rendition) parameter, where c is the parameter that you want to set - //Please refer to http://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes to see all the possible SGR parameters - //As of now ctrulib support only these parameters: - //Reset (0), Half bright colors (2), Reverse (7), Text color (30-37) and Background color (40-47) - printf("Roses are \x1b[31mred\x1b[0m\n"); - printf("Violets are \x1b[34mblue\x1b[0m\n"); - printf("Piracy is bad\n"); - printf("While homebrews are good\n\n"); - - //Black text on white background - //In this example we set two parameter in a single escape sequence by separating them by a semicolon - //\x1b[47;30m means that it will set a white background (47) and it will print white characters (30) - //In this we also could have used the - printf("\x1b[47;30mBlack text on white background\x1b[0m"); - - - printf("\x1b[29;15HPress Start to exit."); - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - // Exit services - gfxExit(); - - return 0; -} diff --git a/examples/graphics/printing/hello-world/Makefile b/examples/graphics/printing/hello-world/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/graphics/printing/hello-world/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/printing/hello-world/source/main.c b/examples/graphics/printing/hello-world/source/main.c deleted file mode 100644 index 04b4c29..0000000 --- a/examples/graphics/printing/hello-world/source/main.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - Hello World example made by Aurelio Mannara for ctrulib - This code was modified for the last time on: 12/12/2014 21:00 UTC+1 -*/ - -#include <3ds.h> -#include - -int main(int argc, char **argv) -{ - gfxInitDefault(); - - //Initialize console on top screen. Using NULL as the second argument tells the console library to use the internal console structure as current one - consoleInit(GFX_TOP, NULL); - - //Move the cursor to row 15 and column 19 and then prints "Hello World!" - //To move the cursor you have to print "\x1b[r;cH", where r and c are respectively - //the row and column where you want your cursor to move - //The top screen has 30 rows and 50 columns - //The bottom screen has 30 rows and 40 columns - printf("\x1b[15;19HHello World!"); - - printf("\x1b[29;15HPress Start to exit."); - - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - gfxExit(); - return 0; -} diff --git a/examples/graphics/printing/multiple-windows-text/Makefile b/examples/graphics/printing/multiple-windows-text/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/graphics/printing/multiple-windows-text/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/graphics/printing/multiple-windows-text/source/main.c b/examples/graphics/printing/multiple-windows-text/source/main.c deleted file mode 100644 index bf238f9..0000000 --- a/examples/graphics/printing/multiple-windows-text/source/main.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - Multiple Windows Text example made by Aurelio Mannara for ctrulib - This code was modified for the last time on: 12/12/2014 23:50 UTC+1 - -*/ - -#include <3ds.h> -#include - -int main(int argc, char **argv) -{ - // Initialize services - gfxInitDefault(); - - //In this example we need three PrintConsole, one for each window and one for the whole top screen - PrintConsole leftWindow, rightWindow, topScreen; - - //Initialize console for each window - consoleInit(GFX_TOP, &leftWindow); - consoleInit(GFX_TOP, &rightWindow); - consoleInit(GFX_TOP, &topScreen); - - //Now we specify the window position and dimension for each console window using consoleSetWindow(PrintConsole* console, int x, int y, int width, int height); - //x, y, width and height are in terms of cells, not pixel, where each cell is composed by 8x8 pixels. - consoleSetWindow(&leftWindow, 1, 1, 23, 28); - consoleSetWindow(&rightWindow, 26, 1, 23, 28); - - //Before doing any text printing we should select the PrintConsole in which we are willing to write, otherwise the library will print on the last selected/initialized one - //Let's start by printing something on the top screen - consoleSelect(&leftWindow); - printf("This text is in the left window!\n"); - printf("3DS rocks!!!\n"); - - //Now write something else on the bottom screen - consoleSelect(&rightWindow); - printf("This text is in the right window!\n"); - printf("This thing works pretty well!\n"); - - - consoleSelect(&topScreen); - printf("\x1b[29;15HPress Start to exit."); - - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - // Exit services - gfxExit(); - - return 0; -} diff --git a/examples/http/Makefile b/examples/http/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/http/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/http/README.md b/examples/http/README.md deleted file mode 100644 index 8472ee2..0000000 --- a/examples/http/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# http - -This is an example for using HTTPC. This downloads a raw image for displaying on the top-screen. The URL used here is a LAN-only one, hence this URL must be changed before building+running this example. - diff --git a/examples/http/source/main.c b/examples/http/source/main.c deleted file mode 100644 index 5c2c43e..0000000 --- a/examples/http/source/main.c +++ /dev/null @@ -1,113 +0,0 @@ -#include -#include -#include -#include - -#include <3ds.h> - -Result http_download(httpcContext *context)//This error handling needs updated with proper text printing once ctrulib itself supports that. -{ - Result ret=0; - u8* framebuf_top; - u32 statuscode=0; - u32 size=0, contentsize=0; - u8 *buf; - - ret = httpcBeginRequest(context); - if(ret!=0)return ret; - - ret = httpcGetResponseStatusCode(context, &statuscode, 0); - if(ret!=0)return ret; - - if(statuscode!=200)return -2; - - ret=httpcGetDownloadSizeState(context, NULL, &contentsize); - if(ret!=0)return ret; - - printf("size: %"PRId32"\n",contentsize); - gfxFlushBuffers(); - - buf = (u8*)malloc(contentsize); - if(buf==NULL)return -1; - memset(buf, 0, contentsize); - - - ret = httpcDownloadData(context, buf, contentsize, NULL); - if(ret!=0) - { - free(buf); - return ret; - } - - size = contentsize; - if(size>(240*400*3*2))size = 240*400*3*2; - - framebuf_top = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); - memcpy(framebuf_top, buf, size); - - gfxFlushBuffers(); - gfxSwapBuffers(); - - framebuf_top = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); - memcpy(framebuf_top, buf, size); - - gfxFlushBuffers(); - gfxSwapBuffers(); - gspWaitForVBlank(); - - free(buf); - - return 0; -} - -int main() -{ - Result ret=0; - httpcContext context; - - gfxInitDefault(); - httpcInit(); - - consoleInit(GFX_BOTTOM,NULL); - - //Change this to your own URL. - char *url = "http://devkitpro.org/misc/httpexample_rawimg.rgb"; - - printf("Downloading %s\n",url); - gfxFlushBuffers(); - - ret = httpcOpenContext(&context, url, 1); - printf("return from httpcOpenContext: %"PRId32"\n",ret); - gfxFlushBuffers(); - - if(ret==0) - { - ret=http_download(&context); - printf("return from http_download: %"PRId32"\n",ret); - gfxFlushBuffers(); - httpcCloseContext(&context); - } - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - hidScanInput(); - - // Your code goes here - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - } - - // Exit services - httpcExit(); - gfxExit(); - return 0; -} - diff --git a/examples/input/Makefile b/examples/input/Makefile deleted file mode 100644 index bce05ec..0000000 --- a/examples/input/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SUBDIRS:= `ls | egrep -v '^(CVS)$$'` -all: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done; -clean: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done; -install: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i install || { exit 1;} fi; done; diff --git a/examples/input/read-controls/Makefile b/examples/input/read-controls/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/input/read-controls/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/input/read-controls/source/main.c b/examples/input/read-controls/source/main.c deleted file mode 100644 index bb9c2b3..0000000 --- a/examples/input/read-controls/source/main.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - Circle Pad example made by Aurelio Mannara for ctrulib - Please refer to https://github.com/smealum/ctrulib/blob/master/libctru/include/3ds/services/hid.h for more information - This code was modified for the last time on: 12/13/2014 2:20 UTC+1 - - This wouldn't be possible without the amazing work done by: - -Smealum - -fincs - -WinterMute - -yellows8 - -plutoo - -mtheall - -Many others who worked on 3DS and I'm surely forgetting about -*/ - -#include <3ds.h> -#include - -int main(int argc, char **argv) -{ - //Matrix containing the name of each key. Useful for printing when a key is pressed - char keysNames[32][32] = { - "KEY_A", "KEY_B", "KEY_SELECT", "KEY_START", - "KEY_DRIGHT", "KEY_DLEFT", "KEY_DUP", "KEY_DDOWN", - "KEY_R", "KEY_L", "KEY_X", "KEY_Y", - "", "", "KEY_ZL", "KEY_ZR", - "", "", "", "", - "KEY_TOUCH", "", "", "", - "KEY_CSTICK_RIGHT", "KEY_CSTICK_LEFT", "KEY_CSTICK_UP", "KEY_CSTICK_DOWN", - "KEY_CPAD_RIGHT", "KEY_CPAD_LEFT", "KEY_CPAD_UP", "KEY_CPAD_DOWN" - }; - - // Initialize services - gfxInitDefault(); - - //Initialize console on top screen. Using NULL as the second argument tells the console library to use the internal console structure as current one - consoleInit(GFX_TOP, NULL); - - u32 kDownOld = 0, kHeldOld = 0, kUpOld = 0; //In these variables there will be information about keys detected in the previous frame - - printf("\x1b[0;0HPress Start to exit."); - printf("\x1b[1;0HCirclePad position:"); - - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - //hidKeysHeld returns information about which buttons have are held down in this frame - u32 kHeld = hidKeysHeld(); - //hidKeysUp returns information about which buttons have been just released - u32 kUp = hidKeysUp(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - //Do the keys printing only if keys have changed - if (kDown != kDownOld || kHeld != kHeldOld || kUp != kUpOld) - { - //Clear console - consoleClear(); - - //These two lines must be rewritten because we cleared the whole console - printf("\x1b[0;0HPress Start to exit."); - printf("\x1b[1;0HCirclePad position:"); - - printf("\x1b[3;0H"); //Move the cursor to the fourth row because on the third one we'll write the circle pad position - - //Check if some of the keys are down, held or up - int i; - for (i = 0; i < 32; i++) - { - if (kDown & BIT(i)) printf("%s down\n", keysNames[i]); - if (kHeld & BIT(i)) printf("%s held\n", keysNames[i]); - if (kUp & BIT(i)) printf("%s up\n", keysNames[i]); - } - } - - //Set keys old values for the next frame - kDownOld = kDown; - kHeldOld = kHeld; - kUpOld = kUp; - - circlePosition pos; - - //Read the CirclePad position - hidCircleRead(&pos); - - //Print the CirclePad position - printf("\x1b[2;0H%04d; %04d", pos.dx, pos.dy); - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - // Exit services - gfxExit(); - return 0; -} diff --git a/examples/input/touch-screen/Makefile b/examples/input/touch-screen/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/input/touch-screen/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/input/touch-screen/source/main.c b/examples/input/touch-screen/source/main.c deleted file mode 100644 index 7a06db0..0000000 --- a/examples/input/touch-screen/source/main.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - Touch Screen example made by Aurelio Mannara for ctrulib - Please refer to https://github.com/smealum/ctrulib/blob/master/libctru/include/3ds/services/hid.h for more information - This code was modified for the last time on: 12/13/2014 2:30 UTC+1 - - This wouldn't be possible without the amazing work done by: - -Smealum - -fincs - -WinterMute - -yellows8 - -plutoo - -mtheall - -Many others who worked on 3DS and I'm surely forgetting about -*/ - -#include <3ds.h> -#include - -int main(int argc, char **argv) -{ - gfxInitDefault(); - - //Initialize console on top screen. Using NULL as the second argument tells the console library to use the internal console structure as current one - consoleInit(GFX_TOP, NULL); - - printf("\x1b[0;0HPress Start to exit."); - printf("\x1b[1;0HTouch Screen position:"); - - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - touchPosition touch; - - //Read the touch screen coordinates - hidTouchRead(&touch); - - //Print the touch screen coordinates - printf("\x1b[2;0H%03d; %03d", touch.px, touch.py); - - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - // Exit services - gfxExit(); - return 0; -} diff --git a/examples/libapplet_launch/Makefile b/examples/libapplet_launch/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/libapplet_launch/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/libapplet_launch/README.md b/examples/libapplet_launch/README.md deleted file mode 100644 index 3b1478b..0000000 --- a/examples/libapplet_launch/README.md +++ /dev/null @@ -1,7 +0,0 @@ -libapplet_launch -======= - -Example for launching library applets. This launches the extrapad library applet(Circle Pad Pro calibration applet) when the B button is pressed. - -This is not usable from the homebrew launcher. - diff --git a/examples/libapplet_launch/source/main.c b/examples/libapplet_launch/source/main.c deleted file mode 100644 index 590262d..0000000 --- a/examples/libapplet_launch/source/main.c +++ /dev/null @@ -1,45 +0,0 @@ -#include <3ds.h> -#include - -static bool allowed = false; - -// If you define this function, you can monitor/debug APT events -void _aptDebug(int a, int b) -{ - if (allowed) - printf("_aptDebug(%d,%x)\n", a, b); -} - -int main() -{ - gfxInitDefault(); - consoleInit(GFX_TOP, NULL); - allowed = true; - - printf("Press B to launch applet\n"); - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - gfxSwapBuffers(); - hidScanInput(); - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - gfxFlushBuffers(); - - // Launch the extrapad library applet when button B is pressed. - if (kDown & KEY_B) - { - Result rc = APT_LaunchLibraryApplet(APPID_EXTRAPAD, 0, NULL, 0); - if (rc) printf("APT_LaunchLibraryApplet: %08lX\n", rc); - } - } - - // Exit services - gfxExit(); - return 0; -} diff --git a/examples/mvd/Makefile b/examples/mvd/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/mvd/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/mvd/README.md b/examples/mvd/README.md deleted file mode 100644 index f6eb32d..0000000 --- a/examples/mvd/README.md +++ /dev/null @@ -1 +0,0 @@ -This example is for using New3DS MVD, for hardware color-format conversion + video processing(the latter is not supported by ctrulib/this example yet). diff --git a/examples/mvd/source/costable.h b/examples/mvd/source/costable.h deleted file mode 100644 index 1c9b8ec..0000000 --- a/examples/mvd/source/costable.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef COSTABLE_H -#define COSTABLE_H - -s32 costable[] = {4096, 4095, 4094, 4093, 4091, 4088, 4084, 4080, 4076, 4071, 4065, 4058, 4051, 4044, 4035, 4026, 4017, 4007, 3996, 3985, 3973, 3960, 3947, 3934, 3919, 3904, 3889, 3873, 3856, 3839, 3821, 3803, 3784, 3765, 3744, 3724, 3703, 3681, 3659, 3636, 3612, 3588, 3564, 3539, 3513, 3487, 3461, 3434, 3406, 3378, 3349, 3320, 3290, 3260, 3229, 3198, 3167, 3135, 3102, 3069, 3035, 3002, 2967, 2932, 2897, 2861, 2825, 2788, 2751, 2714, 2676, 2638, 2599, 2560, 2521, 2481, 2441, 2401, 2360, 2318, 2277, 2235, 2193, 2150, 2107, 2064, 2020, 1976, 1932, 1888, 1843, 1798, 1753, 1707, 1662, 1616, 1569, 1523, 1476, 1429, 1382, 1334, 1287, 1239, 1191, 1143, 1095, 1046, 997, 949, 900, 851, 801, 752, 703, 653, 603, 554, 504, 454, 404, 354, 304, 254, 204, 153, 103, 53, 3, -46, -97, -147, -197, -247, -297, -347, -398, -448, -497, -547, -597, -647, -696, -746, -795, -844, -893, -942, -991, -1040, -1088, -1137, -1185, -1233, -1281, -1328, -1376, -1423, -1470, -1517, -1563, -1610, -1656, -1701, -1747, -1792, -1837, -1882, -1927, -1971, -2015, -2058, -2102, -2144, -2187, -2229, -2271, -2313, -2354, -2395, -2436, -2476, -2516, -2555, -2594, -2633, -2671, -2709, -2747, -2784, -2820, -2857, -2892, -2928, -2963, -2997, -3031, -3065, -3098, -3130, -3163, -3194, -3225, -3256, -3286, -3316, -3345, -3374, -3402, -3430, -3457, -3484, -3510, -3536, -3561, -3585, -3609, -3633, -3656, -3678, -3700, -3721, -3742, -3762, -3782, -3801, -3819, -3837, -3854, -3871, -3887, -3902, -3917, -3932, -3946, -3959, -3971, -3983, -3995, -4005, -4016, -4025, -4034, -4042, -4050, -4057, -4064, -4070, -4075, -4080, -4084, -4087, -4090, -4092, -4094, -4095, -4095, -4095, -4094, -4093, -4091, -4088, -4085, -4081, -4076, -4071, -4066, -4059, -4052, -4045, -4036, -4028, -4018, -4008, -3997, -3986, -3974, -3962, -3949, -3935, -3921, -3906, -3891, -3875, -3858, -3841, -3824, -3805, -3787, -3767, -3747, -3727, -3705, -3684, -3662, -3639, -3615, -3592, -3567, -3542, -3517, -3491, -3464, -3437, -3409, -3381, -3353, -3324, -3294, -3264, -3233, -3202, -3171, -3139, -3106, -3073, -3040, -3006, -2972, -2937, -2902, -2866, -2830, -2793, -2756, -2719, -2681, -2643, -2604, -2565, -2526, -2486, -2446, -2406, -2365, -2324, -2282, -2240, -2198, -2156, -2113, -2069, -2026, -1982, -1938, -1894, -1849, -1804, -1759, -1713, -1668, -1622, -1575, -1529, -1482, -1435, -1388, -1341, -1293, -1245, -1197, -1149, -1101, -1052, -1004, -955, -906, -857, -808, -758, -709, -660, -610, -560, -510, -460, -411, -360, -310, -260, -210, -160, -110, -60, -9, 40, 90, 140, 191, 241, 291, 341, 391, 441, 491, 541, 591, 640, 690, 739, 789, 838, 887, 936, 985, 1033, 1082, 1130, 1179, 1227, 1274, 1322, 1370, 1417, 1464, 1511, 1557, 1604, 1650, 1695, 1741, 1786, 1831, 1876, 1921, 1965, 2009, 2053, 2096, 2139, 2182, 2224, 2266, 2308, 2349, 2390, 2431, 2471, 2511, 2550, 2589, 2628, 2666, 2704, 2742, 2779, 2816, 2852, 2888, 2923, 2958, 2993, 3027, 3060, 3093, 3126, 3158, 3190, 3221, 3252, 3282, 3312, 3342, 3370, 3399, 3426, 3454, 3480, 3507, 3532, 3557, 3582, 3606, 3630, 3653, 3675, 3697, 3718, 3739, 3759, 3779, 3798, 3817, 3835, 3852, 3869, 3885, 3900, 3915, 3930, 3944, 3957, 3970, 3982, 3993, 4004, 4014, 4024, 4033, 4041, 4049, 4056, 4063, 4069, 4074, 4079, 4083, 4087, 4090, 4092, 4094, 4095}; - -#endif diff --git a/examples/mvd/source/main.c b/examples/mvd/source/main.c deleted file mode 100644 index 4e407de..0000000 --- a/examples/mvd/source/main.c +++ /dev/null @@ -1,143 +0,0 @@ -#include -#include - -#include <3ds.h> - -#include "costable.h" - -u8* inaddr; -u8* outaddr; - -char logstring[256]; - -s32 pcCos(u16 v) -{ - return costable[v&0x1FF]; -} - -void printstring(char *str)//Placeholder until ctrulib itself has proper text drawing. -{ - strncat(logstring, str, sizeof(logstring)-1); -} - -void draw_startup() -{ - Result ret; - - FILE *f = NULL; - - u8* bufAdr = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); - u8* gfxtopadr = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); - - MVDSTD_Config config; - - char str[256]; - - int i, j; - u32 cnt=0; - for(i=0;i<320;i++) - { - for(j=0;j<240;j++) - { - u32 v=(j+i*240)*3; - bufAdr[v]=(pcCos(i+cnt)+4096)/32; - bufAdr[v+1]=(pcCos(j-256+cnt)+4096)/64; - bufAdr[v+2]=(pcCos(i+128-cnt)+4096)/32; - } - } - - f = fopen("sdmc:/mvd_indata.bin", "r"); - if(f) - { - fread(inaddr, 1, 0x46500, f); - fclose(f); - } - else - { - memcpy(inaddr, bufAdr, 320*240*3); - } - - memset(gfxtopadr, 0, 0x46500); - GSPGPU_FlushDataCache(inaddr, 0x46500); - - printstring("mvd example\n"); - - ret = mvdstdInit(MVDMODE_COLORFORMATCONV, MVD_INPUT_YUYV422, MVD_OUTPUT_RGB565, 0); - memset(str, 0, 256); - snprintf(str, sizeof(str)-1, "mvdstdInit(): 0x%08x\n", (unsigned int)ret); - printstring(str); - - if(ret>=0) - { - mvdstdGenerateDefaultConfig(&config, 320, 240, 320, 240, (u32*)inaddr, (u32*)outaddr, (u32*)&outaddr[0x12c00]); - - ret = mvdstdProcessFrame(&config, NULL, 0, 0); - memset(str, 0, 256); - snprintf(str, sizeof(str)-1, "mvdstdProcessFrame(): 0x%08x\n", (unsigned int)ret); - printstring(str); - } - - svcSleepThread(1000000000);//Not sure how to determine when frame processing finishes. - - GSPGPU_InvalidateDataCache(outaddr, 0x100000); - - f = fopen("sdmc:/mvd_outdata.bin", "w"); - if(f) - { - fwrite(outaddr, 1, 0x100000, f); - fclose(f); - } - - f = fopen("sdmc:/mvd_log", "w"); - if(f) - { - fwrite(logstring, 1, strlen(logstring), f); - fclose(f); - } - - memcpy(gfxtopadr, outaddr, 0x46500); - - mvdstdExit(); - - gfxFlushBuffers(); - gfxSwapBuffers(); - gspWaitForVBlank(); -} - -int main() -{ - gfxInitDefault(); - //gfxSet3D(true); // uncomment if using stereoscopic 3D - - memset(logstring, 0, 256); - - inaddr = linearAlloc(0x100000); - outaddr = linearAlloc(0x100000); - - if(inaddr && outaddr) - { - memset(inaddr, 0, 0x100000); - memset(outaddr, 0, 0x100000); - draw_startup(); - } - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - hidScanInput(); - - // Your code goes here - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - } - - if(inaddr)linearFree(inaddr); - if(outaddr)linearFree(outaddr); - - gfxExit(); - return 0; -} - diff --git a/examples/qtm/Makefile b/examples/qtm/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/qtm/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/qtm/README.md b/examples/qtm/README.md deleted file mode 100644 index 2ad4cc6..0000000 --- a/examples/qtm/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# qtm - -This is an example for using New3DS QTM for head-tracking. - -This is currently not usable from the homebrew launcher. - diff --git a/examples/qtm/source/main.c b/examples/qtm/source/main.c deleted file mode 100644 index bf56804..0000000 --- a/examples/qtm/source/main.c +++ /dev/null @@ -1,85 +0,0 @@ -#include -#include -#include <3ds.h> - -int main() -{ - u32 pos; - u32 x, y; - Result ret; - bool qtm_usable; - QTM_HeadTrackingInfo qtminfo; - u32 colors[4] = {0x0000FF, 0x00FF00, 0xFF0000, 0xFFFFFF}; - - gfxInitDefault(); - //gfxSet3D(true); // uncomment if using stereoscopic 3D - - qtmInit(); - - consoleInit(GFX_BOTTOM, NULL); - - printf("qtm example\n"); - - qtm_usable = qtmCheckInitialized(); - if(!qtm_usable)printf("QTM is not usable, therefore this example won't do anything with QTM.\n"); - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - hidScanInput(); - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - if(qtm_usable) - { - u8* fb = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); - memset(fb, 0, 400*240*3); - - ret = QTM_GetHeadTrackingInfo(0, &qtminfo); - if(ret==0) - { - consoleClear(); - - for(pos=0; pos<5; pos++) - { - printf("flags[%x]=0x%x", (unsigned int)pos, qtminfo.flags[pos]); - if(pos<4)printf(", "); - } - - printf("\nfloatdata_x08: %f\n", qtminfo.floatdata_x08); - - printf("coords0: "); - for(pos=0; pos<4; pos++) - { - printf("[%x].x=%f, y=%f", (unsigned int)pos, qtminfo.coords0[pos].x, qtminfo.coords0[pos].y); - if(pos<3)printf(", "); - } - - printf("\n"); - - if(qtmCheckHeadFullyDetected(&qtminfo)) - { - for(pos=0; pos<4; pos++) - { - ret = qtmConvertCoordToScreen(&qtminfo.coords0[pos], NULL, NULL, &x, &y); - - if(ret==0)memcpy(&fb[(x*240 + y) * 3], &colors[pos], 3); - } - } - } - } - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - } - - // Exit services - qtmExit(); - gfxExit(); - return 0; -} - diff --git a/examples/romfs/Makefile b/examples/romfs/Makefile deleted file mode 100644 index 8f0d372..0000000 --- a/examples/romfs/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/romfs/romfs/folder/file.txt b/examples/romfs/romfs/folder/file.txt deleted file mode 100644 index 2454092..0000000 --- a/examples/romfs/romfs/folder/file.txt +++ /dev/null @@ -1,6 +0,0 @@ -Hello, this is the libctru romfs example. -This text is being read off a file in romfs. - - >>3DS Homebrew is Cool<< - -Signed off, fincs diff --git "a/examples/romfs/romfs/\343\203\225\343\202\251\343\203\253\343\203\200/\343\203\225\343\202\241\343\202\244\343\203\253.txt" "b/examples/romfs/romfs/\343\203\225\343\202\251\343\203\253\343\203\200/\343\203\225\343\202\241\343\202\244\343\203\253.txt" deleted file mode 100644 index 2cd922e..0000000 --- "a/examples/romfs/romfs/\343\203\225\343\202\251\343\203\253\343\203\200/\343\203\225\343\202\241\343\202\244\343\203\253.txt" +++ /dev/null @@ -1,2 +0,0 @@ -The path to this file contains UTF-16 -characters that fall outside ASCII. diff --git a/examples/romfs/source/main.c b/examples/romfs/source/main.c deleted file mode 100644 index eb89630..0000000 --- a/examples/romfs/source/main.c +++ /dev/null @@ -1,58 +0,0 @@ -茂禄驴#include -#include -#include -#include <3ds.h> - -void printfile(const char* path) -{ - FILE* f = fopen(path, "r"); - if (f) - { - char mystring[100]; - while (fgets(mystring, sizeof(mystring), f)) - { - int a = strlen(mystring); - if (mystring[a-1] == '\n') - { - mystring[a-1] = 0; - if (mystring[a-2] == '\r') - mystring[a-2] = 0; - } - puts(mystring); - } - printf(">>EOF<<\n"); - fclose(f); - } -} - -int main() -{ - gfxInitDefault(); - consoleInit(GFX_TOP, NULL); - - Result rc = romfsInit(); - if (rc) - printf("romfsInit: %08lX\n", rc); - else - { - printf("romfs Init Successful!\n"); - printfile("folder/file.txt"); - // Test reading a file with non-ASCII characters in the name - printfile("茫聝聲茫聜漏茫聝芦茫聝聙/茫聝聲茫聜隆茫聜陇茫聝芦.txt"); - } - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - hidScanInput(); - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - } - - romfsExit(); - gfxExit(); - return 0; -} diff --git a/examples/sdmc/Makefile b/examples/sdmc/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/sdmc/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/sdmc/README.md b/examples/sdmc/README.md deleted file mode 100644 index 4658c41..0000000 --- a/examples/sdmc/README.md +++ /dev/null @@ -1,5 +0,0 @@ -sdmc -======= - -very simple example of how to access SD files with libctru; - diff --git a/examples/sdmc/source/costable.c b/examples/sdmc/source/costable.c deleted file mode 100644 index 7788b2d..0000000 --- a/examples/sdmc/source/costable.c +++ /dev/null @@ -1,50 +0,0 @@ -#include <3ds/types.h> - -s32 costable[] = { 4096, 4095, 4094, 4093, 4091, 4088, 4084, 4080, 4076, 4071, 4065, - 4058, 4051, 4044, 4035, 4026, 4017, 4007, 3996, 3985, 3973, 3960, - 3947, 3934, 3919, 3904, 3889, 3873, 3856, 3839, 3821, 3803, 3784, - 3765, 3744, 3724, 3703, 3681, 3659, 3636, 3612, 3588, 3564, 3539, - 3513, 3487, 3461, 3434, 3406, 3378, 3349, 3320, 3290, 3260, 3229, - 3198, 3167, 3135, 3102, 3069, 3035, 3002, 2967, 2932, 2897, 2861, - 2825, 2788, 2751, 2714, 2676, 2638, 2599, 2560, 2521, 2481, 2441, - 2401, 2360, 2318, 2277, 2235, 2193, 2150, 2107, 2064, 2020, 1976, - 1932, 1888, 1843, 1798, 1753, 1707, 1662, 1616, 1569, 1523, 1476, - 1429, 1382, 1334, 1287, 1239, 1191, 1143, 1095, 1046, 997, 949, - 900, 851, 801, 752, 703, 653, 603, 554, 504, 454, 404, 354, 304, - 254, 204, 153, 103, 53, 3, -46, -97, -147, -197, -247, -297, -347, - -398, -448, -497, -547, -597, -647, -696, -746, -795, -844, -893, - -942, -991, -1040, -1088, -1137, -1185, -1233, -1281, -1328, -1376, - -1423, -1470, -1517, -1563, -1610, -1656, -1701, -1747, -1792, -1837, - -1882, -1927, -1971, -2015, -2058, -2102, -2144, -2187, -2229, -2271, - -2313, -2354, -2395, -2436, -2476, -2516, -2555, -2594, -2633, -2671, - -2709, -2747, -2784, -2820, -2857, -2892, -2928, -2963, -2997, -3031, - -3065, -3098, -3130, -3163, -3194, -3225, -3256, -3286, -3316, -3345, - -3374, -3402, -3430, -3457, -3484, -3510, -3536, -3561, -3585, -3609, - -3633, -3656, -3678, -3700, -3721, -3742, -3762, -3782, -3801, -3819, - -3837, -3854, -3871, -3887, -3902, -3917, -3932, -3946, -3959, -3971, - -3983, -3995, -4005, -4016, -4025, -4034, -4042, -4050, -4057, -4064, - -4070, -4075, -4080, -4084, -4087, -4090, -4092, -4094, -4095, -4095, - -4095, -4094, -4093, -4091, -4088, -4085, -4081, -4076, -4071, -4066, - -4059, -4052, -4045, -4036, -4028, -4018, -4008, -3997, -3986, -3974, - -3962, -3949, -3935, -3921, -3906, -3891, -3875, -3858, -3841, -3824, - -3805, -3787, -3767, -3747, -3727, -3705, -3684, -3662, -3639, -3615, - -3592, -3567, -3542, -3517, -3491, -3464, -3437, -3409, -3381, -3353, - -3324, -3294, -3264, -3233, -3202, -3171, -3139, -3106, -3073, -3040, - -3006, -2972, -2937, -2902, -2866, -2830, -2793, -2756, -2719, -2681, - -2643, -2604, -2565, -2526, -2486, -2446, -2406, -2365, -2324, -2282, - -2240, -2198, -2156, -2113, -2069, -2026, -1982, -1938, -1894, -1849, - -1804, -1759, -1713, -1668, -1622, -1575, -1529, -1482, -1435, -1388, - -1341, -1293, -1245, -1197, -1149, -1101, -1052, -1004, -955, -906, - -857, -808, -758, -709, -660, -610, -560, -510, -460, -411, -360, - -310, -260, -210, -160, -110, -60, -9, 40, 90, 140, 191, 241, 291, - 341, 391, 441, 491, 541, 591, 640, 690, 739, 789, 838, 887, 936, - 985, 1033, 1082, 1130, 1179, 1227, 1274, 1322, 1370, 1417, 1464, - 1511, 1557, 1604, 1650, 1695, 1741, 1786, 1831, 1876, 1921, 1965, - 2009, 2053, 2096, 2139, 2182, 2224, 2266, 2308, 2349, 2390, 2431, - 2471, 2511, 2550, 2589, 2628, 2666, 2704, 2742, 2779, 2816, 2852, - 2888, 2923, 2958, 2993, 3027, 3060, 3093, 3126, 3158, 3190, 3221, - 3252, 3282, 3312, 3342, 3370, 3399, 3426, 3454, 3480, 3507, 3532, - 3557, 3582, 3606, 3630, 3653, 3675, 3697, 3718, 3739, 3759, 3779, - 3798, 3817, 3835, 3852, 3869, 3885, 3900, 3915, 3930, 3944, 3957, - 3970, 3982, 3993, 4004, 4014, 4024, 4033, 4041, 4049, 4056, 4063, - 4069, 4074, 4079, 4083, 4087, 4090, 4092, 4094, 4095}; diff --git a/examples/sdmc/source/costable.h b/examples/sdmc/source/costable.h deleted file mode 100644 index f53eb36..0000000 --- a/examples/sdmc/source/costable.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef COSTABLE_H -#define COSTABLE_H - -extern s32 costable[]; - -#endif diff --git a/examples/sdmc/source/main.c b/examples/sdmc/source/main.c deleted file mode 100644 index 9e9dde6..0000000 --- a/examples/sdmc/source/main.c +++ /dev/null @@ -1,98 +0,0 @@ -/////////////////////////////////////// -// SDMC example // -/////////////////////////////////////// - -//this example shows you how to load a binary image file from the SD card and display it on the lower screen -//for this to work you should copy test.bin to same folder as your .3dsx -//this file was generated with GIMP by saving a 240x320 image to raw RGB -#include -#include -#include - -#include <3ds.h> -#include "costable.h" - -//this will contain the data read from SDMC -u8* buffer; - -//3DS has VFPs so we could just use cos -//but we're old school so LUT4life -s32 pcCos(u16 v) -{ - return costable[v&0x1FF]; -} - -void renderEffect() -{ - static int cnt; - u8* bufAdr=gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); - - int i, j; - for(i=1;i<400;i++) - { - for(j=1;j<240;j++) - { - u32 v=(j+i*240)*3; - bufAdr[v]=(pcCos(i+cnt)+4096)/32; - bufAdr[v+1]=(pcCos(j-256+cnt)+4096)/64; - bufAdr[v+2]=(pcCos(i+128-cnt)+4096)/32; - } - } - - cnt++; -} - -int main(int argc, char** argv) -{ - - gfxInitDefault(); //makes displaying to screen easier - - FILE *file = fopen("test.bin","rb"); - if (file == NULL) goto exit; - - // seek to end of file - fseek(file,0,SEEK_END); - - // file pointer tells us the size - off_t size = ftell(file); - - // seek back to start - fseek(file,0,SEEK_SET); - - //allocate a buffer - buffer=malloc(size); - if(!buffer)goto exit; - - //read contents ! - off_t bytesRead = fread(buffer,1,size,file); - - //close the file because we like being nice and tidy - fclose(file); - - if(size!=bytesRead)goto exit; - - while(aptMainLoop()) - { - //exit when user hits B - hidScanInput(); - if(keysHeld()&KEY_B)break; - - //render rainbow - renderEffect(); - - //copy buffer to lower screen (don't have to do it every frame) - memcpy(gfxGetFramebuffer(GFX_BOTTOM, GFX_BOTTOM, NULL, NULL), buffer, size); - - //wait & swap - gfxSwapBuffersGpu(); - gspWaitForEvent(GSPGPU_EVENT_VBlank0, false); - } - - //cleanup and return - //returning from main() returns to hbmenu when run under ninjhax - exit: - - //closing all services even more so - gfxExit(); - return 0; -} diff --git a/examples/sdmc/test.bin b/examples/sdmc/test.bin deleted file mode 100644 index 7081df1..0000000 --- a/examples/sdmc/test.bin +++ /dev/null @@ -1 +0,0 @@ -每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒眉眉眉眉眉眉眉眉眉眉眉眉媒媒媒媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没煤煤煤酶酶酶酶酶酶酶酶酶酶酶酶煤煤煤没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤梅梅梅玫玫玫贸贸贸帽帽帽帽帽帽贸贸贸玫玫玫梅梅梅煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤枚枚枚貌貌貌卯卯卯茅茅茅猫猫猫猫猫猫茅茅茅卯卯卯貌貌貌枚枚枚煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没梅梅梅貌貌貌锚锚锚氓氓氓脽脽脽脺脺脺脺脺脺脽脽脽氓氓氓锚锚锚貌貌貌梅梅梅没没没媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶贸贸贸锚锚锚芒芒芒脷脷脷脫脫脫脨脨脨脨脨脨脫脫脫脷脷脷芒芒芒锚锚锚贸贸贸酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤玫玫玫茂茂茂忙忙忙脷脷脷脨脨脨脠脠脠脛脛脛脛脛脛脠脠脠脨脨脨脷脷脷忙忙忙茂茂茂玫玫玫煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤贸贸贸锚锚锚脼脼脼脪脪脪脟脟脟陆陆陆鹿鹿鹿鹿鹿鹿陆陆陆脟脟脟脪脪脪脼脼脼锚锚锚贸贸贸煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶帽帽帽莽莽莽脹脹脹脣脣脣戮戮戮麓麓麓炉炉炉炉炉炉麓麓麓戮戮戮脢脢脢脵脵脵氓氓氓茂茂茂枚枚枚没没没媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁眉眉眉媒媒媒眉眉眉眉眉眉眉眉眉煤煤煤没没没霉霉霉煤煤煤霉霉霉霉霉霉煤煤煤煤煤煤眉眉眉眉眉眉镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒眉眉眉媒媒媒眉眉眉霉霉霉玫玫玫毛毛毛谩谩谩脪脪脪脙脙脙露露露陋陋陋陇陇陇楼楼楼漏漏漏露露露脗脗脗脩脩脩脽脽脽茅茅茅貌貌貌枚枚枚霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅酶酶酶梅梅梅梅梅梅枚枚枚枚枚枚贸贸贸玫玫玫貌貌貌贸贸贸帽帽帽貌貌貌帽帽帽貌貌貌贸贸贸么么么梅梅梅酶酶酶没没没眉眉眉镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒媒媒媒眉眉眉镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉眉眉眉没没没没没没没没没煤煤煤煤煤煤霉霉霉梅梅梅酶酶酶枚枚枚玫玫玫玫玫玫贸贸贸矛矛矛茫茫茫脴脴脴脡脡脡鹿鹿鹿芦芦芦聼聼聼聸聸聸聸聸聸聻聻聻芦芦芦赂赂赂脠脠脠脰脰脰脿脿脿猫猫猫茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂茂茂茂茂茂茂茂茂茂卯卯卯铆铆铆毛毛毛锚锚锚茅茅茅猫猫猫忙忙忙忙忙忙忙忙忙莽莽莽猫猫猫锚锚锚矛矛矛茂茂茂贸贸贸枚枚枚霉霉霉没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒煤煤煤煤煤煤酶酶酶酶酶酶梅梅梅酶酶酶梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅梅梅梅枚枚枚玫玫玫玫玫玫么么么么么么貌貌貌贸贸贸帽帽帽帽帽帽茂茂茂茂茂茂矛矛矛矛矛矛毛毛毛茅茅茅茫茫茫脷脷脷脢脢脢驴驴驴庐庐庐垄垄垄聰聰聰聭聭聭聬聬聬聲聲聲聽聽聽庐庐庐陆陆陆脟脟脟脮脮脮脻脻脻谩谩谩茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓盲盲盲氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲芒芒芒茫茫茫谩谩谩茫茫茫谩谩谩脿脿脿脿脿脿脼脼脼脺脺脺脹脹脹脹脹脹脵脵脵脷脷脷脷脷脷脺脺脺脼脼脼谩谩谩莽莽莽矛矛矛貌貌貌枚枚枚煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没酶酶酶枚枚枚贸贸贸貌貌貌茂茂茂冒冒冒卯卯卯冒冒冒卯卯卯帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂茂茂茂铆铆铆铆铆铆毛毛毛毛毛毛毛毛毛锚锚锚茅茅茅莽莽莽忙忙忙茫茫茫茫茫茫谩谩谩芒芒芒脽脽脽脿脿脿脼脼脼脼脼脼脭脭脭脤脤脤驴驴驴碌碌碌陇陇陇聵聵聵聦聦聦聣聣聣聢聢聢聥聥聥聳聳聳拢拢拢虏虏虏戮戮戮脡脡脡脨脨脨脰脰脰脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脰脰脰脭脭脭脭脭脭脪脪脪脩脩脩脨脨脨脥脥脥脤脤脤脢脢脢脡脡脡脢脢脢脢脢脢脢脢脢脥脥脥脩脩脩脳脳脳脼脼脼茫茫茫毛毛毛帽帽帽梅梅梅煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤梅梅梅贸贸贸茂茂茂锚锚锚莽莽莽盲盲盲茫茫茫谩谩谩芒芒芒谩谩谩茫茫茫茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫脽脽脽脿脿脿脻脻脻脽脽脽脼脼脼脼脼脼脹脹脹脺脺脺脵脵脵脷脷脷脰脰脰脳脳脳脫脫脫脭脭脭脩脩脩脨脨脨脦脦脦脤脤脤脟脟脟陆陆陆卤卤卤楼楼楼聴聴聴聦聦聦聜聜聜}}}}}}聛聛聛聥聥聥聴聴聴陇陇陇庐庐庐潞潞潞脕脕脕脛脛脛脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脗脗脗脕脕脕脌脌脌戮戮戮陆陆陆禄禄禄潞潞潞潞潞潞禄禄禄戮戮戮驴驴驴脝脝脝脤脤脤脭脭脭脻脻脻氓氓氓铆铆铆么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤梅梅梅貌貌貌矛矛矛忙忙忙脽脽脽脹脹脹脰脰脰脰脰脰脭脭脭脰脰脰脫脫脫脰脰脰脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脭脭脭脪脪脪脪脪脪脪脪脪脧脧脧脦脦脦脣脣脣脤脤脤脡脡脡脡脡脡脠脠脠脝脝脝脜脜脜脙脙脙脕脕脕脌脌脌戮戮戮戮戮戮路路路掳掳掳娄娄娄聶聶聶聧聧聧聙聙聙yyytttuuuwww聛聛聛聤聤聤聵聵聵垄垄垄卢卢卢虏虏虏路路路赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂麓麓麓路路路麓麓麓麓麓麓卤卤卤掳掳掳掳掳掳炉炉炉庐庐庐炉炉炉庐庐庐卤卤卤虏虏虏赂赂赂陆陆陆脛脛脛脥脥脥脳脳脳脽脽脽茅茅茅冒冒冒梅梅梅煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶贸贸贸矛矛矛盲盲盲脺脺脺脭脭脭脦脦脦脠脠脠脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脙脙脙脗脗脗脕脕脕脗脗脗脌脌脌脌脌脌戮戮戮戮戮戮录录录潞潞潞禄禄禄赂赂赂潞潞潞露露露赂赂赂鲁鲁鲁麓麓麓虏虏虏虏虏虏庐庐庐芦芦芦陇陇陇聶聶聶聬聬聬聞聞聞zzzqqqmmmmmmqqq{{{聝聝聝聭聭聭聵聵聵拢拢拢搂搂搂卢卢卢芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦陋陋陋陋陋陋漏漏漏漏漏漏篓篓篓篓篓篓漏漏漏篓篓篓篓篓篓搂搂搂搂搂搂娄娄娄搂搂搂漏漏漏芦芦芦虏虏虏路路路脌脌脌脡脡脡脫脫脫脻脻脻莽莽莽茂茂茂枚枚枚煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤玫玫玫茂茂茂氓氓氓脹脹脹脨脨脨脡脡脡脌脌脌录录录露露露露露露鲁鲁鲁露露露麓麓麓赂赂赂碌碌碌赂赂赂碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌鲁鲁鲁碌碌碌虏虏虏麓麓麓虏虏虏卤卤卤卤卤卤卤卤卤颅颅颅炉炉炉卢卢卢颅颅颅芦芦芦卢卢卢陋陋陋卢卢卢篓篓篓漏漏漏搂搂搂垄垄垄聸聸聸聰聰聰聤聤聤tttllljjjjjjmmmttt聙聙聙聣聣聣聰聰聰聹聹聹隆隆隆楼楼楼娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄楼楼楼楼楼楼楼楼楼陇陇陇娄娄娄陇陇陇楼楼楼陇陇陇楼楼楼楼楼楼搂搂搂篓篓篓芦芦芦卤卤卤路路路脌脌脌脡脡脡脫脫脫脻脻脻莽莽莽茂茂茂枚枚枚煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶贸贸贸锚锚锚脿脿脿脮脮脮脢脢脢脌脌脌路路路虏虏虏卢卢卢芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋篓篓篓漏漏漏搂搂搂漏漏漏娄娄娄篓篓篓娄娄娄漏漏漏娄娄娄篓篓篓搂搂搂搂搂搂娄娄娄搂搂搂搂搂搂娄娄娄搂搂搂陇陇陇楼楼楼拢拢拢聽聽聽聸聸聸聭聭聭聥聥聥vvvnnnkkkkkkooovvv聙聙聙聤聤聤聰聰聰聹聹聹垄垄垄楼楼楼娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄楼楼楼楼楼楼楼楼楼楼楼楼娄娄娄娄娄娄搂搂搂娄娄娄篓篓篓篓篓篓芦芦芦颅颅颅掳掳掳露露露录录录脛脛脛脤脤脤脳脳脳脽脽脽茅茅茅冒冒冒梅梅梅煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶貌貌貌茅茅茅脼脼脼脪脪脪脝脝脝录录录虏虏虏卢卢卢篓篓篓楼楼楼陇陇陇陇陇陇陇陇陇娄娄娄楼楼楼搂搂搂娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇拢拢拢楼楼楼陇陇陇楼楼楼楼楼楼陇陇陇娄娄娄楼楼楼娄娄娄娄娄娄搂搂搂搂搂搂搂搂搂搂搂搂搂搂搂篓篓篓垄垄垄聻聻聻聲聲聲聦聦聦聛聛聛wwwpppmmmoooqqqzzz聞聞聞聭聭聭聵聵聵垄垄垄娄娄娄卢卢卢芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋芦芦芦陋陋陋卢卢卢卢卢卢庐庐庐庐庐庐卤卤卤炉炉炉鲁鲁鲁鲁鲁鲁赂赂赂潞潞潞戮戮戮脜脜脜脣脣脣脭脭脭脻脻脻氓氓氓铆铆铆么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶貌貌貌茅茅茅脼脼脼脪脪脪脝脝脝录录录虏虏虏卢卢卢篓篓篓楼楼楼陇陇陇陇陇陇陇陇陇娄娄娄楼楼楼搂搂搂娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄搂搂搂搂搂搂陋陋陋篓篓篓卢卢卢芦芦芦颅颅颅卢卢卢庐庐庐颅颅颅掳掳掳庐庐庐卢卢卢篓篓篓聻聻聻聲聲聲聦聦聦聛聛聛{{{tttvvvzzz聟聟聟聧聧聧職職職拢拢拢颅颅颅麓麓麓路路路赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂碌碌碌潞潞潞赂赂赂潞潞潞潞潞潞录录录陆陆陆戮戮戮脕脕脕脛脛脛脟脟脟脢脢脢脨脨脨脳脳脳脼脼脼茫茫茫毛毛毛帽帽帽梅梅梅煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶贸贸贸锚锚锚脿脿脿脮脮脮脢脢脢脌脌脌路路路虏虏虏卢卢卢芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦芦芦芦陋陋陋卢卢卢陋陋陋颅颅颅卢卢卢庐庐庐颅颅颅炉炉炉炉炉炉卤卤卤虏虏虏卤卤卤麓麓麓麓麓麓路路路路路路潞潞潞赂赂赂禄禄禄禄禄禄潞潞潞鲁鲁鲁陋陋陋垄垄垄聰聰聰聤聤聤聜聜聜聙聙聙聙聙聙聞聞聞聧聧聧職職職娄娄娄掳掳掳潞潞潞脕脕脕脛脛脛脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脟脟脟脜脜脜脝脝脝脝脝脝脠脠脠脠脠脠脠脠脠脢脢脢脢脢脢脤脤脤脦脦脦脨脨脨脪脪脪脰脰脰脴脴脴脷脷脷脻脻脻脿脿脿莽莽莽矛矛矛貌貌貌枚枚枚煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤玫玫玫茂茂茂氓氓氓脹脹脹脨脨脨脡脡脡脌脌脌录录录露露露露露露鲁鲁鲁露露露麓麓麓赂赂赂碌碌碌赂赂赂碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌露露露碌碌碌露露露露露露鹿鹿鹿鹿鹿鹿禄禄禄陆陆陆戮戮戮戮戮戮戮戮戮脌脌脌脕脕脕脙脙脙脛脛脛脝脝脝脟脟脟脠脠脠脤脤脤脢脢脢脤脤脤脠脠脠脜脜脜潞潞潞掳掳掳拢拢拢聵聵聵聬聬聬聣聣聣聤聤聤聭聭聭職職職娄娄娄麓麓麓驴驴驴脢脢脢脪脪脪脮脮脮脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脰脰脰脳脳脳脰脰脰脴脴脴脴脴脴脷脷脷脹脹脹脼脼脼脽脽脽脿脿脿谩谩谩氓氓氓忙忙忙茅茅茅矛矛矛茂茂茂贸贸贸枚枚枚霉霉霉没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶贸贸贸矛矛矛盲盲盲脺脺脺脭脭脭脦脦脦脠脠脠脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脠脠脠脠脠脠脢脢脢脢脢脢脤脤脤脥脥脥脨脨脨脨脨脨脩脩脩脪脪脪脮脮脮脭脭脭脴脴脴脳脳脳脹脹脹脷脷脷脹脹脹脴脴脴脪脪脪脝脝脝录录录颅颅颅垄垄垄聴聴聴聰聰聰聰聰聰聵聵聵拢拢拢掳掳掳驴驴驴脢脢脢脰脰脰脼脼脼谩谩谩茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓盲盲盲氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓氓氓氓忙忙忙莽莽莽猫猫猫锚锚锚锚锚锚矛矛矛铆铆铆卯卯卯茂茂茂帽帽帽贸贸贸么么么梅梅梅酶酶酶没没没眉眉眉镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤梅梅梅貌貌貌矛矛矛忙忙忙脽脽脽脹脹脹脰脰脰脰脰脰脭脭脭脰脰脰脫脫脫脰脰脰脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脮脮脮脰脰脰脰脰脰脳脳脳脵脵脵脴脴脴脷脷脷脷脷脷脼脼脼脺脺脺脽脽脽脽脽脽谩谩谩脿脿脿芒芒芒谩谩谩盲盲盲氓氓氓莽莽莽茅茅茅茅茅茅氓氓氓脻脻脻脪脪脪脟脟脟鹿鹿鹿卢卢卢垄垄垄聹聹聹聹聹聹垄垄垄颅颅颅潞潞潞脢脢脢脰脰脰芒芒芒锚锚锚卯卯卯冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒帽帽帽貌貌貌贸贸贸贸贸贸玫玫玫么么么枚枚枚梅梅梅酶酶酶酶酶酶霉霉霉煤煤煤煤煤煤眉眉眉眉眉眉镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤梅梅梅贸贸贸茂茂茂锚锚锚莽莽莽盲盲盲茫茫茫谩谩谩芒芒芒谩谩谩茫茫茫茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒氓氓氓茫茫茫氓氓氓氓氓氓猫猫猫猫猫猫毛毛毛毛毛毛毛毛毛毛毛毛铆铆铆铆铆铆冒冒冒冒冒冒貌貌貌帽帽帽么么么貌貌貌貌貌貌卯卯卯猫猫猫脹脹脹脧脧脧脕脕脕虏虏虏搂搂搂隆隆隆垄垄垄娄娄娄麓麓麓脕脕脕脪脪脪脼脼脼锚锚锚贸贸贸梅梅梅霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉煤煤煤煤煤煤眉眉眉没没没眉眉眉眉眉眉媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没酶酶酶枚枚枚贸贸贸貌貌貌茂茂茂冒冒冒卯卯卯冒冒冒卯卯卯帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒帽帽帽冒冒冒貌貌貌貌貌貌贸贸贸么么么么么么玫玫玫玫玫玫枚枚枚枚枚枚酶酶酶酶酶酶霉霉霉煤煤煤煤煤煤没没没霉霉霉玫玫玫铆铆铆谩谩谩脮脮脮脛脛脛露露露卢卢卢楼楼楼楼楼楼卢卢卢路路路脛脛脛脮脮脮谩谩谩卯卯卯梅梅梅没没没媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒煤煤煤煤煤煤酶酶酶酶酶酶梅梅梅酶酶酶梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉没没没煤煤煤眉眉眉没没没眉眉眉眉眉眉眉眉眉媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝赂赂赂芦芦芦娄娄娄娄娄娄芦芦芦赂赂赂脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒媒媒媒眉眉眉镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝路路路颅颅颅娄娄娄娄娄娄颅颅颅路路路脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脝脝脝路路路芦芦芦楼楼楼楼楼楼芦芦芦路路路脝脝脝脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脜脜脜露露露卢卢卢楼楼楼楼楼楼卢卢卢露露露脜脜脜脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脜脜脜露露露芦芦芦陇陇陇陇陇陇芦芦芦露露露脜脜脜脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶茂茂茂茫茫茫脮脮脮脛脛脛碌碌碌芦芦芦陇陇陇陇陇陇芦芦芦碌碌碌脛脛脛脮脮脮茫茫茫茂茂茂酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脮脮脮脛脛脛碌碌碌芦芦芦拢拢拢拢拢拢芦芦芦碌碌碌脛脛脛脮脮脮茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒梅梅梅茂茂茂茫茫茫脭脭脭脛脛脛麓麓麓陋陋陋拢拢拢拢拢拢陋陋陋麓麓麓脛脛脛脭脭脭茫茫茫茂茂茂梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脮脮脮脛脛脛碌碌碌陋陋陋垄垄垄垄垄垄陋陋陋碌碌碌脛脛脛脮脮脮芒芒芒冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒梅梅梅茂茂茂茫茫茫脭脭脭脛脛脛麓麓麓陋陋陋拢拢拢拢拢拢陋陋陋麓麓麓脛脛脛脭脭脭茫茫茫茂茂茂梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脮脮脮脛脛脛碌碌碌陋陋陋拢拢拢拢拢拢陋陋陋碌碌碌脛脛脛脮脮脮芒芒芒冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅茂茂茂茫茫茫脮脮脮脜脜脜碌碌碌陋陋陋陇陇陇陇陇陇陋陋陋碌碌碌脜脜脜脮脮脮茫茫茫茂茂茂梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脮脮脮脜脜脜露露露陋陋陋陇陇陇陇陇陇陋陋陋露露露脜脜脜脮脮脮芒芒芒冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅茂茂茂盲盲盲脰脰脰脜脜脜露露露芦芦芦楼楼楼楼楼楼芦芦芦露露露脜脜脜脰脰脰盲盲盲茂茂茂梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脮脮脮脝脝脝路路路陋陋陋陇陇陇陇陇陇陋陋陋路路路脝脝脝脮脮脮茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅冒冒冒氓氓氓脳脳脳脝脝脝露露露芦芦芦娄娄娄娄娄娄芦芦芦露露露脝脝脝脳脳脳氓氓氓冒冒冒梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂茫茫茫脮脮脮脝脝脝赂赂赂陋陋陋楼楼楼楼楼楼陋陋陋赂赂赂脝脝脝脮脮脮茫茫茫茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅冒冒冒盲盲盲脳脳脳脝脝脝碌碌碌芦芦芦娄娄娄娄娄娄芦芦芦碌碌碌脝脝脝脳脳脳盲盲盲冒冒冒梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂茫茫茫脭脭脭脜脜脜赂赂赂卢卢卢娄娄娄娄娄娄芦芦芦赂赂赂脛脛脛脭脭脭芒芒芒茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅冒冒冒盲盲盲脴脴脴脝脝脝露露露芦芦芦娄娄娄娄娄娄芦芦芦麓麓麓脝脝脝脰脰脰盲盲盲茂茂茂梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂盲盲盲脮脮脮脝脝脝鹿鹿鹿庐庐庐娄娄娄楼楼楼陋陋陋路路路脗脗脗脫脫脫谩谩谩茂茂茂酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁酶酶酶貌貌貌忙忙忙脵脵脵脟脟脟赂赂赂颅颅颅娄娄娄陇陇陇陋陋陋麓麓麓脙脙脙脭脭脭谩谩谩冒冒冒梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉帽帽帽忙忙忙脴脴脴脠脠脠禄禄禄炉炉炉娄娄娄娄娄娄陋陋陋麓麓麓脌脌脌脨脨脨脽脽脽铆铆铆枚枚枚眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁霉霉霉贸贸贸莽莽莽脹脹脹脣脣脣禄禄禄掳掳掳搂搂搂娄娄娄漏漏漏虏虏虏脌脌脌脨脨脨脽脽脽毛毛毛么么么没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没贸贸贸茅茅茅脺脺脺脣脣脣驴驴驴鲁鲁鲁芦芦芦搂搂搂陋陋陋鲁鲁鲁戮戮戮脥脥脥脺脺脺茅茅茅贸贸贸没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒眉眉眉煤煤煤煤煤煤煤煤煤煤煤煤眉眉眉媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没玫玫玫毛毛毛脽脽脽脩脩脩脕脕脕碌碌碌颅颅颅陋陋陋芦芦芦虏虏虏驴驴驴脥脥脥脺脺脺茅茅茅帽帽帽煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒眉眉眉煤煤煤酶酶酶枚枚枚么么么么么么枚枚枚酶酶酶煤煤煤眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁煤煤煤玫玫玫矛矛矛谩谩谩脫脫脫脜脜脜鹿鹿鹿卤卤卤庐庐庐炉炉炉露露露驴驴驴脣脣脣脵脵脵氓氓氓冒冒冒梅梅梅没没没媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒霉霉霉酶酶酶么么么冒冒冒铆铆铆矛矛矛矛矛矛卯卯卯帽帽帽枚枚枚霉霉霉没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒媒媒媒眉眉眉镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没没没没霉霉霉煤煤煤酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅枚枚枚冒冒冒锚锚锚脽脽脽脰脰脰脝脝脝禄禄禄鲁鲁鲁掳掳掳庐庐庐露露露戮戮戮脢脢脢脰脰脰芒芒芒锚锚锚貌貌貌玫玫玫酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅酶酶酶贸贸贸貌貌貌矛矛矛茅茅茅盲盲盲芒芒芒脽脽脽谩谩谩盲盲盲猫猫猫卯卯卯贸贸贸酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒煤煤煤煤煤煤酶酶酶酶酶酶梅梅梅酶酶酶梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉煤煤煤煤煤煤眉眉眉眉眉眉眉眉眉媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉煤煤煤霉霉霉梅梅梅枚枚枚么么么贸贸贸帽帽帽帽帽帽冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽铆铆铆毛毛毛氓氓氓脺脺脺脪脪脪脠脠脠录录录路路路虏虏虏卤卤卤露露露陆陆陆脟脟脟脪脪脪脹脹脹茫茫茫茅茅茅矛矛矛茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒铆铆铆锚锚锚氓氓氓芒芒芒脷脷脷脳脳脳脪脪脪脪脪脪脫脫脫脳脳脳脼脼脼忙忙忙铆铆铆贸贸贸霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉枚枚枚贸贸贸貌貌貌茂茂茂茂茂茂卯卯卯冒冒冒卯卯卯帽帽帽茂茂茂帽帽帽冒冒冒貌貌貌貌貌貌么么么么么么么么么梅梅梅梅梅梅酶酶酶梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉枚枚枚梅梅梅么么么贸贸贸冒冒冒茂茂茂毛毛毛锚锚锚莽莽莽莽莽莽氓氓氓氓氓氓盲盲盲氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫脿脿脿脺脺脺脳脳脳脥脥脥脛脛脛禄禄禄碌碌碌卤卤卤掳掳掳虏虏虏鹿鹿鹿脌脌脌脢脢脢脪脪脪脵脵脵脼脼脼谩谩谩芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫茫茫茫脽脽脽脻脻脻脳脳脳脪脪脪脣脣脣脝脝脝脗脗脗脌脌脌脙脙脙脢脢脢脪脪脪脺脺脺莽莽莽冒冒冒枚枚枚没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤梅梅梅么么么冒冒冒锚锚锚莽莽莽盲盲盲茫茫茫谩谩谩芒芒芒谩谩谩茫茫茫茫茫茫盲盲盲氓氓氓莽莽莽莽莽莽茅茅茅茅茅茅锚锚锚矛矛矛铆铆铆卯卯卯卯卯卯冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂茂茂茂矛矛矛矛矛矛茅茅茅莽莽莽茫茫茫脿脿脿脼脼脼脺脺脺脷脷脷脵脵脵脰脰脰脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脭脭脭脨脨脨脥脥脥脜脜脜驴驴驴赂赂赂鲁鲁鲁炉炉炉炉炉炉掳掳掳碌碌碌潞潞潞脌脌脌脠脠脠脥脥脥脩脩脩脫脫脫脮脮脮脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脮脮脮脪脪脪脦脦脦脟脟脟脕脕脕潞潞潞碌碌碌虏虏虏鲁鲁鲁露露露戮戮戮脝脝脝脫脫脫脽脽脽毛毛毛贸贸贸煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤梅梅梅貌貌貌矛矛矛忙忙忙脿脿脿脹脹脹脰脰脰脰脰脰脫脫脫脰脰脰脫脫脫脰脰脰脮脮脮脳脳脳脰脰脰脷脷脷脵脵脵脺脺脺脻脻脻脽脽脽脽脽脽脿脿脿脽脽脽茫茫茫谩谩谩茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫谩谩谩脿脿脿脻脻脻脺脺脺脴脴脴脰脰脰脪脪脪脨脨脨脤脤脤脣脣脣脡脡脡脠脠脠脟脟脟脟脟脟脟脟脟脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脛脛脛脗脗脗脕脕脕录录录路路路卤卤卤庐庐庐卢卢卢陋陋陋芦芦芦炉炉炉虏虏虏露露露禄禄禄驴驴驴脕脕脕脛脛脛脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脛脛脛脌脌脌戮戮戮露露露卤卤卤陋陋陋娄娄娄陇陇陇楼楼楼陋陋陋麓麓麓戮戮戮脤脤脤脵脵脵猫猫猫帽帽帽酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶贸贸贸矛矛矛盲盲盲脺脺脺脮脮脮脦脦脦脠脠脠脝脝脝脛脛脛脛脛脛脛脛脛脝脝脝脜脜脜脟脟脟脠脠脠脢脢脢脢脢脢脦脦脦脥脥脥脩脩脩脨脨脨脪脪脪脭脭脭脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脫脫脫脭脭脭脩脩脩脧脧脧脥脥脥脠脠脠脝脝脝脗脗脗驴驴驴录录录禄禄禄赂赂赂鹿鹿鹿路路路赂赂赂露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂卤卤卤虏虏虏卢卢卢卢卢卢娄娄娄搂搂搂拢拢拢搂搂搂楼楼楼陋陋陋芦芦芦卤卤卤掳掳掳露露露麓麓麓赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路露露露路路路鲁鲁鲁鲁鲁鲁庐庐庐芦芦芦拢拢拢聽聽聽聸聸聸聺聺聺聹聹聹垄垄垄卢卢卢鹿鹿鹿脟脟脟脰脰脰盲盲盲茂茂茂枚枚枚没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤玫玫玫茂茂茂忙忙忙脺脺脺脩脩脩脡脡脡脌脌脌禄禄禄露露露露露露鲁鲁鲁露露露麓麓麓赂赂赂碌碌碌潞潞潞赂赂赂禄禄禄禄禄禄戮戮戮驴驴驴驴驴驴脕脕脕脕脕脕脙脙脙脙脙脙脙脙脙脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脙脙脙脕脕脕脕脕脕戮戮戮禄禄禄潞潞潞路路路鲁鲁鲁虏虏虏庐庐庐炉炉炉卢卢卢卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦漏漏漏搂搂搂楼楼楼拢拢拢隆隆隆聼聼聼聼聼聼聼聼聼聼聼聼拢拢拢陇陇陇搂搂搂搂搂搂陋陋陋陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦陋陋陋芦芦芦漏漏漏漏漏漏搂搂搂陇陇陇聽聽聽聹聹聹聶聶聶聳聳聳聳聳聳聵聵聵聼聼聼漏漏漏路路路脝脝脝脮脮脮盲盲盲茂茂茂梅梅梅眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉贸贸贸毛毛毛谩谩谩脰脰脰脢脢脢脌脌脌路路路卤卤卤芦芦芦陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦炉炉炉庐庐庐炉炉炉掳掳掳卤卤卤卤卤卤虏虏虏鲁鲁鲁麓麓麓麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌鲁鲁鲁麓麓麓卤卤卤掳掳掳庐庐庐芦芦芦芦芦芦搂搂搂娄娄娄娄娄娄楼楼楼楼楼楼楼楼楼娄娄娄陇陇陇娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂楼楼楼楼楼楼拢拢拢垄垄垄隆隆隆聼聼聼聼聼聼聼聼聼隆隆隆隆隆隆垄垄垄垄垄垄陇陇陇陇陇陇娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼陇陇陇娄娄娄陇陇陇陇陇陇拢拢拢聼聼聼聻聻聻聶聶聶聴聴聴聲聲聲聴聴聴職職職隆隆隆卢卢卢鹿鹿鹿脡脡脡脴脴脴忙忙忙冒冒冒梅梅梅眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶貌貌貌茅茅茅脽脽脽脫脫脫脝脝脝录录录虏虏虏卢卢卢篓篓篓楼楼楼陇陇陇拢拢拢陇陇陇娄娄娄楼楼楼搂搂搂篓篓篓搂搂搂篓篓篓搂搂搂漏漏漏搂搂搂篓篓篓篓篓篓篓篓篓篓篓篓漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦陋陋陋漏漏漏搂搂搂搂搂搂陇陇陇楼楼楼隆隆隆垄垄垄聻聻聻聽聽聽聼聼聼垄垄垄垄垄垄陇陇陇陇陇陇陇陇陇娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄楼楼楼陇陇陇拢拢拢垄垄垄拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇拢拢拢陇陇陇楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼陇陇陇娄娄娄陇陇陇楼楼楼陇陇陇隆隆隆聽聽聽聺聺聺職職職聸聸聸聺聺聺隆隆隆陋陋陋麓麓麓脌脌脌脧脧脧脻脻脻猫猫猫贸贸贸霉霉霉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶貌貌貌茅茅茅脽脽脽脫脫脫脝脝脝录录录虏虏虏卢卢卢篓篓篓楼楼楼陇陇陇拢拢拢陇陇陇娄娄娄楼楼楼搂搂搂娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼陇陇陇娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇垄垄垄拢拢拢垄垄垄垄垄垄聽聽聽垄垄垄聻聻聻聽聽聽聺聺聺垄垄垄隆隆隆楼楼楼楼楼楼篓篓篓漏漏漏陋陋陋芦芦芦陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋漏漏漏漏漏漏漏漏漏漏漏漏漏漏漏篓篓篓漏漏漏篓篓篓陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋漏漏漏篓篓篓搂搂搂娄娄娄娄娄娄漏漏漏卢卢卢麓麓麓驴驴驴脢脢脢脰脰脰茫茫茫铆铆铆枚枚枚没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉贸贸贸毛毛毛谩谩谩脰脰脰脢脢脢脌脌脌路路路卤卤卤芦芦芦陋陋陋漏漏漏芦芦芦漏漏漏芦芦芦漏漏漏陋陋陋漏漏漏漏漏漏篓篓篓娄娄娄搂搂搂娄娄娄娄娄娄楼楼楼楼楼楼楼楼楼楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇垄垄垄拢拢拢垄垄垄拢拢拢垄垄垄垄垄垄垄垄垄陇陇陇陇陇陇搂搂搂漏漏漏卢卢卢炉炉炉虏虏虏碌碌碌碌碌碌露露露路路路碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路露露露赂赂赂碌碌碌赂赂赂麓麓麓露露露鲁鲁鲁碌碌碌碌碌碌路路路录录录脛脛脛脤脤脤脳脳脳谩谩谩毛毛毛貌貌貌霉霉霉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤玫玫玫茂茂茂忙忙忙脺脺脺脩脩脩脡脡脡脌脌脌禄禄禄露露露露露露鲁鲁鲁碌碌碌鲁鲁鲁赂赂赂麓麓麓路路路鲁鲁鲁虏虏虏掳掳掳掳掳掳庐庐庐庐庐庐芦芦芦芦芦芦陋陋陋陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋漏漏漏陋陋陋篓篓篓漏漏漏陋陋陋卢卢卢庐庐庐虏虏虏麓麓麓鹿鹿鹿陆陆陆脕脕脕脙脙脙脜脜脜脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脝脝脝脠脠脠脡脡脡脥脥脥脭脭脭脺脺脺盲盲盲毛毛毛貌貌貌酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶贸贸贸矛矛矛盲盲盲脺脺脺脮脮脮脦脦脦脠脠脠脝脝脝脛脛脛脛脛脛脛脛脛脛脛脛脙脙脙脛脛脛脗脗脗脗脗脗脌脌脌脕脕脕戮戮戮陆陆陆潞潞潞鹿鹿鹿赂赂赂露露露路路路露露露路路路碌碌碌赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌露露露赂赂赂禄禄禄戮戮戮脕脕脕脛脛脛脡脡脡脥脥脥脨脨脨脭脭脭脫脫脫脰脰脰脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脫脫脫脳脳脳脰脰脰脵脵脵脹脹脹脼脼脼芒芒芒莽莽莽卯卯卯贸贸贸梅梅梅煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤梅梅梅貌貌貌矛矛矛忙忙忙脿脿脿脹脹脹脰脰脰脰脰脰脫脫脫脰脰脰脫脫脫脰脰脰脭脭脭脭脭脭脩脩脩脪脪脪脨脨脨脧脧脧脤脤脤脢脢脢脡脡脡脡脡脡脟脟脟脜脜脜脜脜脜脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脝脝脝脠脠脠脣脣脣脥脥脥脩脩脩脰脰脰脵脵脵脼脼脼脼脼脼谩谩谩芒芒芒氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲盲盲盲氓氓氓氓氓氓莽莽莽猫猫猫毛毛毛卯卯卯貌貌貌枚枚枚霉霉霉眉眉眉镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤梅梅梅么么么冒冒冒锚锚锚莽莽莽盲盲盲茫茫茫谩谩谩芒芒芒脿脿脿芒芒芒谩谩谩芒芒芒脿脿脿脿脿脿脽脽脽脽脽脽脺脺脺脺脺脺脷脷脷脵脵脵脴脴脴脰脰脰脰脰脰脮脮脮脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脰脰脰脳脳脳脵脵脵脺脺脺脻脻脻谩谩谩茫茫茫猫猫猫茅茅茅矛矛矛铆铆铆茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒貌貌貌貌貌貌贸贸贸贸贸贸玫玫玫枚枚枚霉霉霉没没没镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉枚枚枚贸贸贸貌貌貌茂茂茂茂茂茂卯卯卯冒冒冒卯卯卯冒冒冒茂茂茂冒冒冒卯卯卯卯卯卯矛矛矛矛矛矛猫猫猫猫猫猫氓氓氓氓氓氓茫茫茫氓氓氓芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫茫茫茫氓氓氓盲盲盲猫猫猫茅茅茅卯卯卯茂茂茂贸贸贸么么么梅梅梅枚枚枚霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶煤煤煤霉霉霉没没没煤煤煤眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒煤煤煤煤煤煤酶酶酶酶酶酶梅梅梅酶酶酶梅梅梅霉霉霉梅梅梅酶酶酶梅梅梅梅梅梅枚枚枚枚枚枚么么么玫玫玫貌貌貌贸贸贸冒冒冒帽帽帽冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽冒冒冒貌貌貌貌貌貌玫玫玫枚枚枚酶酶酶煤煤煤眉眉眉媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒媒媒媒眉眉眉镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁眉眉眉媒媒媒眉眉眉眉眉眉眉眉眉煤煤煤没没没霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶煤煤煤霉霉霉没没没没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁眉眉眉眉眉眉煤煤煤煤煤煤霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉煤煤煤煤煤煤眉眉眉没没没眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁眉眉眉没没没酶酶酶梅梅梅么么么贸贸贸帽帽帽帽帽帽冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒帽帽帽貌貌貌贸贸贸贸贸贸玫玫玫么么么枚枚枚霉霉霉霉霉霉没没没眉眉眉媒媒媒媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉枚枚枚贸贸贸茂茂茂矛矛矛茅茅茅莽莽莽氓氓氓盲盲盲茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓盲盲盲氓氓氓氓氓氓忙忙忙莽莽莽茅茅茅锚锚锚毛毛毛铆铆铆冒冒冒帽帽帽贸贸贸玫玫玫酶酶酶霉霉霉煤煤煤眉眉眉眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤枚枚枚貌貌貌矛矛矛莽莽莽谩谩谩脼脼脼脹脹脹脷脷脷脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脰脰脰脴脴脴脵脵脵脹脹脹脻脻脻脽脽脽脿脿脿茫茫茫氓氓氓茅茅茅锚锚锚卯卯卯冒冒冒貌貌貌玫玫玫酶酶酶霉霉霉没没没眉眉眉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅帽帽帽毛毛毛茫茫茫脼脼脼脳脳脳脩脩脩脣脣脣脠脠脠脝脝脝脜脜脜脙脙脙脙脙脙脙脙脙脙脙脙脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脟脟脟脝脝脝脝脝脝脝脝脝脠脠脠脠脠脠脡脡脡脢脢脢脣脣脣脤脤脤脧脧脧脩脩脩脭脭脭脵脵脵脺脺脺脽脽脽谩谩谩氓氓氓猫猫猫矛矛矛茂茂茂帽帽帽贸贸贸梅梅梅霉霉霉没没没眉眉眉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉么么么铆铆铆氓氓氓脻脻脻脭脭脭脣脣脣脜脜脜戮戮戮潞潞潞露露露鲁鲁鲁麓麓麓卤卤卤碌碌碌鲁鲁鲁露露露鲁鲁鲁路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路赂赂赂露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露鹿鹿鹿赂赂赂潞潞潞禄禄禄录录录驴驴驴脗脗脗脛脛脛脡脡脡脤脤脤脧脧脧脭脭脭脵脵脵脺脺脺脽脽脽谩谩谩忙忙忙锚锚锚铆铆铆帽帽帽玫玫玫酶酶酶酶酶酶没没没没没没眉眉眉眉眉眉媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉媒媒媒媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅冒冒冒茅茅茅脽脽脽脳脳脳脣脣脣脗脗脗潞潞潞麓麓麓庐庐庐陋陋陋搂搂搂搂搂搂楼楼楼搂搂搂娄娄娄篓篓篓篓篓篓漏漏漏漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢陋陋陋芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏漏漏漏漏漏漏漏漏漏陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦庐庐庐颅颅颅庐庐庐庐庐庐卤卤卤卤卤卤露露露麓麓麓潞潞潞陆陆陆驴驴驴脜脜脜脠脠脠脣脣脣脩脩脩脭脭脭脹脹脹脼脼脼芒芒芒盲盲盲毛毛毛铆铆铆帽帽帽貌貌貌么么么梅梅梅梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅酶酶酶梅梅梅酶酶酶酶酶酶煤煤煤煤煤煤媒媒媒媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤枚枚枚茂茂茂莽莽莽脻脻脻脫脫脫脠脠脠陆陆陆鲁鲁鲁卢卢卢陇陇陇聼聼聼聺聺聺聹聹聹聹聹聹聻聻聻聽聽聽隆隆隆垄垄垄陇陇陇娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼楼楼楼陇陇陇楼楼楼陇陇陇楼楼楼楼楼楼楼楼楼娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼楼楼楼楼楼楼娄娄娄娄娄娄篓篓篓漏漏漏芦芦芦芦芦芦炉炉炉庐庐庐鲁鲁鲁麓麓麓潞潞潞录录录驴驴驴脜脜脜脢脢脢脥脥脥脫脫脫脷脷脷脻脻脻脽脽脽茫茫茫猫猫猫锚锚锚矛矛矛铆铆铆茂茂茂茂茂茂冒冒冒冒冒冒茂茂茂茂茂茂卯卯卯茂茂茂铆铆铆卯卯卯茂茂茂貌貌貌贸贸贸梅梅梅煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤枚枚枚茂茂茂莽莽莽脻脻脻脪脪脪脟脟脟禄禄禄卤卤卤篓篓篓聼聼聼職職職聴聴聴聳聳聳聵聵聵聶聶聶聹聹聹聻聻聻隆隆隆拢拢拢楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇陇陇陇楼楼楼拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇娄娄娄楼楼楼娄娄娄娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇垄垄垄拢拢拢垄垄垄拢拢拢陇陇陇楼楼楼搂搂搂篓篓篓漏漏漏芦芦芦炉炉炉掳掳掳麓麓麓路路路禄禄禄驴驴驴脜脜脜脡脡脡脤脤脤脩脩脩脰脰脰脵脵脵脻脻脻脽脽脽脿脿脿谩谩谩茫茫茫茫茫茫茫茫茫芒芒芒谩谩谩谩谩谩脽脽脽脿脿脿谩谩谩茫茫茫氓氓氓毛毛毛茂茂茂玫玫玫酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅冒冒冒茅茅茅脽脽脽脰脰脰脡脡脡陆陆陆虏虏虏陋陋陋聽聽聽職職職聳聳聳聳聳聳聲聲聲職職職聹聹聹隆隆隆拢拢拢搂搂搂篓篓篓陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢陋陋陋芦芦芦漏漏漏漏漏漏篓篓篓篓篓篓娄娄娄娄娄娄楼楼楼陇陇陇陇陇陇楼楼楼娄娄娄搂搂搂篓篓篓陋陋陋陋陋陋卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋漏漏漏篓篓篓漏漏漏搂搂搂搂搂搂楼楼楼娄娄娄楼楼楼楼楼楼楼楼楼楼楼楼娄娄娄娄娄娄搂搂搂陋陋陋颅颅颅庐庐庐卤卤卤碌碌碌潞潞潞驴驴驴脙脙脙脟脟脟脢脢脢脦脦脦脩脩脩脪脪脪脮脮脮脭脭脭脮脮脮脮脮脮脫脫脫脫脫脫脪脪脪脪脪脪脨脨脨脪脪脪脭脭脭脴脴脴脽脽脽盲盲盲铆铆铆貌貌貌酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉么么么铆铆铆盲盲盲脷脷脷脦脦脦脗脗脗路路路陋陋陋拢拢拢聺聺聺聴聴聴聵聵聵聶聶聶聼聼聼聽聽聽漏漏漏卢卢卢虏虏虏鲁鲁鲁路路路露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路赂赂赂露露露赂赂赂碌碌碌路路路麓麓麓露露露卤卤卤鲁鲁鲁炉炉炉掳掳掳芦芦芦颅颅颅芦芦芦颅颅颅颅颅颅虏虏虏卤卤卤露露露麓麓麓鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌路路路碌碌碌露露露露露露虏虏虏鲁鲁鲁掳掳掳掳掳掳庐庐庐颅颅颅芦芦芦漏漏漏漏漏漏搂搂搂篓篓篓娄娄娄楼楼楼陇陇陇楼楼楼娄娄娄娄娄娄漏漏漏陋陋陋炉炉炉掳掳掳露露露路路路禄禄禄陆陆陆脌脌脌脕脕脕脙脙脙脛脛脛脝脝脝脛脛脛脙脙脙脕脕脕驴驴驴戮戮戮陆陆陆驴驴驴脗脗脗脟脟脟脦脦脦脳脳脳芒芒芒毛毛毛貌貌貌霉霉霉眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅帽帽帽锚锚锚脿脿脿脳脳脳脢脢脢陆陆陆虏虏虏搂搂搂聽聽聽聺聺聺聸聸聸聻聻聻拢拢拢芦芦芦虏虏虏赂赂赂戮戮戮脙脙脙脛脛脛脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脙脙脙脗脗脗驴驴驴陆陆陆潞潞潞路路路麓麓麓鲁鲁鲁鲁鲁鲁碌碌碌赂赂赂潞潞潞驴驴驴脌脌脌脙脙脙脛脛脛脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脙脙脙脌脌脌脌脌脌陆陆陆潞潞潞潞潞潞碌碌碌麓麓麓卤卤卤掳掳掳颅颅颅卢卢卢篓篓篓娄娄娄娄娄娄娄娄娄陇陇陇娄娄娄娄娄娄搂搂搂漏漏漏芦芦芦颅颅颅炉炉炉掳掳掳鲁鲁鲁鲁鲁鲁麓麓麓碌碌碌碌碌碌路路路虏虏虏鲁鲁鲁炉炉炉庐庐庐芦芦芦颅颅颅炉炉炉露露露戮戮戮脢脢脢脴脴脴茫茫茫卯卯卯枚枚枚没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤枚枚枚冒冒冒莽莽莽脻脻脻脨脨脨脛脛脛鹿鹿鹿庐庐庐楼楼楼隆隆隆隆隆隆陇陇陇陋陋陋鲁鲁鲁录录录脛脛脛脤脤脤脩脩脩脫脫脫脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脫脫脫脪脪脪脥脥脥脢脢脢脛脛脛驴驴驴禄禄禄鹿鹿鹿潞潞潞禄禄禄脕脕脕脙脙脙脤脤脤脥脥脥脭脭脭脭脭脭脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脰脰脰脭脭脭脭脭脭脪脪脪脪脪脪脧脧脧脥脥脥脢脢脢脠脠脠脜脜脜脙脙脙脌脌脌录录录赂赂赂麓麓麓掳掳掳庐庐庐卢卢卢篓篓篓娄娄娄楼楼楼陇陇陇拢拢拢楼楼楼陇陇陇搂搂搂娄娄娄篓篓篓篓篓篓芦芦芦芦芦芦颅颅颅陋陋陋芦芦芦搂搂搂楼楼楼垄垄垄聺聺聺聺聺聺聻聻聻聻聻聻陇陇陇炉炉炉鹿鹿鹿脢脢脢脵脵脵忙忙忙帽帽帽酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉么么么卯卯卯盲盲盲脴脴脴脣脣脣陆陆陆虏虏虏篓篓篓拢拢拢拢拢拢搂搂搂炉炉炉潞潞潞脜脜脜脧脧脧脳脳脳脽脽脽脿脿脿盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒脿脿脿脺脺脺脴脴脴脨脨脨脢脢脢脙脙脙脌脌脌录录录陆陆陆驴驴驴脝脝脝脢脢脢脫脫脫脴脴脴脼脼脼脿脿脿茫茫茫茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲芒芒芒盲盲盲芒芒芒茫茫茫谩谩谩脽脽脽脼脼脼脼脼脼脹脹脹脵脵脵脰脰脰脫脫脫脧脧脧脤脤脤脟脟脟脙脙脙戮戮戮潞潞潞路路路卤卤卤炉炉炉芦芦芦陋陋陋篓篓篓娄娄娄娄娄娄陇陇陇楼楼楼陇陇陇楼楼楼楼楼楼楼楼楼楼楼楼楼楼楼陇陇陇垄垄垄聻聻聻聸聸聸聴聴聴聰聰聰聯聯聯聲聲聲職職職陇陇陇炉炉炉脌脌脌脩脩脩谩谩谩卯卯卯枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁眉眉眉霉霉霉貌貌貌茅茅茅脻脻脻脩脩脩脕脕脕麓麓麓颅颅颅搂搂搂搂搂搂卢卢卢鲁鲁鲁戮戮戮脥脥脥脵脵脵茫茫茫茅茅茅卯卯卯茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂茂茂茂矛矛矛猫猫猫脿脿脿脴脴脴脧脧脧脟脟脟驴驴驴陆陆陆陆陆陆驴驴驴脠脠脠脨脨脨脵脵脵谩谩谩茅茅茅矛矛矛冒冒冒茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂茂茂茂冒冒冒茂茂茂卯卯卯铆铆铆毛毛毛锚锚锚茅茅茅忙忙忙茫茫茫芒芒芒脻脻脻脹脹脹脰脰脰脩脩脩脤脤脤脡脡脡脜脜脜驴驴驴禄禄禄露露露碌碌碌掳掳掳炉炉炉陋陋陋陋陋陋篓篓篓篓篓篓娄娄娄搂搂搂娄娄娄楼楼楼楼楼楼拢拢拢垄垄垄聹聹聹聶聶聶聮聮聮聫聫聫聦聦聦聧聧聧聭聭聭聹聹聹楼楼楼鹿鹿鹿脢脢脢脹脹脹茅茅茅么么么没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉枚枚枚卯卯卯谩谩谩脰脰脰脛脛脛鹿鹿鹿庐庐庐搂搂搂搂搂搂卢卢卢路路路脗脗脗脭脭脭脼脼脼毛毛毛帽帽帽梅梅梅梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶梅梅梅貌貌貌卯卯卯盲盲盲脹脹脹脧脧脧脝脝脝陆陆陆禄禄禄潞潞潞驴驴驴脝脝脝脪脪脪脹脹脹莽莽莽铆铆铆么么么玫玫玫霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅酶酶酶梅梅梅梅梅梅枚枚枚枚枚枚贸贸贸么么么帽帽帽冒冒冒铆铆铆矛矛矛猫猫猫盲盲盲脿脿脿脻脻脻脷脷脷脫脫脫脦脦脦脢脢脢脛脛脛驴驴驴陆陆陆潞潞潞麓麓麓碌碌碌掳掳掳卤卤卤颅颅颅掳掳掳颅颅颅炉炉炉陋陋陋芦芦芦楼楼楼隆隆隆職職職聰聰聰聨聨聨聤聤聤聥聥聥聧聧聧聴聴聴垄垄垄鲁鲁鲁脜脜脜脷脷脷忙忙忙帽帽帽霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶冒冒冒茫茫茫脰脰脰脝脝脝鹿鹿鹿炉炉炉篓篓篓搂搂搂卢卢卢鹿鹿鹿脙脙脙脮脮脮脿脿脿卯卯卯酶酶酶没没没镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒没没没梅梅梅茂茂茂忙忙忙脵脵脵脥脥脥脌脌脌潞潞潞碌碌碌碌碌碌录录录脜脜脜脨脨脨脻脻脻茅茅茅貌貌貌酶酶酶眉眉眉媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁眉眉眉媒媒媒眉眉眉眉眉眉没没没煤煤煤霉霉霉梅梅梅玫玫玫貌貌貌帽帽帽铆铆铆毛毛毛盲盲盲芒芒芒脼脼脼脹脹脹脭脭脭脨脨脨脤脤脤脡脡脡脝脝脝脕脕脕脌脌脌禄禄禄禄禄禄潞潞潞赂赂赂鹿鹿鹿露露露碌碌碌卤卤卤芦芦芦垄垄垄聹聹聹聰聰聰聨聨聨聥聥聥聨聨聨聲聲聲聽聽聽虏虏虏脛脛脛脰脰脰茫茫茫帽帽帽煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒氓氓氓脳脳脳脟脟脟鹿鹿鹿颅颅颅搂搂搂搂搂搂芦芦芦麓麓麓脛脛脛脫脫脫谩谩谩卯卯卯酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶卯卯卯盲盲盲脳脳脳脡脡脡录录录碌碌碌掳掳掳虏虏虏鹿鹿鹿脌脌脌脦脦脦脻脻脻茅茅茅貌貌貌霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒眉眉眉没没没没没没酶酶酶酶酶酶玫玫玫帽帽帽铆铆铆锚锚锚忙忙忙谩谩谩脽脽脽脺脺脺脵脵脵脰脰脰脩脩脩脦脦脦脣脣脣脢脢脢脡脡脡脟脟脟脟脟脟脟脟脟脙脙脙陆陆陆赂赂赂掳掳掳搂搂搂聸聸聸聲聲聲聭聭聭聯聯聯聴聴聴隆隆隆炉炉炉脗脗脗脭脭脭茫茫茫茂茂茂酶酶酶镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤帽帽帽氓氓氓脴脴脴脟脟脟赂赂赂颅颅颅楼楼楼楼楼楼漏漏漏鲁鲁鲁脕脕脕脫脫脫脿脿脿卯卯卯梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没玫玫玫铆铆铆脿脿脿脫脫脫脙脙脙路路路炉炉炉陋陋陋芦芦芦鲁鲁鲁驴驴驴脤脤脤脹脹脹猫猫猫貌貌貌霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒眉眉眉没没没霉霉霉梅梅梅贸贸贸帽帽帽茂茂茂矛矛矛猫猫猫忙忙忙芒芒芒脿脿脿脻脻脻脺脺脺脷脷脷脴脴脴脵脵脵脰脰脰脳脳脳脭脭脭脦脦脦脠脠脠陆陆陆鲁鲁鲁搂搂搂聻聻聻聳聳聳聲聲聲聸聸聸隆隆隆虏虏虏脕脕脕脭脭脭芒芒芒帽帽帽霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉帽帽帽忙忙忙脴脴脴脡脡脡鹿鹿鹿卢卢卢楼楼楼楼楼楼篓篓篓卤卤卤驴驴驴脩脩脩脽脽脽矛矛矛枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没梅梅梅锚锚锚脻脻脻脦脦脦驴驴驴卤卤卤陋陋陋搂搂搂陋陋陋卤卤卤陆陆陆脤脤脤脺脺脺猫猫猫贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒眉眉眉没没没霉霉霉酶酶酶玫玫玫貌貌貌冒冒冒卯卯卯毛毛毛茅茅茅猫猫猫忙忙忙忙忙忙氓氓氓氓氓氓盲盲盲芒芒芒脷脷脷脫脫脫脢脢脢录录录炉炉炉楼楼楼聺聺聺職職職聻聻聻娄娄娄卤卤卤脗脗脗脫脫脫茫茫茫茂茂茂梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没贸贸贸莽莽莽脹脹脹脡脡脡禄禄禄颅颅颅楼楼楼拢拢拢娄娄娄掳掳掳戮戮戮脦脦脦脼脼脼矛矛矛枚枚枚眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤贸贸贸莽莽莽脷脷脷脡脡脡录录录庐庐庐篓篓篓楼楼楼篓篓篓虏虏虏陆陆陆脤脤脤脻脻脻茅茅茅贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉眉眉眉煤煤煤霉霉霉酶酶酶玫玫玫玫玫玫贸贸贸贸贸贸帽帽帽帽帽帽冒冒冒帽帽帽卯卯卯茅茅茅脿脿脿脭脭脭脠脠脠潞潞潞芦芦芦聽聽聽聺聺聺聺聺聺娄娄娄碌碌碌脙脙脙脮脮脮芒芒芒冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没貌貌貌茅茅茅脺脺脺脢脢脢录录录庐庐庐搂搂搂拢拢拢篓篓篓庐庐庐录录录脥脥脥脺脺脺锚锚锚么么么煤煤煤每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶帽帽帽茫茫茫脰脰脰脝脝脝碌碌碌卢卢卢陇陇陇陇陇陇篓篓篓卤卤卤驴驴驴脦脦脦脽脽脽锚锚锚玫玫玫眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒媒媒媒眉眉眉眉眉眉煤煤煤没没没霉霉霉霉霉霉霉霉霉霉霉霉梅梅梅冒冒冒茅茅茅脺脺脺脦脦脦陆陆陆掳掳掳搂搂搂垄垄垄垄垄垄漏漏漏鲁鲁鲁脛脛脛脭脭脭茫茫茫茂茂茂梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉玫玫玫茅茅茅脻脻脻脥脥脥戮戮戮掳掳掳楼楼楼垄垄垄楼楼楼炉炉炉禄禄禄脣脣脣脷脷脷猫猫猫贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没枚枚枚矛矛矛脽脽脽脩脩脩脕脕脕鲁鲁鲁篓篓篓拢拢拢陇陇陇漏漏漏鲁鲁鲁脕脕脕脩脩脩脽脽脽铆铆铆枚枚枚眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒没没没梅梅梅卯卯卯谩谩谩脭脭脭脗脗脗麓麓麓漏漏漏垄垄垄垄垄垄芦芦芦碌碌碌脛脛脛脮脮脮茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉玫玫玫毛毛毛脽脽脽脧脧脧驴驴驴掳掳掳篓篓篓拢拢拢楼楼楼卢卢卢路路路脡脡脡脷脷脷忙忙忙贸贸贸霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没貌貌貌茅茅茅脹脹脹脢脢脢陆陆陆炉炉炉娄娄娄垄垄垄楼楼楼芦芦芦露露露脝脝脝脰脰脰盲盲盲茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶茂茂茂茫茫茫脮脮脮脛脛脛碌碌碌芦芦芦陇陇陇陇陇陇芦芦芦碌碌碌脛脛脛脮脮脮茫茫茫茂茂茂酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅毛毛毛脽脽脽脩脩脩脌脌脌卤卤卤篓篓篓拢拢拢楼楼楼芦芦芦赂赂赂脠脠脠脮脮脮盲盲盲帽帽帽霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁霉霉霉冒冒冒氓氓氓脳脳脳脝脝脝潞潞潞颅颅颅陇陇陇垄垄垄娄娄娄炉炉炉禄禄禄脢脢脢脷脷脷莽莽莽帽帽帽霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脜脜脜露露露芦芦芦陇陇陇陇陇陇芦芦芦露露露脜脜脜脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁枚枚枚铆铆铆谩谩谩脪脪脪脛脛脛虏虏虏篓篓篓拢拢拢陇陇陇陋陋陋碌碌碌脝脝脝脰脰脰茫茫茫冒冒冒酶酶酶镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉枚枚枚卯卯卯谩谩谩脪脪脪脕脕脕鲁鲁鲁漏漏漏拢拢拢拢拢拢篓篓篓卤卤卤脌脌脌脥脥脥脼脼脼毛毛毛么么么没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脜脜脜露露露卢卢卢楼楼楼楼楼楼卢卢卢露露露脜脜脜脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶铆铆铆芒芒芒脫脫脫脙脙脙露露露陋陋陋拢拢拢垄垄垄漏漏漏麓麓麓脛脛脛脫脫脫谩谩谩铆铆铆酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤贸贸贸茅茅茅脻脻脻脥脥脥戮戮戮虏虏虏漏漏漏陇陇陇楼楼楼芦芦芦路路路脛脛脛脭脭脭茫茫茫茂茂茂梅梅梅眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脝脝脝路路路芦芦芦楼楼楼楼楼楼芦芦芦路路路脝脝脝脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁酶酶酶帽帽帽盲盲盲脰脰脰脝脝脝麓麓麓芦芦芦陇陇陇垄垄垄篓篓篓鲁鲁鲁脗脗脗脫脫脫脿脿脿卯卯卯玫玫玫镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒氓氓氓脳脳脳脠脠脠鹿鹿鹿庐庐庐搂搂搂楼楼楼篓篓篓掳掳掳禄禄禄脣脣脣脹脹脹忙忙忙貌貌貌霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝路路路颅颅颅娄娄娄娄娄娄颅颅颅路路路脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉帽帽帽氓氓氓脰脰脰脠脠脠潞潞潞卢卢卢陇陇陇垄垄垄搂搂搂虏虏虏脕脕脕脧脧脧脽脽脽毛毛毛梅梅梅眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉枚枚枚铆铆铆谩谩谩脭脭脭脛脛脛路路路卢卢卢娄娄娄搂搂搂漏漏漏虏虏虏脌脌脌脧脧脧脽脽脽毛毛毛枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝赂赂赂芦芦芦娄娄娄娄娄娄芦芦芦赂赂赂脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁霉霉霉贸贸贸莽莽莽脷脷脷脡脡脡赂赂赂颅颅颅娄娄娄拢拢拢搂搂搂掳掳掳戮戮戮脦脦脦脽脽脽毛毛毛么么么眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤么么么茅茅茅脻脻脻脥脥脥脌脌脌虏虏虏陋陋陋搂搂搂搂搂搂炉炉炉赂赂赂脝脝脝脰脰脰茫茫茫茂茂茂霉霉霉眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝赂赂赂颅颅颅娄娄娄娄娄娄颅颅颅赂赂赂脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没贸贸贸猫猫猫脷脷脷脡脡脡鹿鹿鹿庐庐庐楼楼楼垄垄垄楼楼楼炉炉炉陆陆陆脣脣脣脺脺脺茅茅茅玫玫玫眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉霉霉霉冒冒冒氓氓氓脴脴脴脡脡脡潞潞潞掳掳掳篓篓篓娄娄娄漏漏漏卤卤卤驴驴驴脣脣脣脹脹脹猫猫猫贸贸贸霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝赂赂赂芦芦芦娄娄娄娄娄娄芦芦芦赂赂赂脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤么么么茅茅茅脺脺脺脤脤脤鹿鹿鹿颅颅颅陇陇陇垄垄垄陇陇陇炉炉炉禄禄禄脣脣脣脹脹脹茅茅茅贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅铆铆铆谩谩谩脭脭脭脛脛脛露露露卢卢卢篓篓篓搂搂搂颅颅颅路路路脗脗脗脪脪脪脽脽脽矛矛矛么么么没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝赂赂赂颅颅颅娄娄娄娄娄娄颅颅颅赂赂赂脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉玫玫玫猫猫猫脹脹脹脣脣脣潞潞潞庐庐庐陇陇陇垄垄垄拢拢拢颅颅颅录录录脣脣脣脷脷脷莽莽莽贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤么么么锚锚锚脼脼脼脧脧脧脌脌脌麓麓麓陋陋陋搂搂搂搂搂搂炉炉炉赂赂赂脟脟脟脰脰脰茫茫茫茂茂茂酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝路路路芦芦芦娄娄娄娄娄娄芦芦芦路路路脝脝脝脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没么么么猫猫猫脷脷脷脣脣脣鹿鹿鹿芦芦芦拢拢拢隆隆隆垄垄垄颅颅颅禄禄禄脣脣脣脷脷脷莽莽莽貌貌貌煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉貌貌貌猫猫猫脷脷脷脤脤脤驴驴驴鲁鲁鲁芦芦芦篓篓篓卢卢卢虏虏虏戮戮戮脦脦脦脺脺脺猫猫猫帽帽帽煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脝脝脝赂赂赂颅颅颅楼楼楼楼楼楼颅颅颅赂赂赂脝脝脝脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤貌貌貌莽莽莽脷脷脷脟脟脟路路路陋陋陋拢拢拢隆隆隆楼楼楼庐庐庐禄禄禄脤脤脤脺脺脺猫猫猫贸贸贸霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶帽帽帽氓氓氓脴脴脴脤脤脤陆陆陆碌碌碌庐庐庐芦芦芦炉炉炉赂赂赂脛脛脛脪脪脪脿脿脿铆铆铆玫玫玫眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脜脜脜露露露芦芦芦娄娄娄娄娄娄芦芦芦路路路脝脝脝脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁霉霉霉冒冒冒茫茫茫脳脳脳脝脝脝麓麓麓陋陋陋垄垄垄隆隆隆陇陇陇炉炉炉陆陆陆脤脤脤脺脺脺锚锚锚贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅冒冒冒莽莽莽脵脵脵脣脣脣脌脌脌碌碌碌卤卤卤卤卤卤露露露驴驴驴脣脣脣脵脵脵氓氓氓茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脰脰脰脗脗脗露露露漏漏漏拢拢拢楼楼楼卢卢卢赂赂赂脜脜脜脳脳脳茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉枚枚枚铆铆铆谩谩谩脪脪脪脗脗脗虏虏虏搂搂搂拢拢拢垄垄垄篓篓篓卤卤卤戮戮戮脧脧脧脽脽脽毛毛毛么么么没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉梅梅梅帽帽帽莽莽莽脹脹脹脨脨脨脛脛脛陆陆陆鹿鹿鹿鹿鹿鹿戮戮戮脟脟脟脪脪脪脽脽脽锚锚锚貌貌貌煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶卯卯卯脿脿脿脪脪脪脌脌脌鲁鲁鲁漏漏漏楼楼楼楼楼楼漏漏漏路路路脜脜脜脰脰脰盲盲盲茂茂茂酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤玫玫玫毛毛毛脽脽脽脦脦脦脌脌脌卤卤卤篓篓篓拢拢拢拢拢拢漏漏漏麓麓麓脜脜脜脪脪脪谩谩谩铆铆铆梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶帽帽帽茅茅茅脽脽脽脮脮脮脣脣脣脜脜脜脕脕脕脛脛脛脠脠脠脧脧脧脷脷脷忙忙忙铆铆铆枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒枚枚枚铆铆铆脼脼脼脩脩脩戮戮戮卤卤卤楼楼楼聽聽聽拢拢拢陋陋陋露露露脛脛脛脰脰脰盲盲盲帽帽帽霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶帽帽帽莽莽莽脹脹脹脤脤脤陆陆陆虏虏虏漏漏漏搂搂搂搂搂搂掳掳掳禄禄禄脝脝脝脰脰脰茫茫茫冒冒冒酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉么么么铆铆铆盲盲盲脺脺脺脭脭脭脧脧脧脤脤脤脦脦脦脪脪脪脵脵脵茫茫茫毛毛毛么么么酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没贸贸贸猫猫猫脺脺脺脤脤脤禄禄禄颅颅颅垄垄垄聽聽聽垄垄垄篓篓篓碌碌碌脙脙脙脮脮脮氓氓氓冒冒冒酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉酶酶酶冒冒冒莽莽莽脷脷脷脣脣脣驴驴驴麓麓麓颅颅颅陋陋陋卢卢卢麓麓麓驴驴驴脤脤脤脻脻脻茅茅茅贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没酶酶酶帽帽帽锚锚锚盲盲盲脺脺脺脵脵脵脳脳脳脴脴脴脺脺脺茫茫茫毛毛毛貌貌貌酶酶酶没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤貌貌貌莽莽莽脴脴脴脡脡脡路路路陋陋陋聽聽聽聺聺聺隆隆隆篓篓篓路路路脝脝脝脴脴脴氓氓氓帽帽帽煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉梅梅梅帽帽帽莽莽莽脷脷脷脦脦脦脙脙脙鹿鹿鹿鲁鲁鲁虏虏虏碌碌碌陆陆陆脟脟脟脰脰脰芒芒芒铆铆铆玫玫玫眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤玫玫玫冒冒冒锚锚锚莽莽莽茫茫茫芒芒芒茫茫茫莽莽莽毛毛毛貌貌貌枚枚枚没没没媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶茂茂茂盲盲盲脮脮脮脙脙脙碌碌碌篓篓篓聽聽聽聺聺聺隆隆隆陋陋陋路路路脡脡脡脵脵脵忙忙忙貌貌貌霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉梅梅梅帽帽帽茅茅茅脻脻脻脪脪脪脠脠脠脕脕脕录录录潞潞潞驴驴驴脝脝脝脩脩脩脼脼脼猫猫猫貌貌貌酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉枚枚枚貌貌貌卯卯卯矛矛矛矛矛矛铆铆铆茂茂茂贸贸贸梅梅梅煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒梅梅梅茂茂茂芒芒芒脩脩脩脗脗脗虏虏虏搂搂搂聼聼聼聻聻聻拢拢拢芦芦芦录录录脣脣脣脹脹脹猫猫猫么么么没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉贸贸贸矛矛矛芒芒芒脵脵脵脨脨脨脡脡脡脜脜脜脝脝脝脢脢脢脨脨脨脷脷脷忙忙忙卯卯卯枚枚枚煤煤煤每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉梅梅梅枚枚枚么么么贸贸贸么么么枚枚枚酶酶酶没没没眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没枚枚枚铆铆铆脿脿脿脨脨脨脕脕脕碌碌碌漏漏漏拢拢拢拢拢拢搂搂搂卤卤卤戮戮戮脨脨脨脼脼脼锚锚锚贸贸贸没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没玫玫玫冒冒冒茅茅茅脿脿脿脵脵脵脭脭脭脪脪脪脩脩脩脮脮脮脻脻脻氓氓氓矛矛矛么么么霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒眉眉眉煤煤煤霉霉霉霉霉霉霉霉霉霉霉霉煤煤煤没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没枚枚枚铆铆铆脿脿脿脩脩脩脛脛脛赂赂赂庐庐庐篓篓篓漏漏漏庐庐庐路路路脟脟脟脮脮脮芒芒芒铆铆铆枚枚枚媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没酶酶酶么么么卯卯卯猫猫猫芒芒芒脼脼脼脺脺脺脻脻脻谩谩谩猫猫猫铆铆铆贸贸贸梅梅梅眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒眉眉眉眉眉眉媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没枚枚枚铆铆铆芒芒芒脳脳脳脡脡脡陆陆陆碌碌碌虏虏虏虏虏虏路路路脌脌脌脦脦脦脻脻脻茅茅茅貌貌貌酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没酶酶酶么么么茂茂茂毛毛毛茅茅茅茅茅茅茅茅茅毛毛毛茂茂茂玫玫玫酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没枚枚枚帽帽帽莽莽莽脹脹脹脨脨脨脠脠脠脌脌脌录录录戮戮戮脗脗脗脣脣脣脴脴脴盲盲盲矛矛矛玫玫玫煤煤煤每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没酶酶酶枚枚枚贸贸贸帽帽帽帽帽帽貌貌貌玫玫玫枚枚枚霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉么么么矛矛矛茫茫茫脷脷脷脩脩脩脥脥脥脡脡脡脢脢脢脧脧脧脴脴脴茫茫茫毛毛毛贸贸贸煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没煤煤煤酶酶酶酶酶酶酶酶酶酶酶酶霉霉霉没没没眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没枚枚枚帽帽帽锚锚锚茫茫茫脺脺脺脷脷脷脳脳脳脴脴脴脻脻脻茫茫茫毛毛毛帽帽帽梅梅梅眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒眉眉眉没没没没没没没没没媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉枚枚枚帽帽帽矛矛矛莽莽莽盲盲盲盲盲盲忙忙忙茅茅茅卯卯卯贸贸贸枚枚枚眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没霉霉霉枚枚枚么么么帽帽帽茂茂茂卯卯卯冒冒冒貌貌貌玫玫玫梅梅梅煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒没没没霉霉霉枚枚枚枚枚枚枚枚枚枚枚枚酶酶酶煤煤煤媒媒媒媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒没没没没没没没没没没没没媒媒媒媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒媒媒媒媒媒媒媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁眉眉眉眉眉眉煤煤煤煤煤煤霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉煤煤煤煤煤煤没没没没没没眉眉眉眉眉眉媒媒媒眉眉眉媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁眉眉眉没没没酶酶酶梅梅梅么么么贸贸贸帽帽帽帽帽帽冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒貌貌貌貌貌貌么么么么么么么么么玫玫玫枚枚枚梅梅梅梅梅梅霉霉霉煤煤煤煤煤煤眉眉眉没没没眉眉眉眉眉眉眉眉眉媒媒媒眉眉眉媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉枚枚枚贸贸贸茂茂茂矛矛矛茅茅茅莽莽莽氓氓氓盲盲盲茫茫茫茫茫茫茫茫茫芒芒芒芒芒芒谩谩谩芒芒芒芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲盲盲盲忙忙忙忙忙忙莽莽莽茅茅茅茅茅茅毛毛毛铆铆铆铆铆铆卯卯卯冒冒冒貌貌貌貌貌貌么么么么么么枚枚枚玫玫玫枚枚枚霉霉霉梅梅梅酶酶酶酶酶酶梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉没没没煤煤煤眉眉眉眉眉眉眉眉眉眉眉眉眉眉眉镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤枚枚枚貌貌貌矛矛矛莽莽莽谩谩谩脼脼脼脹脹脹脷脷脷脳脳脳脰脰脰脮脮脮脭脭脭脫脫脫脪脪脪脫脫脫脪脪脪脭脭脭脭脭脭脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脰脰脰脵脵脵脴脴脴脷脷脷脷脷脷脺脺脺脼脼脼脽脽脽脿脿脿茫茫茫茫茫茫忙忙忙莽莽莽莽莽莽锚锚锚锚锚锚矛矛矛矛矛矛卯卯卯卯卯卯卯卯卯茂茂茂茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒帽帽帽冒冒冒帽帽帽帽帽帽贸贸贸貌貌貌么么么贸贸贸枚枚枚玫玫玫梅梅梅霉霉霉煤煤煤煤煤煤眉眉眉没没没眉眉眉媒媒媒眉眉眉媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅帽帽帽毛毛毛茫茫茫脼脼脼脳脳脳脩脩脩脤脤脤脡脡脡脟脟脟脝脝脝脙脙脙脙脙脙脌脌脌脌脌脌脌脌脌脌脌脌脗脗脗脙脙脙脛脛脛脛脛脛脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脟脟脟脜脜脜脟脟脟脝脝脝脟脟脟脠脠脠脡脡脡脡脡脡脣脣脣脣脣脣脥脥脥脦脦脦脩脩脩脫脫脫脮脮脮脮脮脮脴脴脴脵脵脵脹脹脹脹脹脹脼脼脼脽脽脽脿脿脿谩谩谩芒芒芒芒芒芒茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫盲盲盲盲盲盲氓氓氓氓氓氓忙忙忙忙忙忙莽莽莽猫猫猫锚锚锚毛毛毛铆铆铆卯卯卯茂茂茂帽帽帽貌貌貌贸贸贸么么么玫玫玫玫玫玫枚枚枚梅梅梅梅梅梅梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉没没没煤煤煤眉眉眉没没没媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉媒媒媒媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉么么么铆铆铆氓氓氓脻脻脻脭脭脭脤脤脤脝脝脝驴驴驴禄禄禄鹿鹿鹿碌碌碌麓麓麓卤卤卤卤卤卤庐庐庐卤卤卤庐庐庐鲁鲁鲁卤卤卤露露露碌碌碌赂赂赂露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌鹿鹿鹿赂赂赂禄禄禄鹿鹿鹿禄禄禄陆陆陆戮戮戮驴驴驴脕脕脕脛脛脛脜脜脜脠脠脠脢脢脢脤脤脤脥脥脥脨脨脨脩脩脩脩脩脩脫脫脫脫脫脫脫脫脫脫脫脫脫脫脫脭脭脭脫脫脫脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脴脴脴脳脳脳脵脵脵脴脴脴脷脷脷脷脷脷脺脺脺脻脻脻脼脼脼谩谩谩谩谩谩盲盲盲氓氓氓猫猫猫猫猫猫毛毛毛毛毛毛矛矛矛矛矛矛卯卯卯卯卯卯冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽帽帽帽贸贸贸么么么么么么枚枚枚枚枚枚梅梅梅酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉酶酶酶煤煤煤煤煤煤眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅冒冒冒茅茅茅脽脽脽脳脳脳脤脤脤脛脛脛录录录赂赂赂卤卤卤颅颅颅陋陋陋篓篓篓拢拢拢垄垄垄聻聻聻聼聼聼聼聼聼拢拢拢陇陇陇搂搂搂搂搂搂漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢庐庐庐颅颅颅掳掳掳庐庐庐卤卤卤卤卤卤鲁鲁鲁麓麓麓赂赂赂赂赂赂禄禄禄录录录陆陆陆脌脌脌脌脌脌脗脗脗脙脙脙脙脙脙脙脙脙脗脗脗脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脟脟脟脟脟脟脟脟脟脡脡脡脡脡脡脡脡脡脣脣脣脤脤脤脨脨脨脩脩脩脫脫脫脳脳脳脰脰脰脷脷脷脷脷脷脼脼脼脻脻脻脿脿脿脽脽脽芒芒芒脿脿脿芒芒芒谩谩谩盲盲盲茫茫茫盲盲盲氓氓氓莽莽莽茅茅茅锚锚锚矛矛矛矛矛矛卯卯卯卯卯卯冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒贸贸贸么么么梅梅梅霉霉霉眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤枚枚枚茂茂茂莽莽莽脻脻脻脫脫脫脡脡脡脌脌脌路路路卤卤卤漏漏漏楼楼楼隆隆隆聺聺聺職職職聴聴聴聲聲聲聲聲聲聴聴聴聶聶聶聺聺聺聼聼聼垄垄垄拢拢拢楼楼楼娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇娄娄娄搂搂搂搂搂搂搂搂搂搂搂搂陋陋陋芦芦芦庐庐庐颅颅颅炉炉炉炉炉炉卤卤卤卤卤卤鲁鲁鲁虏虏虏鲁鲁鲁麓麓麓虏虏虏露露露鲁鲁鲁路路路鲁鲁鲁路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂赂赂赂赂赂赂潞潞潞潞潞潞潞潞潞录录录陆陆陆脌脌脌脌脌脌脗脗脗脝脝脝脝脝脝脡脡脡脢脢脢脥脥脥脦脦脦脨脨脨脩脩脩脪脪脪脫脫脫脮脮脮脭脭脭脳脳脳脭脭脭脴脴脴脳脳脳脷脷脷脷脷脷脺脺脺脻脻脻脼脼脼脽脽脽谩谩谩谩谩谩茫茫茫茫茫茫芒芒芒芒芒芒芒芒芒茫茫茫盲盲盲忙忙忙猫猫猫矛矛矛冒冒冒么么么梅梅梅煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤枚枚枚茂茂茂莽莽莽脻脻脻脫脫脫脡脡脡脌脌脌路路路卤卤卤篓篓篓陇陇陇聻聻聻聶聶聶聲聲聲聭聭聭聫聫聫聨聨聨聬聬聬聰聰聰聵聵聵聹聹聹聽聽聽垄垄垄楼楼楼娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼拢拢拢拢拢拢垄垄垄拢拢拢垄垄垄拢拢拢垄垄垄陇陇陇陇陇陇楼楼楼搂搂搂漏漏漏篓篓篓漏漏漏漏漏漏芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢颅颅颅颅颅颅颅颅颅颅颅颅颅颅颅庐庐庐炉炉炉掳掳掳掳掳掳鲁鲁鲁鲁鲁鲁露露露赂赂赂鹿鹿鹿陆陆陆戮戮戮戮戮戮驴驴驴驴驴驴脗脗脗脗脗脗脜脜脜脛脛脛脟脟脟脝脝脝脠脠脠脡脡脡脣脣脣脣脣脣脥脥脥脦脦脦脩脩脩脫脫脫脫脫脫脮脮脮脰脰脰脰脰脰脰脰脰脮脮脮脳脳脳脰脰脰脴脴脴脵脵脵脼脼脼芒芒芒茅茅茅卯卯卯么么么酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅冒冒冒茅茅茅脽脽脽脳脳脳脤脤脤脛脛脛禄禄禄露露露庐庐庐篓篓篓隆隆隆聸聸聸聯聯聯聬聬聬聦聦聦聦聦聦聧聧聧聮聮聮聲聲聲聺聺聺隆隆隆楼楼楼篓篓篓漏漏漏陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢陋陋陋陋陋陋陋陋陋篓篓篓篓篓篓篓篓篓搂搂搂娄娄娄娄娄娄娄娄娄陇陇陇陇陇陇陇陇陇楼楼楼楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄搂搂搂搂搂搂搂搂搂搂搂搂漏漏漏陋陋陋芦芦芦芦芦芦卢卢卢庐庐庐庐庐庐卤卤卤虏虏虏麓麓麓鲁鲁鲁露露露麓麓麓赂赂赂碌碌碌赂赂赂露露露潞潞潞赂赂赂禄禄禄录录录戮戮戮驴驴驴脕脕脕脗脗脗脙脙脙脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脟脟脟脣脣脣脨脨脨脳脳脳脼脼脼忙忙忙卯卯卯么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉么么么铆铆铆氓氓氓脻脻脻脭脭脭脤脤脤脜脜脜陆陆陆露露露掳掳掳娄娄娄隆隆隆聴聴聴聯聯聯聧聧聧聬聬聬聫聫聫聳聳聳聸聸聸楼楼楼陋陋陋虏虏虏鲁鲁鲁路路路碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂麓麓麓路路路麓麓麓鲁鲁鲁鲁鲁鲁掳掳掳虏虏虏掳掳掳炉炉炉卢卢卢颅颅颅芦芦芦颅颅颅芦芦芦芦芦芦陋陋陋漏漏漏篓篓篓漏漏漏篓篓篓搂搂搂娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄楼楼楼娄娄娄篓篓篓篓篓篓篓篓篓陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢炉炉炉庐庐庐卤卤卤卤卤卤麓麓麓鲁鲁鲁露露露露露露露露露露露露露露露路路路路路路潞潞潞戮戮戮脜脜脜脤脤脤脰脰脰脽脽脽茅茅茅帽帽帽梅梅梅没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅帽帽帽毛毛毛茫茫茫脼脼脼脳脳脳脧脧脧脡脡脡脗脗脗禄禄禄卤卤卤篓篓篓聻聻聻聴聴聴聰聰聰聯聯聯聲聲聲職職職拢拢拢卢卢卢麓麓麓录录录脕脕脕脛脛脛脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脛脛脛脜脜脜脙脙脙脗脗脗脕脕脕戮戮戮戮戮戮录录录禄禄禄鹿鹿鹿赂赂赂赂赂赂麓麓麓露露露虏虏虏碌碌碌卤卤卤虏虏虏炉炉炉掳掳掳颅颅颅炉炉炉芦芦芦庐庐庐漏漏漏芦芦芦漏漏漏芦芦芦漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦陋陋陋篓篓篓漏漏漏搂搂搂篓篓篓娄娄娄搂搂搂娄娄娄娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇楼楼楼陇陇陇搂搂搂楼楼楼娄娄娄楼楼楼楼楼楼娄娄娄陇陇陇娄娄娄陇陇陇娄娄娄陇陇陇搂搂搂搂搂搂篓篓篓篓篓篓陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦芦芦芦芦芦芦卢卢卢炉炉炉碌碌碌潞潞潞脛脛脛脦脦脦脵脵脵茫茫茫铆铆铆么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤枚枚枚貌貌貌矛矛矛莽莽莽谩谩谩脺脺脺脳脳脳脩脩脩脟脟脟录录录虏虏虏娄娄娄聼聼聼聵聵聵聴聴聴聸聸聸聼聼聼陋陋陋麓麓麓脌脌脌脠脠脠脨脨脨脪脪脪脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脭脭脭脫脫脫脪脪脪脩脩脩脧脧脧脥脥脥脢脢脢脡脡脡脡脡脡脟脟脟脝脝脝脜脜脜脛脛脛脙脙脙脌脌脌脌脌脌录录录录录录禄禄禄鹿鹿鹿潞潞潞露露露路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂露露露路路路鲁鲁鲁碌碌碌掳掳掳虏虏虏庐庐庐庐庐庐芦芦芦陋陋陋陋陋陋漏漏漏漏漏漏篓篓篓漏漏漏搂搂搂篓篓篓搂搂搂娄娄娄娄娄娄楼楼楼楼楼楼娄娄娄陇陇陇楼楼楼拢拢拢拢拢拢垄垄垄拢拢拢垄垄垄拢拢拢垄垄垄陇陇陇陇陇陇陇陇陇楼楼楼陇陇陇楼楼楼楼楼楼篓篓篓漏漏漏炉炉炉碌碌碌脌脌脌脢脢脢脳脳脳谩谩谩毛毛毛贸贸贸霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没霉霉霉枚枚枚贸贸贸茂茂茂矛矛矛猫猫猫茫茫茫脹脹脹脪脪脪脟脟脟潞潞潞庐庐庐娄娄娄聻聻聻聹聹聹聼聼聼娄娄娄炉炉炉禄禄禄脡脡脡脫脫脫脻脻脻脿脿脿盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲芒芒芒茫茫茫谩谩谩芒芒芒脿脿脿芒芒芒脽脽脽脽脽脽脻脻脻脹脹脹脷脷脷脴脴脴脳脳脳脰脰脰脮脮脮脭脭脭脫脫脫脩脩脩脧脧脧脥脥脥脣脣脣脢脢脢脢脢脢脠脠脠脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脛脛脛脙脙脙脗脗脗脕脕脕驴驴驴陆陆陆录录录禄禄禄路路路赂赂赂麓麓麓麓麓麓虏虏虏卤卤卤掳掳掳掳掳掳庐庐庐炉炉炉卢卢卢颅颅颅颅颅颅卢卢卢陋陋陋漏漏漏篓篓篓搂搂搂搂搂搂娄娄娄娄娄娄楼楼楼陇陇陇楼楼楼陇陇陇楼楼楼陇陇陇楼楼楼陇陇陇楼楼楼楼楼楼篓篓篓漏漏漏炉炉炉碌碌碌脌脌脌脢脢脢脳脳脳谩谩谩毛毛毛贸贸贸霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁眉眉眉没没没酶酶酶梅梅梅么么么貌貌貌铆铆铆忙忙忙脻脻脻脩脩脩脗脗脗碌碌碌漏漏漏隆隆隆聼聼聼垄垄垄篓篓篓麓麓麓脙脙脙脨脨脨脻脻脻忙忙忙锚锚锚冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂茂茂茂茂茂茂茂茂茂卯卯卯卯卯卯矛矛矛毛毛毛锚锚锚茅茅茅莽莽莽莽莽莽忙忙忙氓氓氓盲盲盲茫茫茫谩谩谩脿脿脿脼脼脼脺脺脺脹脹脹脵脵脵脵脵脵脳脳脳脳脳脳脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脫脫脫脫脫脫脨脨脨脦脦脦脤脤脤脢脢脢脝脝脝脜脜脜脜脜脜脕脕脕脕脕脕戮戮戮陆陆陆录录录鹿鹿鹿潞潞潞路路路鹿鹿鹿露露露路路路麓麓麓麓麓麓鲁鲁鲁卤卤卤卤卤卤炉炉炉掳掳掳卢卢卢庐庐庐芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦芦芦芦卢卢卢炉炉炉碌碌碌潞潞潞脛脛脛脦脦脦脵脵脵茫茫茫铆铆铆么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁眉眉眉眉眉眉煤煤煤煤煤煤枚枚枚茂茂茂氓氓氓脵脵脵脢脢脢禄禄禄炉炉炉搂搂搂陇陇陇拢拢拢庐庐庐路路路脟脟脟脭脭脭盲盲盲矛矛矛玫玫玫枚枚枚霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅酶酶酶梅梅梅梅梅梅梅梅梅枚枚枚么么么枚枚枚贸贸贸么么么貌貌貌帽帽帽冒冒冒茂茂茂卯卯卯铆铆铆矛矛矛锚锚锚锚锚锚莽莽莽莽莽莽忙忙忙忙忙忙氓氓氓氓氓氓盲盲盲茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫谩谩谩谩谩谩脽脽脽脽脽脽脻脻脻脹脹脹脵脵脵脴脴脴脰脰脰脭脭脭脫脫脫脪脪脪脦脦脦脧脧脧脣脣脣脣脣脣脡脡脡脠脠脠脠脠脠脝脝脝脝脝脝脜脜脜脙脙脙脛脛脛脗脗脗戮戮戮驴驴驴禄禄禄禄禄禄鹿鹿鹿鹿鹿鹿赂赂赂路路路赂赂赂露露露路路路露露露路路路路路路潞潞潞戮戮戮脜脜脜脤脤脤脰脰脰脽脽脽茅茅茅帽帽帽梅梅梅没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒煤煤煤貌貌貌茅茅茅脺脺脺脥脥脥戮戮戮掳掳掳篓篓篓楼楼楼搂搂搂颅颅颅鹿鹿鹿脟脟脟脴脴脴氓氓氓帽帽帽梅梅梅媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁眉眉眉媒媒媒眉眉眉眉眉眉眉眉眉没没没眉眉眉煤煤煤煤煤煤霉霉霉梅梅梅霉霉霉枚枚枚玫玫玫枚枚枚么么么么么么貌貌貌贸贸贸帽帽帽冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂茂茂茂铆铆铆铆铆铆毛毛毛毛毛毛茅茅茅猫猫猫忙忙忙芒芒芒芒芒芒脿脿脿脿脿脿脼脼脼脼脼脼脹脹脹脹脹脹脴脴脴脵脵脵脮脮脮脴脴脴脭脭脭脮脮脮脫脫脫脫脫脫脩脩脩脧脧脧脥脥脥脣脣脣脡脡脡脡脡脡脟脟脟脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脜脜脜脝脝脝脟脟脟脣脣脣脨脨脨脳脳脳脼脼脼忙忙忙卯卯卯么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅矛矛矛脿脿脿脩脩脩脌脌脌虏虏虏陋陋陋楼楼楼搂搂搂庐庐庐潞潞潞脡脡脡脳脳脳忙忙忙貌貌貌霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒眉眉眉媒媒媒眉眉眉眉眉眉眉眉眉没没没眉眉眉煤煤煤没没没霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅酶酶酶玫玫玫玫玫玫么么么贸贸贸貌貌貌冒冒冒茂茂茂铆铆铆矛矛矛毛毛毛毛毛毛茅茅茅猫猫猫忙忙忙氓氓氓盲盲盲盲盲盲芒芒芒茫茫茫谩谩谩谩谩谩脽脽脽脿脿脿脻脻脻脺脺脺脹脹脹脴脴脴脴脴脴脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脮脮脮脳脳脳脰脰脰脴脴脴脵脵脵脼脼脼芒芒芒茅茅茅卯卯卯么么么酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁枚枚枚铆铆铆谩谩谩脪脪脪脙脙脙虏虏虏漏漏漏娄娄娄娄娄娄芦芦芦路路路脠脠脠脳脳脳氓氓氓帽帽帽酶酶酶镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉媒媒媒没没没眉眉眉煤煤煤煤煤煤霉霉霉霉霉霉酶酶酶梅梅梅枚枚枚玫玫玫么么么贸贸贸么么么帽帽帽貌貌貌冒冒冒貌貌貌茂茂茂茂茂茂铆铆铆铆铆铆毛毛毛毛毛毛锚锚锚茅茅茅莽莽莽忙忙忙氓氓氓氓氓氓盲盲盲盲盲盲茫茫茫芒芒芒芒芒芒芒芒芒茫茫茫盲盲盲忙忙忙猫猫猫矛矛矛冒冒冒么么么梅梅梅煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶卯卯卯芒芒芒脫脫脫脙脙脙碌碌碌漏漏漏楼楼楼楼楼楼卢卢卢鹿鹿鹿脟脟脟脰脰脰盲盲盲冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉没没没没没没煤煤煤煤煤煤霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅酶酶酶枚枚枚梅梅梅玫玫玫玫玫玫貌貌貌贸贸贸帽帽帽帽帽帽冒冒冒帽帽帽冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒贸贸贸么么么梅梅梅霉霉霉眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅茂茂茂盲盲盲脮脮脮脜脜脜碌碌碌漏漏漏娄娄娄娄娄娄芦芦芦露露露脟脟脟脳脳脳氓氓氓冒冒冒梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁眉眉眉眉眉眉眉眉眉没没没没没没霉霉霉煤煤煤霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉酶酶酶煤煤煤煤煤煤眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脭脭脭脜脜脜赂赂赂陋陋陋楼楼楼楼楼楼芦芦芦鹿鹿鹿脝脝脝脮脮脮盲盲盲冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉媒媒媒媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅冒冒冒氓氓氓脰脰脰脝脝脝碌碌碌陋陋陋娄娄娄娄娄娄陋陋陋露露露脝脝脝脳脳脳氓氓氓冒冒冒梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂茫茫茫脮脮脮脝脝脝赂赂赂陋陋陋娄娄娄娄娄娄陋陋陋赂赂赂脝脝脝脮脮脮茫茫茫茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅冒冒冒盲盲盲脳脳脳脝脝脝碌碌碌陋陋陋娄娄娄娄娄娄陋陋陋碌碌碌脝脝脝脳脳脳盲盲盲冒冒冒梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂茫茫茫脭脭脭脜脜脜赂赂赂陋陋陋搂搂搂搂搂搂陋陋陋赂赂赂脜脜脜脭脭脭茫茫茫茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅冒冒冒盲盲盲脳脳脳脜脜脜碌碌碌陋陋陋娄娄娄娄娄娄陋陋陋碌碌碌脜脜脜脳脳脳盲盲盲冒冒冒梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂茫茫茫脭脭脭脛脛脛赂赂赂陋陋陋娄娄娄娄娄娄芦芦芦鹿鹿鹿脛脛脛脭脭脭茫茫茫茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅帽帽帽盲盲盲脰脰脰脜脜脜碌碌碌芦芦芦楼楼楼楼楼楼芦芦芦碌碌碌脝脝脝脳脳脳盲盲盲帽帽帽梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉卯卯卯芒芒芒脭脭脭脛脛脛碌碌碌陋陋陋陇陇陇楼楼楼卢卢卢赂赂赂脝脝脝脮脮脮茫茫茫茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁枚枚枚茂茂茂谩谩谩脮脮脮脙脙脙麓麓麓陋陋陋陇陇陇楼楼楼卢卢卢露露露脟脟脟脳脳脳盲盲盲帽帽帽梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒梅梅梅矛矛矛脼脼脼脨脨脨脌脌脌麓麓麓篓篓篓拢拢拢娄娄娄颅颅颅潞潞潞脝脝脝脮脮脮盲盲盲冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉贸贸贸锚锚锚脻脻脻脧脧脧戮戮戮炉炉炉搂搂搂楼楼楼搂搂搂芦芦芦赂赂赂脠脠脠脵脵脵忙忙忙帽帽帽酶酶酶镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤贸贸贸莽莽莽脷脷脷脢脢脢禄禄禄庐庐庐娄娄娄拢拢拢篓篓篓掳掳掳录录录脣脣脣脷脷脷莽莽莽貌貌貌煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅卯卯卯盲盲盲脰脰脰脝脝脝鹿鹿鹿卢卢卢娄娄娄楼楼楼漏漏漏掳掳掳戮戮戮脦脦脦脼脼脼茅茅茅么么么霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没枚枚枚矛矛矛脽脽脽脧脧脧脗脗脗麓麓麓陋陋陋陇陇陇楼楼楼芦芦芦麓麓麓脙脙脙脪脪脪脿脿脿矛矛矛玫玫玫没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉霉霉霉帽帽帽忙忙忙脵脵脵脣脣脣禄禄禄卤卤卤篓篓篓陇陇陇搂搂搂卢卢卢赂赂赂脟脟脟脰脰脰茫茫茫冒冒冒梅梅梅没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉枚枚枚铆铆铆芒芒芒脭脭脭脜脜脜赂赂赂卢卢卢篓篓篓陇陇陇漏漏漏虏虏虏陆陆陆脤脤脤脹脹脹猫猫猫貌貌貌霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁霉霉霉么么么猫猫猫脺脺脺脤脤脤戮戮戮卤卤卤陋陋陋楼楼楼楼楼楼卢卢卢麓麓麓脗脗脗脩脩脩脽脽脽矛矛矛玫玫玫没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅卯卯卯茫茫茫脰脰脰脟脟脟潞潞潞庐庐庐娄娄娄楼楼楼搂搂搂掳掳掳录录录脡脡脡脴脴脴氓氓氓茂茂茂酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉么么么毛毛毛脼脼脼脧脧脧脕脕脕鲁鲁鲁陋陋陋娄娄娄楼楼楼陋陋陋鲁鲁鲁脌脌脌脦脦脦脼脼脼锚锚锚贸贸贸没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁霉霉霉冒冒冒忙忙忙脵脵脵脡脡脡禄禄禄掳掳掳娄娄娄陇陇陇娄娄娄炉炉炉潞潞潞脝脝脝脳脳脳芒芒芒卯卯卯梅梅梅眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉枚枚枚铆铆铆谩谩谩脪脪脪脙脙脙碌碌碌芦芦芦楼楼楼娄娄娄篓篓篓卤卤卤脌脌脌脤脤脤脷脷脷猫猫猫贸贸贸霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤貌貌貌锚锚锚脺脺脺脥脥脥陆陆陆虏虏虏陋陋陋陇陇陇搂搂搂卢卢卢赂赂赂脛脛脛脫脫脫谩谩谩矛矛矛枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅茂茂茂茫茫茫脰脰脰脟脟脟鹿鹿鹿庐庐庐搂搂搂楼楼楼篓篓篓掳掳掳禄禄禄脣脣脣脵脵脵忙忙忙帽帽帽酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没么么么毛毛毛脽脽脽脪脪脪脗脗脗露露露卢卢卢娄娄娄搂搂搂陋陋陋鲁鲁鲁脌脌脌脧脧脧脽脽脽毛毛毛玫玫玫煤煤煤每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶貌貌貌莽莽莽脹脹脹脣脣脣陆陆陆卤卤卤漏漏漏娄娄娄搂搂搂炉炉炉鹿鹿鹿脟脟脟脮脮脮盲盲盲茂茂茂酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉霉霉霉卯卯卯芒芒芒脮脮脮脝脝脝赂赂赂炉炉炉篓篓篓楼楼楼漏漏漏虏虏虏驴驴驴脥脥脥脻脻脻茅茅茅么么么煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没玫玫玫毛毛毛脽脽脽脧脧脧脌脌脌虏虏虏漏漏漏娄娄娄搂搂搂庐庐庐赂赂赂脙脙脙脭脭脭脿脿脿铆铆铆枚枚枚眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉帽帽帽忙忙忙脹脹脹脣脣脣录录录掳掳掳娄娄娄陇陇陇搂搂搂炉炉炉鹿鹿鹿脠脠脠脳脳脳氓氓氓冒冒冒霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅茂茂茂芒芒芒脭脭脭脜脜脜赂赂赂卢卢卢娄娄娄陇陇陇漏漏漏卤卤卤戮戮戮脧脧脧脻脻脻锚锚锚贸贸贸没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没么么么毛毛毛脻脻脻脦脦脦脕脕脕虏虏虏漏漏漏陇陇陇娄娄娄陋陋陋碌碌碌脛脛脛脪脪脪脿脿脿茂茂茂梅梅梅眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没貌貌貌茅茅茅脹脹脹脤脤脤录录录掳掳掳娄娄娄陇陇陇娄娄娄庐庐庐禄禄禄脡脡脡脴脴脴忙忙忙帽帽帽霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒盲盲盲脰脰脰脝脝脝露露露卢卢卢陇陇陇陇陇陇娄娄娄掳掳掳戮戮戮脣脣脣脺脺脺茅茅茅贸贸贸没没没每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒眉眉眉煤煤煤煤煤煤煤煤煤煤煤煤眉眉眉媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅铆铆铆谩谩谩脫脫脫脙脙脙碌碌碌陋陋陋陇陇陇拢拢拢陋陋陋虏虏虏脙脙脙脩脩脩脿脿脿铆铆铆梅梅梅眉眉眉每每每每每每每每每每每每镁镁镁媒媒媒眉眉眉煤煤煤霉霉霉枚枚枚玫玫玫么么么玫玫玫梅梅梅酶酶酶煤煤煤没没没眉眉眉媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉么么么锚锚锚脺脺脺脦脦脦戮戮戮卤卤卤篓篓篓拢拢拢楼楼楼卢卢卢赂赂赂脜脜脜脰脰脰茫茫茫帽帽帽霉霉霉媒媒媒每每每每每每每每每每每每镁镁镁没没没煤煤煤枚枚枚贸贸贸铆铆铆矛矛矛锚锚锚毛毛毛铆铆铆冒冒冒么么么玫玫玫酶酶酶酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉煤煤煤煤煤煤眉眉眉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤帽帽帽莽莽莽脺脺脺脢脢脢潞潞潞颅颅颅搂搂搂拢拢拢搂搂搂颅颅颅禄禄禄脡脡脡脹脹脹猫猫猫贸贸贸没没没每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶玫玫玫卯卯卯茅茅茅茫茫茫脽脽脽脺脺脺脻脻脻脼脼脼茫茫茫莽莽莽茅茅茅铆铆铆卯卯卯冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒帽帽帽帽帽帽贸贸贸么么么梅梅梅酶酶酶没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶卯卯卯芒芒芒脳脳脳脜脜脜路路路陋陋陋搂搂搂垄垄垄篓篓篓卤卤卤陆陆陆脦脦脦脼脼脼锚锚锚枚枚枚没没没每每每每每每每每每每每每镁镁镁煤煤煤玫玫玫卯卯卯氓氓氓脻脻脻脮脮脮脧脧脧脥脥脥脤脤脤脥脥脥脨脨脨脳脳脳脷脷脷脽脽脽芒芒芒茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫盲盲盲氓氓氓莽莽莽茅茅茅矛矛矛茂茂茂贸贸贸枚枚枚每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没么么么锚锚锚脽脽脽脧脧脧脗脗脗鲁鲁鲁陋陋陋陇陇陇陇陇陇陋陋陋露露露脕脕脕脫脫脫芒芒芒卯卯卯枚枚枚没没没每每每每每每每每每镁镁镁眉眉眉酶酶酶帽帽帽猫猫猫脺脺脺脪脪脪脟脟脟戮戮戮赂赂赂赂赂赂潞潞潞脌脌脌脛脛脛脢脢脢脧脧脧脪脪脪脭脭脭脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脴脴脴脷脷脷脹脹脹脽脽脽芒芒芒猫猫猫矛矛矛貌貌貌每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁酶酶酶貌貌貌莽莽莽脹脹脹脣脣脣禄禄禄掳掳掳篓篓篓陇陇陇娄娄娄庐庐庐鹿鹿鹿脡脡脡脴脴脴盲盲盲茂茂茂酶酶酶媒媒媒每每每每每每每每每镁镁镁没没没玫玫玫矛矛矛谩谩谩脫脫脫脛脛脛露露露颅颅颅搂搂搂楼楼楼娄娄娄陋陋陋虏虏虏赂赂赂陆陆陆脕脕脕脗脗脗脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脟脟脟脠脠脠脢脢脢脥脥脥脩脩脩脳脳脳脻脻脻盲盲盲毛毛毛每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没梅梅梅铆铆铆茫茫茫脴脴脴脝脝脝赂赂赂炉炉炉搂搂搂拢拢拢漏漏漏掳掳掳戮戮戮脤脤脤脷脷脷猫猫猫贸贸贸霉霉霉镁镁镁每每每每每每每每每媒媒媒煤煤煤贸贸贸猫猫猫脵脵脵脢脢脢赂赂赂陋陋陋聻聻聻聳聳聳聲聲聲聰聰聰聶聶聶聽聽聽娄娄娄颅颅颅炉炉炉碌碌碌麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路赂赂赂露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂路路路赂赂赂露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路赂赂赂潞潞潞陆陆陆脌脌脌脝脝脝脤脤脤脮脮脮脺脺脺忙忙忙每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤玫玫玫铆铆铆芒芒芒脪脪脪脙脙脙路路路颅颅颅陋陋陋漏漏漏颅颅颅路路路脛脛脛脨脨脨脽脽脽矛矛矛枚枚枚没没没镁镁镁每每每每每每每每每眉眉眉霉霉霉茂茂茂忙忙忙脫脫脫脙脙脙庐庐庐聼聼聼聭聭聭聤聤聤聠聠聠聢聢聢聦聦聦聮聮聮聶聶聶隆隆隆陇陇陇篓篓篓漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢陋陋陋芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢陋陋陋芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢庐庐庐炉炉炉虏虏虏露露露录录录脛脛脛脤脤脤脳脳脳脽脽脽每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶贸贸贸茅茅茅脼脼脼脩脩脩脙脙脙赂赂赂卤卤卤卢卢卢颅颅颅鲁鲁鲁录录录脢脢脢脳脳脳氓氓氓帽帽帽酶酶酶眉眉眉每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脩脩脩陆陆陆漏漏漏職職職聥聥聥聝聝聝~~~聙聙聙聜聜聜聣聣聣聮聮聮聵聵聵聼聼聼垄垄垄陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼娄娄娄搂搂搂陋陋陋卢卢卢虏虏虏路路路脌脌脌脠脠脠脭脭脭脻脻脻每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉酶酶酶貌貌貌茅茅茅脼脼脼脩脩脩脝脝脝禄禄禄麓麓麓虏虏虏麓麓麓禄禄禄脝脝脝脩脩脩脼脼脼锚锚锚么么么煤煤煤镁镁镁每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂盲盲盲脩脩脩录录录搂搂搂聲聲聲聢聢聢~~~zzz|||聢聢聢聬聬聬聴聴聴聻聻聻隆隆隆陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼娄娄娄搂搂搂陋陋陋卢卢卢虏虏虏路路路脌脌脌脠脠脠脭脭脭脻脻脻每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶貌貌貌茅茅茅脽脽脽脫脫脫脠脠脠脕脕脕录录录鹿鹿鹿录录录脙脙脙脥脥脥脵脵脵盲盲盲茂茂茂枚枚枚媒媒媒每每每每每每每每每每每每每每每镁镁镁煤煤煤帽帽帽盲盲盲脪脪脪陆陆陆搂搂搂聵聵聵聢聢聢聙聙聙zzz~~~聝聝聝聥聥聥聯聯聯聹聹聹隆隆隆篓篓篓篓篓篓陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢陋陋陋芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢陋陋陋芦芦芦漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦芦芦芦卢卢卢卢卢卢庐庐庐炉炉炉虏虏虏露露露录录录脛脛脛脤脤脤脳脳脳脽脽脽每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉贸贸贸矛矛矛茫茫茫脴脴脴脧脧脧脠脠脠脛脛脛脛脛脛脟脟脟脥脥脥脴脴脴芒芒芒矛矛矛贸贸贸霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每眉眉眉貌貌貌莽莽莽脰脰脰脗脗脗颅颅颅職職職聧聧聧聜聜聜聙聙聙聜聜聜聡聡聡聬聬聬聸聸聸楼楼楼卢卢卢虏虏虏鲁鲁鲁路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路赂赂赂露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路路路路赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂赂路路路赂赂赂露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露露露露路路路赂赂赂潞潞潞陆陆陆脌脌脌脝脝脝脤脤脤脮脮脮脺脺脺忙忙忙每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒霉霉霉玫玫玫卯卯卯猫猫猫脼脼脼脳脳脳脪脪脪脦脦脦脦脦脦脩脩脩脴脴脴谩谩谩猫猫猫帽帽帽酶酶酶没没没每每每每每每每每每每每每每每每每每每每每每眉眉眉枚枚枚莽莽莽脵脵脵脝脝脝卤卤卤聽聽聽聮聮聮聤聤聤聡聡聡聤聤聤聮聮聮聸聸聸楼楼楼掳掳掳鹿鹿鹿驴驴驴脗脗脗脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脟脟脟脠脠脠脢脢脢脥脥脥脩脩脩脳脳脳脻脻脻盲盲盲毛毛毛每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没酶酶酶貌貌貌毛毛毛忙忙忙脿脿脿脷脷脷脵脵脵脵脵脵脻脻脻茫茫茫茅茅茅貌貌貌枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁玫玫玫毛毛毛脼脼脼脥脥脥潞潞潞搂搂搂聶聶聶聬聬聬聫聫聫聯聯聯聸聸聸搂搂搂麓麓麓驴驴驴脠脠脠脦脦脦脫脫脫脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脰脰脰脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脴脴脴脷脷脷脹脹脹脽脽脽芒芒芒猫猫猫矛矛矛貌貌貌每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤玫玫玫帽帽帽毛毛毛猫猫猫忙忙忙盲盲盲盲盲盲猫猫猫毛毛毛帽帽帽枚枚枚煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶矛矛矛脼脼脼脧脧脧录录录颅颅颅聻聻聻聶聶聶聴聴聴聸聸聸楼楼楼掳掳掳陆陆陆脢脢脢脮脮脮脼脼脼谩谩谩芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫盲盲盲氓氓氓莽莽莽茅茅茅矛矛矛茂茂茂贸贸贸枚枚枚每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒眉眉眉霉霉霉枚枚枚贸贸贸茂茂茂铆铆铆铆铆铆卯卯卯冒冒冒贸贸贸枚枚枚霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅茂茂茂茫茫茫脫脫脫脙脙脙炉炉炉楼楼楼聻聻聻聺聺聺垄垄垄芦芦芦潞潞潞脢脢脢脳脳脳谩谩谩猫猫猫卯卯卯冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒帽帽帽帽帽帽贸贸贸么么么梅梅梅酶酶酶没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒眉眉眉霉霉霉梅梅梅枚枚枚么么么么么么玫玫玫梅梅梅酶酶酶没没没眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂茫茫茫脭脭脭脜脜脜碌碌碌搂搂搂隆隆隆隆隆隆娄娄娄麓麓麓脕脕脕脨脨脨脼脼脼猫猫猫贸贸贸玫玫玫霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉煤煤煤煤煤煤眉眉眉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒眉眉眉没没没霉霉霉霉霉霉霉霉霉霉霉霉煤煤煤没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅冒冒冒氓氓氓脳脳脳脝脝脝碌碌碌陋陋陋楼楼楼楼楼楼陋陋陋碌碌碌脛脛脛脮脮脮茫茫茫卯卯卯玫玫玫眉眉眉媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒媒媒媒眉眉眉眉眉眉媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脮脮脮脝脝脝路路路陋陋陋陇陇陇陇陇陇陋陋陋路路路脝脝脝脮脮脮茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅茂茂茂盲盲盲脰脰脰脜脜脜露露露芦芦芦楼楼楼楼楼楼芦芦芦露露露脜脜脜脰脰脰盲盲盲茂茂茂梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脮脮脮脜脜脜露露露陋陋陋陇陇陇陇陇陇陋陋陋露露露脜脜脜脮脮脮芒芒芒冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁梅梅梅茂茂茂茫茫茫脮脮脮脜脜脜碌碌碌陋陋陋陇陇陇陇陇陇陋陋陋碌碌碌脜脜脜脮脮脮茫茫茫茂茂茂梅梅梅镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脮脮脮脛脛脛碌碌碌陋陋陋拢拢拢拢拢拢陋陋陋碌碌碌脛脛脛脮脮脮芒芒芒冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒梅梅梅茂茂茂茫茫茫脭脭脭脛脛脛麓麓麓陋陋陋拢拢拢拢拢拢陋陋陋麓麓麓脛脛脛脭脭脭茫茫茫茂茂茂梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脮脮脮脛脛脛碌碌碌陋陋陋垄垄垄垄垄垄陋陋陋碌碌碌脛脛脛脮脮脮芒芒芒冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒梅梅梅茂茂茂茫茫茫脭脭脭脛脛脛麓麓麓陋陋陋拢拢拢拢拢拢陋陋陋麓麓麓脛脛脛脭脭脭茫茫茫茂茂茂梅梅梅媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脮脮脮脛脛脛碌碌碌芦芦芦拢拢拢拢拢拢芦芦芦碌碌碌脛脛脛脮脮脮茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶茂茂茂茫茫茫脮脮脮脛脛脛碌碌碌芦芦芦陇陇陇陇陇陇芦芦芦碌碌碌脛脛脛脮脮脮茫茫茫茂茂茂酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒茫茫茫脰脰脰脛脛脛碌碌碌芦芦芦陇陇陇陇陇陇芦芦芦露露露脜脜脜脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉冒冒冒芒芒芒脮脮脮脛脛脛碌碌碌芦芦芦陇陇陇陇陇陇卢卢卢露露露脜脜脜脰脰脰茫茫茫冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂芒芒芒脭脭脭脛脛脛鲁鲁鲁陋陋陋陇陇陇陇陇陇芦芦芦路路路脝脝脝脰脰脰盲盲盲冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶茂茂茂谩谩谩脭脭脭脗脗脗鲁鲁鲁漏漏漏拢拢拢陇陇陇卢卢卢露露露脟脟脟脴脴脴盲盲盲帽帽帽霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅矛矛矛脽脽脽脨脨脨驴驴驴炉炉炉娄娄娄垄垄垄拢拢拢漏漏漏赂赂赂脝脝脝脰脰脰氓氓氓冒冒冒霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉玫玫玫锚锚锚脺脺脺脦脦脦录录录庐庐庐垄垄垄聻聻聻隆隆隆陋陋陋露露露脝脝脝脳脳脳盲盲盲貌貌貌煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤么么么莽莽莽脷脷脷脠脠脠路路路漏漏漏聽聽聽聹聹聹聼聼聼娄娄娄路路路脝脝脝脰脰脰忙忙忙帽帽帽煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤貌貌貌盲盲盲脮脮脮脛脛脛虏虏虏楼楼楼聸聸聸聴聴聴聹聹聹搂搂搂麓麓麓脜脜脜脵脵脵氓氓氓贸贸贸没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁酶酶酶茂茂茂谩谩谩脪脪脪戮戮戮颅颅颅聼聼聼聵聵聵聳聳聳聸聸聸陇陇陇碌碌碌脜脜脜脵脵脵莽莽莽貌貌貌没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅矛矛矛脻脻脻脣脣脣禄禄禄漏漏漏聺聺聺聲聲聲聯聯聯聶聶聶拢拢拢麓麓麓脝脝脝脹脹脹忙忙忙么么么没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒贸贸贸锚锚锚脷脷脷脡脡脡麓麓麓楼楼楼職職職聯聯聯聯聯聯聸聸聸陇陇陇路路路脠脠脠脹脹脹锚锚锚么么么眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤贸贸贸忙忙忙脵脵脵脛脛脛麓麓麓拢拢拢聶聶聶聭聭聭聯聯聯聹聹聹娄娄娄赂赂赂脣脣脣脻脻脻锚锚锚枚枚枚眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤冒冒冒氓氓氓脳脳脳脜脜脜虏虏虏垄垄垄聶聶聶聯聯聯聳聳聳聻聻聻陋陋陋陆陆陆脧脧脧脿脿脿铆铆铆枚枚枚媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤帽帽帽盲盲盲脭脭脭脗脗脗鲁鲁鲁陇陇陇職職職聲聲聲聶聶聶垄垄垄掳掳掳脗脗脗脭脭脭芒芒芒茂茂茂煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂氓氓氓脮脮脮脛脛脛鲁鲁鲁篓篓篓聼聼聼聹聹聹聽聽聽漏漏漏路路路脡脡脡脵脵脵莽莽莽贸贸贸霉霉霉每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒眉眉眉眉眉眉煤煤煤没没没霉霉霉霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉没没没煤煤煤眉眉眉眉眉眉眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶帽帽帽盲盲盲脰脰脰脠脠脠鹿鹿鹿庐庐庐楼楼楼陇陇陇篓篓篓卤卤卤驴驴驴脧脧脧脼脼脼锚锚锚玫玫玫眉眉眉每每每每每每每每每每每每镁镁镁媒媒媒媒媒媒眉眉眉没没没酶酶酶酶酶酶枚枚枚么么么么么么貌貌貌貌貌貌冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒帽帽帽帽帽帽貌貌貌贸贸贸么么么玫玫玫枚枚枚酶酶酶霉霉霉没没没媒媒媒媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶冒冒冒忙忙忙脷脷脷脤脤脤脌脌脌麓麓麓掳掳掳炉炉炉麓麓麓陆陆陆脠脠脠脴脴脴盲盲盲茂茂茂梅梅梅眉眉眉每每每每每每镁镁镁媒媒媒煤煤煤酶酶酶酶酶酶玫玫玫么么么帽帽帽茂茂茂铆铆铆锚锚锚猫猫猫猫猫猫忙忙忙氓氓氓茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒忙忙忙盲盲盲莽莽莽莽莽莽茅茅茅茅茅茅铆铆铆卯卯卯冒冒冒貌貌貌玫玫玫酶酶酶霉霉霉没没没眉眉眉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶貌貌貌茅茅茅脼脼脼脫脫脫脟脟脟脌脌脌禄禄禄禄禄禄驴驴驴脟脟脟脫脫脫脿脿脿毛毛毛贸贸贸煤煤煤镁镁镁镁镁镁媒媒媒煤煤煤酶酶酶么么么帽帽帽卯卯卯毛毛毛莽莽莽氓氓氓芒芒芒脽脽脽脻脻脻脹脹脹脵脵脵脳脳脳脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脰脰脰脰脰脰脴脴脴脳脳脳脹脹脹脵脵脵脻脻脻脺脺脺谩谩谩谩谩谩氓氓氓莽莽莽锚锚锚铆铆铆貌貌貌么么么梅梅梅霉霉霉眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤玫玫玫卯卯卯氓氓氓脷脷脷脪脪脪脣脣脣脝脝脝脠脠脠脣脣脣脫脫脫脻脻脻猫猫猫帽帽帽梅梅梅眉眉眉镁镁镁霉霉霉梅梅梅贸贸贸冒冒冒毛毛毛忙忙忙茫茫茫脽脽脽脹脹脹脳脳脳脭脭脭脨脨脨脥脥脥脣脣脣脡脡脡脡脡脡脟脟脟脟脟脟脟脟脟脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脝脝脝脝脝脝脠脠脠脡脡脡脢脢脢脤脤脤脥脥脥脩脩脩脪脪脪脰脰脰脹脹脹脽脽脽脿脿脿莽莽莽毛毛毛卯卯卯帽帽帽玫玫玫酶酶酶煤煤煤没没没没没没镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没梅梅梅帽帽帽锚锚锚茫茫茫脹脹脹脳脳脳脭脭脭脮脮脮脴脴脴脼脼脼猫猫猫冒冒冒玫玫玫煤煤煤煤煤煤梅梅梅贸贸贸卯卯卯茅茅茅茫茫茫脽脽脽脵脵脵脭脭脭脧脧脧脣脣脣脟脟脟脙脙脙驴驴驴陆陆陆禄禄禄鹿鹿鹿鹿鹿鹿露露露路路路麓麓麓路路路碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌路路路露露露赂赂赂鹿鹿鹿禄禄禄录录录戮戮戮驴驴驴脌脌脌脗脗脗脟脟脟脢脢脢脧脧脧脫脫脫脴脴脴脻脻脻芒芒芒莽莽莽毛毛毛铆铆铆帽帽帽貌貌貌玫玫玫玫玫玫酶酶酶酶酶酶煤煤煤霉霉霉没没没没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤玫玫玫帽帽帽毛毛毛莽莽莽芒芒芒脿脿脿谩谩谩盲盲盲茅茅茅茂茂茂玫玫玫梅梅梅酶酶酶枚枚枚帽帽帽毛毛毛茫茫茫脻脻脻脰脰脰脧脧脧脠脠脠脛脛脛戮戮戮禄禄禄鹿鹿鹿麓麓麓鲁鲁鲁掳掳掳卤卤卤卢卢卢卢卢卢芦芦芦芦芦芦陋陋陋陋陋陋芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋芦芦芦芦芦芦卢卢卢卢卢卢庐庐庐庐庐庐庐庐庐掳掳掳虏虏虏碌碌碌赂赂赂陆陆陆驴驴驴脛脛脛脡脡脡脧脧脧脭脭脭脵脵脵脻脻脻芒芒芒氓氓氓猫猫猫毛毛毛卯卯卯卯卯卯帽帽帽貌貌貌么么么玫玫玫酶酶酶霉霉霉眉眉眉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没霉霉霉玫玫玫貌貌貌卯卯卯矛矛矛锚锚锚毛毛毛茂茂茂貌貌貌玫玫玫枚枚枚枚枚枚么么么卯卯卯莽莽莽脽脽脽脴脴脴脤脤脤脛脛脛戮戮戮鹿鹿鹿鲁鲁鲁炉炉炉卢卢卢颅颅颅漏漏漏篓篓篓漏漏漏搂搂搂楼楼楼陇陇陇楼楼楼陇陇陇楼楼楼陇陇陇娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼娄娄娄搂搂搂娄娄娄漏漏漏漏漏漏卢卢卢卢卢卢掳掳掳虏虏虏路路路禄禄禄驴驴驴脛脛脛脣脣脣脥脥脥脪脪脪脰脰脰脺脺脺脼脼脼脽脽脽谩谩谩盲盲盲忙忙忙锚锚锚铆铆铆帽帽帽么么么酶酶酶没没没媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没煤煤煤酶酶酶玫玫玫贸贸贸贸贸贸么么么玫玫玫枚枚枚梅梅梅梅梅梅贸贸贸茂茂茂忙忙忙脺脺脺脩脩脩脟脟脟陆陆陆碌碌碌庐庐庐卢卢卢娄娄娄陇陇陇拢拢拢楼楼楼垄垄垄陇陇陇隆隆隆垄垄垄拢拢拢垄垄垄陇陇陇拢拢拢楼楼楼陇陇陇娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄搂搂搂娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼楼楼楼陇陇陇楼楼楼楼楼楼娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄娄楼楼楼楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼陇陇陇娄娄娄楼楼楼陇陇陇楼楼楼陇陇陇娄娄娄娄娄娄搂搂搂篓篓篓庐庐庐炉炉炉虏虏虏露露露禄禄禄脌脌脌脙脙脙脜脜脜脣脣脣脦脦脦脪脪脪脫脫脫脴脴脴脷脷脷脽脽脽芒芒芒猫猫猫卯卯卯贸贸贸梅梅梅煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒没没没煤煤煤霉霉霉霉霉霉霉霉霉煤煤煤没没没酶酶酶玫玫玫茂茂茂氓氓氓脷脷脷脧脧脧脗脗脗露露露炉炉炉陋陋陋拢拢拢聽聽聽聻聻聻聽聽聽聻聻聻隆隆隆隆隆隆娄娄娄拢拢拢搂搂搂娄娄娄搂搂搂篓篓篓篓篓篓漏漏漏漏漏漏芦芦芦芦芦芦卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋漏漏漏陋陋陋漏漏漏陋陋陋漏漏漏芦芦芦陋陋陋卢卢卢芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦颅颅颅芦芦芦卢卢卢芦芦芦芦芦芦芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋漏漏漏陋陋陋篓篓篓陋陋陋搂搂搂漏漏漏娄娄娄楼楼楼楼楼楼楼楼楼陇陇陇拢拢拢搂搂搂漏漏漏漏漏漏卢卢卢掳掳掳虏虏虏路路路赂赂赂陆陆陆戮戮戮脕脕脕脜脜脜脠脠脠脣脣脣脩脩脩脴脴脴脽脽脽氓氓氓铆铆铆贸贸贸酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒眉眉眉眉眉眉眉眉眉眉眉眉煤煤煤梅梅梅帽帽帽莽莽莽脺脺脺脦脦脦脕脕脕路路路卢卢卢楼楼楼聻聻聻聸聸聸聸聸聸職職職聺聺聺聼聼聼垄垄垄搂搂搂篓篓篓卢卢卢炉炉炉炉炉炉卤卤卤鲁鲁鲁鲁鲁鲁麓麓麓露露露碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂碌碌碌赂赂赂露露露鹿鹿鹿露露露赂赂赂碌碌碌路路路麓麓麓路路路麓麓麓路路路碌碌碌赂赂赂露露露赂赂赂路路路赂赂赂赂赂赂赂赂赂赂赂赂路路路路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓碌碌碌碌碌碌露露露麓麓麓露露露麓麓麓虏虏虏掳掳掳庐庐庐芦芦芦芦芦芦篓篓篓娄娄娄娄娄娄楼楼楼楼楼楼搂搂搂搂搂搂搂搂搂漏漏漏芦芦芦颅颅颅炉炉炉卤卤卤鲁鲁鲁露露露潞潞潞戮戮戮脛脛脛脤脤脤脫脫脫脻脻脻盲盲盲卯卯卯么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁镁镁镁煤煤煤贸贸贸矛矛矛谩谩谩脪脪脪脗脗脗碌碌碌芦芦芦聽聽聽聺聺聺職職職聶聶聶聴聴聴聺聺聺隆隆隆楼楼楼陋陋陋掳掳掳麓麓麓赂赂赂陆陆陆陆陆陆脗脗脗脗脗脗脛脛脛脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脝脝脝脜脜脜脜脜脜脜脜脜脝脝脝脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脜脜脜脜脜脜脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脝脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脙脙脙脙脙脙脙脙脙戮戮戮陆陆陆禄禄禄露露露碌碌碌卤卤卤炉炉炉卢卢卢漏漏漏搂搂搂娄娄娄楼楼楼陇陇陇陇陇陇陇陇陇楼楼楼搂搂搂篓篓篓陋陋陋卢卢卢卤卤卤麓麓麓禄禄禄脙脙脙脣脣脣脭脭脭脿脿脿猫猫猫帽帽帽梅梅梅没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉梅梅梅冒冒冒忙忙忙脵脵脵脡脡脡录录录颅颅颅垄垄垄聸聸聸聶聶聶聳聳聳聵聵聵聹聹聹聽聽聽陋陋陋庐庐庐赂赂赂陆陆陆脕脕脕脟脟脟脣脣脣脦脦脦脩脩脩脫脫脫脫脫脫脮脮脮脫脫脫脰脰脰脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脳脳脳脮脮脮脳脳脳脮脮脮脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脰脰脰脰脰脰脰脰脰脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脳脰脰脰脰脰脰脰脰脰脮脮脮脮脮脮脭脭脭脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脮脮脮脭脭脭脪脪脪脧脧脧脦脦脦脠脠脠脠脠脠脕脕脕戮戮戮禄禄禄赂赂赂鲁鲁鲁卤卤卤颅颅颅芦芦芦篓篓篓搂搂搂搂搂搂陇陇陇陇陇陇拢拢拢楼楼楼楼楼楼陋陋陋炉炉炉麓麓麓陆陆陆脝脝脝脩脩脩脺脺脺氓氓氓茂茂茂枚枚枚煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉枚枚枚铆铆铆芒芒芒脪脪脪脛脛脛麓麓麓娄娄娄聻聻聻聶聶聶聳聳聳聶聶聶聻聻聻楼楼楼颅颅颅碌碌碌驴驴驴脝脝脝脥脥脥脮脮脮脴脴脴脺脺脺脽脽脽脽脽脽脿脿脿谩谩谩茫茫茫芒芒芒盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫氓氓氓茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫谩谩谩茫茫茫脿脿脿谩谩谩脼脼脼脻脻脻脷脷脷脳脳脳脩脩脩脦脦脦脡脡脡脜脜脜脌脌脌录录录路路路麓麓麓炉炉炉颅颅颅漏漏漏漏漏漏篓篓篓搂搂搂娄娄娄搂搂搂漏漏漏炉炉炉鲁鲁鲁禄禄禄脛脛脛脧脧脧脹脹脹氓氓氓卯卯卯玫玫玫煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤么么么锚锚锚脻脻脻脤脤脤禄禄禄掳掳掳拢拢拢聸聸聸聵聵聵職職職聺聺聺陇陇陇庐庐庐鹿鹿鹿脗脗脗脦脦脦脰脰脰脺脺脺脿脿脿忙忙忙茅茅茅毛毛毛矛矛矛铆铆铆铆铆铆茂茂茂茂茂茂冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒铆铆铆铆铆铆毛毛毛茅茅茅忙忙忙茫茫茫芒芒芒脽脽脽脽脽脽脵脵脵脫脫脫脧脧脧脤脤脤脜脜脜脕脕脕录录录赂赂赂鲁鲁鲁卤卤卤庐庐庐炉炉炉卢卢卢庐庐庐庐庐庐鲁鲁鲁路路路驴驴驴脟脟脟脩脩脩脺脺脺氓氓氓卯卯卯玫玫玫煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤貌貌貌茅茅茅脹脹脹脢脢脢潞潞潞芦芦芦隆隆隆職職職聶聶聶聹聹聹拢拢拢庐庐庐禄禄禄脟脟脟脫脫脫脹脹脹盲盲盲猫猫猫卯卯卯冒冒冒么么么玫玫玫梅梅梅枚枚枚酶酶酶梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉枚枚枚酶酶酶玫玫玫么么么貌貌貌帽帽帽矛矛矛毛毛毛毛毛毛茅茅茅忙忙忙茫茫茫盲盲盲脼脼脼脹脹脹脮脮脮脨脨脨脡脡脡脝脝脝脕脕脕戮戮戮禄禄禄禄禄禄路路路鹿鹿鹿露露露禄禄禄驴驴驴脝脝脝脤脤脤脳脳脳脽脽脽茅茅茅冒冒冒梅梅梅煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤貌貌貌猫猫猫脵脵脵脡脡脡鹿鹿鹿卢卢卢垄垄垄聸聸聸聸聸聸聽聽聽芦芦芦路路路脟脟脟脫脫脫脼脼脼茅茅茅冒冒冒贸贸贸梅梅梅煤煤煤没没没眉眉眉眉眉眉镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉眉眉眉煤煤煤霉霉霉枚枚枚贸贸贸冒冒冒茂茂茂茂茂茂毛毛毛毛毛毛矛矛矛锚锚锚锚锚锚锚锚锚莽莽莽茫茫茫脼脼脼脷脷脷脰脰脰脫脫脫脧脧脧脣脣脣脠脠脠脟脟脟脝脝脝脝脝脝脠脠脠脤脤脤脨脨脨脳脳脳脽脽脽忙忙忙铆铆铆么么么霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉貌貌貌莽莽莽脵脵脵脣脣脣鹿鹿鹿庐庐庐垄垄垄聺聺聺聻聻聻陇陇陇庐庐庐脌脌脌脧脧脧脹脹脹莽莽莽冒冒冒酶酶酶没没没眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤梅梅梅贸贸贸卯卯卯毛毛毛茅茅茅茅茅茅茅茅茅猫猫猫锚锚锚矛矛矛茂茂茂茂茂茂卯卯卯卯卯卯毛毛毛猫猫猫茫茫茫谩谩谩脻脻脻脷脷脷脴脴脴脳脳脳脮脮脮脮脮脮脮脮脮脵脵脵脺脺脺谩谩谩忙忙忙矛矛矛貌貌貌梅梅梅煤煤煤媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没贸贸贸猫猫猫脺脺脺脢脢脢禄禄禄卢卢卢拢拢拢聽聽聽隆隆隆娄娄娄麓麓麓脕脕脕脭脭脭谩谩谩冒冒冒酶酶酶镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅帽帽帽矛矛矛莽莽莽芒芒芒脼脼脼脺脺脺脼脼脼脿脿脿盲盲盲莽莽莽毛毛毛冒冒冒貌貌貌贸贸贸貌貌貌貌貌貌茂茂茂矛矛矛锚锚锚茅茅茅氓氓氓盲盲盲芒芒芒芒芒芒芒芒芒盲盲盲忙忙忙锚锚锚卯卯卯贸贸贸梅梅梅煤煤煤眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没贸贸贸锚锚锚脼脼脼脤脤脤录录录掳掳掳楼楼楼聽聽聽楼楼楼陋陋陋碌碌碌脗脗脗脭脭脭茫茫茫帽帽帽煤煤煤每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没酶酶酶贸贸贸矛矛矛忙忙忙脻脻脻脴脴脴脫脫脫脨脨脨脩脩脩脫脫脫脳脳脳脼脼脼芒芒芒锚锚锚冒冒冒贸贸贸枚枚枚梅梅梅酶酶酶枚枚枚贸贸贸么么么冒冒冒冒冒冒铆铆铆茂茂茂卯卯卯冒冒冒冒冒冒贸贸贸玫玫玫酶酶酶煤煤煤眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉玫玫玫毛毛毛脽脽脽脧脧脧脌脌脌虏虏虏篓篓篓垄垄垄垄垄垄陋陋陋麓麓麓脙脙脙脩脩脩茫茫茫冒冒冒酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤梅梅梅冒冒冒猫猫猫脽脽脽脰脰脰脦脦脦脝脝脝脜脜脜脗脗脗脛脛脛脠脠脠脧脧脧脴脴脴脼脼脼猫猫猫冒冒冒梅梅梅酶酶酶没没没没没没没没没霉霉霉霉霉霉梅梅梅酶酶酶枚枚枚梅梅梅枚枚枚酶酶酶酶酶酶煤煤煤没没没媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅卯卯卯芒芒芒脫脫脫脙脙脙碌碌碌卢卢卢陇陇陇拢拢拢篓篓篓虏虏虏脕脕脕脩脩脩脽脽脽毛毛毛枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤玫玫玫铆铆铆氓氓氓脷脷脷脧脧脧脜脜脜驴驴驴鹿鹿鹿露露露路路路禄禄禄脕脕脕脢脢脢脪脪脪脼脼脼莽莽莽冒冒冒梅梅梅没没没镁镁镁镁镁镁镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒眉眉眉眉眉眉眉眉眉媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉茂茂茂忙忙忙脴脴脴脟脟脟赂赂赂颅颅颅搂搂搂拢拢拢娄娄娄炉炉炉录录录脡脡脡脷脷脷莽莽莽帽帽帽霉霉霉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤么么么矛矛矛茫茫茫脳脳脳脥脥脥脗脗脗鹿鹿鹿虏虏虏颅颅颅卢卢卢炉炉炉碌碌碌戮戮戮脟脟脟脩脩脩脽脽脽茅茅茅貌貌貌酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每煤煤煤貌貌貌茅茅茅脺脺脺脥脥脥录录录掳掳掳搂搂搂陇陇陇楼楼楼卢卢卢路路路脜脜脜脫脫脫芒芒芒铆铆铆梅梅梅眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤玫玫玫铆铆铆茫茫茫脴脴脴脥脥脥脕脕脕露露露炉炉炉篓篓篓搂搂搂娄娄娄陋陋陋虏虏虏陆陆陆脟脟脟脮脮脮茫茫茫铆铆铆玫玫玫煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉玫玫玫铆铆铆脿脿脿脨脨脨脙脙脙鲁鲁鲁芦芦芦陇陇陇陇陇陇漏漏漏虏虏虏戮戮戮脤脤脤脺脺脺茅茅茅貌貌貌没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没枚枚枚冒冒冒忙忙忙脹脹脹脧脧脧脛脛脛路路路炉炉炉漏漏漏陇陇陇拢拢拢陇陇陇芦芦芦鲁鲁鲁脕脕脕脥脥脥脺脺脺莽莽莽帽帽帽酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶冒冒冒盲盲盲脴脴脴脠脠脠潞潞潞卢卢卢搂搂搂拢拢拢娄娄娄颅颅颅露露露脟脟脟脮脮脮芒芒芒矛矛矛梅梅梅没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉贸贸贸锚锚锚芒芒芒脳脳脳脢脢脢陆陆陆鲁鲁鲁芦芦芦楼楼楼聼聼聼聼聼聼搂搂搂颅颅颅鹿鹿鹿脜脜脜脮脮脮盲盲盲卯卯卯枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤么么么茅茅茅脺脺脺脥脥脥驴驴驴虏虏虏篓篓篓陇陇陇楼楼楼漏漏漏掳掳掳戮戮戮脦脦脦脹脹脹莽莽莽貌貌貌酶酶酶媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒煤煤煤梅梅梅帽帽帽猫猫猫脽脽脽脫脫脫脜脜脜鹿鹿鹿炉炉炉娄娄娄隆隆隆聻聻聻垄垄垄篓篓篓鲁鲁鲁脗脗脗脧脧脧脽脽脽锚锚锚么么么没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉枚枚枚卯卯卯谩谩谩脭脭脭脜脜脜露露露卢卢卢搂搂搂拢拢拢娄娄娄卢卢卢路路路脝脝脝脪脪脪脽脽脽锚锚锚么么么没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉霉霉霉玫玫玫帽帽帽莽莽莽脺脺脺脩脩脩脜脜脜路路路卢卢卢拢拢拢隆隆隆隆隆隆搂搂搂掳掳掳陆陆陆脥脥脥脺脺脺茅茅茅么么么霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉霉霉霉帽帽帽忙忙忙脹脹脹脤脤脤陆陆陆虏虏虏篓篓篓陇陇陇拢拢拢篓篓篓炉炉炉录录录脠脠脠脰脰脰茫茫茫矛矛矛么么么煤煤煤镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤枚枚枚铆铆铆忙忙忙脹脹脹脤脤脤戮戮戮虏虏虏搂搂搂隆隆隆垄垄垄陇陇陇炉炉炉禄禄禄脣脣脣脴脴脴忙忙忙帽帽帽霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没玫玫玫铆铆铆谩谩谩脩脩脩脛脛脛路路路芦芦芦拢拢拢垄垄垄娄娄娄漏漏漏虏虏虏驴驴驴脣脣脣脵脵脵盲盲盲矛矛矛贸贸贸酶酶酶眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没枚枚枚毛毛毛芒芒芒脭脭脭脝脝脝路路路卢卢卢拢拢拢聽聽聽楼楼楼卢卢卢鹿鹿鹿脡脡脡脵脵脵忙忙忙貌貌貌酶酶酶镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅冒冒冒莽莽莽脹脹脹脤脤脤录录录虏虏虏漏漏漏拢拢拢垄垄垄娄娄娄芦芦芦碌碌碌脌脌脌脦脦脦脷脷脷脿脿脿茅茅茅冒冒冒枚枚枚霉霉霉没没没眉眉眉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁煤煤煤卯卯卯茫茫茫脮脮脮脟脟脟赂赂赂卢卢卢陇陇陇垄垄垄楼楼楼炉炉炉潞潞潞脠脠脠脰脰脰氓氓氓茂茂茂霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没么么么矛矛矛脿脿脿脫脫脫脜脜脜路路路颅颅颅陇陇陇拢拢拢隆隆隆娄娄娄颅颅颅露露露脌脌脌脤脤脤脮脮脮脼脼脼茫茫茫毛毛毛茂茂茂贸贸贸梅梅梅酶酶酶眉眉眉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒眉眉眉霉霉霉铆铆铆茫茫茫脰脰脰脟脟脟潞潞潞颅颅颅楼楼楼隆隆隆娄娄娄颅颅颅赂赂赂脡脡脡脵脵脵忙忙忙帽帽帽酶酶酶镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒梅梅梅帽帽帽猫猫猫脺脺脺脣脣脣戮戮戮鲁鲁鲁芦芦芦拢拢拢聼聼聼聼聼聼楼楼楼卢卢卢鲁鲁鲁陆陆陆脜脜脜脨脨脨脳脳脳脻脻脻茫茫茫锚锚锚铆铆铆帽帽帽玫玫玫霉霉霉没没没媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁眉眉眉眉眉眉没没没霉霉霉梅梅梅冒冒冒茅茅茅脼脼脼脪脪脪脗脗脗碌碌碌芦芦芦陇陇陇垄垄垄娄娄娄炉炉炉禄禄禄脣脣脣脵脵脵莽莽莽帽帽帽霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没枚枚枚卯卯卯芒芒芒脰脰脰脟脟脟潞潞潞炉炉炉楼楼楼隆隆隆聼聼聼聻聻聻垄垄垄漏漏漏炉炉炉路路路驴驴驴脠脠脠脥脥脥脰脰脰脺脺脺谩谩谩猫猫猫铆铆铆貌貌貌玫玫玫霉霉霉眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉眉眉眉煤煤煤没没没霉霉霉霉霉霉酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅酶酶酶枚枚枚梅梅梅玫玫玫贸贸贸茂茂茂铆铆铆莽莽莽脺脺脺脰脰脰脣脣脣戮戮戮掳掳掳娄娄娄拢拢拢拢拢拢篓篓篓掳掳掳陆陆陆脦脦脦脻脻脻茅茅茅么么么霉霉霉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒霉霉霉貌貌貌锚锚锚脼脼脼脩脩脩脗脗脗碌碌碌颅颅颅陇陇陇聽聽聽聹聹聹聺聺聺隆隆隆陇陇陇漏漏漏虏虏虏赂赂赂陆陆陆脜脜脜脤脤脤脭脭脭脹脹脹芒芒芒茅茅茅铆铆铆帽帽帽枚枚枚煤煤煤眉眉眉媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒眉眉眉眉眉眉没没没霉霉霉酶酶酶枚枚枚玫玫玫贸贸贸贸贸贸帽帽帽帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂茂茂茂铆铆铆铆铆铆毛毛毛锚锚锚猫猫猫忙忙忙脿脿脿脷脷脷脫脫脫脡脡脡戮戮戮麓麓麓芦芦芦陇陇陇拢拢拢垄垄垄陋陋陋鲁鲁鲁脕脕脕脩脩脩脽脽脽毛毛毛么么么没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉梅梅梅帽帽帽氓氓氓脷脷脷脥脥脥戮戮戮麓麓麓漏漏漏垄垄垄聺聺聺聺聺聺職職職聼聼聼隆隆隆娄娄娄陋陋陋掳掳掳露露露录录录脛脛脛脤脤脤脪脪脪脹脹脹谩谩谩猫猫猫矛矛矛帽帽帽贸贸贸梅梅梅梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅酶酶酶梅梅梅梅梅梅梅梅梅贸贸贸貌貌貌冒冒冒卯卯卯矛矛矛猫猫猫莽莽莽氓氓氓盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲芒芒芒茫茫茫谩谩谩脿脿脿脼脼脼脽脽脽脹脹脹脳脳脳脫脫脫脣脣脣脙脙脙陆陆陆虏虏虏颅颅颅娄娄娄隆隆隆垄垄垄娄娄娄颅颅颅赂赂赂脟脟脟脰脰脰芒芒芒茂茂茂枚枚枚没没没每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每没没没么么么铆铆铆茫茫茫脳脳脳脡脡脡录录录鲁鲁鲁漏漏漏拢拢拢聺聺聺聹聹聹聸聸聸聺聺聺聼聼聼隆隆隆娄娄娄漏漏漏掳掳掳露露露戮戮戮脜脜脜脢脢脢脭脭脭脷脷脷脿脿脿忙忙忙锚锚锚铆铆铆茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂卯卯卯铆铆铆矛矛矛锚锚锚猫猫猫忙忙忙芒芒芒谩谩谩脼脼脼脺脺脺脹脹脹脳脳脳脴脴脴脮脮脮脳脳脳脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脮脮脮脫脫脫脫脫脫脩脩脩脥脥脥脢脢脢脟脟脟脕脕脕陆陆陆赂赂赂掳掳掳芦芦芦楼楼楼垄垄垄隆隆隆垄垄垄篓篓篓虏虏虏脌脌脌脤脤脤脹脹脹莽莽莽貌貌貌霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒酶酶酶么么么锚锚锚芒芒芒脫脫脫脝脝脝戮戮戮虏虏虏芦芦芦拢拢拢隆隆隆聹聹聹聺聺聺聹聹聹聻聻聻聺聺聺陇陇陇娄娄娄漏漏漏卤卤卤露露露戮戮戮脜脜脜脤脤脤脫脫脫脵脵脵脻脻脻脽脽脽茫茫茫芒芒芒盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫脿脿脿脿脿脿脼脼脼脺脺脺脵脵脵脰脰脰脨脨脨脦脦脦脤脤脤脣脣脣脡脡脡脠脠脠脟脟脟脝脝脝脝脝脝脟脟脟脜脜脜脝脝脝脜脜脜脜脜脜脙脙脙脙脙脙脌脌脌陆陆陆录录录赂赂赂麓麓麓掳掳掳卢卢卢陋陋陋拢拢拢垄垄垄隆隆隆陇陇陇篓篓篓炉炉炉鹿鹿鹿脝脝脝脫脫脫谩谩谩铆铆铆玫玫玫煤煤煤媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉酶酶酶貌貌貌锚锚锚脿脿脿脮脮脮脢脢脢驴驴驴赂赂赂掳掳掳陋陋陋楼楼楼隆隆隆聽聽聽聽聽聽聻聻聻隆隆隆隆隆隆拢拢拢搂搂搂颅颅颅卤卤卤赂赂赂禄禄禄脜脜脜脠脠脠脦脦脦脩脩脩脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脮脮脮脫脫脫脭脭脭脫脫脫脫脫脫脪脪脪脩脩脩脦脦脦脢脢脢脢脢脢脜脜脜脙脙脙驴驴驴录录录鹿鹿鹿潞潞潞露露露鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌路路路麓麓麓麓麓麓鲁鲁鲁卤卤卤掳掳掳庐庐庐卢卢卢陋陋陋娄娄娄搂搂搂垄垄垄拢拢拢隆隆隆楼楼楼篓篓篓掳掳掳赂赂赂脗脗脗脧脧脧脺脺脺莽莽莽帽帽帽酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没梅梅梅貌貌貌毛毛毛谩谩谩脳脳脳脧脧脧脜脜脜录录录赂赂赂卤卤卤颅颅颅陋陋陋拢拢拢陇陇陇聽聽聽隆隆隆聽聽聽拢拢拢楼楼楼陋陋陋卢卢卢掳掳掳碌碌碌潞潞潞戮戮戮脌脌脌脛脛脛脛脛脛脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脛脛脛脗脗脗脕脕脕脕脕脕戮戮戮录录录鹿鹿鹿露露露麓麓麓掳掳掳掳掳掳颅颅颅颅颅颅芦芦芦卢卢卢芦芦芦卢卢卢卢卢卢颅颅颅卢卢卢芦芦芦陋陋陋篓篓篓篓篓篓搂搂搂搂搂搂娄娄娄娄娄娄楼楼楼拢拢拢楼楼楼陇陇陇娄娄娄篓篓篓芦芦芦掳掳掳赂赂赂脌脌脌脤脤脤脴脴脴茫茫茫卯卯卯枚枚枚没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没霉霉霉貌貌貌矛矛矛盲盲盲脺脺脺脰脰脰脦脦脦脟脟脟驴驴驴潞潞潞碌碌碌炉炉炉芦芦芦篓篓篓楼楼楼垄垄垄陇陇陇隆隆隆楼楼楼楼楼楼篓篓篓陋陋陋庐庐庐卤卤卤鲁鲁鲁麓麓麓路路路露露露露露露碌碌碌碌碌碌麓麓麓麓麓麓麓麓麓虏虏虏鲁鲁鲁卤卤卤掳掳掳庐庐庐庐庐庐芦芦芦芦芦芦漏漏漏搂搂搂搂搂搂搂搂搂楼楼楼娄娄娄楼楼楼搂搂搂娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇拢拢拢拢拢拢楼楼楼楼楼楼搂搂搂娄娄娄漏漏漏庐庐庐掳掳掳露露露陆陆陆脛脛脛脦脦脦脴脴脴芒芒芒矛矛矛玫玫玫霉霉霉媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉酶酶酶玫玫玫茂茂茂锚锚锚茫茫茫脼脼脼脴脴脴脩脩脩脢脢脢脙脙脙驴驴驴潞潞潞虏虏虏炉炉炉陋陋陋搂搂搂娄娄娄垄垄垄拢拢拢陇陇陇娄娄娄楼楼楼篓篓篓娄娄娄漏漏漏漏漏漏芦芦芦陋陋陋陋陋陋陋陋陋陋陋陋陋陋陋漏漏漏芦芦芦漏漏漏陋陋陋篓篓篓篓篓篓娄娄娄搂搂搂陇陇陇陇陇陇拢拢拢拢拢拢陇陇陇陇陇陇楼楼楼楼楼楼搂搂搂娄娄娄娄娄娄娄娄娄楼楼楼娄娄娄楼楼楼娄娄娄娄娄娄搂搂搂搂搂搂漏漏漏芦芦芦卢卢卢掳掳掳虏虏虏赂赂赂戮戮戮脗脗脗脢脢脢脪脪脪脹脹脹芒芒芒矛矛矛贸贸贸酶酶酶眉眉眉每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤枚枚枚貌貌貌铆铆铆茅茅茅氓氓氓脿脿脿脷脷脷脰脰脰脧脧脧脡脡脡脗脗脗录录录露露露卤卤卤卢卢卢搂搂搂楼楼楼陇陇陇拢拢拢拢拢拢拢拢拢拢拢拢楼楼楼陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢拢拢拢陇陇陇楼楼楼楼楼楼楼楼楼楼楼楼楼楼楼搂搂搂楼楼楼篓篓篓篓篓篓篓篓篓漏漏漏陋陋陋芦芦芦卢卢卢颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦芦芦芦颅颅颅卢卢卢卤卤卤虏虏虏露露露赂赂赂陆陆陆脕脕脕脝脝脝脣脣脣脩脩脩脴脴脴脿脿脿莽莽莽茂茂茂贸贸贸酶酶酶没没没镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒眉眉眉霉霉霉梅梅梅么么么冒冒冒铆铆铆猫猫猫茫茫茫脻脻脻脷脷脷脫脫脫脤脤脤脗脗脗录录录露露露卤卤卤颅颅颅漏漏漏搂搂搂娄娄娄娄娄娄楼楼楼娄娄娄陇陇陇楼楼楼陇陇陇陇陇陇拢拢拢拢拢拢垄垄垄拢拢拢拢拢拢楼楼楼楼楼楼搂搂搂搂搂搂漏漏漏陋陋陋卢卢卢颅颅颅掳掳掳炉炉炉卤卤卤虏虏虏露露露麓麓麓赂赂赂碌碌碌鹿鹿鹿碌碌碌鹿鹿鹿碌碌碌赂赂赂露露露潞潞潞潞潞潞录录录脌脌脌脙脙脙脟脟脟脤脤脤脨脨脨脮脮脮脷脷脷脼脼脼氓氓氓毛毛毛茂茂茂玫玫玫霉霉霉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每眉眉眉没没没霉霉霉枚枚枚貌貌貌卯卯卯锚锚锚忙忙忙脽脽脽脵脵脵脩脩脩脢脢脢脙脙脙戮戮戮赂赂赂鲁鲁鲁掳掳掳炉炉炉颅颅颅卢卢卢卢卢卢芦芦芦芦芦芦陋陋陋陋陋陋芦芦芦陋陋陋芦芦芦陋陋陋庐庐庐颅颅颅炉炉炉颅颅颅卤卤卤虏虏虏麓麓麓碌碌碌潞潞潞禄禄禄陆陆陆戮戮戮脙脙脙脗脗脗脛脛脛脜脜脜脝脝脝脜脜脜脟脟脟脝脝脝脟脟脟脟脟脟脠脠脠脡脡脡脣脣脣脥脥脥脧脧脧脪脪脪脳脳脳脹脹脹脿脿脿茫茫茫猫猫猫毛毛毛帽帽帽么么么梅梅梅没没没媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤酶酶酶玫玫玫冒冒冒毛毛毛忙忙忙脿脿脿脷脷脷脩脩脩脤脤脤脟脟脟脕脕脕驴驴驴录录录鹿鹿鹿鹿鹿鹿赂赂赂路路路露露露露露露碌碌碌碌碌碌麓麓麓碌碌碌麓麓麓露露露路路路潞潞潞潞潞潞录录录脌脌脌脗脗脗脜脜脜脠脠脠脣脣脣脦脦脦脨脨脨脪脪脪脫脫脫脮脮脮脮脮脮脳脳脳脮脮脮脳脳脳脭脭脭脳脳脳脭脭脭脴脴脴脴脴脴脹脹脹脺脺脺脽脽脽谩谩谩茫茫茫莽莽莽毛毛毛铆铆铆貌貌貌么么么梅梅梅霉霉霉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒煤煤煤酶酶酶玫玫玫帽帽帽毛毛毛忙忙忙谩谩谩脹脹脹脮脮脮脨脨脨脥脥脥脡脡脡脠脠脠脟脟脟脝脝脝脝脝脝脜脜脜脜脜脜脜脜脜脛脛脛脛脛脛脛脛脛脝脝脝脝脝脝脟脟脟脢脢脢脢脢脢脤脤脤脦脦脦脩脩脩脳脳脳脵脵脵脺脺脺脼脼脼脽脽脽脿脿脿谩谩谩茫茫茫芒芒芒盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲茫茫茫盲盲盲氓氓氓猫猫猫茅茅茅矛矛矛卯卯卯冒冒冒貌貌貌玫玫玫霉霉霉煤煤煤没没没眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁没没没酶酶酶玫玫玫帽帽帽卯卯卯莽莽莽茫茫茫脼脼脼脼脼脼脵脵脵脷脷脷脳脳脳脴脴脴脰脰脰脰脰脰脮脮脮脮脮脮脮脮脮脭脭脭脮脮脮脮脮脮脮脮脮脳脳脳脴脴脴脹脹脹脺脺脺脿脿脿脿脿脿盲盲盲莽莽莽猫猫猫毛毛毛毛毛毛铆铆铆铆铆铆冒冒冒茂茂茂帽帽帽茂茂茂帽帽帽茂茂茂冒冒冒茂茂茂帽帽帽帽帽帽贸贸贸么么么玫玫玫枚枚枚酶酶酶霉霉霉眉眉眉媒媒媒镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每媒媒媒没没没霉霉霉枚枚枚貌貌貌茂茂茂矛矛矛茅茅茅莽莽莽忙忙忙盲盲盲忙忙忙茫茫茫盲盲盲芒芒芒茫茫茫芒芒芒茫茫茫茫茫茫盲盲盲氓氓氓氓氓氓莽莽莽猫猫猫茅茅茅锚锚锚铆铆铆茂茂茂冒冒冒贸贸贸玫玫玫梅梅梅枚枚枚酶酶酶梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉霉霉霉没没没煤煤煤眉眉眉眉眉眉镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁眉眉眉煤煤煤酶酶酶梅梅梅玫玫玫贸贸贸貌貌貌帽帽帽冒冒冒冒冒冒冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒茂茂茂冒冒冒冒冒冒冒冒冒冒冒冒貌貌貌贸贸贸么么么枚枚枚枚枚枚霉霉霉霉霉霉没没没眉眉眉眉眉眉镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁媒媒媒没没没没没没煤煤煤煤煤煤酶酶酶霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉梅梅梅霉霉霉酶酶酶霉霉霉没没没没没没眉眉眉眉眉眉媒媒媒媒媒媒每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每镁镁镁镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒镁镁镁媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒媒镁镁镁镁镁镁每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每每 \ No newline at end of file diff --git a/examples/templates/Makefile b/examples/templates/Makefile deleted file mode 100644 index bce05ec..0000000 --- a/examples/templates/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SUBDIRS:= `ls | egrep -v '^(CVS)$$'` -all: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done; -clean: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done; -install: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i install || { exit 1;} fi; done; diff --git a/examples/templates/application/Makefile b/examples/templates/application/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/templates/application/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/templates/application/README.md b/examples/templates/application/README.md deleted file mode 100644 index 8a43ac1..0000000 --- a/examples/templates/application/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# template - -This is a template for starting new 3DS libctru projects. diff --git a/examples/templates/application/source/main.c b/examples/templates/application/source/main.c deleted file mode 100644 index 633c7ff..0000000 --- a/examples/templates/application/source/main.c +++ /dev/null @@ -1,37 +0,0 @@ -#include - -#include <3ds.h> - -int main() -{ - gfxInitDefault(); - //gfxSet3D(true); // uncomment if using stereoscopic 3D - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - hidScanInput(); - - // Your code goes here - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - // Example rendering code that displays a white pixel - // Please note that the 3DS screens are sideways (thus 240x400 and 240x320) - u8* fb = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); - memset(fb, 0, 240*400*3); - fb[3*(10+10*240)] = 0xFF; - fb[3*(10+10*240)+1] = 0xFF; - fb[3*(10+10*240)+2] = 0xFF; - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - } - - gfxExit(); - return 0; -} diff --git a/examples/templates/library/Makefile b/examples/templates/library/Makefile deleted file mode 100644 index d982f90..0000000 --- a/examples/templates/library/Makefile +++ /dev/null @@ -1,122 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -#--------------------------------------------------------------------------------- -TARGET := $(shell basename $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions - -ASFLAGS := -g $(ARCH) - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/lib/lib$(TARGET).a - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -lib: - @[ -d $@ ] || mkdir -p $@ - -$(BUILD): lib - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) lib - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT) : $(OFILES) - -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/templates/library/README.md b/examples/templates/library/README.md deleted file mode 100644 index 8089b6e..0000000 --- a/examples/templates/library/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# template - -This is a template for starting new 3DS library projects. diff --git a/examples/templates/library/include/templatelib.h b/examples/templates/library/include/templatelib.h deleted file mode 100644 index 1d02448..0000000 --- a/examples/templates/library/include/templatelib.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _templatelib_h_ -#define _templatelib_h_ - -int myLibFunction(); - -#endif // _templatelib_h_ diff --git a/examples/templates/library/source/templatelib.c b/examples/templates/library/source/templatelib.c deleted file mode 100644 index 570d9e5..0000000 --- a/examples/templates/library/source/templatelib.c +++ /dev/null @@ -1,6 +0,0 @@ -int myLibFunction() { - - - return 42; - -} diff --git a/examples/threads/Makefile b/examples/threads/Makefile deleted file mode 100644 index bce05ec..0000000 --- a/examples/threads/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SUBDIRS:= `ls | egrep -v '^(CVS)$$'` -all: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i || { exit 1;} fi; done; -clean: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i clean || { exit 1;} fi; done; -install: - @for i in $(SUBDIRS); do if test -e $$i/Makefile ; then $(MAKE) -C $$i install || { exit 1;} fi; done; diff --git a/examples/threads/event/Makefile b/examples/threads/event/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/threads/event/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/threads/event/source/main.c b/examples/threads/event/source/main.c deleted file mode 100644 index 7d75cee..0000000 --- a/examples/threads/event/source/main.c +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include -#include -#include - - -#include <3ds.h> - -Thread threadHandle; -Handle threadRequest; - -#define STACKSIZE (4 * 1024) - -volatile bool runThread = true; - -volatile int threadcount=0; - -void threadMain(void *arg) { - - while(runThread) { - svcWaitSynchronization(threadRequest, U64_MAX); - svcClearEvent(threadRequest); - - threadcount++; - } -} - -int main(int argc, char** argv) -{ - gfxInitDefault(); - consoleInit(GFX_TOP, NULL); - - svcCreateEvent(&threadRequest,0); - threadHandle = threadCreate(threadMain, 0, STACKSIZE, 0x3f, -2, true); - - printf("thread handle: %p\n", threadHandle); - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - hidScanInput(); - - printf("\x1b[5;0H"); - printf("thread counter = %d\n",threadcount); - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - if (kDown & KEY_A) - svcSignalEvent(threadRequest); - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - } - - // tell thread to exit - runThread = false; - - // signal the thread and wait for it to exit - svcSignalEvent(threadRequest); - threadJoin(threadHandle, U64_MAX); - - // close event handle - svcCloseHandle(threadRequest); - - gfxExit(); - return 0; -} diff --git a/examples/threads/thread-basic/Makefile b/examples/threads/thread-basic/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/threads/thread-basic/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/threads/thread-basic/source/main.c b/examples/threads/thread-basic/source/main.c deleted file mode 100644 index af4011e..0000000 --- a/examples/threads/thread-basic/source/main.c +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include -#include <3ds.h> - -#define NUMTHREADS 3 -#define STACKSIZE (4 * 1024) - -volatile bool runThreads = true; - -void threadMain(void *arg) -{ - u64 sleepDuration = 1000000ULL * (u32)arg; - int i = 0; - while (runThreads) - { - printf("thread%d says %d\n", (int)arg, i++); - svcSleepThread(sleepDuration); - } -} - -int main(int argc, char** argv) -{ - gfxInitDefault(); - consoleInit(GFX_TOP, NULL); - - Thread threads[NUMTHREADS]; - int i; - s32 prio = 0; - svcGetThreadPriority(&prio, CUR_THREAD_HANDLE); - printf("Main thread prio: 0x%lx\n", prio); - - for (i = 0; i < NUMTHREADS; i ++) - { - // The priority of these child threads must be higher (aka the value is lower) than that - // of the main thread, otherwise there is thread starvation due to stdio being locked. - threads[i] = threadCreate(threadMain, (void*)((i+1)*250), STACKSIZE, prio-1, -2, false); - printf("created thread %d: %p\n", i, threads[i]); - } - - // Main loop - while (aptMainLoop()) - { - gspWaitForVBlank(); - hidScanInput(); - - u32 kDown = hidKeysDown(); - if (kDown & KEY_START) - break; // break in order to return to hbmenu - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - } - - // tell threads to exit & wait for them to exit - runThreads = false; - for (i = 0; i < NUMTHREADS; i ++) - { - threadJoin(threads[i], U64_MAX); - threadFree(threads[i]); - } - - gfxExit(); - return 0; -} diff --git a/examples/time/rtc/Makefile b/examples/time/rtc/Makefile deleted file mode 100644 index 4f5cda2..0000000 --- a/examples/time/rtc/Makefile +++ /dev/null @@ -1,196 +0,0 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -TOPDIR ?= $(CURDIR) -include $(DEVKITARM)/3ds_rules - -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# -# NO_SMDH: if set to anything, no SMDH file is generated. -# ROMFS is the directory which contains the RomFS, relative to the Makefile (Optional) -# APP_TITLE is the name of the app stored in the SMDH file (Optional) -# APP_DESCRIPTION is the description of the app stored in the SMDH file (Optional) -# APP_AUTHOR is the author of the app stored in the SMDH file (Optional) -# ICON is the filename of the icon (.png), relative to the project folder. -# If not set, it attempts to use one of the following (in this order): -# - .png -# - icon.png -# - /default_icon.png -#--------------------------------------------------------------------------------- -TARGET := $(notdir $(CURDIR)) -BUILD := build -SOURCES := source -DATA := data -INCLUDES := include -#ROMFS := romfs - -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft - -CFLAGS := -g -Wall -O2 -mword-relocations \ - -fomit-frame-pointer -ffunction-sections \ - $(ARCH) - -CFLAGS += $(INCLUDE) -DARM11 -D_3DS - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 - -ASFLAGS := -g $(ARCH) -LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) - -LIBS := -lctru -lm - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := $(CTRULIB) - - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT := $(CURDIR)/$(TARGET) -export TOPDIR := $(CURDIR) - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -PICAFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.v.pica))) -SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist))) -BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- - -export OFILES := $(addsuffix .o,$(BINFILES)) \ - $(PICAFILES:.v.pica=.shbin.o) $(SHLISTFILES:.shlist=.shbin.o) \ - $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -ifeq ($(strip $(ICON)),) - icons := $(wildcard *.png) - ifneq (,$(findstring $(TARGET).png,$(icons))) - export APP_ICON := $(TOPDIR)/$(TARGET).png - else - ifneq (,$(findstring icon.png,$(icons))) - export APP_ICON := $(TOPDIR)/icon.png - endif - endif -else - export APP_ICON := $(TOPDIR)/$(ICON) -endif - -ifeq ($(strip $(NO_SMDH)),) - export _3DSXFLAGS += --smdh=$(CURDIR)/$(TARGET).smdh -endif - -ifneq ($(ROMFS),) - export _3DSXFLAGS += --romfs=$(CURDIR)/$(ROMFS) -endif - -.PHONY: $(BUILD) clean all - -#--------------------------------------------------------------------------------- -all: $(BUILD) - -$(BUILD): - @[ -d $@ ] || mkdir -p $@ - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf - - -#--------------------------------------------------------------------------------- -else - -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -ifeq ($(strip $(NO_SMDH)),) -$(OUTPUT).3dsx : $(OUTPUT).elf $(OUTPUT).smdh -else -$(OUTPUT).3dsx : $(OUTPUT).elf -endif - -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -# you need a rule like this for each extension you use as binary data -#--------------------------------------------------------------------------------- -%.bin.o : %.bin -#--------------------------------------------------------------------------------- - @echo $(notdir $<) - @$(bin2o) - -#--------------------------------------------------------------------------------- -# rules for assembling GPU shaders -#--------------------------------------------------------------------------------- -define shader-as - $(eval CURBIN := $(patsubst %.shbin.o,%.shbin,$(notdir $@))) - picasso -o $(CURBIN) $1 - bin2s $(CURBIN) | $(AS) -o $@ - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(CURBIN) | tr . _)`.h - echo "extern const u8" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(CURBIN) | tr . _)`.h - echo "extern const u32" `(echo $(CURBIN) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(CURBIN) | tr . _)`.h -endef - -%.shbin.o : %.v.pica %.g.pica - @echo $(notdir $^) - @$(call shader-as,$^) - -%.shbin.o : %.v.pica - @echo $(notdir $<) - @$(call shader-as,$<) - -%.shbin.o : %.shlist - @echo $(notdir $<) - @$(call shader-as,$(foreach file,$(shell cat $<),$(dir $<)/$(file))) - --include $(DEPENDS) - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- diff --git a/examples/time/rtc/source/main.c b/examples/time/rtc/source/main.c deleted file mode 100644 index 6139185..0000000 --- a/examples/time/rtc/source/main.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - RTC example made by Aurelio Mannara for ctrulib - This code was modified for the last time on: 12/13/2014 2:45 UTC+1 - - This wouldn't be possible without the amazing work done by: - -Smealum - -fincs - -WinterMute - -yellows8 - -plutoo - -mtheall - -Many others who worked on 3DS and I'm surely forgetting about -*/ - -#include <3ds.h> -#include -#include - -int main(int argc, char **argv) -{ - // Initialize services - gfxInitDefault(); - - //Initialize console on top screen. Using NULL as the second argument tells the console library to use the internal console structure as current one - consoleInit(GFX_TOP, NULL); - - printf("\x1b[29;15HPress Start to exit."); - - // Main loop - while (aptMainLoop()) - { - //Scan all the inputs. This should be done once for each frame - hidScanInput(); - - //hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame) - u32 kDown = hidKeysDown(); - - if (kDown & KEY_START) break; // break in order to return to hbmenu - - //Print current time - time_t unixTime = time(NULL); - struct tm* timeStruct = gmtime((const time_t *)&unixTime); - - int hours = timeStruct->tm_hour; - int minutes = timeStruct->tm_min; - int seconds = timeStruct->tm_sec; - int day = timeStruct->tm_mday; - int month = timeStruct->tm_mon; - int year = timeStruct->tm_year +1900; - - printf("\x1b[0;0H%02i:%02i:%02i", hours, minutes, seconds); - printf("\x1b[1;0H%02i/%02i/%04i", day, month, year); - - // Flush and swap framebuffers - gfxFlushBuffers(); - gfxSwapBuffers(); - - //Wait for VBlank - gspWaitForVBlank(); - } - - // Exit services - gfxExit(); - - return 0; -} diff --git a/exportdoc.sh b/exportdoc.sh index b70a992..9e9e480 100644 --- a/exportdoc.sh +++ b/exportdoc.sh @@ -2,6 +2,7 @@ if [ "$TRAVIS_REPO_SLUG" = "smealum/ctrulib" ] && [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ -n "$TRAVIS_TAG" ]; then git clone --branch=gh-pages --single-branch --depth 1 https://${GH_TOKEN}@github.com/$TRAVIS_REPO_SLUG docs git rm -rf docs/* +git clone --branch=master --single-branch --depth 1 https://github.com/devkitPro/3ds-examples examples cd libctru doxygen Doxyfile mv ./docs/html/* ../docs diff --git a/libctru/include/3ds.h b/libctru/include/3ds.h index 030853c..1a7b2f9 100644 --- a/libctru/include/3ds.h +++ b/libctru/include/3ds.h @@ -79,47 +79,11 @@ extern "C" { * @example graphics/printing/both-screen-text/source/main.c * @example graphics/printing/colored-text/source/main.c * @example graphics/printing/multiple-windows-text/source/main.c - + * @example graphics/gpu/fragment_light/source/main.c * @example graphics/gpu/geoshader/source/main.c - graphics/gpu/geoshader/source/gpu.h - @include graphics/gpu/geoshader/source/gpu.h - graphics/gpu/geoshader/source/gpu.c - @include graphics/gpu/geoshader/source/gpu.c - graphics/gpu/geoshader/source/3dmath.h - @include graphics/gpu/geoshader/source/3dmath.h - graphics/gpu/geoshader/source/3dmath.c - @include graphics/gpu/geoshader/source/3dmath.c - graphics/gpu/geoshader/source/vshader.pica - @include graphics/gpu/geoshader/source/vshader.pica - graphics/gpu/geoshader/source/gshader.pica - @include graphics/gpu/geoshader/source/gshader.pica - - + * @example graphics/gpu/immediate/source/main.c * @example graphics/gpu/simple_tri/source/main.c - graphics/gpu/simple_tri/source/gpu.h - @include graphics/gpu/simple_tri/source/gpu.h - graphics/gpu/simple_tri/source/gpu.c - @include graphics/gpu/simple_tri/source/gpu.c - graphics/gpu/simple_tri/source/3dmath.h - @include graphics/gpu/simple_tri/source/3dmath.h - graphics/gpu/simple_tri/source/3dmath.c - @include graphics/gpu/simple_tri/source/3dmath.c - graphics/gpu/simple_tri/source/vshader.pica - @include graphics/gpu/simple_tri/source/vshader.pica - - * @example graphics/gpu/textured_cube/source/main.c - graphics/gpu/textured_cube/source/gpu.h - @include graphics/gpu/textured_cube/source/gpu.h - graphics/gpu/textured_cube/source/gpu.c - @include graphics/gpu/textured_cube/source/gpu.c - graphics/gpu/textured_cube/source/3dmath.h - @include graphics/gpu/textured_cube/source/3dmath.h - graphics/gpu/textured_cube/source/3dmath.c - @include graphics/gpu/textured_cube/source/3dmath.c - graphics/gpu/textured_cube/source/vshader.pica - @include graphics/gpu/textured_cube/source/vshader.pica - * @example http/source/main.c * @example input/read-controls/source/main.c * @example input/touch-screen/source/main.c