20180929 first commit
This commit is contained in:
145
src/tool/backend/AV_interface.h
Normal file
145
src/tool/backend/AV_interface.h
Normal file
@@ -0,0 +1,145 @@
|
||||
#ifndef _AV_INTERFACE_H
|
||||
#define _AV_INTERFACE_H
|
||||
|
||||
#define PROTO_VERSION 3
|
||||
#define PROTO_MAGICNUM 0x5641
|
||||
|
||||
/*from papp*/
|
||||
#define MSG_DATA_META 0x31
|
||||
#define MSG_DATA_BODY 0x32
|
||||
#define MSG_DATA_TAIL 0x33
|
||||
|
||||
/*live*/
|
||||
#define MSG_LIVE_CHECK 0x41 //from sapp
|
||||
#define MSG_LIVE_RESPONS 0x42 //to sapp
|
||||
|
||||
/*from av_analyse*/
|
||||
#define MSG_RESP_CHECKRESULT 0x11 // Check Result notification
|
||||
#define MSG_RESP_REJECT 0x12 // Reject Message notification, not proc now
|
||||
#define MSG_RESP_CHARACTER 0x13 // Character notification, 1. wins ack, 2. send to sapp
|
||||
#define MSG_RESP_CHECKRESULT_ACK 0x14 //not send now
|
||||
#define MSG_PROG_SYNC 0x15 //not proc now
|
||||
|
||||
/*prog sync*/
|
||||
#define SYNC_SENDER_VIDEO_ANALYZER 0x01
|
||||
#define SYNC_SENDER_AUDIO_ANALYZER 0x02
|
||||
#define SYNC_ACTION_STOP_TO_SUBSYSTEM 0x01
|
||||
#define SYNC_ACTION_STOP_TO_MAINSYSTEM 0x02
|
||||
#define SYNC_ACTION_ELIMINATE_PROGRAM 0x03
|
||||
|
||||
/*Ԫ<><D4AA>ϢlocalIPѡ<50><EFBFBD><EEA3AC><EFBFBD><EFBFBD>*/
|
||||
#define OPT_SOURCE_IP 0x41
|
||||
|
||||
/*=================================monitor service===============================================*/
|
||||
|
||||
#define SERVICE_AUDIO_LANG 0x97 //<2F><>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_AUDIO_LANG_FULL 0x98 //<2F><>ƴװ<C6B4><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
||||
|
||||
/*=================================ack msg===============================================*/
|
||||
typedef struct msg_data_ack_s
|
||||
{
|
||||
char prog_id[8];
|
||||
uint16_t pad;
|
||||
uint64_t ack_offset:48;
|
||||
}msg_data_ack_t;
|
||||
|
||||
/*=================================data msg===============================================*/
|
||||
#define MSG_HEADER_LEN sizeof(msg_header_t)
|
||||
typedef struct msg_header_s
|
||||
{
|
||||
uint16_t magic_num;
|
||||
uint8_t version;
|
||||
uint8_t msg_type; // msg data type
|
||||
uint32_t cont_len;
|
||||
}msg_header_t; /* sizeof = 8B */
|
||||
|
||||
#define MSG_MEDIAINFO_HEAD_LEN 24
|
||||
/*Data_flag defination*/
|
||||
typedef struct msg_metainfo_s
|
||||
{
|
||||
char prog_id[8];
|
||||
char flag;
|
||||
uint8_t hitservice;
|
||||
uint64_t prog_len:48;
|
||||
uint32_t cap_IP;
|
||||
uint8_t protocol;
|
||||
uint8_t media_type;
|
||||
uint8_t data_flag;
|
||||
uint8_t opt_num;
|
||||
}msg_metainfo_t;
|
||||
|
||||
#define MSG_DATA_HEAD_LEN (sizeof(msg_data_t))
|
||||
typedef struct msg_data_s
|
||||
{
|
||||
char prog_id[8];
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint8_t pad;
|
||||
uint8_t flags;
|
||||
};
|
||||
uint16_t frag_seq;
|
||||
};
|
||||
uint64_t offset:48;
|
||||
}msg_data_t;
|
||||
|
||||
|
||||
/*==============================response msg==================================================*/
|
||||
typedef struct msg_prog_sync_s
|
||||
{
|
||||
char prog_id[8];
|
||||
uint8_t sender; //0:reserved,1: video analyzer,2:audio analyzer
|
||||
char action; //0:reserved,1:stop send to subsystem,2:stop send to main system,3:eliminate this programm
|
||||
}msg_prog_sync_t;
|
||||
|
||||
#define MSG_RESP_CHECKRESULT_LEN (sizeof(resp_checkresult_t))
|
||||
typedef struct resp_checkresult_s
|
||||
{
|
||||
char prog_id[8];
|
||||
uint8_t service;
|
||||
char level; //the level of check result
|
||||
char pad[2];
|
||||
uint32_t cfg_id; //config ID
|
||||
uint32_t file_header_size;
|
||||
uint32_t file_packet_size;
|
||||
}resp_checkresult_t;
|
||||
|
||||
typedef struct msg_log_s
|
||||
{
|
||||
char prog_id[8]; // program rule id;
|
||||
uint32_t cfg_id; // hitted rule id;
|
||||
uint32_t fount_time; // found time
|
||||
uint32_t server_ip; // server ip;
|
||||
uint32_t client_ip; // client ip;
|
||||
uint16_t server_port; // server port;
|
||||
uint16_t client_port; // client port;
|
||||
uint8_t protocol; // translation protocol num;
|
||||
uint8_t service; // service type;
|
||||
uint8_t level; // result level;
|
||||
uint8_t fd_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0<><30>ʾ<EFBFBD><CABE>̬<EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʾ<EFBFBD><CABE>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>2<EFBFBD><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>С<EFBFBD>
|
||||
}msg_log_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
RECV_RESP=0,
|
||||
RECV_RESP_WHITELIST,
|
||||
RESP_MEDIA_NOFOUND,
|
||||
RESP_REPEAT,
|
||||
RESP_AUDIO_LANG_MONITOR_NEW,
|
||||
RESP_AUDIO_LANG_MONITOR_OLD,
|
||||
RESP_SEND_BLOCK,
|
||||
|
||||
RECV_PROG_SYNC,
|
||||
RECV_PROG_SYNC_NOFOUND,
|
||||
RECV_PROG_SYNC_AUDIO_STOP,
|
||||
RECV_PROG_SYNC_VIDEO_STOP,
|
||||
RECV_PROG_SYNC_UNKNOW,
|
||||
|
||||
SEND_CONFIG_MONITOR,
|
||||
SEND_LANG_MONITOR,
|
||||
}RESP_LOG_TYPE;
|
||||
void resp_write_to_log(int type, resp_checkresult_t* check_res, void* param1, void* param2);
|
||||
|
||||
|
||||
#endif
|
||||
54
src/tool/backend/Makefile
Normal file
54
src/tool/backend/Makefile
Normal file
@@ -0,0 +1,54 @@
|
||||
vpath %.a ../lib
|
||||
vpath %.h ./inc
|
||||
|
||||
PAPP_PATH=/home/mesasoft/frag_rssb/
|
||||
|
||||
#CFLAGS = -g3 -Wall -fPIC -Werror -O
|
||||
#CFLAGS = -g3 -Wall -fPIC -O
|
||||
INCLUDES = -I./inc/
|
||||
INCLUDES += -I/usr/include/MESA/
|
||||
#INCLUDES += -I./support/hiredis-vip-master/
|
||||
CFLAGS = -g3 -Wall -fPIC -D__STDC_FORMAT_MACROS
|
||||
CFLAGS += $(INCLUDES)
|
||||
#LDDICTATOR = -Wl,-wrap,malloc -Wl,-wrap,calloc -Wl,-wrap,free -Wl,-wrap,realloc
|
||||
LDDICTATOR =
|
||||
CC = g++
|
||||
CCC = g++
|
||||
|
||||
LIB = -L./lib/
|
||||
LIB += -lMESA_handle_logger -lMESA_htable -lpthread -lrt
|
||||
LIB += ./lib/libmy_socket.a
|
||||
LIB += ./lib/usm_comm.a
|
||||
#LIB += ./lib/libdictator_debug.a
|
||||
|
||||
LIB_FILE = $(wildcard ../lib/*.a)
|
||||
SOURCES = $(wildcard *.c)
|
||||
SOURCESCPP = $(wildcard *.cpp)
|
||||
OBJECTS = $(SOURCES:.c=.o)
|
||||
OBJECTSCPP = $(SOURCESCPP:.cpp=.o)
|
||||
#DEPS = $(SOURCES:.c=.d)
|
||||
|
||||
|
||||
TARGET = backend
|
||||
|
||||
.PHONY:clean all
|
||||
|
||||
all:$(TARGET)
|
||||
|
||||
$(TARGET):$(OBJECTS) $(OBJECTSCPP) $(LIB_FILE)
|
||||
#$(CCC) -shared $(CFLAGS) $(OBJECTS) $(LIB) -o $@
|
||||
$(CCC) $(CFLAGS) $(OBJECTS) $(OBJECTSCPP) $(LIB) $(LDDICTATOR) -o $@
|
||||
|
||||
.c.o:
|
||||
#%.d:%.c
|
||||
# $(CCC) $< -MM $(INCLUDES) > $@
|
||||
|
||||
.cpp.o:
|
||||
#%.dpp:%.cpp
|
||||
$(CCC) $(CFLAGS) -c $<
|
||||
|
||||
-include $(DEPS)
|
||||
|
||||
clean :
|
||||
rm -f $(OBJECTS) $(DEPS) $(TARGET)
|
||||
|
||||
148
src/tool/backend/backend.c
Normal file
148
src/tool/backend/backend.c
Normal file
@@ -0,0 +1,148 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "MESA_handle_logger.h"
|
||||
#include "AV_interface.h"
|
||||
#include "my_socket.h"
|
||||
#include "usm_api.h"
|
||||
|
||||
#define UNIX_SOCKET_RECV 0
|
||||
#define USM_RECV 1
|
||||
|
||||
typedef struct backend_parameter_s
|
||||
{
|
||||
void* logger;
|
||||
/*resp msg*/
|
||||
int recv_data_fd;
|
||||
int loglevel;
|
||||
}backend_parameter_t;
|
||||
|
||||
backend_parameter_t g_run;
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
#if UNIX_SOCKET_RECV
|
||||
int size = 0;
|
||||
char buf[2048] = {0};
|
||||
fd_set rset;
|
||||
msg_header_t* mhead = NULL;
|
||||
msg_metainfo_t* minfo = NULL;
|
||||
msg_data_t* mdata = NULL;
|
||||
char* data = NULL;
|
||||
char* opt_ptr = NULL;
|
||||
|
||||
g_run.logger = MESA_create_runtime_log_handle("./log/recv_data",10);
|
||||
g_run.recv_data_fd = init_recv_unix_socket("/home/mesasoft/frag_rssb/tool/backend/un_recv");
|
||||
if(-1==g_run.recv_data_fd)
|
||||
{
|
||||
printf("init_recv_unix_socket error.\n");
|
||||
return -1;
|
||||
}
|
||||
FD_ZERO(&rset);
|
||||
FD_SET(g_run.recv_data_fd,&rset);
|
||||
while(1)
|
||||
{
|
||||
if(-1==select(g_run.recv_data_fd+1,&rset,NULL,NULL,NULL))
|
||||
{
|
||||
printf("recv_data select error.\n");
|
||||
continue;
|
||||
}
|
||||
size = recv_unix_socket_recv(g_run.recv_data_fd, (char*)buf, sizeof(buf));
|
||||
mhead = (msg_header_t*)buf;
|
||||
minfo = (msg_metainfo_t*)(buf + MSG_HEADER_LEN);
|
||||
mdata = (msg_data_t*)(buf + MSG_HEADER_LEN);
|
||||
data = (char*)mdata + MSG_DATA_HEAD_LEN;
|
||||
opt_ptr = NULL;
|
||||
|
||||
/* Ignore invalid packet */
|
||||
if(PROTO_MAGICNUM != mhead->magic_num || PROTO_VERSION != mhead->version|| size <= (int)MSG_HEADER_LEN || size>1600)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
/*prco msg*/
|
||||
switch(mhead->msg_type)
|
||||
{
|
||||
case MSG_DATA_META:
|
||||
MESA_handle_runtime_log(g_run.logger, RLOG_LV_INFO, "",
|
||||
"RECV META [PID:%llu, media_len:%llu, meida_type:0x%02x]",
|
||||
*(uint64_t*)minfo->prog_id, minfo->prog_len, minfo->media_type);
|
||||
|
||||
break;
|
||||
|
||||
case MSG_DATA_BODY:
|
||||
case MSG_DATA_TAIL:
|
||||
/*write log*/
|
||||
MESA_handle_runtime_log(g_run.logger, RLOG_LV_DEBUG, "",
|
||||
"RECV DATA [PID:%llu, offset:%llu, datalen:%u]",
|
||||
*(uint64_t*)mdata->prog_id, mdata->offset, mhead->cont_len-MSG_DATA_HEAD_LEN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if USM_RECV
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt = 0;
|
||||
int rst = 0;
|
||||
int i = 0;
|
||||
msg_header_t* mhead = NULL;
|
||||
msg_metainfo_t* minfo = NULL;
|
||||
msg_data_t* mdata = NULL;
|
||||
char* opt_ptr = NULL;
|
||||
g_run.logger = MESA_create_runtime_log_handle("./log/recv_data",10);
|
||||
|
||||
USM_t* a_usm_handle = USM_handle(1635151988,100000,USM_READER);
|
||||
unsigned int reader_id = 0;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),0);
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),0);
|
||||
char reader_path[] = "/home/mesasoft/frag_rssb/tool/backend/un_recv";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),0);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,NULL,4,0);
|
||||
rst = USM_init(a_usm_handle);
|
||||
|
||||
while(1)
|
||||
{
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
for(i =0;i< data_cnt;i++)
|
||||
{
|
||||
mhead = (msg_header_t*)data[i];
|
||||
minfo = (msg_metainfo_t*)(data[i] + MSG_HEADER_LEN);
|
||||
mdata = (msg_data_t*)(data[i] + MSG_HEADER_LEN);
|
||||
opt_ptr = NULL;
|
||||
|
||||
/* Ignore invalid packet */
|
||||
if(PROTO_MAGICNUM != mhead->magic_num || PROTO_VERSION != mhead->version|| datalen[i] <= (int)MSG_HEADER_LEN || datalen[i]>1600)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
/*prco msg*/
|
||||
switch(mhead->msg_type)
|
||||
{
|
||||
case MSG_DATA_META:
|
||||
MESA_handle_runtime_log(g_run.logger, RLOG_LV_INFO, "",
|
||||
"RECV META [PID:%llu, media_len:%llu, meida_type:0x%02x]",
|
||||
*(uint64_t*)minfo->prog_id, minfo->prog_len, minfo->media_type);
|
||||
|
||||
break;
|
||||
|
||||
case MSG_DATA_BODY:
|
||||
case MSG_DATA_TAIL:
|
||||
/*write log*/
|
||||
MESA_handle_runtime_log(g_run.logger, RLOG_LV_DEBUG, "",
|
||||
"RECV DATA [PID:%llu, offset:%llu, datalen:%u]",
|
||||
*(uint64_t*)mdata->prog_id, mdata->offset, mhead->cont_len-MSG_DATA_HEAD_LEN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
BIN
src/tool/backend/lib/libmy_socket.a
Normal file
BIN
src/tool/backend/lib/libmy_socket.a
Normal file
Binary file not shown.
BIN
src/tool/backend/lib/usm_comm.a
Normal file
BIN
src/tool/backend/lib/usm_comm.a
Normal file
Binary file not shown.
28
src/tool/backend/my_socket.h
Normal file
28
src/tool/backend/my_socket.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef _MY_SOCKET_H_
|
||||
#define _MY_SOCKET_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
#define SOCKET_BUF_SIZE 1500
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int init_unix_socket(const char* file_name);
|
||||
int unix_socket_send(int sockfd, struct sockaddr_un *dest_un, const char*data, int datalen);
|
||||
int init_recv_udp_socket(uint16_t port);
|
||||
int recv_udp_socket_recv(int sockfd, uint32_t *src_ip, uint8_t *buf, uint32_t buf_size);
|
||||
int init_recv_unix_socket(const char* file_name);
|
||||
int recv_unix_socket_recv(int sockfd,char*buf,int buf_len);
|
||||
int init_send_udp_socket();
|
||||
int send_udp_socket_send(int sockfd, uint32_t addr, uint16_t port, char *data, int datalen);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
BIN
src/tool/backend/support/socket/bin/libmy_socket.a
Normal file
BIN
src/tool/backend/support/socket/bin/libmy_socket.a
Normal file
Binary file not shown.
BIN
src/tool/backend/support/socket/bin/libmy_socket.so
Normal file
BIN
src/tool/backend/support/socket/bin/libmy_socket.so
Normal file
Binary file not shown.
42
src/tool/backend/support/socket/src/Makefile
Normal file
42
src/tool/backend/support/socket/src/Makefile
Normal file
@@ -0,0 +1,42 @@
|
||||
LIB_PATH=./
|
||||
SRC=./
|
||||
OBJ=./
|
||||
INCLUDE=-I ./inc
|
||||
INCLUDE+=-I /usr/include/MESA/
|
||||
|
||||
LIB=-L./lib -lsitdc++ -lpthread
|
||||
CC=g++ -g
|
||||
|
||||
G_FLAG_SO = -Wall -fPIC $(INCLUDE)
|
||||
G_FLAG = -Wall $(INCLUDE)
|
||||
|
||||
SRCFILE= $(wildcard $(SRC)*.c)
|
||||
DETACHDIR= $(notdir $(SRCFILE))
|
||||
OBJECTS = $(patsubst %.c, $(OBJ)%.o, $(DETACHDIR))
|
||||
|
||||
TARGETLIB = $(LIB_PATH)libmy_socket.a
|
||||
TARGETSO = $(LIB_PATH)libmy_socket.so
|
||||
|
||||
|
||||
$(OBJ)%.o:$(SRC)%.c
|
||||
$(CC) -c -o $@ $(G_FLAG_SO) $<
|
||||
|
||||
all:$(TARGETLIB)
|
||||
#all:$(TARGETSO)
|
||||
|
||||
$(TARGETLIB):$(OBJECTS)
|
||||
ar rs $@ $^
|
||||
cp $@ ../bin/
|
||||
cp $@ ../../../lib/
|
||||
cp my_socket.h ../../../inc/
|
||||
$(TARGETSO):$(OBJECTS)
|
||||
$(CC) -o $@ $(G_FLAG) -shared $^
|
||||
cp $@ ../bin/
|
||||
cp $@ ../../../lib/
|
||||
cp my_socket.h ../../../inc/
|
||||
clean:
|
||||
-rm -rf $(OBJECTS) $(TARGETSO) $(TARGETLIB) *.o
|
||||
install:
|
||||
cp *.a ../../../lib/
|
||||
|
||||
.PHONY:all clean
|
||||
BIN
src/tool/backend/support/socket/src/libmy_socket.a
Normal file
BIN
src/tool/backend/support/socket/src/libmy_socket.a
Normal file
Binary file not shown.
280
src/tool/backend/support/socket/src/my_socket.c
Normal file
280
src/tool/backend/support/socket/src/my_socket.c
Normal file
@@ -0,0 +1,280 @@
|
||||
// output.c
|
||||
//
|
||||
//
|
||||
//
|
||||
// MODIFIED by
|
||||
// CREATED BY Guo Le, 08/24/2010
|
||||
// use sendnto instead of sendto, zhengchao@iie.ac.cn 2012-05-30
|
||||
// add Unix-domain sokcet,zhengchao@iie.ac.cn 2012-06-04
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <sys/un.h>
|
||||
#include <stddef.h>//offsetof
|
||||
|
||||
#include "my_socket.h"
|
||||
|
||||
int init_send_udp_socket()
|
||||
{
|
||||
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (-1 == sockfd)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
|
||||
void output_udp_clear(int sockfd)
|
||||
{
|
||||
close(sockfd);
|
||||
}
|
||||
|
||||
// send udp packet
|
||||
int send_udp_socket_send(int sockfd, uint32_t addr, uint16_t port, char *data, int datalen)
|
||||
{
|
||||
struct sockaddr_in dst_addr; /* connector's address information */
|
||||
dst_addr.sin_family = AF_INET; /* host byte order */
|
||||
dst_addr.sin_port = port; /* short, network byte order */
|
||||
dst_addr.sin_addr.s_addr = addr;
|
||||
bzero(&(dst_addr.sin_zero), 8); /* zero the rest of the struct */
|
||||
int to_send_len=datalen;
|
||||
int already_sended_len=0;
|
||||
while(to_send_len>0)
|
||||
{
|
||||
already_sended_len=sendto(sockfd,data,
|
||||
to_send_len-already_sended_len,
|
||||
0,
|
||||
(struct sockaddr *)&(dst_addr),
|
||||
sizeof(dst_addr));
|
||||
if(already_sended_len==-1)
|
||||
{
|
||||
if((EAGAIN == errno)||( EINTR == errno )|| (EWOULDBLOCK==errno))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
to_send_len-=already_sended_len;
|
||||
}
|
||||
return already_sended_len;
|
||||
}
|
||||
|
||||
|
||||
int output_udp_init_connect(uint32_t addr, uint16_t port, char *dev)
|
||||
{
|
||||
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (-1 == sockfd) {
|
||||
return -1;
|
||||
}
|
||||
struct sockaddr_in dst_addr; /* connector's address information */
|
||||
dst_addr.sin_family = AF_INET; /* host byte order */
|
||||
dst_addr.sin_port = port; /* short, network byte order */
|
||||
dst_addr.sin_addr.s_addr = addr;
|
||||
bzero(&(dst_addr.sin_zero), 8); /* zero the rest of the struct */
|
||||
|
||||
if (-1 == connect(sockfd, (struct sockaddr*)&dst_addr, sizeof(dst_addr)))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (dev) {
|
||||
struct ifreq interface;
|
||||
strncpy(interface.ifr_ifrn.ifrn_name, dev, IFNAMSIZ);
|
||||
if (setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, (char *)&interface, sizeof(interface)) < 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
void output_udp_clear_connect(int sockfd)
|
||||
{
|
||||
close(sockfd);
|
||||
}
|
||||
|
||||
// send udp packet
|
||||
int output_udp_send_connect(int sockfd, uint8_t *data, int datalen)
|
||||
{
|
||||
int to_send_len=datalen;
|
||||
int already_sended_len=0;
|
||||
while(to_send_len>0)
|
||||
{
|
||||
already_sended_len= send(sockfd, data, datalen, 0);
|
||||
if(already_sended_len==-1)
|
||||
{
|
||||
if((EAGAIN == errno)||( EINTR == errno )|| (EWOULDBLOCK==errno))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("udpout_send_connect: loss data %s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
to_send_len-=already_sended_len;
|
||||
}
|
||||
return already_sended_len;
|
||||
}
|
||||
|
||||
void input_udp_clear(int sockfd)
|
||||
{
|
||||
close(sockfd);
|
||||
}
|
||||
|
||||
int init_unix_socket(const char* file_name)
|
||||
{
|
||||
int sockfd = -1;
|
||||
int len = 0;
|
||||
struct sockaddr_un un;
|
||||
struct timeval send_timeout;
|
||||
int send_buf_size = 1024*1024*4;
|
||||
|
||||
if(strlen(file_name)+8>sizeof(un.sun_path))
|
||||
{
|
||||
printf("Unix-domain socket file name too long.\n");
|
||||
return -1;
|
||||
}
|
||||
sockfd=socket(AF_UNIX,SOCK_DGRAM,0);
|
||||
if(sockfd<0)
|
||||
{
|
||||
printf("Get Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
send_timeout.tv_sec = 0;
|
||||
send_timeout.tv_usec = 100000;
|
||||
memset(&un,0,sizeof(un));
|
||||
un.sun_family = AF_UNIX;
|
||||
if(-1==setsockopt(sockfd,SOL_SOCKET,SO_SNDTIMEO,&send_timeout,sizeof(send_timeout)))
|
||||
{
|
||||
printf("Set Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
if(-1==setsockopt(sockfd,SOL_SOCKET,SO_SNDBUF,&send_buf_size,sizeof(send_buf_size)))
|
||||
{
|
||||
printf("Set Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
snprintf(un.sun_path,sizeof(un.sun_path),"%s",file_name);
|
||||
len = offsetof(struct sockaddr_un, sun_path) + strlen(un.sun_path);
|
||||
unlink(un.sun_path);
|
||||
if(0 > bind(sockfd,(struct sockaddr*)&un,len))
|
||||
{
|
||||
printf("Bind Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
int unix_socket_send(int sockfd, struct sockaddr_un *dest_un, const char*data, int datalen)
|
||||
{
|
||||
int to_send_len = datalen;
|
||||
int already_sended_len = 0;
|
||||
int sock_addr_len=offsetof(struct sockaddr_un,sun_path)+strlen(dest_un->sun_path);
|
||||
while(to_send_len>0)
|
||||
{
|
||||
already_sended_len= sendto(sockfd, data, datalen,0,(struct sockaddr*)dest_un, sock_addr_len);
|
||||
if(already_sended_len==-1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
to_send_len -= already_sended_len;
|
||||
}
|
||||
return already_sended_len;
|
||||
}
|
||||
|
||||
int init_recv_udp_socket(uint16_t port)
|
||||
{
|
||||
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (-1 == sockfd)
|
||||
{
|
||||
perror("listener: socket");
|
||||
return -1;
|
||||
}
|
||||
struct sockaddr_in my_addr; /* my address information */
|
||||
my_addr.sin_family = AF_INET; /* host byte order */
|
||||
my_addr.sin_port = port; /* short, network byte order */
|
||||
my_addr.sin_addr.s_addr = INADDR_ANY; /* auto-fill with my IP */
|
||||
bzero(&(my_addr.sin_zero), 8); /* zero the rest of the struct */
|
||||
|
||||
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
|
||||
{
|
||||
perror("listener: bind");
|
||||
close(sockfd);
|
||||
return -1;
|
||||
}
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
int recv_udp_socket_recv(int sockfd, uint32_t *src_ip, uint8_t *buf, uint32_t buf_size)
|
||||
{
|
||||
if (NULL == buf) return -1;
|
||||
|
||||
int numbytes;
|
||||
struct sockaddr_storage their_addr;
|
||||
socklen_t addr_len = sizeof their_addr;
|
||||
|
||||
if ((numbytes = recvfrom(sockfd, buf, buf_size , 0,(struct sockaddr *)&their_addr, &addr_len)) == -1)
|
||||
{
|
||||
perror("recvfrom");
|
||||
return -1;
|
||||
}
|
||||
*src_ip = ((struct sockaddr_in *)&their_addr)->sin_addr.s_addr;
|
||||
return numbytes;
|
||||
}
|
||||
|
||||
int init_recv_unix_socket(const char* file_name)
|
||||
{
|
||||
int sockfd=-1;
|
||||
int len;
|
||||
struct sockaddr_un un;
|
||||
if(strlen(file_name)+8>sizeof(un.sun_path))
|
||||
{
|
||||
printf("Unix-domain socket file name too long.\n");
|
||||
return -1;
|
||||
}
|
||||
sockfd=socket(AF_UNIX,SOCK_DGRAM,0);
|
||||
if(sockfd<0)
|
||||
{
|
||||
printf("Get Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
memset(&un,0,sizeof(un));
|
||||
un.sun_family=AF_UNIX;
|
||||
|
||||
snprintf(un.sun_path,sizeof(un.sun_path),"%s",file_name);
|
||||
len=offsetof(struct sockaddr_un,sun_path)+strlen(un.sun_path);
|
||||
unlink(un.sun_path);
|
||||
if(0>bind(sockfd,(struct sockaddr*)&un,len))
|
||||
{
|
||||
printf("Bind Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
int recv_unix_socket_recv(int sockfd,char*buf,int buf_len)
|
||||
{
|
||||
int recv_len = 0;
|
||||
struct sockaddr_storage sa;
|
||||
socklen_t sa_len;
|
||||
|
||||
recv_len = recvfrom(sockfd,buf,buf_len,0,(struct sockaddr*)&sa,&sa_len);
|
||||
return recv_len;
|
||||
}
|
||||
|
||||
28
src/tool/backend/support/socket/src/my_socket.h
Normal file
28
src/tool/backend/support/socket/src/my_socket.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef _MY_SOCKET_H_
|
||||
#define _MY_SOCKET_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
#define SOCKET_BUF_SIZE 1500
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int init_unix_socket(const char* file_name);
|
||||
int unix_socket_send(int sockfd, struct sockaddr_un *dest_un, const char*data, int datalen);
|
||||
int init_recv_udp_socket(uint16_t port);
|
||||
int recv_udp_socket_recv(int sockfd, uint32_t *src_ip, uint8_t *buf, uint32_t buf_size);
|
||||
int init_recv_unix_socket(const char* file_name);
|
||||
int recv_unix_socket_recv(int sockfd,char*buf,int buf_len);
|
||||
int init_send_udp_socket();
|
||||
int send_udp_socket_send(int sockfd, uint32_t addr, uint16_t port, char *data, int datalen);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
12
src/tool/backend/support/usm_comm/Makefile
Normal file
12
src/tool/backend/support/usm_comm/Makefile
Normal file
@@ -0,0 +1,12 @@
|
||||
all:
|
||||
cd src; $(MAKE);
|
||||
cd test; $(MAKE);
|
||||
cd test_readfile; $(MAKE);
|
||||
cd test_md5;$(MAKE);
|
||||
|
||||
clean:
|
||||
cd src; $(MAKE) clean;
|
||||
cd test; $(MAKE) clean;
|
||||
cd test_readfile; $(MAKE) clean;
|
||||
cd test_md5;$(MAKE) clean;
|
||||
rm -f lib/usm_comm*;
|
||||
68
src/tool/backend/support/usm_comm/inc/MESA_handle_logger.h
Normal file
68
src/tool/backend/support/usm_comm/inc/MESA_handle_logger.h
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifndef MESA_HANDLE__LOGGER_H
|
||||
#define MESA_HANDLE__LOGGER_H
|
||||
|
||||
/*
|
||||
* runtime_log with handle,
|
||||
* based on runtime_log.
|
||||
* yang wei
|
||||
* create time:2014-03-24
|
||||
* version:20140324
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define RLOG_LV_DEBUG 10
|
||||
#define RLOG_LV_INFO 20
|
||||
#define RLOG_LV_FATAL 30
|
||||
|
||||
|
||||
#define MESA_HANDLE_RUNTIME_LOG(handle, lv, mod, fmt, args...) \
|
||||
MESA_handle_runtime_log((handle), (lv), (mod), "file %s, line %d, " fmt, \
|
||||
__FILE__, __LINE__, ##args)
|
||||
|
||||
/*
|
||||
* name: MESA_create_runtime_log_handle
|
||||
* functionality: get runtime_log handle;
|
||||
* params:
|
||||
* file_path: path of log file, like "./log/runtime_log";
|
||||
* level: level of log;
|
||||
* returns:
|
||||
* not NULL, if succeeded;
|
||||
* NULL, if file is not absolute path, or failed to create log file;
|
||||
*/
|
||||
void *MESA_create_runtime_log_handle(const char *file_path, int level);
|
||||
|
||||
/*
|
||||
* name: MESA_handle_runtime_log
|
||||
* functionality: appends log message to runtime log file;
|
||||
* params:
|
||||
* handle:handle of runtime log, which is created by MESA_create_runtime_log_handle;
|
||||
* level: log level, messages with level value smaller the global var
|
||||
* "runtime_log_level" are ignored;
|
||||
* module: name of loggin module;
|
||||
* fmt: format string;
|
||||
* returns:
|
||||
* none;
|
||||
*/
|
||||
void MESA_handle_runtime_log(void *handle, int level, const char *module, const char *fmt, ...);
|
||||
|
||||
/*
|
||||
* name: MESA_destroy_runtime_log_handle
|
||||
* functionality: release runtime log handle memory.
|
||||
* params:
|
||||
* handle: runtime log handle which is going to be released;
|
||||
* returns:
|
||||
* none;
|
||||
*/
|
||||
void MESA_destroy_runtime_log_handle(void *handle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
114
src/tool/backend/support/usm_comm/inc/MESA_list_queue.h
Normal file
114
src/tool/backend/support/usm_comm/inc/MESA_list_queue.h
Normal file
@@ -0,0 +1,114 @@
|
||||
#ifndef _MESA_LIST_V3_H_
|
||||
#define _MESA_LIST_V3_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#define MESA_LQUEUE_VERSION "MESA_lqueue_2014.03.24_12:00:00"
|
||||
|
||||
/*
|
||||
MESA_list <20><><EFBFBD><EFBFBD><EFBFBD>棬
|
||||
1-<2D><><EFBFBD><EFBFBD><EFBFBD>̰߳<DFB3>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>;
|
||||
2-<2D><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>ṹ, <20><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ӿڸ<D3BF><DAB8><EFBFBD><EFBFBD><EFBFBD>;
|
||||
3-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ṹ<EFBFBD><E1B9B9>ʹ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD>;
|
||||
*/
|
||||
|
||||
|
||||
#define MESA_LIST_OP_PLACE_HEAD (0x1)
|
||||
#define MESA_LIST_OP_PLACE_TAIL (0x2)
|
||||
|
||||
#define MESA_list_GET (0x1)
|
||||
#define MESA_list_JOIN (0x2)
|
||||
|
||||
#define MESA_list_BOLCK (0x4)
|
||||
#define MESA_list_NONBOLCK (0x8)
|
||||
|
||||
#define MESA_list_JOIN_BLOCK (MESA_list_JOIN|MESA_list_BOLCK)
|
||||
#define MESA_list_JOIN_NONBLOCK (MESA_list_JOIN|MESA_list_NONBOLCK)
|
||||
#define MESA_list_GET_BLOCK (MESA_list_GET|MESA_list_BOLCK)
|
||||
#define MESA_list_GET_NONBLOCK (MESA_list_GET|MESA_list_NONBOLCK)
|
||||
|
||||
typedef void * MESA_lqueue_head;
|
||||
typedef int (* MESA_lqueue_cb_t)(void *data, long data_len, void *arg);
|
||||
|
||||
/* All of the following functions return value */
|
||||
typedef enum{
|
||||
MESA_QUEUE_RET_OK = 0, /* success */
|
||||
MESA_QUEUE_RET_COMMON_ERR = -1, /* general<61><6C>undefined errors */
|
||||
MESA_QUEUE_RET_ARG_ERR = -2, /* invalid args */
|
||||
MESA_QUEUE_RET_NUM_FULL = -3, /* queue number full */
|
||||
MESA_QUEUE_RET_MEM_FULL = -4, /* queue memory full */
|
||||
MESA_QUEUE_RET_QEMPTY = -5, /* queue empty */
|
||||
MESA_QUEUE_RET_LEN_ERR = -6, /* length error */
|
||||
MESA_QUEUE_RET_CANT_GET_LOCK = -7, /* can't get lock in non-block mode */
|
||||
MESA_QUEUE_RET_GET_LOCK_TMOUT = -8, /* get lock timeout */
|
||||
}MESA_queue_errno_t;
|
||||
|
||||
/*
|
||||
args description:
|
||||
[IN]
|
||||
thread_safe : 1:create thread safe queue; 0:without thread safe insurance.
|
||||
max_item_num: maximum queue items of the queue, 0 means infinity.
|
||||
*/
|
||||
MESA_lqueue_head MESA_lqueue_create(int thread_safe, long max_item_num);
|
||||
|
||||
/*
|
||||
attention:
|
||||
The follow two functions is get some value of queue in a moment,
|
||||
however, the value you got is not exactly,
|
||||
because it's maybe changed immediately by other thread when this functions is return.
|
||||
*/
|
||||
long MESA_lqueue_get_mem_used(MESA_lqueue_head head);
|
||||
long MESA_lqueue_get_count(MESA_lqueue_head head);
|
||||
|
||||
|
||||
/*
|
||||
args description:
|
||||
[IN]:
|
||||
lq_head : the handler of MESA_lqueue.
|
||||
|
||||
[OUT]:
|
||||
data : receive buffer.
|
||||
|
||||
[IN && OUT]:
|
||||
data_len:
|
||||
is value-result argument, like "addrlen of recvfrom(2)",
|
||||
the caller should initialize the size of the 'data',
|
||||
will modified on return to indicate the actual size of the queue item.
|
||||
|
||||
*/
|
||||
int MESA_lqueue_read_head(MESA_lqueue_head lq_head, void *data, long *data_len);
|
||||
int MESA_lqueue_get_head(MESA_lqueue_head lqhead, void *data, long *data_len);
|
||||
|
||||
/*
|
||||
if return value of "cb" is 0, the behaviour is like MESA_lqueue_read_head(),
|
||||
else if return value of "cb" is not 0, the behaviour is like MESA_lqueue_get_head().
|
||||
*/
|
||||
int MESA_lqueue_detect_get_head(MESA_lqueue_head lq_head, MESA_lqueue_cb_t cb, void *data, long *data_len, void *cb_arg);
|
||||
int MESA_lqueue_get_tail(MESA_lqueue_head lq_head, void *data, long *data_len);
|
||||
|
||||
int MESA_lqueue_join_head(MESA_lqueue_head lq_head, const void *data, long data_len);
|
||||
int MESA_lqueue_join_tail(MESA_lqueue_head lq_head, const void *data, long data_len);
|
||||
|
||||
|
||||
/* these functions features same with above no "try",
|
||||
except shall return immediately, in other word is "Non-block mode"!
|
||||
*/
|
||||
int MESA_lqueue_try_read_head(MESA_lqueue_head lq_head, void *data, long *data_len);
|
||||
int MESA_lqueue_try_get_head(MESA_lqueue_head lq_head, void *data, long *data_len);
|
||||
int MESA_lqueue_try_get_tail(MESA_lqueue_head lq_head, void *data, long *data_len);
|
||||
int MESA_lqueue_try_join_head(MESA_lqueue_head lq_head, const void *data, long data_len);
|
||||
int MESA_lqueue_try_join_tail(MESA_lqueue_head lq_head, const void *data, long data_len);
|
||||
|
||||
|
||||
void MESA_lqueue_destroy(MESA_lqueue_head head, MESA_lqueue_cb_t cb, void *cb_arg);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
107
src/tool/backend/support/usm_comm/inc/MESA_ring_queue.h
Normal file
107
src/tool/backend/support/usm_comm/inc/MESA_ring_queue.h
Normal file
@@ -0,0 +1,107 @@
|
||||
#ifndef __MESA_RING_QUEUE_H_
|
||||
#define __MESA_RING_QUEUE_H_ 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
typedef void * MESA_ring_queue_head;
|
||||
|
||||
#define MESA_RING_QUEUE_VERSION_MACRO (20160708)
|
||||
extern const unsigned int MESA_RING_QUEUE_VERSION_INT;
|
||||
|
||||
/* All of the following functions return value */
|
||||
typedef enum{
|
||||
MESA_RQUEUE_RET_OK = 0, /* success */
|
||||
MESA_RQUEUE_RET_COMMON_ERR = -1, /* general<61><6C>undefined errors */
|
||||
MESA_RQUEUE_RET_ARG_ERR = -2, /* invalid args */
|
||||
MESA_RQUEUE_RET_NUM_FULL = -3, /* queue number full */
|
||||
MESA_RQUEUE_RET_MEM_FULL = -4, /* queue memory full */
|
||||
MESA_RQUEUE_RET_QEMPTY = -5, /* queue empty */
|
||||
MESA_RQUEUE_RET_LEN_ERR = -6, /* length error */
|
||||
MESA_RQUEUE_RET_CANT_GET_LOCK = -7, /* can't get lock in non-block mode */
|
||||
MESA_RQUEUE_RET_GET_LOCK_TMOUT = -8, /* get lock timeout */
|
||||
}MESA_ring_queue_errno_t;
|
||||
|
||||
|
||||
/*
|
||||
args description:
|
||||
[IN]
|
||||
thread_safe : 1:create thread safe queue; 0:without thread safe insurance.
|
||||
max_item_num: maximum queue items of the queue, must more than zero.
|
||||
*/
|
||||
MESA_ring_queue_head MESA_ring_queue_born(void);
|
||||
|
||||
|
||||
enum MESA_rq_opt{
|
||||
RQO_THREAD_SAFE = 0, /* must be int, 1:create ring qqueue with thread safe features, default is 1 */
|
||||
RQO_RING_ELEMENT_NUM, /* must be unsigned int, defalut is 1000. */
|
||||
RQO_PRE_ALLOC_BUF_LEN, /* must be unsigned int, Ԥ<>ȷ<EFBFBD><C8B7><EFBFBD>ÿ<EFBFBD><C3BF>item<65><6D><EFBFBD>ڴ<EFBFBD>, <20>Ժ<EFBFBD>ֻ<EFBFBD><D6BB>memcpy */
|
||||
RQO_MULTI_THREAD_LOCK_FREE, /* must be int, default is 0, conflict with RQO_THREAD_SAFE */
|
||||
};
|
||||
|
||||
/*
|
||||
to set features of specified MESA_ring_queue_headhandle.
|
||||
opt_type: option type, refer to enum MESA_htable_opt;
|
||||
opt_val : option value, depend on opt type;
|
||||
opt_len : opt_val size, depend on opt type;
|
||||
|
||||
return value:
|
||||
0 :success;
|
||||
<0:error;
|
||||
*/
|
||||
int MESA_ring_queue_set_opt(MESA_ring_queue_head rq, enum MESA_rq_opt opt_type, void *opt_val, int opt_len);
|
||||
|
||||
|
||||
/*
|
||||
Construct ring queue and ready to running.
|
||||
|
||||
return value:
|
||||
0 : success;
|
||||
<0: error.
|
||||
*/
|
||||
int MESA_ring_queue_mature(MESA_ring_queue_head rq);
|
||||
|
||||
|
||||
|
||||
int MESA_ring_queue_get_count(MESA_ring_queue_head head);
|
||||
|
||||
/*
|
||||
args description:
|
||||
[IN]:
|
||||
lq_head : the handler of MESA_ring_queue.
|
||||
|
||||
[OUT]:
|
||||
data : receive buffer.
|
||||
|
||||
[IN && OUT]:
|
||||
data_len:
|
||||
is value-result argument, like "addrlen of recvfrom(2)",
|
||||
the caller should initialize the size of the 'data',
|
||||
will modified on return to indicate the actual size of the queue item.
|
||||
|
||||
*/
|
||||
int MESA_ring_queue_read(MESA_ring_queue_head rq_head, void *data, int *data_len);
|
||||
int MESA_ring_queue_get(MESA_ring_queue_head rqhead, void *data, int *data_len);
|
||||
int MESA_ring_queue_join(MESA_ring_queue_head rq_head, const void *data, int data_len);
|
||||
|
||||
|
||||
/* these functions features same with above no "try",
|
||||
except shall return immediately, in other word is "Non-block mode"!
|
||||
*/
|
||||
int MESA_ring_queue_try_read(MESA_ring_queue_head rq_head, void *data, int *data_len);
|
||||
int MESA_ring_queue_try_get(MESA_ring_queue_head rqhead, void *data, int *data_len);
|
||||
int MESA_ring_queue_try_join(MESA_ring_queue_head rq_head, const void *data, int data_len);
|
||||
|
||||
|
||||
typedef int (* MESA_rqueue_cb_t)(void *data, long data_len, void *arg);
|
||||
void MESA_ring_queue_destroy(MESA_ring_queue_head rq_head, MESA_rqueue_cb_t cb, void *cb_arg);
|
||||
const char *MESA_ring_queue_strerror(MESA_ring_queue_errno_t error_num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
9
src/tool/backend/support/usm_comm/inc/output.h
Normal file
9
src/tool/backend/support/usm_comm/inc/output.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef _OUTPUT_H_
|
||||
#define _OUTPUT_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/un.h>
|
||||
// send udp packet
|
||||
int init_output_un_socket(const char* file_name);
|
||||
int named_unix_domain_socket_send(int un_sd,struct sockaddr_un *dest_un,const char*data,int datalen);
|
||||
#endif /* _OUTPUT_H_ */
|
||||
78
src/tool/backend/support/usm_comm/inc/usm_api.h
Normal file
78
src/tool/backend/support/usm_comm/inc/usm_api.h
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* usm_api.h
|
||||
*
|
||||
* Created on: 2017-1-17
|
||||
* Author: dmj
|
||||
*/
|
||||
#ifndef __USM_COMM_H_INCLUDE_
|
||||
#define __USM_COMM_H_INCLUDE_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
#ifndef uint64_t
|
||||
typedef unsigned long long uint64_t;
|
||||
#endif
|
||||
|
||||
#ifndef uint16_t
|
||||
typedef unsigned int uint16_t;
|
||||
#endif
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
}USM_t;
|
||||
|
||||
#define USM_READER 0x01
|
||||
#define USM_WRITER 0x02
|
||||
|
||||
enum USM_rst_t
|
||||
{
|
||||
USM_SUCC = 0,
|
||||
USM_RD_SHMGET_ERR = -1,
|
||||
USM_SHMCTL_ERR = -2,
|
||||
USM_WT_SHMGET_ERR = -3,
|
||||
USM_SHMAT_ERR = -4,
|
||||
USM_SOCKET_INIT_ERR = -5,
|
||||
USM_QUEUE_INIT_ERR = -6
|
||||
};
|
||||
|
||||
enum USM_opt_t
|
||||
{
|
||||
SHM_BUF_SIZE,//WRITER and READER VIEW.VALUE is interger,SIZE=sizeof(int). DEFAULT:65535.
|
||||
READER_CNT,//WRITER VIEW.
|
||||
SMOOTH_TIME,//WRITER VIEW.but every reader need to set
|
||||
READER_ID,//READER VIEW.VALUE is interger,SIZE=sizeof(int). 0-7.Reader needs set read_id first.
|
||||
MAX_LQUEUE_SIZE,//READER VIEW.VALUE is interger,SIZE=sizeof(int). DEFAULT:1500.
|
||||
READER_PATH,//READER VIEW.data is a const char* und_path, define the reader's Unix named domain socket file path. return reader id if success.
|
||||
LOG_HANDLE
|
||||
};
|
||||
|
||||
enum USM_stat_t
|
||||
{
|
||||
WRITED_SIZE,
|
||||
WRITED_CNT,
|
||||
WRITING_CLASH_SIZE,
|
||||
WRITING_CLASH_CNT,
|
||||
SENDED_CNT, //READERS
|
||||
READED_SIZE,
|
||||
READED_CNT,
|
||||
READER_DROP_SIZE,//number of reader missed due to overwrite
|
||||
READER_DROP_CNT,
|
||||
READING_CLASH_SIZE,
|
||||
READING_CLASH_CNT,
|
||||
LQ_COUNT
|
||||
};
|
||||
|
||||
USM_t* USM_handle(int shm_key,uint64_t shm_size,int role);
|
||||
int USM_init(USM_t* handle);
|
||||
int USM_write(USM_t* handle,const char* data,int datalen);
|
||||
int USM_read(USM_t* handle,char** data,int* datalen,int* data_cnt);
|
||||
int USM_set_opt(USM_t* handle,enum USM_opt_t type,void* data,int size,int reader_id);
|
||||
uint64_t USM_stat(USM_t* handle,enum USM_stat_t type,int reader_id);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
BIN
src/tool/backend/support/usm_comm/lib/usm_comm.a
Normal file
BIN
src/tool/backend/support/usm_comm/lib/usm_comm.a
Normal file
Binary file not shown.
BIN
src/tool/backend/support/usm_comm/lib/usm_comm.so
Normal file
BIN
src/tool/backend/support/usm_comm/lib/usm_comm.so
Normal file
Binary file not shown.
29
src/tool/backend/support/usm_comm/src/Makefile
Normal file
29
src/tool/backend/support/usm_comm/src/Makefile
Normal file
@@ -0,0 +1,29 @@
|
||||
CC=gcc
|
||||
CCC=g++
|
||||
|
||||
CFLAGS=-g -Wall -fPIC -shared
|
||||
LIBPATH=../lib/
|
||||
H_DIR=-I../inc
|
||||
|
||||
OBJS=usm.o output.o
|
||||
|
||||
TARGET=usm_comm.a usm_comm.so
|
||||
|
||||
all:$(TARGET)
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(CFLAGS) -I. $(H_DIR) $<
|
||||
|
||||
.cpp.o:
|
||||
$(CCC) -c $(CFLAGS) -I. $(H_DIR) $<
|
||||
|
||||
usm_comm.a: $(OBJS)
|
||||
echo making static lib ...
|
||||
(rm -f $@ ;ar -r $@ $^; cp $@ $(LIBPATH);)
|
||||
|
||||
usm_comm.so: $(OBJS)
|
||||
echo making dynamic lib ...
|
||||
(rm -f $@; gcc -o $@ $(CFLAGS) $^; cp $@ $(LIBPATH);)
|
||||
|
||||
clean:
|
||||
rm -f *.o $(TARGET)
|
||||
94
src/tool/backend/support/usm_comm/src/output.c
Normal file
94
src/tool/backend/support/usm_comm/src/output.c
Normal file
@@ -0,0 +1,94 @@
|
||||
// output.c
|
||||
//
|
||||
//
|
||||
//
|
||||
// MODIFIED by
|
||||
// CREATED BY Guo Le, 08/24/2010
|
||||
// use sendnto instead of sendto, zhengchao@iie.ac.cn 2012-05-30
|
||||
// add Unix-domain sokcet,zhengchao@iie.ac.cn 2012-06-04
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <sys/un.h>
|
||||
#include <stddef.h>//offsetof
|
||||
|
||||
#include "output.h"
|
||||
|
||||
int init_output_un_socket(const char* file_name)
|
||||
{
|
||||
int sd=-1;
|
||||
int len;
|
||||
struct sockaddr_un un;
|
||||
struct timeval send_timeout;
|
||||
//int send_buf_size=1024*16;
|
||||
int send_buf_size=1024*1024*4;
|
||||
if(strlen(file_name)+8>sizeof(un.sun_path))
|
||||
{
|
||||
printf("Unix-domain socket file name too long.\n");
|
||||
return -1;
|
||||
}
|
||||
sd=socket(AF_UNIX,SOCK_DGRAM,0);
|
||||
if(sd<0)
|
||||
{
|
||||
printf("Get Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}/*
|
||||
flags=fcntl(sd,F_GETFL);
|
||||
flags|=O_NONBLOCK;
|
||||
if(fcntl(sd,F_SETFL,flags)==-1)
|
||||
{
|
||||
printf("Set Unix-domain socket error:%s",strerror(errno));
|
||||
return -1;
|
||||
}*/
|
||||
send_timeout.tv_sec=0;
|
||||
send_timeout.tv_usec=100000;
|
||||
memset(&un,0,sizeof(un));
|
||||
un.sun_family=AF_UNIX;
|
||||
if(-1==setsockopt(sd,SOL_SOCKET,SO_SNDTIMEO,&send_timeout,sizeof(send_timeout)))
|
||||
{
|
||||
printf("Set Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
if(-1==setsockopt(sd,SOL_SOCKET,SO_SNDBUF,&send_buf_size,sizeof(send_buf_size)))
|
||||
{
|
||||
printf("Set Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
snprintf(un.sun_path,sizeof(un.sun_path),"%s",file_name);
|
||||
len=offsetof(struct sockaddr_un,sun_path)+strlen(un.sun_path);
|
||||
unlink(un.sun_path);
|
||||
if(0>bind(sd,(struct sockaddr*)&un,len))
|
||||
{
|
||||
printf("Bind Unix-domain socket error:%s\n",strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return sd;
|
||||
}
|
||||
int named_unix_domain_socket_send(int un_sd,struct sockaddr_un *dest_un,const char*data,int datalen)
|
||||
{
|
||||
int to_send_len=datalen;
|
||||
int already_sended_len=0;
|
||||
int sock_addr_len=offsetof(struct sockaddr_un,sun_path)+strlen(dest_un->sun_path);
|
||||
while(to_send_len>0)
|
||||
{
|
||||
already_sended_len= sendto(un_sd, data, datalen,0,(struct sockaddr*)dest_un, sock_addr_len);
|
||||
if(already_sended_len==-1)
|
||||
{
|
||||
|
||||
//DEBUG_PRINTF("Unix-domain send data: loss data %s\n",strerror(errno));
|
||||
return -1;
|
||||
|
||||
}
|
||||
to_send_len-=already_sended_len;
|
||||
}
|
||||
return already_sended_len;
|
||||
}
|
||||
690
src/tool/backend/support/usm_comm/src/usm.c
Normal file
690
src/tool/backend/support/usm_comm/src/usm.c
Normal file
@@ -0,0 +1,690 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/un.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/shm.h>
|
||||
#include <sys/mman.h>
|
||||
#include <assert.h>
|
||||
#include "usm_api.h"
|
||||
#include "output.h"
|
||||
#include "MESA_ring_queue.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define USM_COMM "usm_comm.so"
|
||||
|
||||
#define MAX_READER_NUM 7
|
||||
#define MAX_UND_PATH_SIZE 128
|
||||
|
||||
#define MAX_WRAP_NUM ((1500 - 8 - 4)/sizeof(uint32_t))//372
|
||||
#define SUIT_WRAP_NUM 20
|
||||
#define MTU_SIZE 1500
|
||||
|
||||
#define MAX_LQ_SIZE_DE 8*1024*1024
|
||||
#define SM_TM_DE 1000000//nsec
|
||||
|
||||
#define atomic_t unsigned long long
|
||||
|
||||
void usm_version_0_9_20170314()
|
||||
{
|
||||
//20170117 V0.1 create the new project,define api
|
||||
//20170208 V0.2 first whole project.reader side is muti-threading
|
||||
//20170210 V0.3 alter reader side to single thread
|
||||
//20170214 v0.4 test for 10w write.
|
||||
//20170216 v0.5 test online first.alter the use of timespec and mesa_lq
|
||||
//20170221 v0.6 tentative joint debugging with ict
|
||||
//20170222 v0.7 attempt memory barrier
|
||||
//20170223 v0.8 muti_users md5 verify succeed,use uint64_t flag in _pkt_node
|
||||
//20170309 v0.9 intergrate usm_read
|
||||
//20170310 v0.9 debug for single thread
|
||||
//20170313 v0.9 support no_block for sending_thread
|
||||
//20170314 v0.9 support muti-thread by atomic
|
||||
//20170314 v0.9 alter MESA_ring_queue
|
||||
}
|
||||
struct _msg_header
|
||||
{
|
||||
uint16_t magic_num;
|
||||
uint8_t version;
|
||||
uint8_t msg_type;
|
||||
uint32_t cont_len;
|
||||
};
|
||||
|
||||
#define MSG_HEADER_LEN sizeof(struct _msg_header)
|
||||
typedef struct msg_metainfo_s
|
||||
{
|
||||
char prog_id[8];
|
||||
char flag;
|
||||
uint8_t hitservice;
|
||||
uint64_t prog_len:48;
|
||||
uint32_t cap_IP;
|
||||
uint8_t protocol;
|
||||
uint8_t media_type;
|
||||
uint8_t data_flag;
|
||||
uint8_t opt_num;
|
||||
}msg_metainfo_t;
|
||||
/*
|
||||
struct _pkt_node
|
||||
{
|
||||
union{
|
||||
volatile char flag[2];
|
||||
volatile short iflag;
|
||||
};
|
||||
time_t timestamp;
|
||||
uint16_t pkt_len;
|
||||
char pkt_data[MTU_SIZE];
|
||||
};*/
|
||||
struct _pkt_node
|
||||
{
|
||||
uint64_t flag[MAX_READER_NUM + 1];
|
||||
time_t timestamp;
|
||||
uint64_t pkt_len;
|
||||
char pkt_data[MTU_SIZE+4];
|
||||
};
|
||||
|
||||
|
||||
struct _usm_stat_t
|
||||
{
|
||||
uint64_t wt_pktnum;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
||||
uint64_t wt_datalen;
|
||||
uint64_t err_wting_pktnum;//<2F><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>¼
|
||||
uint64_t err_wting_datalen;
|
||||
};
|
||||
struct _usm_reader_stat_t
|
||||
{
|
||||
uint64_t sd_pktnum;//<2F>ѷ<EFBFBD><D1B7><EFBFBD>
|
||||
uint64_t rd_pktnum;//<2F><><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD>ȡ
|
||||
uint64_t rd_datalen;
|
||||
uint64_t not_rd_pktnum;//δ<><CEB4><EFBFBD>ɶ<EFBFBD>ȡ
|
||||
uint64_t not_rd_datalen;
|
||||
uint64_t err_rding_pktnum;//<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>¼
|
||||
uint64_t err_rding_datalen;
|
||||
uint64_t lq_count;
|
||||
};
|
||||
|
||||
struct _usm_dest_t
|
||||
{
|
||||
int un_sd;
|
||||
int max_lqueue_size;
|
||||
//int lq_flag;//err:1
|
||||
void* log_handle;
|
||||
MESA_ring_queue_head msg_queue;//writer:send_msg_queue
|
||||
long smooth_time;
|
||||
struct _usm_reader_stat_t stat;
|
||||
char reader_path[MAX_UND_PATH_SIZE];
|
||||
};
|
||||
struct _usm_writer
|
||||
{
|
||||
int reader_cnt;
|
||||
unsigned long long latest_wt_ofst;
|
||||
struct _usm_dest_t readers[MAX_READER_NUM];
|
||||
struct _usm_stat_t wt_view_stat;
|
||||
};
|
||||
struct _usm_reader
|
||||
{
|
||||
int reader_id;
|
||||
int un_sd;
|
||||
//int max_lqueue_size;
|
||||
void* log_handle;
|
||||
//MESA_lqueue_head pkt_queue;
|
||||
char reader_path[MAX_UND_PATH_SIZE];
|
||||
};
|
||||
|
||||
struct _usm_handle_t
|
||||
{
|
||||
int shm_key;
|
||||
int role;
|
||||
struct _pkt_node* shm_addr;
|
||||
uint64_t shm_size;
|
||||
union
|
||||
{
|
||||
struct _usm_writer writer_info;
|
||||
struct _usm_reader reader_info;
|
||||
};
|
||||
};
|
||||
struct _usm_outer_msg_t
|
||||
{
|
||||
struct _msg_header header;
|
||||
uint32_t msg_cnt;
|
||||
uint32_t offset[MAX_WRAP_NUM];
|
||||
};
|
||||
|
||||
USM_t* USM_handle(int shm_key,uint64_t shm_size,int role)
|
||||
{
|
||||
struct _usm_handle_t* _handle = (struct _usm_handle_t*)malloc(sizeof(struct _usm_handle_t));
|
||||
memset(_handle,0,sizeof(struct _usm_handle_t));
|
||||
|
||||
_handle->shm_key = shm_key;
|
||||
_handle->shm_size = shm_size;
|
||||
_handle->role = role;
|
||||
if(_handle->role == USM_WRITER)
|
||||
{
|
||||
int i =0;
|
||||
for(i =0;i<MAX_READER_NUM;i++)
|
||||
{
|
||||
_handle->writer_info.readers[i].max_lqueue_size = MAX_LQ_SIZE_DE;
|
||||
_handle->writer_info.readers[i].smooth_time = SM_TM_DE;
|
||||
}
|
||||
}
|
||||
|
||||
return (USM_t*)_handle;
|
||||
}
|
||||
|
||||
int USM_set_opt(USM_t* handle,enum USM_opt_t type,void* data,int size,int reader_id)
|
||||
{
|
||||
struct _usm_handle_t *_handle = (struct _usm_handle_t*)handle;
|
||||
switch(type)
|
||||
{
|
||||
case READER_CNT:
|
||||
_handle->writer_info.reader_cnt = *(const int*)data;
|
||||
break;
|
||||
case READER_ID:
|
||||
_handle->reader_info.reader_id = *(const int*)data;
|
||||
break;
|
||||
case SMOOTH_TIME:
|
||||
if(_handle->role == USM_WRITER)
|
||||
{
|
||||
_handle->writer_info.readers[reader_id].smooth_time = *(const int*)data;
|
||||
}
|
||||
break;
|
||||
case MAX_LQUEUE_SIZE:
|
||||
if(_handle->role == USM_WRITER)
|
||||
{
|
||||
_handle->writer_info.readers[reader_id].max_lqueue_size = *(const int*)data;
|
||||
}
|
||||
break;
|
||||
case READER_PATH:
|
||||
if(_handle->role == USM_READER)
|
||||
{
|
||||
memcpy(_handle->reader_info.reader_path,(const char*)data,size);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(_handle->writer_info.readers[reader_id].reader_path,(const char*)data,size);
|
||||
}
|
||||
break;
|
||||
case LOG_HANDLE:
|
||||
if(_handle->role == USM_READER)
|
||||
{
|
||||
_handle->reader_info.log_handle = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
_handle->writer_info.readers[reader_id].log_handle = data;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return USM_SUCC;
|
||||
}
|
||||
|
||||
void* sending_thread(void * reader)
|
||||
{
|
||||
int rst = 0;
|
||||
struct _usm_dest_t *_reader=(struct _usm_dest_t *)reader;
|
||||
struct _usm_outer_msg_t to_send;
|
||||
memset(&to_send,0,sizeof(struct _usm_outer_msg_t));
|
||||
to_send.header.magic_num = 0x5641;
|
||||
to_send.header.version = 3;
|
||||
to_send.header.msg_type = 0x50;
|
||||
struct timespec last_send_time,now;
|
||||
struct sockaddr_un dest_un;
|
||||
memset(&dest_un,0,sizeof(struct sockaddr_un));
|
||||
dest_un.sun_family=AF_UNIX;
|
||||
snprintf(dest_un.sun_path,sizeof(dest_un.sun_path),"%s",_reader->reader_path);
|
||||
uint32_t offset = 0;
|
||||
long offset_len = sizeof(offset);
|
||||
long lq_count = 0;
|
||||
clock_gettime(CLOCK_MONOTONIC,&last_send_time);//init
|
||||
int sent_cnt = 0;
|
||||
int send_len = 0;
|
||||
while(1)
|
||||
{
|
||||
clock_gettime(CLOCK_MONOTONIC,&now);
|
||||
//lq_count = MESA_lqueue_get_count(_reader->msg_queue);
|
||||
//lq_count = MESA_ring_queue_get_count(_reader->msg_queue);
|
||||
//_reader->stat.lq_count = lq_count;
|
||||
//if(lq_count > 0)
|
||||
//{
|
||||
//p = (struct _usm_inner_msg_t*)malloc(sizeof(struct _usm_inner_msg_t));
|
||||
//q = p;
|
||||
if(to_send.msg_cnt < MAX_WRAP_NUM)//boundary protection
|
||||
{
|
||||
//if(MESA_ring_queue_get_count(_reader->msg_queue))
|
||||
//{
|
||||
rst = MESA_ring_queue_get(_reader->msg_queue,&offset,&offset_len);
|
||||
|
||||
if(rst < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(_reader->log_handle, RLOG_LV_FATAL, USM_COMM,
|
||||
"MESA_rqueue_get failed. error num is %d.\n",rst);
|
||||
}
|
||||
else
|
||||
{
|
||||
//debug
|
||||
//MESA_handle_runtime_log(_reader->log_handle, RLOG_LV_FATAL, USM_COMM,
|
||||
//"GET offset is %d.",offset);
|
||||
to_send.offset[to_send.msg_cnt] = offset;
|
||||
to_send.msg_cnt++;
|
||||
}
|
||||
//}
|
||||
}
|
||||
else
|
||||
{
|
||||
//empty
|
||||
}
|
||||
|
||||
if((to_send.msg_cnt >= SUIT_WRAP_NUM)||
|
||||
((now.tv_sec - last_send_time.tv_sec)*1000000000 + (now.tv_nsec - last_send_time.tv_nsec) > _reader->smooth_time))
|
||||
//if(to_send.msg_cnt >= SUIT_WRAP_NUM)
|
||||
{
|
||||
to_send.header.cont_len = to_send.msg_cnt*sizeof(uint32_t) + sizeof(uint32_t);
|
||||
send_len = sizeof(struct _msg_header) + to_send.header.cont_len;
|
||||
//clock_gettime(CLOCK_MONOTONIC,&test_now);
|
||||
//printf("send before: %lluus.\n",test_now.tv_sec*1000000 + test_now.tv_nsec/1000);
|
||||
rst = named_unix_domain_socket_send(_reader->un_sd,&dest_un,(const char*)&to_send,send_len);
|
||||
//clock_gettime(CLOCK_MONOTONIC,&test_now);
|
||||
//printf("send after: %lluus.\n",test_now.tv_sec*1000000 + test_now.tv_nsec/1000);
|
||||
if(-1 == rst)
|
||||
{
|
||||
MESA_handle_runtime_log(_reader->log_handle, RLOG_LV_FATAL, USM_COMM,"Unix-domain send data: loss data %s.",strerror(errno));
|
||||
}
|
||||
else
|
||||
{
|
||||
MESA_handle_runtime_log(_reader->log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
"Send msg%d to %s. un_sd:%d. msg_cnt:%llu.last offset is %llu. Time:%lds %ldns.",
|
||||
sent_cnt,_reader->reader_path,_reader->un_sd,to_send.msg_cnt,to_send.offset[to_send.msg_cnt -1],
|
||||
now.tv_sec,now.tv_nsec);
|
||||
//debug
|
||||
/*int i =0;
|
||||
for(i = 0;i<to_send.msg_cnt;i++)
|
||||
{
|
||||
MESA_handle_runtime_log(_reader->log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
"offset is %llu.",to_send.offset[i]);
|
||||
}*/
|
||||
|
||||
_reader->stat.sd_pktnum += to_send.msg_cnt;
|
||||
sent_cnt ++;
|
||||
|
||||
last_send_time = now;
|
||||
}
|
||||
to_send.msg_cnt = 0;//reset
|
||||
|
||||
}
|
||||
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int USM_init(USM_t* handle)
|
||||
{
|
||||
struct _usm_handle_t *_handle = (struct _usm_handle_t*)handle;
|
||||
pthread_t thread_id[_handle->writer_info.reader_cnt];
|
||||
//pthread_attr_t attr;
|
||||
uint16_t i = 0;
|
||||
uint32_t rq_buflen = sizeof(uint32_t);
|
||||
uint32_t rq_num = 0;
|
||||
int shmid;
|
||||
shmid = shmget((key_t)_handle->shm_key, sizeof(struct _pkt_node)*_handle->shm_size, 0666 | IPC_CREAT);
|
||||
if(shmid == -1)
|
||||
{
|
||||
if(_handle->role == USM_READER)
|
||||
{
|
||||
return USM_RD_SHMGET_ERR;
|
||||
}
|
||||
else
|
||||
{
|
||||
//get err with writer
|
||||
if (shmctl(shmid, IPC_RMID, 0) == -1)
|
||||
{
|
||||
return USM_SHMCTL_ERR;
|
||||
}
|
||||
shmid = shmget((key_t)_handle->shm_key, sizeof(struct _pkt_node)*_handle->shm_size, 0666 | IPC_CREAT);
|
||||
if(shmid == -1)
|
||||
{
|
||||
return USM_WT_SHMGET_ERR;
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("Apply the shared memory SUCCEED. The shmid is %d.\n",shmid);
|
||||
//shmat to local variable, namely shm_addr
|
||||
_handle->shm_addr = (struct _pkt_node*)shmat(shmid, (void *)0, 0);
|
||||
if(_handle->shm_addr == (void*)-1)
|
||||
{
|
||||
return USM_SHMAT_ERR;
|
||||
}
|
||||
printf("Link the shared memory SUCCEED.\n");
|
||||
|
||||
if(_handle->role == USM_WRITER)
|
||||
{
|
||||
memset(_handle->shm_addr,0,sizeof(struct _pkt_node)*_handle->shm_size);
|
||||
printf("Clean the shm finished.\n");
|
||||
}
|
||||
/*if(0 > mprotect(_handle->shm_addr,sizeof(struct _pkt_node)*_handle->shm_size,PROT_NONE))
|
||||
{
|
||||
printf("mprotect PROT_NONE error: %s.",strerror(errno));
|
||||
}*/
|
||||
char file_name[128]={0};
|
||||
if(_handle->role == USM_READER)
|
||||
{
|
||||
_handle->reader_info.un_sd = init_output_un_socket(_handle->reader_info.reader_path);
|
||||
|
||||
if(_handle->reader_info.un_sd == -1)
|
||||
{
|
||||
return USM_SOCKET_INIT_ERR;
|
||||
}
|
||||
/*
|
||||
struct timeval ti;
|
||||
ti.tv_sec = 10;
|
||||
ti.tv_usec = 0;
|
||||
setsockopt(_handle->reader_info.un_sd,SOL_SOCKET,SO_RCVTIMEO,&ti,sizeof(ti));*/
|
||||
}
|
||||
else
|
||||
{
|
||||
for(i = 0; i < _handle->writer_info.reader_cnt; i++)
|
||||
{
|
||||
sprintf(file_name,"/home/usm_send%d",i);
|
||||
//_handle->writer_info.readers[i].msg_queue = MESA_lqueue_create(1,_handle->writer_info.readers[i].max_lqueue_size);
|
||||
_handle->writer_info.readers[i].msg_queue = MESA_ring_queue_born();
|
||||
rq_num = _handle->writer_info.readers[i].max_lqueue_size;
|
||||
MESA_ring_queue_set_opt(_handle->writer_info.readers[i].msg_queue,RQO_RING_ELEMENT_NUM,&(rq_num),sizeof(int));
|
||||
MESA_ring_queue_set_opt(_handle->writer_info.readers[i].msg_queue,RQO_PRE_ALLOC_BUF_LEN,&rq_buflen,sizeof(uint32_t));
|
||||
if(MESA_ring_queue_mature(_handle->writer_info.readers[i].msg_queue))
|
||||
{
|
||||
return USM_QUEUE_INIT_ERR;
|
||||
}
|
||||
|
||||
_handle->writer_info.readers[i].un_sd = init_output_un_socket(file_name);
|
||||
|
||||
//_handle->writer_info.readers[i].un_sd = init_output_un_socket(_handle->writer_info.readers[i].reader_path);
|
||||
if(_handle->writer_info.readers[i].un_sd == -1)
|
||||
{
|
||||
return USM_SOCKET_INIT_ERR;
|
||||
}
|
||||
pthread_create(&thread_id[i],NULL,sending_thread,&(_handle->writer_info.readers[i]));
|
||||
//pthread_create(&thread_id[i],&attr,sending_thread,&(_handle->readers[i]));
|
||||
}
|
||||
}
|
||||
|
||||
return USM_SUCC;
|
||||
}
|
||||
|
||||
int USM_write(USM_t * handle, const char * data, int datalen)
|
||||
{
|
||||
struct _usm_handle_t *_handle=(struct _usm_handle_t*)handle;
|
||||
//int j=0;
|
||||
int rst = 0;
|
||||
/*for(j=0;j<_handle->writer_info->reader_cnt;j++)
|
||||
{
|
||||
if(_handle->writer_info->readers[j].lq_flag == 1)
|
||||
{
|
||||
|
||||
}
|
||||
}*/
|
||||
//struct _usm_inner_msg_t *q=NULL;
|
||||
//struct _usm_inner_msg_t p;
|
||||
//memset(&p,0,sizeof(struct _usm_inner_msg_t));
|
||||
uint32_t cur_offset = 0;
|
||||
struct _pkt_node *curnode=NULL;
|
||||
uint16_t i = 0;
|
||||
unsigned long long to_use_offset=0;
|
||||
assert( datalen <= MTU_SIZE );
|
||||
|
||||
//debug
|
||||
/*struct _msg_header* msgheader = (struct _msg_header*)data;
|
||||
msg_metainfo_t* msginfo = (msg_metainfo_t*)(data + MSG_HEADER_LEN);
|
||||
assert(msgheader->magic_num == 22081);
|
||||
|
||||
if(msgheader->msg_type == 49)
|
||||
{
|
||||
assert(msginfo->opt_num == 0);
|
||||
}*/
|
||||
to_use_offset = __sync_fetch_and_add(&(_handle->writer_info.latest_wt_ofst),1);
|
||||
to_use_offset = to_use_offset % _handle->shm_size;
|
||||
curnode = _handle->shm_addr + to_use_offset;
|
||||
|
||||
//MESA_handle_runtime_log(_handle->writer_info.readers[0].log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
// "wt_ofst is %d.",_handle->writer_info.latest_wt_ofst);
|
||||
|
||||
/*if(0 > mprotect(_handle->shm_addr,sizeof(struct _pkt_node)*_handle->shm_size,PROT_WRITE))
|
||||
{
|
||||
printf("mprotect PROT_WRITE error: %s.",strerror(errno));
|
||||
}*/
|
||||
/*for(i = 0;i< _handle->writer_info.reader_cnt; i++)
|
||||
{
|
||||
MESA_handle_runtime_log(_handle->writer_info.readers[i].log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
"Cur_offset is %d. Before write flag is %o,%o. The buff length is %d. The fgets buff is %s. ",
|
||||
_handle->writer_info.latest_wt_ofst,curnode->flag[0],curnode->flag[1],datalen,data);
|
||||
}*/
|
||||
//int flag = (int)curnode->flag[0] + (int)(curnode->flag[1] << 8);
|
||||
//mb();
|
||||
//writing err
|
||||
//if(curnode->iflag&0x01)
|
||||
if(curnode->flag[0]&0x01)
|
||||
{
|
||||
_handle->writer_info.wt_view_stat.err_wting_pktnum ++;
|
||||
_handle->writer_info.wt_view_stat.err_wting_datalen += datalen;
|
||||
}
|
||||
for(i = 0;i < _handle->writer_info.reader_cnt; i++)
|
||||
{
|
||||
//reading err
|
||||
//if(curnode->iflag&(0x01<<(i*2+2)))
|
||||
if(curnode->flag[i+1]&0x01)
|
||||
{
|
||||
_handle->writer_info.readers[i].stat.err_rding_pktnum++;
|
||||
_handle->writer_info.readers[i].stat.err_rding_datalen += datalen;
|
||||
}
|
||||
|
||||
//read already
|
||||
//if(curnode->iflag&(0x01<<(i*2+3)))
|
||||
if(curnode->flag[i+1]&0x02)
|
||||
{
|
||||
_handle->writer_info.readers[i].stat.rd_pktnum++;
|
||||
_handle->writer_info.readers[i].stat.rd_datalen += datalen;
|
||||
}
|
||||
else//not read
|
||||
{
|
||||
_handle->writer_info.readers[i].stat.not_rd_pktnum++;
|
||||
_handle->writer_info.readers[i].stat.not_rd_datalen += datalen;
|
||||
}
|
||||
}
|
||||
|
||||
curnode->flag[0] |= 0x01;//set writing
|
||||
|
||||
curnode->pkt_len = datalen;
|
||||
|
||||
memcpy(curnode->pkt_data,data,curnode->pkt_len);
|
||||
|
||||
curnode->flag[0] &= 0x00;//set back to not writing
|
||||
curnode->flag[0] |= 0x02;//set writen already
|
||||
|
||||
//set back to not read
|
||||
for(i = 0;i < _handle->writer_info.reader_cnt; i++)
|
||||
{
|
||||
/*if(i<3)
|
||||
{
|
||||
curnode->flag[0] &= (~(0x01<<(i*2+3)));
|
||||
}
|
||||
else
|
||||
{
|
||||
curnode->flag[1] &= (~(0x01<<(i*2-5)));
|
||||
}*/
|
||||
curnode->flag[i+1]&=0x00;
|
||||
|
||||
}
|
||||
/*if(0 > mprotect(_handle->shm_addr,sizeof(struct _pkt_node)*_handle->shm_size,PROT_NONE))
|
||||
{
|
||||
printf("mprotect PROT_NONE error: %s.",strerror(errno));
|
||||
}*/
|
||||
for(i=0;i<_handle->writer_info.reader_cnt;i++)
|
||||
{
|
||||
//MESA_handle_runtime_log(_handle->writer_info.readers[i].log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
//"After write flag is %o,%o.\n",curnode->flag[0],curnode->flag[1]);
|
||||
}
|
||||
|
||||
cur_offset = to_use_offset;
|
||||
//MESA_handle_runtime_log(_handle->writer_info.readers[0].log_handle, RLOG_LV_FATAL, USM_COMM,
|
||||
//"cur offset is %d.",cur_offset);
|
||||
for(i=0;i<_handle->writer_info.reader_cnt;i++)
|
||||
{
|
||||
//make a duplication of p
|
||||
//q=(struct _usm_inner_msg_t*)malloc(sizeof(struct _usm_inner_msg_t));
|
||||
//memcpy(q,&p,sizeof(p));
|
||||
//rst = MESA_lqueue_join_tail(_handle->writer_info.readers[i].msg_queue,&cur_offset,sizeof(cur_offset));
|
||||
rst = MESA_ring_queue_join(_handle->writer_info.readers[i].msg_queue,&cur_offset,sizeof(cur_offset));
|
||||
//debug
|
||||
//MESA_handle_runtime_log(_handle->writer_info.readers[i].log_handle, RLOG_LV_FATAL, USM_COMM,
|
||||
// "JOIN offset is %d.",cur_offset);
|
||||
if(rst < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(_handle->writer_info.readers[i].log_handle, RLOG_LV_FATAL, USM_COMM,
|
||||
"MESA_rqueue_join failed. error num is %d.\n",rst);
|
||||
}
|
||||
//int lq_count = MESA_lqueue_get_count(_handle->writer_info.readers[i].msg_queue);
|
||||
//printf("MESA_lqueue cur_count %llu.\n",lq_count);
|
||||
//MESA_handle_runtime_log(_handle->writer_info.readers[i].log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
//"MESA_lqueue cur_count %llu.\n",lq_count);
|
||||
}
|
||||
|
||||
// _handle->writer_info.latest_wt_ofst = (_handle->writer_info.latest_wt_ofst + 1) % _handle->shm_size;
|
||||
_handle->writer_info.wt_view_stat.wt_pktnum ++;
|
||||
_handle->writer_info.wt_view_stat.wt_datalen += datalen;
|
||||
|
||||
return USM_SUCC;
|
||||
}
|
||||
|
||||
int USM_read(USM_t* handle,char** data,int* datalen,int* data_cnt)
|
||||
{
|
||||
struct _usm_handle_t *_handle = (struct _usm_handle_t*)handle;
|
||||
//MESA_lqueue_head pkt_queue = _handle->reader_info.pkt_queue;
|
||||
int un_sd = _handle->reader_info.un_sd;
|
||||
struct _pkt_node* shm_addr = _handle->shm_addr;
|
||||
struct _pkt_node *curnode = NULL;
|
||||
struct sockaddr sa;
|
||||
socklen_t sa_len = sizeof(struct sockaddr);
|
||||
struct _usm_outer_msg_t to_recv;
|
||||
memset(&to_recv,0,sizeof(struct _usm_outer_msg_t));
|
||||
int recv_len = 0;
|
||||
int i = 0;
|
||||
//uint64_t cur_offset = 0;
|
||||
//long offset_len = sizeof(uint64_t);
|
||||
//int rst = 0;
|
||||
recv_len = recvfrom(un_sd,&to_recv,sizeof(struct _usm_outer_msg_t),0,(struct sockaddr*)&sa,&sa_len);
|
||||
if(recv_len < 0)
|
||||
{
|
||||
MESA_handle_runtime_log(_handle->reader_info.log_handle, RLOG_LV_FATAL, USM_COMM,
|
||||
"Unix-domain recv data: %s\n",strerror(errno));
|
||||
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*if(0 > mprotect(_handle->shm_addr,sizeof(struct _pkt_node)*_handle->shm_size,PROT_READ))
|
||||
{
|
||||
printf("mprotect PROT_READ error: %s.",strerror(errno));
|
||||
}*/
|
||||
|
||||
*data_cnt = to_recv.msg_cnt;
|
||||
for(i =0; i < to_recv.msg_cnt; i++)
|
||||
{
|
||||
curnode = shm_addr + to_recv.offset[i];
|
||||
//MESA_handle_runtime_log(_handle->reader_info.log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
//"Recv flag is %d,%d.",curnode->flag[0],curnode->flag[1]);
|
||||
|
||||
//mb();
|
||||
|
||||
//set reading
|
||||
/*if(_handle->reader_info.reader_id <3)
|
||||
{
|
||||
curnode->flag[0] |= (0x01 << (_handle->reader_info.reader_id*2 + 2));
|
||||
}
|
||||
else
|
||||
{
|
||||
curnode->flag[1] |= (0x01 << (_handle->reader_info.reader_id*2 - 6));
|
||||
}*/
|
||||
|
||||
curnode->flag[_handle->reader_info.reader_id+1] |= 0x01;
|
||||
|
||||
//if(datalen[i] > curnode->pkt_len)
|
||||
//{
|
||||
datalen[i] = curnode->pkt_len;
|
||||
//}
|
||||
data[i] = curnode->pkt_data;//only copy pointer
|
||||
|
||||
//set not reading and set read already
|
||||
/*if(_handle->reader_info.reader_id <3)
|
||||
{
|
||||
curnode->flag[0] &= (~(0x01 << (_handle->reader_info.reader_id*2 + 2)));
|
||||
curnode->flag[0] |= (0x01 << (_handle->reader_info.reader_id*2 + 3));
|
||||
}
|
||||
else
|
||||
{
|
||||
curnode->flag[1] &= (~(0x01 << (_handle->reader_info.reader_id*2 - 6)));
|
||||
curnode->flag[1] |= (0x01 << (_handle->reader_info.reader_id*2 - 5));
|
||||
}*/
|
||||
curnode->flag[_handle->reader_info.reader_id+1] &= 0x00;
|
||||
curnode->flag[_handle->reader_info.reader_id+1] |= 0x02;
|
||||
|
||||
/*MESA_handle_runtime_log(_handle->reader_info.log_handle, RLOG_LV_DEBUG, USM_COMM,
|
||||
"After read flag is %d,%d. The length is %d. The read out buff is %s.",
|
||||
curnode->flag[0],curnode->flag[1],*datalen,data); */
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64_t USM_stat(USM_t* handle,enum USM_stat_t type,int reader_id)
|
||||
{
|
||||
uint64_t i=0;
|
||||
struct _usm_handle_t *_handle=(struct _usm_handle_t*)handle;
|
||||
|
||||
switch(type)
|
||||
{
|
||||
case WRITED_SIZE:
|
||||
i = _handle->writer_info.wt_view_stat.wt_datalen;
|
||||
break;
|
||||
case WRITED_CNT:
|
||||
i = _handle->writer_info.wt_view_stat.wt_pktnum;
|
||||
break;
|
||||
case WRITING_CLASH_SIZE:
|
||||
i = _handle->writer_info.wt_view_stat.err_wting_datalen;
|
||||
break;
|
||||
case WRITING_CLASH_CNT:
|
||||
i = _handle->writer_info.wt_view_stat.err_wting_pktnum;
|
||||
break;
|
||||
case SENDED_CNT:
|
||||
i = _handle->writer_info.readers[reader_id].stat.sd_pktnum;
|
||||
break;
|
||||
case READED_SIZE:
|
||||
i = _handle->writer_info.readers[reader_id].stat.rd_datalen;
|
||||
break;
|
||||
case READED_CNT:
|
||||
i = _handle->writer_info.readers[reader_id].stat.rd_pktnum;
|
||||
break;
|
||||
case READER_DROP_SIZE:
|
||||
i = _handle->writer_info.readers[reader_id].stat.not_rd_datalen;
|
||||
break;
|
||||
case READER_DROP_CNT:
|
||||
i = _handle->writer_info.readers[reader_id].stat.not_rd_pktnum;
|
||||
break;
|
||||
case READING_CLASH_SIZE:
|
||||
i = _handle->writer_info.readers[reader_id].stat.err_rding_datalen;
|
||||
break;
|
||||
case READING_CLASH_CNT:
|
||||
i = _handle->writer_info.readers[reader_id].stat.err_rding_pktnum;
|
||||
break;
|
||||
case LQ_COUNT:
|
||||
i = _handle->writer_info.readers[reader_id].stat.lq_count;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
BIN
src/tool/backend/support/usm_comm/src/usm_comm.a
Normal file
BIN
src/tool/backend/support/usm_comm/src/usm_comm.a
Normal file
Binary file not shown.
BIN
src/tool/backend/support/usm_comm/src/usm_comm.so
Normal file
BIN
src/tool/backend/support/usm_comm/src/usm_comm.so
Normal file
Binary file not shown.
19
src/tool/backend/support/usm_comm/test/Makefile
Normal file
19
src/tool/backend/support/usm_comm/test/Makefile
Normal file
@@ -0,0 +1,19 @@
|
||||
CC=gcc
|
||||
CCC=g++
|
||||
|
||||
CFLAGS=-g -Wall
|
||||
|
||||
INCLUDE=-I../inc/
|
||||
LIB=-lrt -lpthread -lMESA_htable -lMESA_handle_logger
|
||||
LIB+=../lib/usm_comm.so
|
||||
#LIB+=../lib/libcommon.a
|
||||
|
||||
TARGET=test_writer test_reader0 test_reader1 test_reader2
|
||||
|
||||
all:
|
||||
gcc $(CFLAGS) -o test_writer test_writer.c $(INCLUDE) $(LIB)
|
||||
gcc $(CFLAGS) -o test_reader0 test_reader.c $(INCLUDE) $(LIB)
|
||||
gcc $(CFLAGS) -o test_reader1 test_reader1.c $(INCLUDE) $(LIB)
|
||||
gcc $(CFLAGS) -o test_reader2 test_reader2.c $(INCLUDE) $(LIB)
|
||||
clean:
|
||||
rm -f *.o $(TARGET)
|
||||
0
src/tool/backend/support/usm_comm/test/log/reader0
Normal file
0
src/tool/backend/support/usm_comm/test/log/reader0
Normal file
0
src/tool/backend/support/usm_comm/test/log/reader1
Normal file
0
src/tool/backend/support/usm_comm/test/log/reader1
Normal file
0
src/tool/backend/support/usm_comm/test/log/reader2
Normal file
0
src/tool/backend/support/usm_comm/test/log/reader2
Normal file
0
src/tool/backend/support/usm_comm/test/log/writer0
Normal file
0
src/tool/backend/support/usm_comm/test/log/writer0
Normal file
313716
src/tool/backend/support/usm_comm/test/log/writer0.2017-03-14
Normal file
313716
src/tool/backend/support/usm_comm/test/log/writer0.2017-03-14
Normal file
File diff suppressed because it is too large
Load Diff
0
src/tool/backend/support/usm_comm/test/log/writer1
Normal file
0
src/tool/backend/support/usm_comm/test/log/writer1
Normal file
352277
src/tool/backend/support/usm_comm/test/log/writer1.2017-03-14
Normal file
352277
src/tool/backend/support/usm_comm/test/log/writer1.2017-03-14
Normal file
File diff suppressed because it is too large
Load Diff
0
src/tool/backend/support/usm_comm/test/log/writer2
Normal file
0
src/tool/backend/support/usm_comm/test/log/writer2
Normal file
363672
src/tool/backend/support/usm_comm/test/log/writer2.2017-03-14
Normal file
363672
src/tool/backend/support/usm_comm/test/log/writer2.2017-03-14
Normal file
File diff suppressed because it is too large
Load Diff
96
src/tool/backend/support/usm_comm/test/test_reader.c
Normal file
96
src/tool/backend/support/usm_comm/test/test_reader.c
Normal file
@@ -0,0 +1,96 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME "./log/reader0"
|
||||
|
||||
#define LOG_LEVEL 20
|
||||
|
||||
#define SUIT_WRAP_NUM 20
|
||||
|
||||
typedef struct msg_header_s
|
||||
{
|
||||
uint16_t magic_num;
|
||||
uint8_t version;
|
||||
uint8_t msg_type; // msg data type
|
||||
uint32_t cont_len;
|
||||
}msg_header_t; /* sizeof = 8B */
|
||||
|
||||
#define MSG_HEADER_LEN sizeof(msg_header_t)
|
||||
|
||||
typedef struct msg_metainfo_s
|
||||
{
|
||||
char prog_id[8];
|
||||
char flag;
|
||||
uint8_t hitservice;
|
||||
uint64_t prog_len:48;
|
||||
uint32_t cap_IP;
|
||||
uint8_t protocol;
|
||||
uint8_t media_type;
|
||||
uint8_t data_flag;
|
||||
uint8_t opt_num;
|
||||
}msg_metainfo_t;
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
|
||||
USM_t* a_usm_handle = USM_handle(1635151988,100000,USM_READER);
|
||||
//USM_t* a_usm_handle = USM_handle(1233,100000,USM_READER);
|
||||
|
||||
unsigned int reader_id = 0;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),0);
|
||||
|
||||
//char reader_path[] = "./usm_test0";
|
||||
//char reader_path[] = "/home/mcger/un_recv";
|
||||
char reader_path[] = "/home/mesasoft/usm_test1";
|
||||
//char reader_path[] = "/home/dumeijie/usm_0";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),0);
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,0);
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt = 0;
|
||||
|
||||
int j = 0;
|
||||
int i = 0;
|
||||
msg_header_t* msgheader = NULL;
|
||||
msg_metainfo_t* msginfo = NULL;
|
||||
|
||||
|
||||
//while(1)
|
||||
for(j = 0;j<1000000/SUIT_WRAP_NUM;j++)
|
||||
{
|
||||
/*for(i = 0;i < 372;i++)
|
||||
{
|
||||
datalen[i] = 2048;
|
||||
}*/
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
//debug for online
|
||||
/*for(i =0;i< data_cnt;i++)
|
||||
{
|
||||
msgheader = (msg_header_t*)data[i];
|
||||
msginfo = (msg_metainfo_t*)(data[i] + MSG_HEADER_LEN);
|
||||
assert(msgheader->magic_num == 22081);
|
||||
if(msgheader->msg_type == 49)
|
||||
{
|
||||
assert(msginfo->opt_num == 0);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BIN
src/tool/backend/support/usm_comm/test/test_reader0
Normal file
BIN
src/tool/backend/support/usm_comm/test/test_reader0
Normal file
Binary file not shown.
BIN
src/tool/backend/support/usm_comm/test/test_reader1
Normal file
BIN
src/tool/backend/support/usm_comm/test/test_reader1
Normal file
Binary file not shown.
97
src/tool/backend/support/usm_comm/test/test_reader1.c
Normal file
97
src/tool/backend/support/usm_comm/test/test_reader1.c
Normal file
@@ -0,0 +1,97 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
|
||||
#define LOG_NAME "./log/reader1"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
|
||||
#define SUIT_WRAP_NUM 20
|
||||
typedef struct msg_header_s
|
||||
{
|
||||
uint16_t magic_num;
|
||||
uint8_t version;
|
||||
uint8_t msg_type; // msg data type
|
||||
uint32_t cont_len;
|
||||
}msg_header_t; /* sizeof = 8B */
|
||||
|
||||
#define MSG_HEADER_LEN sizeof(msg_header_t)
|
||||
|
||||
typedef struct msg_metainfo_s
|
||||
{
|
||||
char prog_id[8];
|
||||
char flag;
|
||||
uint8_t hitservice;
|
||||
uint64_t prog_len:48;
|
||||
uint32_t cap_IP;
|
||||
uint8_t protocol;
|
||||
uint8_t media_type;
|
||||
uint8_t data_flag;
|
||||
uint8_t opt_num;
|
||||
}msg_metainfo_t;
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
//USM_t* a_usm_handle = USM_handle(1233,100000,USM_READER);
|
||||
USM_t* a_usm_handle = USM_handle(1635151988,100000,USM_READER);
|
||||
|
||||
unsigned int reader_id = 1;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),1);
|
||||
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),1);
|
||||
|
||||
//char reader_path[] = "./usm_test1";
|
||||
//char reader_path[] = "/home/dumeijie/usm_1";
|
||||
char reader_path[] = "/home/mesasoft/usm_test2";
|
||||
//char reader_path[] = "/home/audiorecognition/aufilter/un_recv";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),1);
|
||||
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,1);
|
||||
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt =0;
|
||||
|
||||
int j =0;
|
||||
int i =0;
|
||||
msg_header_t* msgheader = NULL;
|
||||
msg_metainfo_t* msginfo = NULL;
|
||||
|
||||
//while(1)
|
||||
for(j = 0;j<1000000/SUIT_WRAP_NUM;j++)
|
||||
{
|
||||
/*for(i = 0;i < 372;i++)
|
||||
{
|
||||
datalen[i] = 2048;
|
||||
}*/
|
||||
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
//debug for online
|
||||
/*for(i =0;i< data_cnt;i++)
|
||||
{
|
||||
msgheader = (msg_header_t*)data[i];
|
||||
msginfo = (msg_metainfo_t*)(data[i] + MSG_HEADER_LEN);
|
||||
assert(msgheader->magic_num == 22081);
|
||||
if(msgheader->msg_type == 49)
|
||||
{
|
||||
assert(msginfo->opt_num == 0);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BIN
src/tool/backend/support/usm_comm/test/test_reader2
Normal file
BIN
src/tool/backend/support/usm_comm/test/test_reader2
Normal file
Binary file not shown.
93
src/tool/backend/support/usm_comm/test/test_reader2.c
Normal file
93
src/tool/backend/support/usm_comm/test/test_reader2.c
Normal file
@@ -0,0 +1,93 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME "./log/reader2"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
|
||||
#define SUIT_WRAP_NUM 20
|
||||
typedef struct msg_header_s
|
||||
{
|
||||
uint16_t magic_num;
|
||||
uint8_t version;
|
||||
uint8_t msg_type; // msg data type
|
||||
uint32_t cont_len;
|
||||
}msg_header_t; /* sizeof = 8B */
|
||||
|
||||
#define MSG_HEADER_LEN sizeof(msg_header_t)
|
||||
|
||||
typedef struct msg_metainfo_s
|
||||
{
|
||||
char prog_id[8];
|
||||
char flag;
|
||||
uint8_t hitservice;
|
||||
uint64_t prog_len:48;
|
||||
uint32_t cap_IP;
|
||||
uint8_t protocol;
|
||||
uint8_t media_type;
|
||||
uint8_t data_flag;
|
||||
uint8_t opt_num;
|
||||
}msg_metainfo_t;
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
//USM_t* a_usm_handle = USM_handle(1233,100000,USM_READER);
|
||||
USM_t* a_usm_handle = USM_handle(1635151988,100000,USM_READER);
|
||||
unsigned int reader_id = 2;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),2);
|
||||
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),2);
|
||||
|
||||
//char reader_path[] = "./usm_test2";//test_write
|
||||
char reader_path[] = "/home/mesasoft/usm_test";//test_frag_rssb
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),2);
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,2);
|
||||
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt =0;
|
||||
|
||||
int j = 0;
|
||||
int i = 0;
|
||||
msg_header_t* msgheader = NULL;
|
||||
msg_metainfo_t* msginfo = NULL;
|
||||
//while(1)
|
||||
for(j = 0;j<1000000/SUIT_WRAP_NUM;j++)
|
||||
{
|
||||
/*for(i = 0;i < 372;i++)
|
||||
{
|
||||
datalen[i] = 2048;
|
||||
}*/
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
|
||||
//debug for online
|
||||
/*for(i =0;i< data_cnt;i++)
|
||||
{
|
||||
msgheader = (msg_header_t*)data[i];
|
||||
msginfo = (msg_metainfo_t*)(data[i] + MSG_HEADER_LEN);
|
||||
assert(msgheader->magic_num == 22081);
|
||||
if(msgheader->msg_type == 49)
|
||||
{
|
||||
assert(msginfo->opt_num == 0);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
BIN
src/tool/backend/support/usm_comm/test/test_writer
Normal file
BIN
src/tool/backend/support/usm_comm/test/test_writer
Normal file
Binary file not shown.
154
src/tool/backend/support/usm_comm/test/test_writer.c
Normal file
154
src/tool/backend/support/usm_comm/test/test_writer.c
Normal file
@@ -0,0 +1,154 @@
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#include "usm_api.h"
|
||||
|
||||
#define LOG_NAME0 "./log/writer0"
|
||||
#define LOG_NAME1 "./log/writer1"
|
||||
#define LOG_NAME2 "./log/writer2"
|
||||
|
||||
#define LOG_LEVEL 20
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
void* logger_0 = MESA_create_runtime_log_handle(LOG_NAME0,LOG_LEVEL);
|
||||
void* logger_1 = MESA_create_runtime_log_handle(LOG_NAME1,LOG_LEVEL);
|
||||
void* logger_2 = MESA_create_runtime_log_handle(LOG_NAME2,LOG_LEVEL);
|
||||
|
||||
//USM_t* a_usm_handle = USM_handle(1233,100000,USM_WRITER);
|
||||
USM_t* a_usm_handle = USM_handle(1635151988,100000,USM_WRITER);
|
||||
|
||||
unsigned int reader_cnt = 3;
|
||||
USM_set_opt(a_usm_handle,READER_CNT,(void*)&reader_cnt,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int smooth_time = 1000000;//1
|
||||
USM_set_opt(a_usm_handle,SMOOTH_TIME,(void*)&smooth_time,sizeof(unsigned int),0);
|
||||
smooth_time = 1000000;
|
||||
USM_set_opt(a_usm_handle,SMOOTH_TIME,(void*)&smooth_time,sizeof(unsigned int),1);
|
||||
smooth_time = 1000000;
|
||||
USM_set_opt(a_usm_handle,SMOOTH_TIME,(void*)&smooth_time,sizeof(unsigned int),2);
|
||||
//reader0
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),0);
|
||||
|
||||
char reader_path1[] = "/home/mesasoft/usm_test1";
|
||||
//char reader_path1[] = "/home/mcger/un_recv";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path1,strlen(reader_path1),0);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger_0,4,0);
|
||||
//reader1
|
||||
|
||||
//max_lq_size = 512;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),1);
|
||||
|
||||
char reader_path2[] = "/home/mesasoft/usm_test2";
|
||||
//char reader_path2[] = "/home/audiorecognition/aufilter/un_recv";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path2,strlen(reader_path2),1);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger_1,4,1);
|
||||
//reader2
|
||||
|
||||
|
||||
//max_lq_size = 512;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),2);
|
||||
|
||||
char reader_path3[] = "/home/mesasoft/usm_test";
|
||||
//char reader_path3[] = "/home/mesasoft/usm_test";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path3,strlen(reader_path3),2);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger_2,4,2);
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
char data[1024]={1};
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
//int len = 1;
|
||||
unsigned long long wt_pktnum = 0;
|
||||
unsigned long long wt_datalen = 0;
|
||||
unsigned long long err_wting_pktnum = 0;
|
||||
unsigned long long err_wting_datalen = 0;
|
||||
unsigned long long sd_pktnum = 0;
|
||||
unsigned long long rd_pktnum = 0;
|
||||
unsigned long long rd_datalen = 0;
|
||||
unsigned long long not_rd_pktnum = 0;
|
||||
unsigned long long not_rd_datalen = 0;
|
||||
unsigned long long err_rding_pktnum = 0;
|
||||
unsigned long long err_rding_datalen = 0;
|
||||
unsigned long long lqcount = 0;
|
||||
struct timespec last_send_time,now;
|
||||
clock_gettime(CLOCK_MONOTONIC,&last_send_time);
|
||||
for(j = 0;j<1000000;j++)
|
||||
// while(1)
|
||||
{
|
||||
rst = USM_write(a_usm_handle,data,1024);
|
||||
//len++;
|
||||
/*
|
||||
wt_datalen = USM_stat(a_usm_handle,WRITED_CNT,0);
|
||||
printf("WRITED_CNT: %d.\n",wt_datalen);
|
||||
wt_pktnum = USM_stat(a_usm_handle,WRITED_SIZE,0);
|
||||
printf("WRITED_SIZE: %d.\n",wt_pktnum);
|
||||
err_wting_datalen = USM_stat(a_usm_handle,WRITING_CLASH_CNT,0);
|
||||
printf("WRITING_CLASH_CNT: %d.\n",err_wting_datalen);
|
||||
err_wting_pktnum = USM_stat(a_usm_handle,WRITING_CLASH_SIZE,0);
|
||||
printf("WRITING_CLASH_SIZE: %d.\n\n",err_wting_pktnum);
|
||||
for(i = 0;i < reader_cnt;i++)
|
||||
{
|
||||
//sd_pktnum = USM_stat(a_usm_handle,SENDED_CNT,i);
|
||||
//printf("Reader %d - SENDED_CNT: %d.\n",i,sd_pktnum);
|
||||
rd_datalen = USM_stat(a_usm_handle,READED_CNT,i);
|
||||
printf("Reader %d - READED_CNT: %d.\n",i,rd_datalen);
|
||||
rd_pktnum = USM_stat(a_usm_handle,READED_SIZE,i);
|
||||
printf("Reader %d - READED_SIZE: %d.\n",i,rd_pktnum);
|
||||
not_rd_datalen = USM_stat(a_usm_handle,READER_DROP_CNT,i);
|
||||
printf("Reader %d - READER_DROP_CNT: %d.\n",i,not_rd_datalen);
|
||||
not_rd_pktnum = USM_stat(a_usm_handle,READER_DROP_SIZE,i);
|
||||
printf("Reader %d - READER_DROP_SIZE: %d.\n",i,not_rd_pktnum);
|
||||
err_rding_datalen = USM_stat(a_usm_handle,READING_CLASH_CNT,i);
|
||||
printf("Reader %d - READING_CLASH_CNT: %d.\n",i,err_rding_datalen);
|
||||
err_rding_pktnum = USM_stat(a_usm_handle,READING_CLASH_SIZE,i);
|
||||
printf("Reader %d - READING_CLASH_SIZE: %d.\n\n",i,err_rding_pktnum);
|
||||
}*/
|
||||
//usleep(20);
|
||||
}
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC,&now);
|
||||
printf("durtion time is %llu ns.\n",(now.tv_sec - last_send_time.tv_sec)*1000000000+(now.tv_nsec - last_send_time.tv_nsec));
|
||||
wt_datalen = USM_stat(a_usm_handle,WRITED_CNT,0);
|
||||
printf("WRITED_CNT: %llu.\n",wt_datalen);
|
||||
wt_pktnum = USM_stat(a_usm_handle,WRITED_SIZE,0);
|
||||
printf("WRITED_SIZE: %llu.\n",wt_pktnum);
|
||||
err_wting_datalen = USM_stat(a_usm_handle,WRITING_CLASH_CNT,0);
|
||||
printf("WRITING_CLASH_CNT: %llu.\n",err_wting_datalen);
|
||||
err_wting_pktnum = USM_stat(a_usm_handle,WRITING_CLASH_SIZE,0);
|
||||
printf("WRITING_CLASH_SIZE: %llu.\n\n",err_wting_pktnum);
|
||||
for(i = 0;i < reader_cnt;i++)
|
||||
{
|
||||
sd_pktnum = USM_stat(a_usm_handle,SENDED_CNT,i);
|
||||
printf("Reader %d - SENDED_CNT: %llu.\n",i,sd_pktnum);
|
||||
lqcount = USM_stat(a_usm_handle,LQ_COUNT,i);
|
||||
printf("Reader %d - LQ_CNT: %llu.\n",i,lqcount);
|
||||
rd_datalen = USM_stat(a_usm_handle,READED_CNT,i);
|
||||
printf("Reader %d - READED_CNT: %llu.\n",i,rd_datalen);
|
||||
rd_pktnum = USM_stat(a_usm_handle,READED_SIZE,i);
|
||||
printf("Reader %d - READED_SIZE: %llu.\n",i,rd_pktnum);
|
||||
not_rd_datalen = USM_stat(a_usm_handle,READER_DROP_CNT,i);
|
||||
printf("Reader %d - READER_DROP_CNT: %llu.\n",i,not_rd_datalen);
|
||||
not_rd_pktnum = USM_stat(a_usm_handle,READER_DROP_SIZE,i);
|
||||
printf("Reader %d - READER_DROP_SIZE: %llu.\n",i,not_rd_pktnum);
|
||||
err_rding_datalen = USM_stat(a_usm_handle,READING_CLASH_CNT,i);
|
||||
printf("Reader %d - READING_CLASH_CNT: %llu.\n",i,err_rding_datalen);
|
||||
err_rding_pktnum = USM_stat(a_usm_handle,READING_CLASH_SIZE,i);
|
||||
printf("Reader %d - READING_CLASH_SIZE: %llu.\n\n",i,err_rding_pktnum);
|
||||
}
|
||||
|
||||
MESA_destroy_runtime_log_handle(logger_0);
|
||||
MESA_destroy_runtime_log_handle(logger_1);
|
||||
MESA_destroy_runtime_log_handle(logger_2);
|
||||
return 0;
|
||||
|
||||
}
|
||||
17
src/tool/backend/support/usm_comm/test_md5/Makefile
Normal file
17
src/tool/backend/support/usm_comm/test_md5/Makefile
Normal file
@@ -0,0 +1,17 @@
|
||||
CC=gcc
|
||||
CCC=g++
|
||||
|
||||
CFLAGS=-g -Wall
|
||||
INCLUDE=-I../inc/
|
||||
LIB=-lrt -lpthread -lcrypto -lssl -lMESA_htable -lMESA_handle_logger
|
||||
LIB+=../lib/usm_comm.so
|
||||
|
||||
TARGET=md5_writer md5_reader0 md5_reader1 md5_reader2
|
||||
|
||||
all:
|
||||
gcc $(CFLAGS) -o md5_reader0 md5_reader.c $(INCLUDE) $(LIB)
|
||||
gcc $(CFLAGS) -o md5_reader1 md5_reader1.c $(INCLUDE) $(LIB)
|
||||
gcc $(CFLAGS) -o md5_reader2 md5_reader2.c $(INCLUDE) $(LIB)
|
||||
gcc $(CFLAGS) -o md5_writer md5_writer.c $(INCLUDE) $(LIB)
|
||||
clean:
|
||||
rm -f *.o $(TARGET)
|
||||
72
src/tool/backend/support/usm_comm/test_md5/md5_reader.c
Normal file
72
src/tool/backend/support/usm_comm/test_md5/md5_reader.c
Normal file
@@ -0,0 +1,72 @@
|
||||
#include <openssl/md5.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME "./log/md5_reader0"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
|
||||
#define SUIT_WRAP_NUM 20
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
|
||||
USM_t* a_usm_handle = USM_handle(1233,100000,USM_READER);
|
||||
|
||||
unsigned int reader_id = 0;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),0);
|
||||
|
||||
char reader_path[] = "./usm_test0";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),0);
|
||||
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,0);
|
||||
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
MD5_CTX c;
|
||||
unsigned char md5[17]={0};
|
||||
MD5_Init(&c);
|
||||
|
||||
//usm_read2
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt =0;
|
||||
|
||||
int j = 0;
|
||||
int i = 0;
|
||||
|
||||
for(j = 0;j<1000000/SUIT_WRAP_NUM;j++)
|
||||
{
|
||||
for(i = 0;i < SUIT_WRAP_NUM;i++)
|
||||
{
|
||||
datalen[i] = 2048;
|
||||
}
|
||||
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
|
||||
for(i = 0;i < data_cnt;i++)
|
||||
{
|
||||
MD5_Update(&c, data[i], datalen[i]);
|
||||
}
|
||||
|
||||
}
|
||||
MD5_Final(md5,&c);
|
||||
printf("MD5 is %x%x%x%x.\n",*(int*)md5,*((int*)md5+1),*((int*)md5+2),*((int*)md5+3));
|
||||
//free(data);
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BIN
src/tool/backend/support/usm_comm/test_md5/md5_reader0
Normal file
BIN
src/tool/backend/support/usm_comm/test_md5/md5_reader0
Normal file
Binary file not shown.
BIN
src/tool/backend/support/usm_comm/test_md5/md5_reader1
Normal file
BIN
src/tool/backend/support/usm_comm/test_md5/md5_reader1
Normal file
Binary file not shown.
70
src/tool/backend/support/usm_comm/test_md5/md5_reader1.c
Normal file
70
src/tool/backend/support/usm_comm/test_md5/md5_reader1.c
Normal file
@@ -0,0 +1,70 @@
|
||||
#include <openssl/md5.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME "./log/md5_reader1"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
|
||||
#define SUIT_WRAP_NUM 20
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
|
||||
USM_t* a_usm_handle = USM_handle(1233,100000,USM_READER);
|
||||
|
||||
unsigned int reader_id = 1;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),1);
|
||||
|
||||
char reader_path[] = "./usm_test1";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),1);
|
||||
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,1);
|
||||
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
MD5_CTX c;
|
||||
unsigned char md5[17]={0};
|
||||
MD5_Init(&c);
|
||||
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt = 0;
|
||||
int j = 0;
|
||||
int i = 0;
|
||||
|
||||
for(j = 0;j<1000000/SUIT_WRAP_NUM;j++)
|
||||
{
|
||||
for(i = 0;i < SUIT_WRAP_NUM;i++)
|
||||
{
|
||||
datalen[i] = 2048;
|
||||
}
|
||||
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
|
||||
for(i = 0;i < data_cnt;i++)
|
||||
{
|
||||
MD5_Update(&c, data[i], datalen[i]);
|
||||
}
|
||||
|
||||
}
|
||||
MD5_Final(md5,&c);
|
||||
printf("MD5 is %x%x%x%x.\n",*(int*)md5,*((int*)md5+1),*((int*)md5+2),*((int*)md5+3));
|
||||
//free(data);
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BIN
src/tool/backend/support/usm_comm/test_md5/md5_reader2
Normal file
BIN
src/tool/backend/support/usm_comm/test_md5/md5_reader2
Normal file
Binary file not shown.
71
src/tool/backend/support/usm_comm/test_md5/md5_reader2.c
Normal file
71
src/tool/backend/support/usm_comm/test_md5/md5_reader2.c
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <openssl/md5.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME "./log/md5_reader2"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
|
||||
#define SUIT_WRAP_NUM 20
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
|
||||
USM_t* a_usm_handle = USM_handle(1233,100000,USM_READER);
|
||||
|
||||
unsigned int reader_id = 2;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),2);
|
||||
|
||||
char reader_path[] = "./usm_test2";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),2);
|
||||
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,2);
|
||||
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
MD5_CTX c;
|
||||
unsigned char md5[17]={0};
|
||||
MD5_Init(&c);
|
||||
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt = 0;
|
||||
|
||||
int j = 0;
|
||||
int i = 0;
|
||||
|
||||
for(j = 0;j<1000000/SUIT_WRAP_NUM;j++)
|
||||
{
|
||||
for(i = 0;i < SUIT_WRAP_NUM;i++)
|
||||
{
|
||||
datalen[i] = 2048;
|
||||
}
|
||||
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
|
||||
for(i = 0;i < data_cnt;i++)
|
||||
{
|
||||
MD5_Update(&c, data[i], datalen[i]);
|
||||
}
|
||||
|
||||
}
|
||||
MD5_Final(md5,&c);
|
||||
printf("MD5 is %x%x%x%x.\n",*(int*)md5,*((int*)md5+1),*((int*)md5+2),*((int*)md5+3));
|
||||
//free(data);
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BIN
src/tool/backend/support/usm_comm/test_md5/md5_writer
Normal file
BIN
src/tool/backend/support/usm_comm/test_md5/md5_writer
Normal file
Binary file not shown.
135
src/tool/backend/support/usm_comm/test_md5/md5_writer.c
Normal file
135
src/tool/backend/support/usm_comm/test_md5/md5_writer.c
Normal file
@@ -0,0 +1,135 @@
|
||||
#include <openssl/md5.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME0 "./log/md5_writer0"
|
||||
#define LOG_NAME1 "./log/md5_writer1"
|
||||
#define LOG_NAME2 "./log/md5_writer2"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
|
||||
USM_t* a_usm_handle = USM_handle(1233,100000,USM_WRITER);
|
||||
|
||||
unsigned int reader_cnt = 3;
|
||||
USM_set_opt(a_usm_handle,READER_CNT,(void*)&reader_cnt,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int smooth_time = 1000000;//1ms
|
||||
USM_set_opt(a_usm_handle,SMOOTH_TIME,(void*)&smooth_time,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int max_lq_size = 2048*2048;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),0);
|
||||
|
||||
char reader_path1[] = "./usm_test0";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path1,strlen(reader_path1),0);
|
||||
|
||||
void* logger_0 = MESA_create_runtime_log_handle(LOG_NAME0,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger_0,4,0);
|
||||
|
||||
void* logger_1 = MESA_create_runtime_log_handle(LOG_NAME1,LOG_LEVEL);
|
||||
void* logger_2 = MESA_create_runtime_log_handle(LOG_NAME2,LOG_LEVEL);
|
||||
//reader1
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),1);
|
||||
|
||||
char reader_path2[] = "./usm_test1";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path2,strlen(reader_path2),1);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger_1,4,1);
|
||||
//reader2
|
||||
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),2);
|
||||
|
||||
char reader_path3[] = "./usm_test2";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path3,strlen(reader_path3),2);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger_2,4,2);
|
||||
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
srand((int)time(0));
|
||||
int seed = rand();
|
||||
|
||||
int data[256]={0};
|
||||
int k = 0;
|
||||
for(k = 0;k<256;k++)
|
||||
{
|
||||
data[k]= seed;
|
||||
}
|
||||
MD5_CTX c;
|
||||
unsigned char md5[17]={0};
|
||||
MD5_Init(&c);
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
unsigned long long wt_pktnum = 0;
|
||||
unsigned long long wt_datalen = 0;
|
||||
unsigned long long err_wting_pktnum = 0;
|
||||
unsigned long long err_wting_datalen = 0;
|
||||
unsigned long long sd_pktnum = 0;
|
||||
unsigned long long rd_pktnum = 0;
|
||||
unsigned long long rd_datalen = 0;
|
||||
unsigned long long not_rd_pktnum = 0;
|
||||
unsigned long long not_rd_datalen = 0;
|
||||
unsigned long long err_rding_pktnum = 0;
|
||||
unsigned long long err_rding_datalen = 0;
|
||||
unsigned long long lqcount = 0;
|
||||
|
||||
struct timespec last_send_time,now;
|
||||
clock_gettime(CLOCK_MONOTONIC,&last_send_time);
|
||||
for(j = 0;j<1000000;j++)
|
||||
{
|
||||
rst = USM_write(a_usm_handle,(const char*)data,1024);
|
||||
MD5_Update(&c, data, 1024);
|
||||
}
|
||||
clock_gettime(CLOCK_MONOTONIC,&now);
|
||||
printf("durtion time is %llu ns.\n",(now.tv_sec - last_send_time.tv_sec)*1000000000+(now.tv_nsec - last_send_time.tv_nsec));
|
||||
|
||||
MD5_Final(md5,&c);
|
||||
printf("MD5 is %x%x%x%x.\n",*(int*)md5,*((int*)md5+1),*((int*)md5+2),*((int*)md5+3));
|
||||
|
||||
wt_datalen = USM_stat(a_usm_handle,WRITED_CNT,0);
|
||||
printf("WRITED_CNT: %llu.\n",wt_datalen);
|
||||
wt_pktnum = USM_stat(a_usm_handle,WRITED_SIZE,0);
|
||||
printf("WRITED_SIZE: %llu.\n",wt_pktnum);
|
||||
err_wting_datalen = USM_stat(a_usm_handle,WRITING_CLASH_CNT,0);
|
||||
printf("WRITING_CLASH_CNT: %llu.\n",err_wting_datalen);
|
||||
err_wting_pktnum = USM_stat(a_usm_handle,WRITING_CLASH_SIZE,0);
|
||||
printf("WRITING_CLASH_SIZE: %llu.\n\n",err_wting_pktnum);
|
||||
for(i = 0;i < reader_cnt;i++)
|
||||
{
|
||||
sd_pktnum = USM_stat(a_usm_handle,SENDED_CNT,i);
|
||||
printf("Reader %d - SENDED_CNT: %llu.\n",i,sd_pktnum);
|
||||
lqcount = USM_stat(a_usm_handle,LQ_COUNT,i);
|
||||
printf("Reader %d - LQ_CNT: %llu.\n",i,lqcount);
|
||||
rd_datalen = USM_stat(a_usm_handle,READED_CNT,i);
|
||||
printf("Reader %d - READED_CNT: %llu.\n",i,rd_datalen);
|
||||
rd_pktnum = USM_stat(a_usm_handle,READED_SIZE,i);
|
||||
printf("Reader %d - READED_SIZE: %llu.\n",i,rd_pktnum);
|
||||
not_rd_datalen = USM_stat(a_usm_handle,READER_DROP_CNT,i);
|
||||
printf("Reader %d - READER_DROP_CNT: %llu.\n",i,not_rd_datalen);
|
||||
not_rd_pktnum = USM_stat(a_usm_handle,READER_DROP_SIZE,i);
|
||||
printf("Reader %d - READER_DROP_SIZE: %llu.\n",i,not_rd_pktnum);
|
||||
err_rding_datalen = USM_stat(a_usm_handle,READING_CLASH_CNT,i);
|
||||
printf("Reader %d - READING_CLASH_CNT: %llu.\n",i,err_rding_datalen);
|
||||
err_rding_pktnum = USM_stat(a_usm_handle,READING_CLASH_SIZE,i);
|
||||
printf("Reader %d - READING_CLASH_SIZE: %llu.\n\n",i,err_rding_pktnum);
|
||||
}
|
||||
|
||||
MESA_destroy_runtime_log_handle(logger_0);
|
||||
MESA_destroy_runtime_log_handle(logger_1);
|
||||
MESA_destroy_runtime_log_handle(logger_2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
17
src/tool/backend/support/usm_comm/test_readfile/Makefile
Normal file
17
src/tool/backend/support/usm_comm/test_readfile/Makefile
Normal file
@@ -0,0 +1,17 @@
|
||||
CC=gcc
|
||||
CCC=g++
|
||||
|
||||
CFLAGS=-g -Wall
|
||||
|
||||
INCLUDE=-I../inc/
|
||||
LIB=-lrt -lpthread -lMESA_htable -lMESA_handle_logger
|
||||
LIB+=../lib/usm_comm.so
|
||||
#LIB+=../lib/libcommon.a
|
||||
|
||||
TARGET=write_file read_file
|
||||
|
||||
all:
|
||||
gcc $(CFLAGS) -o write_file write_file.c $(INCLUDE) $(LIB)
|
||||
gcc $(CFLAGS) -o read_file read_file.c $(INCLUDE) $(LIB)
|
||||
clean:
|
||||
rm -f *.o $(TARGET)
|
||||
BIN
src/tool/backend/support/usm_comm/test_readfile/read_file
Normal file
BIN
src/tool/backend/support/usm_comm/test_readfile/read_file
Normal file
Binary file not shown.
64
src/tool/backend/support/usm_comm/test_readfile/read_file.c
Normal file
64
src/tool/backend/support/usm_comm/test_readfile/read_file.c
Normal file
@@ -0,0 +1,64 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME "./log/reader"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
#define LOOP_NUM 150//test.txt line_num
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
USM_t* a_usm_handle = USM_handle(12345,1000,USM_READER);
|
||||
|
||||
unsigned int reader_id = 0;
|
||||
USM_set_opt(a_usm_handle,READER_ID,(void*)&reader_id,sizeof(unsigned int),0);
|
||||
|
||||
char reader_path[] = "/home/dumeijie/usm_testfile";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path,strlen(reader_path),0);
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,0);
|
||||
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
char* data[372]={0};
|
||||
int datalen[372] = {0};
|
||||
int data_cnt = 0;
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
int k =0;
|
||||
FILE *fp;
|
||||
if(NULL == (fp = fopen("test_2.txt","wb+")))
|
||||
{
|
||||
perror("fail to read.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
while(1)
|
||||
//for(i =0;i<LOOP_NUM;i++)
|
||||
{
|
||||
for(j =0;j<372;j++)
|
||||
{
|
||||
datalen[j] = 1000;
|
||||
}
|
||||
|
||||
rst = USM_read(a_usm_handle,data,datalen,&data_cnt);
|
||||
for(k =0;k<data_cnt;k++)
|
||||
{
|
||||
fwrite(data[k],datalen[k],1,fp);
|
||||
fflush(fp);
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
return 0;
|
||||
}
|
||||
|
||||
4
src/tool/backend/support/usm_comm/test_readfile/run.sh
Normal file
4
src/tool/backend/support/usm_comm/test_readfile/run.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
echo "Begin!"
|
||||
./write_file &
|
||||
./read_file &
|
||||
149
src/tool/backend/support/usm_comm/test_readfile/test.txt
Normal file
149
src/tool/backend/support/usm_comm/test_readfile/test.txt
Normal file
@@ -0,0 +1,149 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>֮һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>
|
||||
Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD>ֽ<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塢<EFBFBD><EFBFBD><EFBFBD>塢<EFBFBD><EFBFBD>β<EFBFBD><EFBFBD>һ<EFBFBD>廹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>ֹϥ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺã<EFBFBD>ȴ<EFBFBD>Ǹ<EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>䣬<EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>
|
||||
һ<EFBFBD>䰭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>岻<EFBFBD><EFBFBD>ͨ<EFBFBD>飬<EFBFBD><EFBFBD>˼Ľ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>ڣ<EFBFBD><EFBFBD>㱻<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ů<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ˣ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD>ﰵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǧ<EFBFBD>겻<EFBFBD>ұ<EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD>
|
||||
ǰͷ<EFBFBD>Ķ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䶼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻõ<EFBFBD>һ<EFBFBD>䣬ȴ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>̫<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>縡<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>껪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD>Ŵ<EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>кý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǰ<><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD>dz <20><> <20><><EFBFBD>ǣ<EFBFBD>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD>īԨ<C4AB><D4A8><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD>뾵<EFBFBD><EBBEB5><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3>Թȣ<D4B9><C8A3><EFBFBD><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD>ţ<EFBFBD><C5A3>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>˯<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﲻ<EFBFBD>ص<EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>Ψһ<EFBFBD>϶<EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD>Ϊҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ҳ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD>ĽŲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>岻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ող<EFBFBD><EFBFBD>ѣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>һ<EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Żش𣺡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>졣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>Ҫȥ<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵İ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ͻȻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD>Ѿ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>࣬<EFBFBD><EFBFBD><EFBFBD>DZ治<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD>ܵؽ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD>ج<EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD>ݺ<EFBFBD>Ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҿ־<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>ͻȻ<EFBFBD>е㷸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥæ<EFBFBD><EFBFBD><EFBFBD>İɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ˯һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ö<EFBFBD><C3B6><EFBFBD> http://www.haoduu.com<6F><6D>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>Ǻ<EFBFBD><EFBFBD>棬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>ôϲ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>Ů<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪʲôҪ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>ĵĿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD>ذ<EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD>Ҿ<EFBFBD>Ҫ<EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>↑ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>˺ܾõĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ỽ<EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣿡<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ɤ<EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һͬƷ<EFBFBD>衣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>Ъ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪʲôƵƵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>ھΣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִٲ<EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ֿ<EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>ĵ<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD>ѣ<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>յ<EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥɹɹ̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ҡ<EFBFBD>Σ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ֻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD><EFBFBD>佣<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>é<EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>ҩֹѪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ̯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㲻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD>еĺ<EFBFBD><EFBFBD>ӡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>¿<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳû<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>˵<EFBFBD>Ӵ<EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>͵͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ü<EFBFBD><EFBFBD>졣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ̫<EFBFBD>ӡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD>취<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD>취<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>˻ĵ<EFBFBD>Ů<EFBFBD>ӣ<EFBFBD>˭<EFBFBD>ֵܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>裿<EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㰮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ǻϵ<EFBFBD>һ˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD>Ȼ<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>亹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>̥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬<EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD>ھ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>衣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξþò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ъ<EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>û<EFBFBD>а취һ<EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD>ˮϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ÿ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĻ<EFBFBD>̺<EFBFBD><EFBFBD><EFBFBD>ش𣺡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵȵȰɣ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD>ҹҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳδ<EFBFBD><EFBFBD>֪<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȻʧЦ<EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ЪϢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD>ĵĿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD>ҵġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>û<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>˺ܼ<EFBFBD>į<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôҲû˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>졣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Եģ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD>Ҹж<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳȷʵ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㲻<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>ǣ<EFBFBD>Ҳ<EFBFBD>е<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD><EFBFBD>÷dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鷢<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧȥ˫<EFBFBD>ۣ<EFBFBD>ʧȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>죬<EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>С<EFBFBD>磬<EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ·<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĹ<EFBFBD><EFBFBD>غͰ<EFBFBD>Ϸ<EFBFBD><EFBFBD>ֻ<EFBFBD>о<EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ѫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸ô<EFBFBD><EFBFBD>ĵط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>º<EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ûصĵط<EFBFBD><EFBFBD>ɡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>Իص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㶵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ȥ<EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>衣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD>ҵģ<EFBFBD>ֻҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻȻץס<EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD>¸<EFBFBD>̨<EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>û<EFBFBD>з<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD>ӹ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ӱ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD>һ˫<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>嶯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôҲû<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>佹<EFBFBD>ƣ<EFBFBD><EFBFBD>Ҵ<EFBFBD>ææ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD>ް<EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>µĵ<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻأ<EFBFBD>Ƿ<EFBFBD>˱<EFBFBD><EFBFBD>˵<EFBFBD>ծ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ҳ<EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ<EFBFBD>Ϳ־<EFBFBD>һ<EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ʧ̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ъ˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪʲôҪ<EFBFBD>ҵ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>Ϊʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Ψһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵȺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>ź<EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>â<EFBFBD><EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD>ж<EFBFBD>ô<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>˫<EFBFBD>ۡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>죬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>к<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>·<EFBFBD>ˣ<EFBFBD>ģģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䲶<EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>ײײ<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD>Ժ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ЦЦ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顣<EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>ֹ<EFBFBD>۾<EFBFBD><EFBFBD>й<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӭȢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD>dzΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴͻȻ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽк<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣<EFBFBD>ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD>ӵر<EFBFBD><EFBFBD>ҡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD>һ˫<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>а취<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>Ҫȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>顣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ܾã<EFBFBD>һֱû<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>νе<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><EFBFBD>룬<EFBFBD>Ժ<EFBFBD>һ<EFBFBD><EFBFBD>Ҫ<EFBFBD>ú<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ܶ࣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Ȥ˵ʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳû<EFBFBD>С<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>º<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>֣<EFBFBD>ҪΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Ȼ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>ͬʱ<EFBFBD><EFBFBD>Ҳʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>Ҳû<EFBFBD><EFBFBD><EFBFBD>κο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>·<EFBFBD>ߡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD>Ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ·<EFBFBD>ϵ<EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ĸо<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨֮<EFBFBD>䡣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顣վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>ϣ<EFBFBD><EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ᡣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չˣ<EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD>ַ<EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻȻһ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϣ<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȥһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ĵط<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>˹µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻҪ<EFBFBD>Ҷ<EFBFBD><EFBFBD>ž<EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD>Ϊʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȻҪ<EFBFBD><EFBFBD><EFBFBD>⾵<EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Ψһһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD>û<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>ɬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ܾã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>ֻ<EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD>ٴο<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>úܺá<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ˺ð<EFBFBD><EFBFBD>롣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰһֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬һ<EFBFBD>߸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϵĹ<EFBFBD><EFBFBD>µģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ɶ<EFBFBD><C9B6><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><CBA1><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>һ˲<EFBFBD><EFBFBD>ȴͻȻ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ᣬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ̧<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>죬ȴ<EFBFBD><EFBFBD>ͻȻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD>ִӺζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>Щѹ<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ҾͿ<EFBFBD><EFBFBD>Իص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ϰ<EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD>ҵļ<EFBFBD><EFBFBD>磬<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﲻҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><EFBFBD>ʱ<EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷŹ<EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD>Ҳ<EFBFBD>Ź<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǴӴˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>䣬<EFBFBD>ﵱһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>ŭ<EFBFBD>𣺡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ûʲôҪ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>ȴ<EFBFBD>ǻҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴҲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ǿɵ<EFBFBD>ǧǧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>δ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD>뾹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ<EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>սһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µķ<EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>١<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ赹<EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㰢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﲢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>緢<EFBFBD>˷<EFBFBD><EFBFBD>Ƶ<EFBFBD>Ѱ<EFBFBD>㣬<EFBFBD><EFBFBD>Ҳ<EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>˯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôһ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôһ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ҩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵøɸɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>üͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⼸ʮ<EFBFBD>꣬<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҩζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵡<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>ôŮ<EFBFBD><EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
148
src/tool/backend/support/usm_comm/test_readfile/test_2.txt
Normal file
148
src/tool/backend/support/usm_comm/test_readfile/test_2.txt
Normal file
@@ -0,0 +1,148 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>֮һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>
|
||||
Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD>ֽ<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塢<EFBFBD><EFBFBD><EFBFBD>塢<EFBFBD><EFBFBD>β<EFBFBD><EFBFBD>һ<EFBFBD>廹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>ֹϥ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺã<EFBFBD>ȴ<EFBFBD>Ǹ<EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>䣬<EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>
|
||||
һ<EFBFBD>䰭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>岻<EFBFBD><EFBFBD>ͨ<EFBFBD>飬<EFBFBD><EFBFBD>˼Ľ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD>ڣ<EFBFBD><EFBFBD>㱻<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ս<EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ů<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ˣ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD>ﰵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǧ<EFBFBD>겻<EFBFBD>ұ<EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD>
|
||||
ǰͷ<EFBFBD>Ķ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䶼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻõ<EFBFBD>һ<EFBFBD>䣬ȴ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>̫<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>縡<EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>껪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD>Ŵ<EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>кý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ǰ<><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD>dz <20><> <20><><EFBFBD>ǣ<EFBFBD>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD>īԨ<C4AB><D4A8><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD>뾵<EFBFBD><EBBEB5><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3>Թȣ<D4B9><C8A3><EFBFBD><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD>ţ<EFBFBD><C5A3>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>˯<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﲻ<EFBFBD>ص<EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>Ψһ<EFBFBD>϶<EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD>Ϊҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ҳ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˭<EFBFBD>ĽŲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ء<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>岻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ող<EFBFBD><EFBFBD>ѣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>һ<EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Żش𣺡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>졣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD>Ҫȥ<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۵İ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ͻȻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD>Ѿ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>࣬<EFBFBD><EFBFBD><EFBFBD>DZ治<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD>ܵؽ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD>ج<EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD>ݺ<EFBFBD>Ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҿ־<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>ͻȻ<EFBFBD>е㷸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥæ<EFBFBD><EFBFBD><EFBFBD>İɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ˯һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ö<EFBFBD><C3B6><EFBFBD> http://www.haoduu.com<6F><6D>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>Ǻ<EFBFBD><EFBFBD>棬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>ôϲ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>Ů<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪʲôҪ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>ĵĿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD>ذ<EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD>Ҿ<EFBFBD>Ҫ<EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>↑ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>˺ܾõĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ỽ<EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣿡<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ɤ<EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ζ<EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һͬƷ<EFBFBD>衣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>Ъ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪʲôƵƵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>ھΣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִٲ<EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ֿ<EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>ĵ<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD>ѣ<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>յ<EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥɹɹ̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD>ҡ<EFBFBD>Σ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ֻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD><EFBFBD>佣<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>é<EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>ҩֹѪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ̯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㲻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD>еĺ<EFBFBD><EFBFBD>ӡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>¿<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳû<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>˵<EFBFBD>Ӵ<EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>͵͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ü<EFBFBD><EFBFBD>졣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ̫<EFBFBD>ӡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˰<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD>취<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲô<EFBFBD>취<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>˻ĵ<EFBFBD>Ů<EFBFBD>ӣ<EFBFBD>˭<EFBFBD>ֵܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>裿<EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㰮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>Ǻϵ<EFBFBD>һ˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD>Ȼ<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>亹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>̥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬<EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD>ھ<EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>衣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξþò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ъ<EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>û<EFBFBD>а취һ<EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD>ˮϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ÿ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĻ<EFBFBD>̺<EFBFBD><EFBFBD><EFBFBD>ش𣺡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵȵȰɣ<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD>ҹҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳδ<EFBFBD><EFBFBD>֪<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȻʧЦ<EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ЪϢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD>ĵĿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD>ҵġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>û<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>˺ܼ<EFBFBD>į<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôҲû˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>졣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Եģ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD>Ҹж<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳȷʵ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㲻<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD>ǣ<EFBFBD>Ҳ<EFBFBD>е<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD><EFBFBD>÷dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鷢<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧȥ˫<EFBFBD>ۣ<EFBFBD>ʧȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>죬<EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>С<EFBFBD>磬<EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ·<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵĹ<EFBFBD><EFBFBD>غͰ<EFBFBD>Ϸ<EFBFBD><EFBFBD>ֻ<EFBFBD>о<EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ѫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸ô<EFBFBD><EFBFBD>ĵط<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>º<EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ûصĵط<EFBFBD><EFBFBD>ɡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>Իص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㶵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ȥ<EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>衣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD>ҵģ<EFBFBD>ֻҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻȻץס<EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><EFBFBD>¸<EFBFBD>̨<EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>û<EFBFBD>з<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD>ӹ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>Ӱ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD>һ˫<EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>嶯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôҲû<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>佹<EFBFBD>ƣ<EFBFBD><EFBFBD>Ҵ<EFBFBD>ææ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD>ް<EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>µĵ<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻأ<EFBFBD>Ƿ<EFBFBD>˱<EFBFBD><EFBFBD>˵<EFBFBD>ծ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ף<EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ҳ<EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŭ<EFBFBD>Ϳ־<EFBFBD>һ<EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ʧ̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ץס<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ъ˹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪʲôҪ<EFBFBD>ҵ<EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>Ϊʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Ψһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱ<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵȺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>ź<EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>â<EFBFBD><EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD>ж<EFBFBD>ô<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>˫<EFBFBD>ۡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>죬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>к<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>DZ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>·<EFBFBD>ˣ<EFBFBD>ģģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD>ѧ<EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䲶<EFBFBD><EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>ײײ<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD>Ժ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ЦЦ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顣<EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޡ<EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>ֹ<EFBFBD>۾<EFBFBD><EFBFBD>й<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӭȢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD>dzΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴͻȻ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽк<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̧ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ι<EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>һҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣<EFBFBD>ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD>ӵر<EFBFBD><EFBFBD>ҡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ſ<EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>̫<EFBFBD>ӵ<EFBFBD><EFBFBD>¡<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʲôʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>֣<EFBFBD>һ˫<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>а취<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>Ҫȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>顣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ܾã<EFBFBD>һֱû<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>νе<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><EFBFBD>룬<EFBFBD>Ժ<EFBFBD>һ<EFBFBD><EFBFBD>Ҫ<EFBFBD>ú<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ܶ࣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Ȥ˵ʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳû<EFBFBD>С<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>º<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>֣<EFBFBD>ҪΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Ȼ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>ͬʱ<EFBFBD><EFBFBD>Ҳʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD>Ҳû<EFBFBD><EFBFBD><EFBFBD>κο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>·<EFBFBD>ߡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD>Ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ·<EFBFBD>ϵ<EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹<EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>ƾ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD>ĸо<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨֮<EFBFBD>䡣
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顣վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>ϣ<EFBFBD><EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ᡣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չˣ<EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD>ַ<EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻȻһ<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϣ<EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ư<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȥһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ĵط<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>˹µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻҪ<EFBFBD>Ҷ<EFBFBD><EFBFBD>ž<EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>֪<EFBFBD><EFBFBD>Ϊʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȻҪ<EFBFBD><EFBFBD><EFBFBD>⾵<EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>Ψһһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܾ<EFBFBD>û<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>ɬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ܾã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>ֻ<EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><EFBFBD>ѵ<EFBFBD><EFBFBD>ٴο<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ؿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>úܺá<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ˺ð<EFBFBD><EFBFBD>롣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰһֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬һ<EFBFBD>߸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ϵĹ<EFBFBD><EFBFBD>µģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ɶ<EFBFBD><C9B6><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><CBA1><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>һ˲<EFBFBD><EFBFBD>ȴͻȻ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ᣬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ̧<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>죬ȴ<EFBFBD><EFBFBD>ͻȻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD>ִӺζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>Щѹ<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ҾͿ<EFBFBD><EFBFBD>Իص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ϰ<EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD><EFBFBD>ҵļ<EFBFBD><EFBFBD>磬<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㡣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﲻҪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><EFBFBD>ʱ<EFBFBD>ؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷŹ<EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD>Ҳ<EFBFBD>Ź<EFBFBD><EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǴӴˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ա<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>䣬<EFBFBD>ﵱһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>ŭ<EFBFBD>𣺡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҷ<EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>ҹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ûʲôҪ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD>ȴ<EFBFBD>ǻҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴҲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ǿɵ<EFBFBD>ǧǧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>δ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD>뾹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ϊ<EFBFBD>˽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>սһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µķ<EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ů<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>١<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ赹<EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㰢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﲢ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>緢<EFBFBD>˷<EFBFBD><EFBFBD>Ƶ<EFBFBD>Ѱ<EFBFBD>㣬<EFBFBD><EFBFBD>Ҳ<EFBFBD>Ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>˯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺ۣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôһ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôһ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɡ<EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ц<EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҽǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ҩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵøɸɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>üͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⼸ʮ<EFBFBD>꣬<EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顣<EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҩζ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵡<EFBFBD>
|
||||
BIN
src/tool/backend/support/usm_comm/test_readfile/write_file
Normal file
BIN
src/tool/backend/support/usm_comm/test_readfile/write_file
Normal file
Binary file not shown.
101
src/tool/backend/support/usm_comm/test_readfile/write_file.c
Normal file
101
src/tool/backend/support/usm_comm/test_readfile/write_file.c
Normal file
@@ -0,0 +1,101 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "usm_api.h"
|
||||
#include "MESA_handle_logger.h"
|
||||
|
||||
#define LOG_NAME "./log/writer"
|
||||
|
||||
#define LOG_LEVEL 30
|
||||
|
||||
int main()
|
||||
{
|
||||
int rst = 0;
|
||||
USM_t* a_usm_handle = USM_handle(12345,1000,USM_WRITER);
|
||||
|
||||
unsigned int reader_cnt = 1;
|
||||
USM_set_opt(a_usm_handle,READER_CNT,(void*)&reader_cnt,sizeof(unsigned int),0);
|
||||
|
||||
unsigned int smooth_time = 1000000;//ns
|
||||
USM_set_opt(a_usm_handle,SMOOTH_TIME,(void*)&smooth_time,sizeof(unsigned int),0);
|
||||
//reader0
|
||||
unsigned int max_lq_size = 1024;
|
||||
USM_set_opt(a_usm_handle,MAX_LQUEUE_SIZE,(void*)&max_lq_size,sizeof(unsigned int),0);
|
||||
|
||||
char reader_path1[] = "/home/dumeijie/usm_testfile";
|
||||
USM_set_opt(a_usm_handle,READER_PATH,(void*)reader_path1,strlen(reader_path1),0);
|
||||
|
||||
void* logger = MESA_create_runtime_log_handle(LOG_NAME,LOG_LEVEL);
|
||||
USM_set_opt(a_usm_handle,LOG_HANDLE,logger,4,0);
|
||||
|
||||
rst = USM_init(a_usm_handle);
|
||||
if(rst < 0) return 0;
|
||||
|
||||
char data[1000]={0};
|
||||
FILE *fp;
|
||||
if(NULL == (fp = fopen("test.txt","r")))
|
||||
{
|
||||
perror("fail to read.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
int len = 1;
|
||||
unsigned long long wt_pktnum = 0;
|
||||
unsigned long long wt_datalen = 0;
|
||||
unsigned long long err_wting_pktnum = 0;
|
||||
unsigned long long err_wting_datalen = 0;
|
||||
unsigned long long sd_pktnum = 0;
|
||||
unsigned long long rd_pktnum = 0;
|
||||
unsigned long long rd_datalen = 0;
|
||||
unsigned long long not_rd_pktnum = 0;
|
||||
unsigned long long not_rd_datalen = 0;
|
||||
unsigned long long err_rding_pktnum = 0;
|
||||
unsigned long long err_rding_datalen = 0;
|
||||
struct timespec last_send_time,now;
|
||||
clock_gettime(CLOCK_MONOTONIC,&last_send_time);
|
||||
|
||||
while(fgets(data,1000,fp)!= NULL)
|
||||
{
|
||||
len = strlen(data);
|
||||
rst = USM_write(a_usm_handle,data,len);
|
||||
usleep(1);
|
||||
}
|
||||
clock_gettime(CLOCK_MONOTONIC,&now);
|
||||
printf("durtion time is %llu ns.\n",(now.tv_sec - last_send_time.tv_sec)*1000000000+(now.tv_nsec - last_send_time.tv_nsec));
|
||||
|
||||
wt_datalen = USM_stat(a_usm_handle,WRITED_CNT,0);
|
||||
printf("WRITED_CNT: %d.\n",wt_datalen);
|
||||
wt_pktnum = USM_stat(a_usm_handle,WRITED_SIZE,0);
|
||||
printf("WRITED_SIZE: %d.\n",wt_pktnum);
|
||||
err_wting_datalen = USM_stat(a_usm_handle,WRITING_CLASH_CNT,0);
|
||||
printf("WRITING_CLASH_CNT: %d.\n",err_wting_datalen);
|
||||
err_wting_pktnum = USM_stat(a_usm_handle,WRITING_CLASH_SIZE,0);
|
||||
printf("WRITING_CLASH_SIZE: %d.\n\n",err_wting_pktnum);
|
||||
for(i = 0;i < reader_cnt;i++)
|
||||
{
|
||||
sd_pktnum = USM_stat(a_usm_handle,SENDED_CNT,i);
|
||||
printf("Reader %d - SENDED_CNT: %d.\n",i,sd_pktnum);
|
||||
rd_datalen = USM_stat(a_usm_handle,READED_CNT,i);
|
||||
printf("Reader %d - READED_CNT: %d.\n",i,rd_datalen);
|
||||
rd_pktnum = USM_stat(a_usm_handle,READED_SIZE,i);
|
||||
printf("Reader %d - READED_SIZE: %d.\n",i,rd_pktnum);
|
||||
not_rd_datalen = USM_stat(a_usm_handle,READER_DROP_CNT,i);
|
||||
printf("Reader %d - READER_DROP_CNT: %d.\n",i,not_rd_datalen);
|
||||
not_rd_pktnum = USM_stat(a_usm_handle,READER_DROP_SIZE,i);
|
||||
printf("Reader %d - READER_DROP_SIZE: %d.\n",i,not_rd_pktnum);
|
||||
err_rding_datalen = USM_stat(a_usm_handle,READING_CLASH_CNT,i);
|
||||
printf("Reader %d - READING_CLASH_CNT: %d.\n",i,err_rding_datalen);
|
||||
err_rding_pktnum = USM_stat(a_usm_handle,READING_CLASH_SIZE,i);
|
||||
printf("Reader %d - READING_CLASH_SIZE: %d.\n\n",i,err_rding_pktnum);
|
||||
}
|
||||
fclose(fp);
|
||||
MESA_destroy_runtime_log_handle(logger);
|
||||
//sleep(10);
|
||||
return 0;
|
||||
}
|
||||
|
||||
78
src/tool/backend/usm_api.h
Normal file
78
src/tool/backend/usm_api.h
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* usm_api.h
|
||||
*
|
||||
* Created on: 2017-1-17
|
||||
* Author: dmj
|
||||
*/
|
||||
#ifndef __USM_COMM_H_INCLUDE_
|
||||
#define __USM_COMM_H_INCLUDE_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
#ifndef uint64_t
|
||||
typedef unsigned long long uint64_t;
|
||||
#endif
|
||||
|
||||
#ifndef uint16_t
|
||||
typedef unsigned int uint16_t;
|
||||
#endif
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
}USM_t;
|
||||
|
||||
#define USM_READER 0x01
|
||||
#define USM_WRITER 0x02
|
||||
|
||||
enum USM_rst_t
|
||||
{
|
||||
USM_SUCC = 0,
|
||||
USM_RD_SHMGET_ERR = -1,
|
||||
USM_SHMCTL_ERR = -2,
|
||||
USM_WT_SHMGET_ERR = -3,
|
||||
USM_SHMAT_ERR = -4,
|
||||
USM_SOCKET_INIT_ERR = -5,
|
||||
USM_QUEUE_INIT_ERR = -6
|
||||
};
|
||||
|
||||
enum USM_opt_t
|
||||
{
|
||||
SHM_BUF_SIZE,//WRITER and READER VIEW.VALUE is interger,SIZE=sizeof(int). DEFAULT:65535.
|
||||
READER_CNT,//WRITER VIEW.
|
||||
SMOOTH_TIME,//WRITER VIEW.but every reader need to set
|
||||
READER_ID,//READER VIEW.VALUE is interger,SIZE=sizeof(int). 0-7.Reader needs set read_id first.
|
||||
MAX_LQUEUE_SIZE,//READER VIEW.VALUE is interger,SIZE=sizeof(int). DEFAULT:1500.
|
||||
READER_PATH,//READER VIEW.data is a const char* und_path, define the reader's Unix named domain socket file path. return reader id if success.
|
||||
LOG_HANDLE
|
||||
};
|
||||
|
||||
enum USM_stat_t
|
||||
{
|
||||
WRITED_SIZE,
|
||||
WRITED_CNT,
|
||||
WRITING_CLASH_SIZE,
|
||||
WRITING_CLASH_CNT,
|
||||
SENDED_CNT, //READERS
|
||||
READED_SIZE,
|
||||
READED_CNT,
|
||||
READER_DROP_SIZE,//number of reader missed due to overwrite
|
||||
READER_DROP_CNT,
|
||||
READING_CLASH_SIZE,
|
||||
READING_CLASH_CNT,
|
||||
LQ_COUNT
|
||||
};
|
||||
|
||||
USM_t* USM_handle(int shm_key,uint64_t shm_size,int role);
|
||||
int USM_init(USM_t* handle);
|
||||
int USM_write(USM_t* handle,const char* data,int datalen);
|
||||
int USM_read(USM_t* handle,char** data,int* datalen,int* data_cnt);
|
||||
int USM_set_opt(USM_t* handle,enum USM_opt_t type,void* data,int size,int reader_id);
|
||||
uint64_t USM_stat(USM_t* handle,enum USM_stat_t type,int reader_id);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
482
src/tool/pktgen/Com_SendToBack.h
Normal file
482
src/tool/pktgen/Com_SendToBack.h
Normal file
@@ -0,0 +1,482 @@
|
||||
#ifndef _H_COM_SENDTOBACK_H
|
||||
#define _H_COM_SENDTOBACK_H
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
// Defination for all kinds of msg
|
||||
#define PROTO_MAGICNUM 0x5641
|
||||
#define PROTO_VERSION 3
|
||||
|
||||
// Conf Msg
|
||||
#define MSG_MANAGER 0x00 // System Manager Configure Message
|
||||
#define MSG_CONFIG_ALL 0x01 // All Configure Update Message
|
||||
#define MSG_CONFIG_INC 0x02 // Increase Configure Update Message
|
||||
#define MSG_CONFIG_REQ 0x03 // Configure Request Message
|
||||
|
||||
#define MSG_D_CONFIG_ALL 0x04 // Configure Require's Response Message .
|
||||
#define MSG_D_CONFIG_INC 0x05 // Configure Require's Response Message .
|
||||
#define MSG_D_CONFIG_REQ 0x06 // Dynamic Configure Item Require Message This message come from configure server ;
|
||||
#define MSG_TUPLE5_URL_REQ 0x0A // Tuple5 to url Request;
|
||||
|
||||
#define MSG_P2P_D_CONFIG_ALL 0x71 // Configure Require's Response Message .
|
||||
#define MSG_P2P_D_CONFIG_INC 0x72 // Configure Require's Response Message .
|
||||
#define MSG_P2P_D_CONFIG_REQ 0x73 // Configure Require's Response Message .
|
||||
// Conf Operation defination
|
||||
#define CONFIG_OP_TYPE_NO 0x00 // no any operation
|
||||
#define CONFIG_OP_TYPE_ADD 0x01 // add a config rule
|
||||
#define CONFIG_OP_TYPE_DEL 0x02 // del a config rule
|
||||
#define CONFIG_OP_TYPE_MOD 0x03 // modify a config rule
|
||||
|
||||
// Response Msg
|
||||
|
||||
#define MSG_RESP_CHECKRESULT 0x11 // Check Result notification
|
||||
#define MSG_RESP_REJECT 0x12 // Reject Message notification
|
||||
#define MSG_RESP_CHARACTER 0x13 // Character notification
|
||||
|
||||
// Log Msg
|
||||
#define MSG_MANAGER_LOG 0x20 // Manager Log Msg
|
||||
#define MSG_RESULT_LOG 0x21 // Result Log Msg for Block or Monitor
|
||||
#define MSG_STATIC_LOG 0x22 // Valid Message
|
||||
#define MSG_TUPLE5_URL_LOG 0x2A // Tuple response Message
|
||||
|
||||
// Data Msg
|
||||
#define MSG_DATA_METAINFO 0x31
|
||||
#define MSG_DATA_BODY 0x32
|
||||
#define MSG_DATA_TAIL 0x33
|
||||
|
||||
// Definatin for all types of vidio and audio file;
|
||||
#define FILE_UNKNOWN 0x00
|
||||
#define FILE_VIDEO 0x60
|
||||
#define FILE_WMV 0x61
|
||||
#define FILE_MPG 0x62
|
||||
#define FILE_FLV 0x63
|
||||
#define FILE_RMFF 0x65
|
||||
#define FILE_AVI 0x66
|
||||
#define FILE_SWF 0x67
|
||||
#define FILE_MPG4 0x68
|
||||
#define FILE_AIFF 0x69
|
||||
#define FILE_OGG 0x6A
|
||||
#define FILE_DRC 0x6B
|
||||
#define FILE_DIRECTSHOW 0x6C
|
||||
#define FILE_FLIC 0x6D
|
||||
#define FILE_INDEO 0x6E
|
||||
#define FILE_MKV 0x6F
|
||||
|
||||
#define FILE_AUDIO 0x70
|
||||
#define FILE_MP3 0x71
|
||||
|
||||
#define BE_IMAGE_TYPE(t) ((t>=FILE_IMAGE) && (t<0x90))
|
||||
#define BE_VIDEO_TYPE(t) ((t>=FILE_VIDEO) && (t<0x70))
|
||||
#define BE_AUDIO_TYPE(t) ((t>=FILE_AUDIO) && (t<0x80))
|
||||
|
||||
#define FILE_IMAGE 0x80
|
||||
|
||||
#define FILE_JPG 0x84
|
||||
#define FILE_BMP 0x85
|
||||
#define FILE_GIF 0x86
|
||||
|
||||
#define MMS_TYPE 0x90
|
||||
#define HTTP_STREAM_TYPE 0x90
|
||||
#define RTSP_RDT_TYPE 0x92
|
||||
#define RTSP_RTP_TYPE 0x91
|
||||
|
||||
|
||||
#define SERVICE_FLAG_FD 0 // FenDu Flag
|
||||
#define SERVICE_FLAG_JC 1 // JianCe Flag
|
||||
// Defination of service type ;
|
||||
#define SERVICE_IPPORT_WHITE 0x01 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_IPPORT_BLACK 0x02 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_WHITE 0x03 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_BLACK 0x04 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_WHITE 0x05 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_BLACK 0x06 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// added by cxj 20100811
|
||||
#define SERVICE_P2P_STATIC_WHITEIP 0x15
|
||||
#define SERVICE_P2P_BI_WHITEIP 0x16
|
||||
#define SERVICE_P2P_MI_WHITEIP 0x17
|
||||
|
||||
#define SERVICE_P2P_EMULE_SERVER 0x51 //
|
||||
#define SERVICE_P2P_EMULE_KEY 0x52 //
|
||||
#define SERVICE_P2P_EMULE_FILEID 0x53 //
|
||||
#define SERVICE_P2P_EMULE_NODE 0x54 //
|
||||
|
||||
#define SERVICE_P2P_BT_INFOHASH 0x41 // BT Infohash Black List
|
||||
#define SERVICE_P2P_BT_NODE 0x44 // BT Bone Node
|
||||
#define SERVICE_P2P_BT_SERVICE 0x61 // BT DHT Index Server List
|
||||
|
||||
#define SERVICE_P2P_BT_ECLIPSE_IPLIST 0x45
|
||||
#define SERVICE_P2P_BT_POLLUTION_IPLIST 0x46
|
||||
#define SERVICE_P2P_EMULE_POLLUTION_IPLIST 0x55
|
||||
|
||||
|
||||
//
|
||||
#define SERVICE_EMULE_SERVER 0x71 //<2F><>ĿΨһID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_KEYS 0x72 //<2F><>ĿΨһID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_FHID 0x73 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_FNAME 0x74 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_NODE 0x75 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define SERVICE_IPPORT_WHITE_JC 0x81 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_IPPORT_BLACK_JC 0x82 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_WHITE_JC 0x83 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_BLACK_JC 0x84 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_WHITE_JC 0x85 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_BLACK_JC 0x86 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define MAX_SERVICE_NUM 0xff
|
||||
// Manager Command Defination
|
||||
#define MANAGER_AV_SYS_CMD 0x02010000 //<2F><><EFBFBD><EFBFBD>Ƶϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MANAGER_AV_PIC_CMD 0x02020000 //
|
||||
#define MANAGER_AV_SYS_QUERY 0x01 //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>״̬
|
||||
#define MANAGER_AV_SYS_OPEN 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>
|
||||
#define MANAGER_AV_SYS_CLOSE 0x03 //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>
|
||||
#define MANAGER_AV_SYS_CHANGE 0x04 //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5>鴦<EFBFBD><E9B4A6>״̬
|
||||
// add by cxj for P2P Manager Command
|
||||
#define MANAGER_P2P_BI_GROUP_UPDATE 0x11 // BISys's IP List Update
|
||||
#define MANAGER_P2P_MI_GROUP_UPDATE 0x12 // MISys's IP List Update
|
||||
#define MANAGER_P2P_BT_ECLIPSE_UPDATE 0x13 // MISys's IP List Update
|
||||
|
||||
|
||||
|
||||
// Manager Command state Defination
|
||||
#define MANAGER_PROCESS_STATE_UNKNOWN 0x00 // δ֪
|
||||
#define MANAGER_PROCESS_STATE_RUNING 0x10 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_OK 0x20 // <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_UNTHORITY 0x30 // δ<><CEB4>Ȩ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_FAILED 0x40 // <20>ɻָ<C9BB><D6B8>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_ERROR 0x50 // <20><><EFBFBD>ɻָ<C9BB><D6B8>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
|
||||
|
||||
#define MATCH_METHOD_SUB 0x00 // sub match;
|
||||
#define MATCH_METHOD_FUL 0x01 // full match;
|
||||
|
||||
#define MsgBodyHeadLen sizeof(struct msg_body_t)
|
||||
#define UDP_SENDBACK_MAX_LEN 4*1024
|
||||
#define UDP_SENDBACK_MAX_DATALEN UDP_SENDBACK_MAX_LEN-MsgHeadLen-MsgBodyHeadLen
|
||||
|
||||
|
||||
typedef unsigned char UINT8;
|
||||
typedef unsigned int UINT;
|
||||
typedef unsigned long long UINT64;
|
||||
typedef unsigned int UINT32;
|
||||
typedef unsigned short UINT16;
|
||||
typedef unsigned char UCHAR;
|
||||
typedef char CHAR;
|
||||
typedef unsigned short USHORT;
|
||||
|
||||
#define MSG_HEADER_LEN sizeof(struct msg_header_t)
|
||||
struct msg_header_t {
|
||||
USHORT magic_num; /* ħ<><C4A7><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊ0xECD5BCBC */
|
||||
UCHAR version; /* <20>汾<EFBFBD>ţ<EFBFBD>ĿǰֵΪ1 */
|
||||
UCHAR msg_type; /* <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> */
|
||||
UINT cont_len; /* <20><>Ϣ<EFBFBD><CFA2><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD> */
|
||||
}; /* sizeof = 8B */
|
||||
|
||||
#define OPT_HEAD_LEN (sizeof(UINT)+1)
|
||||
struct opt_unit_t {
|
||||
UINT opt_len; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> */
|
||||
UCHAR opt_type; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
CHAR *opt_value; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
};
|
||||
|
||||
//ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
#define MAX_STATICSSENDNUM 10000
|
||||
struct statlog_unit_t {
|
||||
UINT16 unit_len; // <20><>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||||
UINT16 log_type; // ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
UINT32 hit_num; // <20><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
|
||||
char prog_id[8]; // <20><>ĿID
|
||||
|
||||
};
|
||||
struct msg_statlog_t {
|
||||
UINT32 log_time; // ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
UINT32 log_num; // <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA>
|
||||
};
|
||||
|
||||
|
||||
//<2F><>Ԫ<EFBFBD>鶨<EFBFBD><E9B6A8>
|
||||
struct msg_tup5_req_t {
|
||||
UINT src_ip;
|
||||
UINT dst_ip;
|
||||
USHORT src_port;
|
||||
USHORT dst_port;
|
||||
UCHAR protocol;
|
||||
CHAR pad[3];
|
||||
};
|
||||
|
||||
// Service Configure Unit Defination
|
||||
|
||||
struct cfg_unit_t {
|
||||
UCHAR op_type;
|
||||
UCHAR service;
|
||||
UCHAR weight;
|
||||
UCHAR flag;
|
||||
UINT cfg_id;
|
||||
UINT unit_len;
|
||||
CHAR * value;
|
||||
};
|
||||
#define CFG_UNIT_HEAD_LEN (sizeof(UCHAR)*4 + sizeof(UINT)*2)
|
||||
|
||||
// added by cxj 20110811
|
||||
// dynamic Configure Unit Defination;
|
||||
struct d_cfg_unit_t{
|
||||
UINT64 groupid;
|
||||
UINT service;
|
||||
UINT unit_len;
|
||||
CHAR *value;
|
||||
};
|
||||
|
||||
#define D_CFG_UNIT_HEAD_LEN (sizeof(uint64_t) * sizeof(INT) *2)
|
||||
|
||||
// Manager Configure Unit Defination
|
||||
|
||||
struct cmd_unit_t{
|
||||
UINT optor_id;
|
||||
UINT cmd_sn;
|
||||
UINT cmd_code;
|
||||
UINT cmd_val;
|
||||
UINT opt_len;
|
||||
};
|
||||
|
||||
#define CMD_UNIT_HEAD_LEN (sizeof(UINT) *5)
|
||||
|
||||
struct msg_cmdlog_t {
|
||||
UINT log_time; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD>䡣<EFBFBD><E4A1A3>ֵ<EFBFBD><D6B5>[0,0x7FFFFFFF]<5D><><EFBFBD><EFBFBD>ʱȡֵ<C8A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ time_t<5F>ṹ<EFBFBD><E1B9B9>ֵ<EFBFBD><D6B5><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
UINT log_num; // <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
// struct cmdlog_unit_t[log_num] cmdlog_unit;
|
||||
};
|
||||
|
||||
#define MSG_CMDLOG_HEAD_LEN (sizeof(UINT) *2)
|
||||
|
||||
struct cmdlog_unit_t {
|
||||
UINT CLJ_IP; //ִ<><D6B4>ָ<EFBFBD><D6B8><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT operator_ID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ԱID
|
||||
UINT cmd_SN; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
|
||||
UINT cmd_code; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8>
|
||||
UCHAR state; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>״̬
|
||||
UCHAR pad; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶΣ<D6B6>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
USHORT opt_len; // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'\0'<27>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// char * opt_value;
|
||||
};
|
||||
|
||||
#define CMDLOG_UNIT_HEAD_LEN 20
|
||||
|
||||
|
||||
|
||||
// Dynamic Configure Defination;
|
||||
// The Unit Defination be same with cfg_struct_t, only the flag value is not same;
|
||||
#define DYNAMIC_WHITE_FLAG 0
|
||||
#define DYNAMIC_BLACK_FLAG 1
|
||||
|
||||
struct msg_cfg_t {
|
||||
UINT cfg_time;
|
||||
UINT cfg_num;
|
||||
};
|
||||
#define MSG_CFG_HEAD_LEN (sizeof(UINT) * 2)
|
||||
|
||||
|
||||
|
||||
struct avs_data_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT8 pad;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
UINT8 flags;// <20><><EFBFBD>ݱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT64 offset:48; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>е<EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
|
||||
|
||||
/* unsigned long long offset; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5><C4B6><EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
|
||||
UINT dst_ip; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ
|
||||
UINT src_ip; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>ԴIP<49><50>ַ
|
||||
USHORT dst_port; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6>
|
||||
USHORT src_port; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Դ<EFBFBD>˿<EFBFBD>
|
||||
*/
|
||||
};
|
||||
#define AVS_DATA_HEAD_LEN (sizeof(struct avs_data_t))
|
||||
//Protocol Defination
|
||||
#define PROTO_HTTP 0x01
|
||||
#define PROTO_SMTP 0x02
|
||||
#define PROTO_POP3 0x03
|
||||
#define PROTO_FTP 0x04
|
||||
|
||||
#define PROTO_HTTP_STREAM 0x81
|
||||
#define PROTO_RTSP_RDT 0x82
|
||||
#define PROTO_RTSP_RTP 0x83
|
||||
#define PROTO_MMS 0x84
|
||||
#define PROTO_ED2K 0x85
|
||||
|
||||
#define HITSER_WHITE _IPPORT 0x81
|
||||
#define HITSER_BLACK _IPPORT 0x82
|
||||
#define HITSER_WHITE_URL 0x83
|
||||
#define HITSER_BLACK_URL 0x84
|
||||
#define HITSER_WHITE_DOMAIN 0x85
|
||||
#define HITSER_BLACK_DOMAIN 0x86
|
||||
|
||||
// Data_flag defination
|
||||
struct metainfo_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
CHAR flag;
|
||||
UINT8 hitservice;
|
||||
UINT64 prog_len:48;
|
||||
UINT cap_IP;
|
||||
UCHAR protocol; // Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR media_type; // Media type
|
||||
UCHAR data_flag; // Data Flag;
|
||||
UCHAR opt_num; //ѡ<><D1A1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
struct opt_unit_t * opt_unit;
|
||||
};
|
||||
#define METAINFO_HEAD_LEN 24
|
||||
//<2F><>Ӧ<EFBFBD><D3A6>Ϣ<EFBFBD><CFA2>ʽ
|
||||
struct survey_ind_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR service; // ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CHAR level; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г̶<D0B3>
|
||||
CHAR pad[2]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
||||
UINT cfg_id; // <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ID
|
||||
UINT file_header_size; //
|
||||
UINT file_packet_size;
|
||||
};
|
||||
#define SURVEY_MSG_FIX_LEN (sizeof(struct survey_ind_t))
|
||||
#define SURVEY_PAYLOAD_LEN_MAX (1460-MSG_HEADER_LEN-SURVEY_MSG_FIX_LEN)
|
||||
|
||||
struct msg_survey_ack_t {
|
||||
CHAR prog_id[8];
|
||||
UCHAR service;
|
||||
CHAR level;
|
||||
CHAR pad[2];
|
||||
UINT cfg_id;
|
||||
};
|
||||
|
||||
|
||||
struct live_data_t {
|
||||
CHAR prog_id[8];
|
||||
};
|
||||
|
||||
|
||||
// for log
|
||||
|
||||
struct msg_log_t
|
||||
{
|
||||
|
||||
CHAR prog_id[8];// program rule id;
|
||||
UINT cfg_id; // hitted rule id;
|
||||
UINT fount_time; // found time
|
||||
UINT server_ip; // server ip;
|
||||
UINT client_ip; // client ip;
|
||||
USHORT server_port; // server port;
|
||||
USHORT client_port; // client port;
|
||||
UCHAR protocol; // translation protocol num;
|
||||
UCHAR service; // service type;
|
||||
UCHAR level; // result level;
|
||||
UCHAR fd_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0<><30>ʾ<EFBFBD><CABE>̬<EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʾ<EFBFBD><CABE>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>2<EFBFBD><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>С<EFBFBD>
|
||||
USHORT opt_num; // option number;
|
||||
struct opt_unit_t * opt_info; // option point;
|
||||
|
||||
};
|
||||
//#define MSG_LOG_FIX_LEN (sizeof(struct msg_log_t)-sizeof(void *))
|
||||
|
||||
#define FD_TYPE_DYNAMIC 0
|
||||
#define FD_TYPE_STATIC 1
|
||||
#define FD_TYPE_ANALYSE 2
|
||||
|
||||
#define SET_LOG_MSG(log,pid,cid,ft,sip,cip,sport,cport,pro,s,l,ftype,o_num,o_info) \
|
||||
{ \
|
||||
memcpy(log.prog_id,pid,8); \
|
||||
log.cfg_id = cid;\
|
||||
log.fount_time = ft; \
|
||||
log.server_ip = sip; \
|
||||
log.client_ip = cip; \
|
||||
log.server_port =sport; \
|
||||
log.client_port =cport; \
|
||||
log.protocol = pro; \
|
||||
log.service = s; \
|
||||
log.level = l; \
|
||||
log.fd_type = ftype; \
|
||||
log.opt_num = o_num; \
|
||||
log.opt_info = o_info; \
|
||||
}
|
||||
|
||||
|
||||
struct msg_tup5_resp_t {
|
||||
UINT src_ip; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ԴIP<49><50>ַ
|
||||
UINT dst_ip; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ
|
||||
USHORT src_port; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Դ<EFBFBD>˿<EFBFBD>
|
||||
USHORT dst_port; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6>
|
||||
UCHAR protocol; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR pad; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶΣ<D6B6><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
USHORT cont_len; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
||||
char *cont; // <20><>Ϣ<EFBFBD><CFA2>URL<52><4C><EFBFBD><EFBFBD>
|
||||
};
|
||||
#define MSG_TUP5_RESP_FIX_LEN 16
|
||||
|
||||
|
||||
// Common
|
||||
int feedback_mem (int service, void *info, char *buf, int buf_len);
|
||||
// soft balance
|
||||
int feedback_mem_soft_balance (unsigned long long pid, char *buf, int buf_len);
|
||||
// soft balance
|
||||
int direct_feedback_mem_soft_balance (unsigned long long pid, char *buf, int buf_len, int thread_num);
|
||||
// hardware balance
|
||||
int feedback_mem_balance (unsigned long long pid, char *buf, int buf_len);
|
||||
// feedback init
|
||||
int feedback_init();
|
||||
//void gfn_AppCounterInit();
|
||||
//void gfn_AppCounterFree();
|
||||
//int gfn_AppCounterAdd(int ProtolType);
|
||||
//void gfn_AddSendBackOpt(struct msg_header_t *pMsgHeader,struct msg_body_t *pMsgBodyHeader,
|
||||
// char *pSendBackBuf,int OptType,char *SrcData,int SrcLen,char **ppOptbuf);
|
||||
//void gfn_AddSendBackData(struct msg_header_t *pMsgHeader,struct msg_body_t *pMsgBodyHeader,
|
||||
// char *pSendBackBuf,char *SrcData,int SrcLen,char **ppOptbuf);
|
||||
//int gfn_iSendToBEnd(tdLog* pstLog, int iLen, CBuffer* pBuf);
|
||||
|
||||
|
||||
|
||||
//void InitLogMessageLocal();
|
||||
//int LogMessageLocal(char *buf,int buflen);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
|
||||
struct CFG_Common
|
||||
{
|
||||
UCHAR pad;
|
||||
UCHAR service;
|
||||
UCHAR weight;
|
||||
UCHAR flag;
|
||||
UINT cfg_id;
|
||||
};
|
||||
|
||||
#define CFG_COMMON_LEN sizeof(struct CFG_Common)
|
||||
|
||||
struct CFG_AV_Content
|
||||
{
|
||||
struct CFG_Common comm_header; // common header;
|
||||
UINT contentlen; // length of content;
|
||||
char * content; // AV config Content;
|
||||
};
|
||||
|
||||
#define CFG_AV_CONTENT_FIXLEN (CFG_COMMON_LEN+sizeof(UINT))
|
||||
|
||||
struct CFG_IP_SETTING{
|
||||
UINT sip; // server ip;
|
||||
UINT mask; //
|
||||
USHORT port; // server port;
|
||||
UCHAR udpkey[4];
|
||||
}__attribute__((__packed__));
|
||||
|
||||
|
||||
int sendnto(int s, const void *msg, int n, unsigned int flags, const struct sockaddr *to, int tolen);
|
||||
|
||||
int gfn_iSetAVNewRuleTable(int iScanType,int iTableType,int iRuleNum,void * pstRTable);
|
||||
|
||||
int gfn_CScan_AVSearchMem(int iScanType,int iRuleType, char *data, int datalen, int begPos,struct cfg_unit_t *gResult, int *pFoundPostion, void **ppParam,int thread_num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
26
src/tool/pktgen/Makefile
Normal file
26
src/tool/pktgen/Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
# CREATED by Guo Le, 08/23/2010
|
||||
#
|
||||
CC = gcc
|
||||
PROGRAM = pktgen
|
||||
CFLAGS += -g -Wall -D_DEBUG_
|
||||
LDFLAGS += -lpthread -lm
|
||||
OBJS = pktgen.o test.o
|
||||
INCLUDE = -I. -I../common
|
||||
|
||||
.PHONY : all clean
|
||||
all: pktgen
|
||||
|
||||
pktgen: pktgen.o
|
||||
$(CC) $(LDFLAGS) \
|
||||
pktgen.o common.a -o pktgen
|
||||
|
||||
test: test.o
|
||||
$(CC) $(LDFLAGS) \
|
||||
test.o ../lib/common.a -o test
|
||||
|
||||
$(OBJS): %.o: %.c
|
||||
$(CC) -c $(CFLAGS) $(INCLUDE) $< -o $@
|
||||
|
||||
clean:
|
||||
$(RM) *.o $(PROGRAM) common.a
|
||||
|
||||
BIN
src/tool/pktgen/common.a
Normal file
BIN
src/tool/pktgen/common.a
Normal file
Binary file not shown.
BIN
src/tool/pktgen/pktgen
Normal file
BIN
src/tool/pktgen/pktgen
Normal file
Binary file not shown.
434
src/tool/pktgen/pktgen.c
Normal file
434
src/tool/pktgen/pktgen.c
Normal file
@@ -0,0 +1,434 @@
|
||||
// pktgen.c
|
||||
//
|
||||
// generatio avs pkt
|
||||
//
|
||||
// MODIFIED by
|
||||
// CREATED by Guo Le, 08/17/2010
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "Com_SendToBack.h"
|
||||
#include "loadprof.h"
|
||||
#include "debug.h"
|
||||
#include "error.h"
|
||||
#include "output.h"
|
||||
#include "log.h"
|
||||
|
||||
#include "pktgen.h"
|
||||
|
||||
pktgen_t *g_pktgen = NULL;
|
||||
runtime_para_t *g_para = NULL;
|
||||
FILE *g_log_prog_fd = NULL;
|
||||
|
||||
int thread_num_choice[10] = {1, 1, 1, 1, 1, 10, 20, 30, 40, 50};
|
||||
|
||||
int pktgen_readprof (char *fpath)
|
||||
{
|
||||
if (NULL == fpath) {
|
||||
DEBUG_MESSAGE("null pointer");
|
||||
return -1;
|
||||
}
|
||||
static runtime_para_t para;
|
||||
g_para = ¶
|
||||
|
||||
profile_read_uint(fpath, "SYSTEM", "STOP_CONDITION", &g_para->stop_cond, 0);
|
||||
if (g_para->stop_cond)
|
||||
profile_read_uint(fpath, "SYSTEM", "STOP_PROG_NUM", &g_para->stop_prog_num, 0);
|
||||
else
|
||||
profile_read_uint(fpath, "SYSTEM", "STOP_PKT_NUM", &g_para->stop_pkt_num, 0);
|
||||
profile_read_uint(fpath, "SYSTEM", "CONN_NUM_MAX", &g_para->conn_num_max, 1);
|
||||
profile_read_uint(fpath, "SYSTEM", "SEND_RATE_PPS", &g_para->send_rate_pps, 0);
|
||||
profile_read_uint(fpath, "SYSTEM", "MULTI_THREAD", &g_para->multi_thread, 0);
|
||||
|
||||
profile_read_uint(fpath, "SYSTEM", "LOSS_RATIO", &g_para->loss_ratio, 10);
|
||||
profile_read_uint(fpath, "SYSTEM", "REPITITION_RATIO", &g_para->rep_ratio, 10);
|
||||
profile_read_uint(fpath, "SYSTEM", "SET_ACK_FLAG", &g_para->set_ack_flag, 0);
|
||||
|
||||
profile_read_uint(fpath, "SYSTEM", "REPORT_INTERVAL", &g_para->info_interv, 0);
|
||||
profile_read_uint(fpath, "SYSTEM", "LOG_PROG", &g_para->log_prog, 0);
|
||||
|
||||
profile_read_uint(fpath, "PROTOCOL", "CURRENT_VERSION", &g_para->version_cur, 0x1);
|
||||
profile_read_uint(fpath, "PROTOCOL", "MAX_PROGRAM_LEN", &g_para->prog_len_max, 1024);
|
||||
|
||||
profile_read_naddr(fpath, "OUTPUT", "DST_ADDRESS", &g_para->dstaddr, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int pktgen_init()
|
||||
{
|
||||
if (NULL == g_pktgen || NULL == g_para) {
|
||||
DEBUG_MESSAGE("null pointer");
|
||||
return -1;
|
||||
}
|
||||
|
||||
g_pktgen->conn = (conn_info_t *)calloc(g_para->conn_num_max,
|
||||
sizeof(conn_info_t));
|
||||
if(NULL == g_pktgen->conn) {
|
||||
DEBUG_MESSAGE("calloc error");
|
||||
return -1;
|
||||
}
|
||||
|
||||
g_pktgen->sockfd = output_udp_init();
|
||||
if (g_pktgen->sockfd < 0) {
|
||||
printf("Read profile failed!");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
g_pktgen->conn_num_cur = 0;
|
||||
g_pktgen->count_pkt = 0;
|
||||
g_pktgen->count_byte = 0;
|
||||
g_pktgen->count_prog = 0;
|
||||
g_pktgen->count_lost = 0;
|
||||
|
||||
if (g_para->log_prog) {
|
||||
g_log_prog_fd = fopen("prog.log","ab+");
|
||||
if (NULL == g_log_prog_fd)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Clearing before exit
|
||||
//
|
||||
// Return:
|
||||
// void
|
||||
void pktgen_clear()
|
||||
{
|
||||
if (g_pktgen == NULL)
|
||||
return;
|
||||
fprintf(stdout, "-----------------------------------------------------------------------\n");
|
||||
fprintf(stdout, "\nDone generating packets, wheew! ");
|
||||
fprintf(stdout, " Statistics \n");
|
||||
fprintf(stdout, " - #pkt: %lu\n", g_pktgen->count_pkt);
|
||||
fprintf(stdout, " - #byte: %lu\n", g_pktgen->count_byte);
|
||||
fprintf(stdout, " - #Prog: %u\n", g_pktgen->count_prog);
|
||||
fprintf(stdout, " - #lost: %u\n", g_pktgen->count_lost);
|
||||
fprintf(stdout, "=======================================================================\n");
|
||||
|
||||
output_udp_clear(g_pktgen->sockfd);
|
||||
free(g_pktgen);
|
||||
}
|
||||
|
||||
|
||||
// Signal callback function
|
||||
//
|
||||
// Return:
|
||||
// void
|
||||
void sig_hand_int(
|
||||
int signo) // [IN] signal number
|
||||
{
|
||||
pktgen_clear();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Push info to stdout
|
||||
//
|
||||
// Return
|
||||
// void
|
||||
void print_runtime_para()
|
||||
{
|
||||
fprintf(stdout, "=======================================================================\n");
|
||||
fprintf(stdout, " Parameters:\n");
|
||||
fprintf(stdout, "-----------------------------------------------------------------------\n");
|
||||
fprintf(stdout, " [SYSTEM]\n");
|
||||
fprintf(stdout, " - Stop condition : %u\n", g_para->stop_cond);
|
||||
if (!g_para->stop_cond)
|
||||
fprintf(stdout, " - Stop pkt num : %u\n", g_para->stop_pkt_num);
|
||||
else
|
||||
fprintf(stdout, " - Stop prog num : %u\n", g_para->stop_prog_num);
|
||||
fprintf(stdout, " - Max concurent connection : %u\n", g_para->conn_num_max);
|
||||
fprintf(stdout, " - Loss ratio : %u/1,000,000\n", g_para->loss_ratio);
|
||||
fprintf(stdout, " - Repitition ratio : %u/1,000,000\n", g_para->rep_ratio);
|
||||
fprintf(stdout, " - Report interval(s) = %d\n", g_para->info_interv);
|
||||
fprintf(stdout, " - Send rate control(pps) : %d\n", g_para->send_rate_pps);
|
||||
fprintf(stdout, " - Use Multi-Thread : %s\n", g_para->multi_thread ? "On" : "Off");
|
||||
fprintf(stdout, " - Set ACK flag : %s\n", g_para->set_ack_flag ? "On" : "Off");
|
||||
fprintf(stdout, " - Log prog switch : %s\n", g_para->log_prog ? "On" : "Off");
|
||||
|
||||
fprintf(stdout, " [PROTOCOL]\n");
|
||||
fprintf(stdout, " - Max program length : %d Byte\n",
|
||||
g_para->prog_len_max);
|
||||
fprintf(stdout, " - Current protocol version : %x\n",
|
||||
g_para->version_cur);
|
||||
|
||||
fprintf(stdout, " [OUTPUT]\n");
|
||||
char buf[20];
|
||||
fprintf(stdout, " - Destination address: %s:%d\n",
|
||||
inet_ntop(AF_INET, &g_para->dstaddr.s_addr, buf, sizeof buf),
|
||||
ntohs(g_para->dstaddr.sin_port));
|
||||
|
||||
fprintf(stdout, "=======================================================================\n");
|
||||
fprintf(stdout, " | %20s | %10s | %10s | %10s | %10s | %10s | %10s | %10s |\n",
|
||||
"time", "#pkt", "#byte", "pps", "bps", "#conn", "#prog", "#lost");
|
||||
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
void *report(void *arg)
|
||||
{
|
||||
time_t currTime;
|
||||
struct tm *now;
|
||||
char strTime[32];
|
||||
|
||||
struct timeval interv_start, interv_end;
|
||||
uint64_t proc_rate_pps;
|
||||
uint64_t proc_rate_bps;
|
||||
uint64_t interv_time;
|
||||
uint64_t pkt_count_last = 0; // interval packet counter
|
||||
uint64_t pkt_count_cur = 0;
|
||||
uint64_t byte_count_last = 0;
|
||||
uint64_t byte_count_cur = 0;
|
||||
|
||||
while (1) {
|
||||
gettimeofday(&interv_start, NULL);
|
||||
sleep(g_para->info_interv);
|
||||
|
||||
time(&currTime);
|
||||
now = localtime(&currTime);
|
||||
memset(strTime, 0, sizeof(strTime));
|
||||
strftime(strTime, sizeof(strTime), "%Y-%m-%d %H:%M:%S", now);
|
||||
|
||||
pkt_count_cur = g_pktgen->count_pkt;
|
||||
byte_count_cur = g_pktgen->count_byte;
|
||||
gettimeofday(&interv_end, NULL);
|
||||
interv_time = 1000000 * (interv_end.tv_sec - interv_start.tv_sec) +
|
||||
interv_end.tv_usec - interv_start.tv_usec;
|
||||
proc_rate_pps = 1000000 *
|
||||
(pkt_count_cur - pkt_count_last) / interv_time;
|
||||
proc_rate_bps = 8 * 1000000 *
|
||||
(byte_count_cur - byte_count_last) / interv_time;
|
||||
|
||||
fprintf(stdout, " | %20s | %10lu | %10lu | %10lu | %10lu | %10u | %10u | %10u |\n",
|
||||
strTime,
|
||||
pkt_count_cur - pkt_count_last,
|
||||
byte_count_cur - byte_count_last,
|
||||
proc_rate_pps,
|
||||
proc_rate_bps,
|
||||
g_pktgen->conn_num_cur,
|
||||
g_pktgen->count_prog,
|
||||
g_pktgen->count_lost
|
||||
);
|
||||
pkt_count_last = pkt_count_cur;
|
||||
byte_count_last = byte_count_cur;
|
||||
fflush(stdout);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
inline uint64_t rand64()
|
||||
{
|
||||
uint64_t ret = rand();
|
||||
ret <<= 32;
|
||||
ret |= rand();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void create_conn (int idx)
|
||||
{
|
||||
static conn_distributor_t conn_dis = {0};
|
||||
|
||||
g_pktgen->count_prog ++;
|
||||
|
||||
if (!conn_dis.prog_id) {
|
||||
conn_dis.prog_id = rand64();
|
||||
//conn_dis.prog_id = 555 + 1403641;
|
||||
conn_dis.prog_len = (conn_dis.prog_id % g_para->prog_len_max) + 1;
|
||||
conn_dis.thread_num = g_para->multi_thread ? thread_num_choice[rand() % 10] : 1;
|
||||
conn_dis.thread_len = conn_dis.prog_len / conn_dis.thread_num;
|
||||
conn_dis.thread_cur = 0;
|
||||
}
|
||||
|
||||
conn_info_t *conn_cur = g_pktgen->conn + idx;
|
||||
conn_cur->prog_id = conn_dis.prog_id;
|
||||
conn_cur->prog_off = conn_dis.thread_len * conn_dis.thread_cur;
|
||||
conn_cur->win_size = rand() % 900 + 500; // 500 - 1400
|
||||
conn_cur->data_len = conn_dis.thread_len;
|
||||
conn_cur->data_off = 0;
|
||||
conn_cur->flag = 0;
|
||||
if (0 == conn_dis.thread_cur) {
|
||||
SETFLAG(conn_cur->flag, CONN_FLAG_FIRST);
|
||||
conn_cur->prog_off = conn_dis.prog_len; // store prog_len in prog_off
|
||||
}
|
||||
if (conn_dis.thread_num - 1 == conn_dis.thread_cur) {
|
||||
conn_cur->data_len += conn_dis.prog_len % conn_dis.thread_num;
|
||||
conn_dis.prog_id = 0;
|
||||
}
|
||||
conn_dis.thread_cur ++;
|
||||
}
|
||||
|
||||
void pktgen_run(pktgen_t *g_pktgen)
|
||||
{
|
||||
uint8_t buf[2000];
|
||||
struct msg_header_t *mh = (struct msg_header_t*) buf;
|
||||
struct metainfo_t *mi = (struct metainfo_t*) (buf + MSG_HEADER_LEN);
|
||||
struct avs_data_t *ad = (struct avs_data_t*) (buf + MSG_HEADER_LEN);
|
||||
|
||||
mh->magic_num = PROTO_MAGICNUM;
|
||||
mh->version = g_para->version_cur;
|
||||
mh->msg_type = MSG_DATA_METAINFO;
|
||||
mh->cont_len = 0;
|
||||
|
||||
uint64_t sendone_time, send_time;
|
||||
if (g_para->send_rate_pps > 0)
|
||||
sendone_time = 1000000 / g_para->send_rate_pps;
|
||||
send_time = sendone_time;
|
||||
|
||||
int run = 1;
|
||||
while (run) {
|
||||
struct timeval sendone_end;
|
||||
|
||||
uint32_t idx;
|
||||
if (g_para->stop_prog_num > 0 && g_pktgen->count_prog >= g_para->stop_prog_num) {
|
||||
idx = rand() % g_pktgen->conn_num_cur;
|
||||
} else {
|
||||
idx = rand() % g_para->conn_num_max;
|
||||
if (idx >= g_pktgen->conn_num_cur) {
|
||||
create_conn(g_pktgen->conn_num_cur);
|
||||
idx = g_pktgen->conn_num_cur;
|
||||
g_pktgen->conn_num_cur ++;
|
||||
}
|
||||
}
|
||||
|
||||
conn_info_t *conn_cur = g_pktgen->conn + idx;
|
||||
|
||||
if (TESTFLAG(conn_cur->flag, CONN_FLAG_FIRST)) { // metainfo
|
||||
mh->msg_type = MSG_DATA_METAINFO;
|
||||
//mh->msg_type = MSG_DATA_BODY;
|
||||
mh->cont_len = METAINFO_HEAD_LEN;
|
||||
memcpy(mi->prog_id, &conn_cur->prog_id, 8);
|
||||
mi->cap_IP = inet_addr("10.53.2.15");
|
||||
mi->prog_len = conn_cur->prog_off; // [ATTENTION]
|
||||
mi->media_type = 0x68; //TODO
|
||||
mi->hitservice = 0x80;
|
||||
conn_cur->prog_off = 0;
|
||||
UNSETFLAG(conn_cur->flag, CONN_FLAG_FIRST);
|
||||
|
||||
if (g_para->log_prog) {
|
||||
write_local_log(g_log_prog_fd, "pid %-20llu byte %-15lu",
|
||||
conn_cur->prog_id,
|
||||
mi->prog_len);
|
||||
}
|
||||
|
||||
} else {
|
||||
mh->msg_type = MSG_DATA_BODY;
|
||||
memcpy(ad->prog_id, &conn_cur->prog_id, 8);
|
||||
//ad->pad = 0;
|
||||
ad->offset = conn_cur->prog_off + conn_cur->data_off;
|
||||
if (g_para->set_ack_flag && ad->offset < 10240)
|
||||
SETFLAG(ad->flags, AVS_FLAG_ACK);
|
||||
if (conn_cur->win_size + conn_cur->data_off >= conn_cur->data_len) {
|
||||
// last pkt
|
||||
mh->cont_len = AVS_DATA_HEAD_LEN +
|
||||
conn_cur->data_len - conn_cur->data_off;
|
||||
*conn_cur = g_pktgen->conn[g_pktgen->conn_num_cur-1];
|
||||
g_pktgen->conn_num_cur --;
|
||||
if (!g_pktgen->conn_num_cur)
|
||||
run = 0;
|
||||
} else {
|
||||
mh->cont_len = AVS_DATA_HEAD_LEN + conn_cur->win_size;
|
||||
conn_cur->data_off += conn_cur->win_size;
|
||||
}
|
||||
}
|
||||
|
||||
g_pktgen->count_pkt ++;
|
||||
g_pktgen->count_byte += MSG_HEADER_LEN + mh->cont_len;
|
||||
|
||||
// drop
|
||||
if (g_para->loss_ratio > 0 &&
|
||||
(uint32_t)rand() < g_para->loss_ratio * RAND_MAX / 1000000) {
|
||||
g_pktgen->count_lost ++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// send one
|
||||
if (output_udp_send(g_pktgen->sockfd, g_para->dstaddr.s_addr, g_para->dstaddr.sin_port, buf, MSG_HEADER_LEN + mh->cont_len) < 0) {
|
||||
printf("send error");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (g_para->stop_pkt_num && g_pktgen->count_pkt >= g_para->stop_pkt_num)
|
||||
run = 0;
|
||||
|
||||
if (g_para->send_rate_pps > 0) {
|
||||
uint64_t now;
|
||||
gettimeofday(&sendone_end, NULL);
|
||||
now = sendone_end.tv_sec * 1000000 + sendone_end.tv_usec;
|
||||
while (now < send_time) {
|
||||
//usleep(10);
|
||||
gettimeofday(&sendone_end, NULL);
|
||||
now = sendone_end.tv_sec * 1000000 + sendone_end.tv_usec;
|
||||
}
|
||||
send_time = now + sendone_time;
|
||||
}
|
||||
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
char *fprof;
|
||||
|
||||
if (argc > 3) {
|
||||
fprintf(stdout, "\nUsage: %s [<config_file>]\n\n", argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
fprof = DEFAULT_CONFIG;
|
||||
if (argc > 1)
|
||||
fprof = argv[1];
|
||||
|
||||
|
||||
|
||||
fprintf(stdout, "Profile: %s\n", fprof);
|
||||
if (pktgen_readprof(fprof) < 0) {
|
||||
printf("Read profile failed!");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
print_runtime_para();
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
g_pktgen = (pktgen_t *)calloc(1, sizeof(pktgen_t));
|
||||
if (NULL == g_pktgen) {
|
||||
DEBUG_MESSAGE("calloc error!");
|
||||
pktgen_clear();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
if (pktgen_init() < 0) {
|
||||
printf("pktgen init failed!!");
|
||||
pktgen_clear();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
signal(SIGINT, sig_hand_int);
|
||||
|
||||
pthread_t report_tid;
|
||||
if (g_para->info_interv > 0) {
|
||||
pthread_create(&report_tid, NULL, report, NULL);
|
||||
}
|
||||
|
||||
pktgen_run(g_pktgen);
|
||||
|
||||
pktgen_clear();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
72
src/tool/pktgen/pktgen.h
Normal file
72
src/tool/pktgen/pktgen.h
Normal file
@@ -0,0 +1,72 @@
|
||||
#ifndef _PKTGEN_H_
|
||||
#define _PKTGEN_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include "loadprof.h"
|
||||
|
||||
#define MAX_ACK 10240
|
||||
|
||||
#define DEFAULT_CONFIG "pktgen.ini"
|
||||
|
||||
#define AVS_FLAG_ACK 0x1
|
||||
|
||||
#define CONN_FLAG_FIRST 0x01
|
||||
#define CONN_FLAG_LAST 0x02
|
||||
#define CONN_FLAG_CLOSE 0x04
|
||||
#define CONN_FLAG_ACK 0x08
|
||||
#define SETFLAG(x, flag) x |= flag
|
||||
#define UNSETFLAG(x, flag) x &= ~flag
|
||||
#define TESTFLAG(x, flag) (0 != (x & flag))
|
||||
|
||||
typedef struct conn_info {
|
||||
uint64_t prog_id; // program id
|
||||
uint64_t prog_off:48;// program offset
|
||||
uint16_t win_size; // send window size
|
||||
uint64_t data_len:48;// data to be transmitted in this conn
|
||||
uint16_t flag; // new | last
|
||||
uint64_t data_off; // data that has been sent out
|
||||
} conn_info_t;
|
||||
|
||||
typedef struct runtime_para {
|
||||
// Parameters in config file
|
||||
uint32_t stop_cond;
|
||||
uint32_t stop_pkt_num; // pkt max
|
||||
uint32_t stop_prog_num; // pkt max
|
||||
uint32_t conn_num_max; // connection num
|
||||
uint32_t send_rate_pps;
|
||||
uint32_t multi_thread;
|
||||
uint32_t set_ack_flag;
|
||||
|
||||
uint32_t log_prog;
|
||||
|
||||
uint32_t loss_ratio;
|
||||
uint32_t rep_ratio;
|
||||
|
||||
uint32_t prog_len_max;
|
||||
uint32_t version_cur; // current version
|
||||
uint32_t info_interv;
|
||||
addr4_t dstaddr;
|
||||
} runtime_para_t;
|
||||
|
||||
|
||||
typedef struct pktgen {
|
||||
conn_info_t *conn;
|
||||
uint32_t conn_num_cur;
|
||||
uint64_t count_pkt;
|
||||
uint64_t count_byte;
|
||||
uint32_t count_prog;
|
||||
uint32_t count_lost;
|
||||
int sockfd;
|
||||
} pktgen_t;
|
||||
|
||||
typedef struct conn_distributor {
|
||||
uint64_t prog_id;
|
||||
uint64_t prog_len:48;
|
||||
uint64_t thread_len;
|
||||
uint8_t thread_num; //max 255
|
||||
uint8_t thread_cur;
|
||||
} conn_distributor_t;
|
||||
|
||||
#endif // _PKTGEN_H_
|
||||
46
src/tool/pktgen/pktgen.ini
Normal file
46
src/tool/pktgen/pktgen.ini
Normal file
@@ -0,0 +1,46 @@
|
||||
# Initialization file
|
||||
|
||||
[SYSTEM]
|
||||
STOP_CONDITION = 0
|
||||
# Packet num
|
||||
STOP_PKT_NUM = 0
|
||||
# Prog num
|
||||
STOP_PROG_NUM = 2
|
||||
|
||||
# Max num of concurrent connections
|
||||
CONN_NUM_MAX = 100
|
||||
|
||||
# Send out rate control
|
||||
SEND_RATE_PPS = 20000
|
||||
|
||||
# Support multi-thread
|
||||
MULTI_THREAD = 1
|
||||
|
||||
# Loss ratio (x/1,000,000)
|
||||
LOSS_RATIO = 0
|
||||
|
||||
# Repitition ratio (x/1,000,000)
|
||||
REPITITION_RATIO = 0
|
||||
|
||||
# ACK flag
|
||||
SET_ACK_FLAG = 0
|
||||
|
||||
# Report interval time (s)
|
||||
REPORT_INTERVAL = 5
|
||||
|
||||
# Log prog info
|
||||
LOG_PROG = 0
|
||||
|
||||
[PROTOCOL]
|
||||
# current version
|
||||
CURRENT_VERSION = 3
|
||||
|
||||
# Max program length (Byte)
|
||||
MAX_PROGRAM_LEN = 320000
|
||||
|
||||
[OUTPUT]
|
||||
# destination ip address
|
||||
#DST_ADDRESS = 10.0.6.203:22082
|
||||
DST_ADDRESS = 127.0.0.1:22082
|
||||
#DST_ADDRESS = 10.60.1.15:22082
|
||||
|
||||
32
src/tool/pktgen/test.c
Normal file
32
src/tool/pktgen/test.c
Normal file
@@ -0,0 +1,32 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <arpa/inet.h>
|
||||
#include "output.h"
|
||||
int main() {
|
||||
uint32_t s_addr = inet_addr("127.0.0.1");
|
||||
uint16_t sin_port = htons(22082);
|
||||
|
||||
//int sockfd = output_udp_init();
|
||||
int sockfd = output_udp_init_connect(s_addr, sin_port);
|
||||
uint8_t buf[100];
|
||||
int i;
|
||||
int send = 0, error = 0;
|
||||
|
||||
while(1) {
|
||||
//if (output_udp_send(sockfd, s_addr, sin_port, buf, 50) < 0) {
|
||||
if (output_udp_send_connect(sockfd, buf, 50) < 0) {
|
||||
error ++;
|
||||
perror("error");
|
||||
continue;
|
||||
}
|
||||
printf("ok\n");
|
||||
send++;
|
||||
sleep(1);
|
||||
}
|
||||
output_udp_clear_connect(sockfd);
|
||||
//output_udp_clear(sockfd);
|
||||
printf("%d %d\n", send, error);
|
||||
return 1;
|
||||
}
|
||||
26
src/tool/scripts/0_deploy.sh
Normal file
26
src/tool/scripts/0_deploy.sh
Normal file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
LOG_IPLIST=ip.back.lst
|
||||
DEPLOY_TGZ=preproc.tgz
|
||||
DEPLOY_DIR=/home/ictsoft/preproc
|
||||
USER_NAME=root
|
||||
USER_PASSWD='111111'
|
||||
|
||||
for ip in `cat $LOG_IPLIST`; do
|
||||
echo $ip;
|
||||
ping -c1 $ip;
|
||||
./kr "killall -vq preprocessor r3; mkdir -p $DEPLOY_DIR; rm -rf $DEPLOY_DIR/*" $ip $USER_NAME $USER_PASSWD
|
||||
./kscp $DEPLOY_TGZ $ip $DEPLOY_DIR $USER_NAME $USER_PASSWD
|
||||
./kr "cd $DEPLOY_DIR; tar -zxvf $DEPLOY_TGZ; rm -f $DEPLOY_TGZ; ./start" $ip $USER_NAME $USER_PASSWD
|
||||
done
|
||||
|
||||
CHECK_RUN_LOG=runstat.log
|
||||
for ip in `cat $LOG_IPLIST`; do
|
||||
echo $ip;
|
||||
./kr "cd $DEPLOY_DIR/log tail -f preproc*; ps aux |grep preproc" $ip $USER_NAME $USER_PASSWD >>$CHECK_RUN_LOG
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
35
src/tool/scripts/1_front.sh
Normal file
35
src/tool/scripts/1_front.sh
Normal file
@@ -0,0 +1,35 @@
|
||||
#! /bin/sh
|
||||
|
||||
LOG_SENDBACK="sendback.log"
|
||||
LOG_PIDLIST="pidlst.log"
|
||||
LOG_SUM="sum.log"
|
||||
#KEYWORD1=192.168.1.101
|
||||
#KEYWORD2=10.52.210.142
|
||||
KEYWORD1=124.234.244.160
|
||||
KEYWORD2=208.166.50.105
|
||||
LOG_TEMP="temp.log"
|
||||
LOG_RESULT="front.txt"
|
||||
|
||||
echo "Merge $LOG_SENDBACK ..."
|
||||
cat /home/guole/Prog/SendBackData_* > $LOG_SENDBACK
|
||||
|
||||
echo "Generate $LOG_PIDLIST ..."
|
||||
cat /home/guole/Prog/find_prog.log | grep $KEYWORD1 | grep $KEYWORD2 | awk '{print $4}' |sort -u > $LOG_PIDLIST
|
||||
|
||||
echo "Generate $LOG_SUM ..."
|
||||
./sum $LOG_SENDBACK > $LOG_SUM
|
||||
|
||||
echo "Generate $LOG_RESULT ..."
|
||||
for pid in `cat $LOG_PIDLIST`; do
|
||||
grep $pid $LOG_SUM >> $LOG_TEMP
|
||||
done
|
||||
cat $LOG_TEMP | sort > $LOG_RESULT
|
||||
rm -f $LOG_TEMP
|
||||
wc -l $LOG_RESULT
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
30
src/tool/scripts/2_back.sh
Normal file
30
src/tool/scripts/2_back.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#! /bin/sh
|
||||
|
||||
LOG_IPLIST=ip.back.lst
|
||||
LOG_PIDLIST=pidlst.log
|
||||
LOG_WASHOUT=washout.log
|
||||
LOG_TEMP=temp.log
|
||||
|
||||
LOG_DIR=/home/ictsoft/preproc/log
|
||||
USER_NAME=root
|
||||
USER_PASSWD='111111'
|
||||
|
||||
|
||||
for ip in `cat $LOG_IPLIST`; do
|
||||
FETCH_CMD="LOG_RESULT=\"backend.$ip.txt\";
|
||||
cd $LOG_DIR;
|
||||
for pid in \`cat $LOG_PIDLIST\`;
|
||||
do grep \$pid $LOG_WASHOUT >> $LOG_TEMP;
|
||||
done;
|
||||
awk '{print \$4,\$6,\$8}' $LOG_TEMP | sort > \$LOG_RESULT;
|
||||
rm -f $LOG_TEMP"
|
||||
|
||||
./kscp $LOG_PIDLIST $ip $LOG_DIR $USER_NAME $USER_PASSWD
|
||||
./kr "$FETCH_CMD" $ip $USER_NAME $USER_PASSWD
|
||||
./kscpr $ip $LOG_DIR/backend.*.txt . $USER_NAME $USER_PASSWD
|
||||
done
|
||||
|
||||
cat backend.* | sort > backend.txt
|
||||
wc -l backend.txt
|
||||
|
||||
|
||||
2
src/tool/scripts/Lindent
Normal file
2
src/tool/scripts/Lindent
Normal file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs "$@"
|
||||
27
src/tool/scripts/backstat.sh
Normal file
27
src/tool/scripts/backstat.sh
Normal file
@@ -0,0 +1,27 @@
|
||||
#########################################################################################################################
|
||||
# Version: 1.1 #
|
||||
# Date : 2010-09-17 #
|
||||
# Author : liuganggang #
|
||||
# E-mail : liuganggang@software.ict.ac.cn #
|
||||
# Purpose: Check log files to see the problems #
|
||||
# #
|
||||
# #
|
||||
#########################################################################################################################
|
||||
|
||||
LOG="./washout.log"
|
||||
AV_CHECK_CONF_FILE_NAME="./check.conf"
|
||||
ct_prog_name=`cat $AV_CHECK_CONF_FILE_NAME | awk '{print $1}'| tr $'\x0d\x0a' $'\x20'`
|
||||
line=`cat $AV_CHECK_CONF_FILE_NAME | wc -l`
|
||||
|
||||
|
||||
for ((loop=1;loop<= $line;++loop))
|
||||
do
|
||||
cur_prog_name=`echo "$ct_prog_name"|awk '{print $'$loop'}'`
|
||||
# echo "$cur_prog_name"
|
||||
cat $LOG|grep $cur_prog_name>>result1.txt
|
||||
done
|
||||
cat result1.txt | awk '{print $4,$8}'|sort > result2.txt
|
||||
|
||||
|
||||
|
||||
|
||||
29
src/tool/scripts/checkavlog.sh
Normal file
29
src/tool/scripts/checkavlog.sh
Normal file
@@ -0,0 +1,29 @@
|
||||
#########################################################################################################################
|
||||
# Version: 1.1 #
|
||||
# Date : 2010-09-17 #
|
||||
# Author : liuganggang #
|
||||
# E-mail : liuganggang@software.ict.ac.cn #
|
||||
# Purpose: Check log files to see the problems #
|
||||
# #
|
||||
# #
|
||||
#########################################################################################################################
|
||||
cat /home/ictfd/Prog/SendBackData_* > sendback.log
|
||||
cat /home/ictfd/Prog/find_prog.log |grep 192.168.1.101|grep 10.52.210.142 | awk '{print $4}' >check.conf
|
||||
./sum sendback.log > sum.log
|
||||
LOG="./sum.log"
|
||||
AV_CHECK_CONF_FILE_NAME="./check.conf"
|
||||
ct_prog_name=`cat $AV_CHECK_CONF_FILE_NAME | awk '{print $1}'| tr $'\x0d\x0a' $'\x20'`
|
||||
line=`cat $AV_CHECK_CONF_FILE_NAME | wc -l`
|
||||
|
||||
|
||||
for ((loop=1;loop<= $line;++loop))
|
||||
do
|
||||
cur_prog_name=`echo "$ct_prog_name"|awk '{print $'$loop'}'`
|
||||
# echo "$cur_prog_name"
|
||||
cat $LOG|grep $cur_prog_name>>result1.txt
|
||||
done
|
||||
cat result1.txt|sort > result.txt
|
||||
|
||||
|
||||
|
||||
|
||||
7
src/tool/scripts/clean_front_log.sh
Normal file
7
src/tool/scripts/clean_front_log.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#! /bin/sh
|
||||
cd /home/ictfd/Prog/
|
||||
>SendBackData_0.log
|
||||
>SendBackData_1.log
|
||||
>SendBackData_2.log
|
||||
>SendBackData_3.log
|
||||
>find_prog.log
|
||||
2
src/tool/scripts/clean_pwd_log.sh
Normal file
2
src/tool/scripts/clean_pwd_log.sh
Normal file
@@ -0,0 +1,2 @@
|
||||
#! /bin/sh
|
||||
rm *.log *.txt -f
|
||||
36
src/tool/scripts/deploy.sh
Normal file
36
src/tool/scripts/deploy.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
BACKEND="\
|
||||
10.0.6.203"
|
||||
|
||||
slkdfj="10.52.210.181 \
|
||||
10.52.210.182 \
|
||||
10.52.210.183 \
|
||||
10.52.210.184 \
|
||||
10.52.210.185 \
|
||||
10.52.210.186 \
|
||||
10.52.210.187 \
|
||||
10.52.210.188"
|
||||
|
||||
DEPLOY_TGZ=preproc.tgz
|
||||
DEPLOY_DIR=/home/ictsoft/preproc
|
||||
USER_NAME=root
|
||||
USER_PASSWD='111111'
|
||||
|
||||
for ip in $BACKEND; do
|
||||
echo $ip;
|
||||
ping -c1 $ip;
|
||||
./kr "killall -vq preprocessor r3; mkdir -p $DEPLOY_DIR; rm -rf $DEPLOY_DIR/*" $ip $USER_NAME $USER_PASSWD
|
||||
./kscp $DEPLOY_TGZ $ip $DEPLOY_DIR $USER_NAME $USER_PASSWD
|
||||
./kr "cd $DEPLOY_DIR; tar -zxvf $DEPLOY_TGZ; rm -f $DEPLOY_TGZ; ./start" $ip $USER_NAME $USER_PASSWD
|
||||
done
|
||||
|
||||
CHECK_RUN_LOG=runstat.log
|
||||
for ip in $BACKEND; do
|
||||
echo $ip;
|
||||
./kr "cd $DEPLOY_DIR/log tail -f preproc*; ps aux |grep preproc" $ip $USER_NAME $USER_PASSWD >>$CHECK_RUN_LOG
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2
src/tool/scripts/ip.back.lst
Normal file
2
src/tool/scripts/ip.back.lst
Normal file
@@ -0,0 +1,2 @@
|
||||
10.0.6.203
|
||||
|
||||
9
src/tool/scripts/ip.back.lst2
Normal file
9
src/tool/scripts/ip.back.lst2
Normal file
@@ -0,0 +1,9 @@
|
||||
10.52.210.181
|
||||
10.52.210.182
|
||||
10.52.210.183
|
||||
10.52.210.184
|
||||
10.52.210.185
|
||||
10.52.210.186
|
||||
10.52.210.187
|
||||
10.52.210.188
|
||||
|
||||
4
src/tool/scripts/kkk.sh
Normal file
4
src/tool/scripts/kkk.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
ssh 10.60.1.15 "cd code/debug; ./stop"
|
||||
scp -r debug/* 10.60.1.15:code/debug
|
||||
ssh 10.60.1.15 "cd code/debug; ./restart"
|
||||
62
src/tool/scripts/kr
Normal file
62
src/tool/scripts/kr
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/expect -f
|
||||
if {$argc != 4} {
|
||||
puts "usage example:./kr \"ps aux\" 10.52.202.1 user passwd"
|
||||
exit
|
||||
}
|
||||
set cmd [lindex $argv 0]
|
||||
set sip [lindex $argv 1]
|
||||
set user [lindex $argv 2]
|
||||
set passwd [lindex $argv 3]
|
||||
|
||||
set logfile "kr.log"
|
||||
set timeout 5
|
||||
spawn ssh $user@$sip
|
||||
set flag 0
|
||||
sleep 5
|
||||
expect {
|
||||
"(yes/no)?"
|
||||
{
|
||||
send "yes\r"
|
||||
expect "*password:"
|
||||
send "$passwd\r"
|
||||
}
|
||||
"*password:"
|
||||
{
|
||||
send "$passwd\r"
|
||||
}
|
||||
"Connection closed by remote host"
|
||||
{
|
||||
system echo " " $sip " " closed >> $logfile
|
||||
set flag 1
|
||||
}
|
||||
"No route to host"
|
||||
{
|
||||
system echo " " $sip " " no host >> $logfile
|
||||
set flag 1
|
||||
}
|
||||
timeout
|
||||
{
|
||||
system echo " " $sip " " timeout >> $logfile
|
||||
set flag 1
|
||||
}
|
||||
"]#"
|
||||
{
|
||||
send "$cmd\r"
|
||||
expect "]#"
|
||||
sleep 1
|
||||
send "logout\r"
|
||||
set flag 1
|
||||
system echo $user@$sip "]# " '$cmd' >> $logfile
|
||||
}
|
||||
|
||||
}
|
||||
if {$flag!=1} {
|
||||
expect "]#"
|
||||
send "$cmd\r"
|
||||
system echo $user@$sip "]# " '$cmd' >> $logfile
|
||||
expect "]#"
|
||||
sleep 1
|
||||
send "logout\r"
|
||||
}
|
||||
expect eof
|
||||
|
||||
42
src/tool/scripts/kscp
Normal file
42
src/tool/scripts/kscp
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/expect -f
|
||||
if {$argc != 5} {
|
||||
puts "usage example:./kscp test.tgz 10.52.202.1 /home/ user 'passwd'"
|
||||
exit
|
||||
}
|
||||
set filename [lindex $argv 0]
|
||||
set sip [lindex $argv 1]
|
||||
set dir [lindex $argv 2]
|
||||
set user [lindex $argv 3]
|
||||
set passwd [lindex $argv 4]
|
||||
|
||||
set logfile "kscp.log"
|
||||
set timeout 5
|
||||
|
||||
spawn scp $filename $user@$sip:$dir
|
||||
sleep 5
|
||||
expect {
|
||||
"(yes/no)?"
|
||||
{
|
||||
send "yes\r"
|
||||
expect "*password:"
|
||||
send "$passwd\r"
|
||||
}
|
||||
"*password:"
|
||||
{
|
||||
send "$passwd\r"
|
||||
}
|
||||
"Connection closed by remote host"
|
||||
{
|
||||
system echo " " $sip " " closed >> $logfile
|
||||
}
|
||||
"No route to host"
|
||||
{
|
||||
system echo " " $sip " " no host >> $logfile
|
||||
}
|
||||
timeout
|
||||
{
|
||||
system echo " " $sip " " timeout >> $logfile
|
||||
}
|
||||
}
|
||||
|
||||
expect eof
|
||||
40
src/tool/scripts/kscpr
Normal file
40
src/tool/scripts/kscpr
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/expect -f
|
||||
if {$argc != 5} {
|
||||
puts "usage example:./kscpr 10.52.202.1 test.tgz /home/ user 'passwd'"
|
||||
exit
|
||||
}
|
||||
set sip [lindex $argv 0]
|
||||
set filename [lindex $argv 1]
|
||||
set dir [lindex $argv 2]
|
||||
set user [lindex $argv 3]
|
||||
set passwd [lindex $argv 4]
|
||||
|
||||
set logfile "kscpr.log"
|
||||
set timeout 8
|
||||
|
||||
spawn scp $user@$sip:$filename $dir
|
||||
expect {
|
||||
"(yes/no)?"
|
||||
{
|
||||
send "yes\r"
|
||||
expect "*password:"
|
||||
send "$passwd\r"
|
||||
}
|
||||
"*password:"
|
||||
{
|
||||
send "$passwd\r"
|
||||
}
|
||||
"Connection closed by remote host"
|
||||
{
|
||||
system echo " " $sip " " closed >> $logfile
|
||||
}
|
||||
"No route to host"
|
||||
{
|
||||
system echo " " $sip " " no host >> $logfile
|
||||
}
|
||||
timeout
|
||||
{
|
||||
system echo " " $sip " " timeout >> $logfile
|
||||
}
|
||||
}
|
||||
expect eof
|
||||
482
src/tool/sendprog/Com_SendToBack.h
Normal file
482
src/tool/sendprog/Com_SendToBack.h
Normal file
@@ -0,0 +1,482 @@
|
||||
#ifndef _H_COM_SENDTOBACK_H
|
||||
#define _H_COM_SENDTOBACK_H
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
// Defination for all kinds of msg
|
||||
#define PROTO_MAGICNUM 0x5641
|
||||
#define PROTO_VERSION 3
|
||||
|
||||
// Conf Msg
|
||||
#define MSG_MANAGER 0x00 // System Manager Configure Message
|
||||
#define MSG_CONFIG_ALL 0x01 // All Configure Update Message
|
||||
#define MSG_CONFIG_INC 0x02 // Increase Configure Update Message
|
||||
#define MSG_CONFIG_REQ 0x03 // Configure Request Message
|
||||
|
||||
#define MSG_D_CONFIG_ALL 0x04 // Configure Require's Response Message .
|
||||
#define MSG_D_CONFIG_INC 0x05 // Configure Require's Response Message .
|
||||
#define MSG_D_CONFIG_REQ 0x06 // Dynamic Configure Item Require Message This message come from configure server ;
|
||||
#define MSG_TUPLE5_URL_REQ 0x0A // Tuple5 to url Request;
|
||||
|
||||
#define MSG_P2P_D_CONFIG_ALL 0x71 // Configure Require's Response Message .
|
||||
#define MSG_P2P_D_CONFIG_INC 0x72 // Configure Require's Response Message .
|
||||
#define MSG_P2P_D_CONFIG_REQ 0x73 // Configure Require's Response Message .
|
||||
// Conf Operation defination
|
||||
#define CONFIG_OP_TYPE_NO 0x00 // no any operation
|
||||
#define CONFIG_OP_TYPE_ADD 0x01 // add a config rule
|
||||
#define CONFIG_OP_TYPE_DEL 0x02 // del a config rule
|
||||
#define CONFIG_OP_TYPE_MOD 0x03 // modify a config rule
|
||||
|
||||
// Response Msg
|
||||
|
||||
#define MSG_RESP_CHECKRESULT 0x11 // Check Result notification
|
||||
#define MSG_RESP_REJECT 0x12 // Reject Message notification
|
||||
#define MSG_RESP_CHARACTER 0x13 // Character notification
|
||||
|
||||
// Log Msg
|
||||
#define MSG_MANAGER_LOG 0x20 // Manager Log Msg
|
||||
#define MSG_RESULT_LOG 0x21 // Result Log Msg for Block or Monitor
|
||||
#define MSG_STATIC_LOG 0x22 // Valid Message
|
||||
#define MSG_TUPLE5_URL_LOG 0x2A // Tuple response Message
|
||||
|
||||
// Data Msg
|
||||
#define MSG_DATA_METAINFO 0x31
|
||||
#define MSG_DATA_BODY 0x32
|
||||
#define MSG_DATA_TAIL 0x33
|
||||
|
||||
// Definatin for all types of vidio and audio file;
|
||||
#define FILE_UNKNOWN 0x00
|
||||
#define FILE_VIDEO 0x60
|
||||
#define FILE_WMV 0x61
|
||||
#define FILE_MPG 0x62
|
||||
#define FILE_FLV 0x63
|
||||
#define FILE_RMFF 0x65
|
||||
#define FILE_AVI 0x66
|
||||
#define FILE_SWF 0x67
|
||||
#define FILE_MPG4 0x68
|
||||
#define FILE_AIFF 0x69
|
||||
#define FILE_OGG 0x6A
|
||||
#define FILE_DRC 0x6B
|
||||
#define FILE_DIRECTSHOW 0x6C
|
||||
#define FILE_FLIC 0x6D
|
||||
#define FILE_INDEO 0x6E
|
||||
#define FILE_MKV 0x6F
|
||||
|
||||
#define FILE_AUDIO 0x70
|
||||
#define FILE_MP3 0x71
|
||||
|
||||
#define BE_IMAGE_TYPE(t) ((t>=FILE_IMAGE) && (t<0x90))
|
||||
#define BE_VIDEO_TYPE(t) ((t>=FILE_VIDEO) && (t<0x70))
|
||||
#define BE_AUDIO_TYPE(t) ((t>=FILE_AUDIO) && (t<0x80))
|
||||
|
||||
#define FILE_IMAGE 0x80
|
||||
|
||||
#define FILE_JPG 0x84
|
||||
#define FILE_BMP 0x85
|
||||
#define FILE_GIF 0x86
|
||||
|
||||
#define MMS_TYPE 0x90
|
||||
#define HTTP_STREAM_TYPE 0x90
|
||||
#define RTSP_RDT_TYPE 0x92
|
||||
#define RTSP_RTP_TYPE 0x91
|
||||
|
||||
|
||||
#define SERVICE_FLAG_FD 0 // FenDu Flag
|
||||
#define SERVICE_FLAG_JC 1 // JianCe Flag
|
||||
// Defination of service type ;
|
||||
#define SERVICE_IPPORT_WHITE 0x01 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_IPPORT_BLACK 0x02 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_WHITE 0x03 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_BLACK 0x04 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_WHITE 0x05 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_BLACK 0x06 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// added by cxj 20100811
|
||||
#define SERVICE_P2P_STATIC_WHITEIP 0x15
|
||||
#define SERVICE_P2P_BI_WHITEIP 0x16
|
||||
#define SERVICE_P2P_MI_WHITEIP 0x17
|
||||
|
||||
#define SERVICE_P2P_EMULE_SERVER 0x51 //
|
||||
#define SERVICE_P2P_EMULE_KEY 0x52 //
|
||||
#define SERVICE_P2P_EMULE_FILEID 0x53 //
|
||||
#define SERVICE_P2P_EMULE_NODE 0x54 //
|
||||
|
||||
#define SERVICE_P2P_BT_INFOHASH 0x41 // BT Infohash Black List
|
||||
#define SERVICE_P2P_BT_NODE 0x44 // BT Bone Node
|
||||
#define SERVICE_P2P_BT_SERVICE 0x61 // BT DHT Index Server List
|
||||
|
||||
#define SERVICE_P2P_BT_ECLIPSE_IPLIST 0x45
|
||||
#define SERVICE_P2P_BT_POLLUTION_IPLIST 0x46
|
||||
#define SERVICE_P2P_EMULE_POLLUTION_IPLIST 0x55
|
||||
|
||||
|
||||
//
|
||||
#define SERVICE_EMULE_SERVER 0x71 //<2F><>ĿΨһID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_KEYS 0x72 //<2F><>ĿΨһID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_FHID 0x73 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_FNAME 0x74 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_NODE 0x75 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define SERVICE_IPPORT_WHITE_JC 0x81 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_IPPORT_BLACK_JC 0x82 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_WHITE_JC 0x83 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_BLACK_JC 0x84 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_WHITE_JC 0x85 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_BLACK_JC 0x86 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define MAX_SERVICE_NUM 0xff
|
||||
// Manager Command Defination
|
||||
#define MANAGER_AV_SYS_CMD 0x02010000 //<2F><><EFBFBD><EFBFBD>Ƶϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MANAGER_AV_PIC_CMD 0x02020000 //
|
||||
#define MANAGER_AV_SYS_QUERY 0x01 //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>״̬
|
||||
#define MANAGER_AV_SYS_OPEN 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>
|
||||
#define MANAGER_AV_SYS_CLOSE 0x03 //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>
|
||||
#define MANAGER_AV_SYS_CHANGE 0x04 //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5>鴦<EFBFBD><E9B4A6>״̬
|
||||
// add by cxj for P2P Manager Command
|
||||
#define MANAGER_P2P_BI_GROUP_UPDATE 0x11 // BISys's IP List Update
|
||||
#define MANAGER_P2P_MI_GROUP_UPDATE 0x12 // MISys's IP List Update
|
||||
#define MANAGER_P2P_BT_ECLIPSE_UPDATE 0x13 // MISys's IP List Update
|
||||
|
||||
|
||||
|
||||
// Manager Command state Defination
|
||||
#define MANAGER_PROCESS_STATE_UNKNOWN 0x00 // δ֪
|
||||
#define MANAGER_PROCESS_STATE_RUNING 0x10 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_OK 0x20 // <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_UNTHORITY 0x30 // δ<><CEB4>Ȩ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_FAILED 0x40 // <20>ɻָ<C9BB><D6B8>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_ERROR 0x50 // <20><><EFBFBD>ɻָ<C9BB><D6B8>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
|
||||
|
||||
#define MATCH_METHOD_SUB 0x00 // sub match;
|
||||
#define MATCH_METHOD_FUL 0x01 // full match;
|
||||
|
||||
#define MsgBodyHeadLen sizeof(struct msg_body_t)
|
||||
#define UDP_SENDBACK_MAX_LEN 4*1024
|
||||
#define UDP_SENDBACK_MAX_DATALEN UDP_SENDBACK_MAX_LEN-MsgHeadLen-MsgBodyHeadLen
|
||||
|
||||
|
||||
typedef unsigned char UINT8;
|
||||
typedef unsigned int UINT;
|
||||
typedef unsigned long long UINT64;
|
||||
typedef unsigned int UINT32;
|
||||
typedef unsigned short UINT16;
|
||||
typedef unsigned char UCHAR;
|
||||
typedef char CHAR;
|
||||
typedef unsigned short USHORT;
|
||||
|
||||
#define MSG_HEADER_LEN sizeof(struct msg_header_t)
|
||||
struct msg_header_t {
|
||||
USHORT magic_num; /* ħ<><C4A7><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊ0xECD5BCBC */
|
||||
UCHAR version; /* <20>汾<EFBFBD>ţ<EFBFBD>ĿǰֵΪ1 */
|
||||
UCHAR msg_type; /* <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> */
|
||||
UINT cont_len; /* <20><>Ϣ<EFBFBD><CFA2><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD> */
|
||||
}; /* sizeof = 8B */
|
||||
|
||||
#define OPT_HEAD_LEN (sizeof(UINT)+1)
|
||||
struct opt_unit_t {
|
||||
UINT opt_len; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> */
|
||||
UCHAR opt_type; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
CHAR *opt_value; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
};
|
||||
|
||||
//ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
#define MAX_STATICSSENDNUM 10000
|
||||
struct statlog_unit_t {
|
||||
UINT16 unit_len; // <20><>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||||
UINT16 log_type; // ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
UINT32 hit_num; // <20><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
|
||||
char prog_id[8]; // <20><>ĿID
|
||||
|
||||
};
|
||||
struct msg_statlog_t {
|
||||
UINT32 log_time; // ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
UINT32 log_num; // <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA>
|
||||
};
|
||||
|
||||
|
||||
//<2F><>Ԫ<EFBFBD>鶨<EFBFBD><E9B6A8>
|
||||
struct msg_tup5_req_t {
|
||||
UINT src_ip;
|
||||
UINT dst_ip;
|
||||
USHORT src_port;
|
||||
USHORT dst_port;
|
||||
UCHAR protocol;
|
||||
CHAR pad[3];
|
||||
};
|
||||
|
||||
// Service Configure Unit Defination
|
||||
|
||||
struct cfg_unit_t {
|
||||
UCHAR op_type;
|
||||
UCHAR service;
|
||||
UCHAR weight;
|
||||
UCHAR flag;
|
||||
UINT cfg_id;
|
||||
UINT unit_len;
|
||||
CHAR * value;
|
||||
};
|
||||
#define CFG_UNIT_HEAD_LEN (sizeof(UCHAR)*4 + sizeof(UINT)*2)
|
||||
|
||||
// added by cxj 20110811
|
||||
// dynamic Configure Unit Defination;
|
||||
struct d_cfg_unit_t{
|
||||
UINT64 groupid;
|
||||
UINT service;
|
||||
UINT unit_len;
|
||||
CHAR *value;
|
||||
};
|
||||
|
||||
#define D_CFG_UNIT_HEAD_LEN (sizeof(uint64_t) * sizeof(INT) *2)
|
||||
|
||||
// Manager Configure Unit Defination
|
||||
|
||||
struct cmd_unit_t{
|
||||
UINT optor_id;
|
||||
UINT cmd_sn;
|
||||
UINT cmd_code;
|
||||
UINT cmd_val;
|
||||
UINT opt_len;
|
||||
};
|
||||
|
||||
#define CMD_UNIT_HEAD_LEN (sizeof(UINT) *5)
|
||||
|
||||
struct msg_cmdlog_t {
|
||||
UINT log_time; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD>䡣<EFBFBD><E4A1A3>ֵ<EFBFBD><D6B5>[0,0x7FFFFFFF]<5D><><EFBFBD><EFBFBD>ʱȡֵ<C8A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ time_t<5F>ṹ<EFBFBD><E1B9B9>ֵ<EFBFBD><D6B5><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
UINT log_num; // <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
// struct cmdlog_unit_t[log_num] cmdlog_unit;
|
||||
};
|
||||
|
||||
#define MSG_CMDLOG_HEAD_LEN (sizeof(UINT) *2)
|
||||
|
||||
struct cmdlog_unit_t {
|
||||
UINT CLJ_IP; //ִ<><D6B4>ָ<EFBFBD><D6B8><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT operator_ID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ԱID
|
||||
UINT cmd_SN; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
|
||||
UINT cmd_code; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8>
|
||||
UCHAR state; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>״̬
|
||||
UCHAR pad; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶΣ<D6B6>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
USHORT opt_len; // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'\0'<27>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// char * opt_value;
|
||||
};
|
||||
|
||||
#define CMDLOG_UNIT_HEAD_LEN 20
|
||||
|
||||
|
||||
|
||||
// Dynamic Configure Defination;
|
||||
// The Unit Defination be same with cfg_struct_t, only the flag value is not same;
|
||||
#define DYNAMIC_WHITE_FLAG 0
|
||||
#define DYNAMIC_BLACK_FLAG 1
|
||||
|
||||
struct msg_cfg_t {
|
||||
UINT cfg_time;
|
||||
UINT cfg_num;
|
||||
};
|
||||
#define MSG_CFG_HEAD_LEN (sizeof(UINT) * 2)
|
||||
|
||||
|
||||
|
||||
struct avs_data_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT8 pad;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
UINT8 flags;// <20><><EFBFBD>ݱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT64 offset:48; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>е<EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
|
||||
|
||||
/* unsigned long long offset; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5><C4B6><EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
|
||||
UINT dst_ip; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ
|
||||
UINT src_ip; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>ԴIP<49><50>ַ
|
||||
USHORT dst_port; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6>
|
||||
USHORT src_port; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Դ<EFBFBD>˿<EFBFBD>
|
||||
*/
|
||||
};
|
||||
#define AVS_DATA_HEAD_LEN (sizeof(struct avs_data_t))
|
||||
//Protocol Defination
|
||||
#define PROTO_HTTP 0x01
|
||||
#define PROTO_SMTP 0x02
|
||||
#define PROTO_POP3 0x03
|
||||
#define PROTO_FTP 0x04
|
||||
|
||||
#define PROTO_HTTP_STREAM 0x81
|
||||
#define PROTO_RTSP_RDT 0x82
|
||||
#define PROTO_RTSP_RTP 0x83
|
||||
#define PROTO_MMS 0x84
|
||||
#define PROTO_ED2K 0x85
|
||||
|
||||
#define HITSER_WHITE _IPPORT 0x81
|
||||
#define HITSER_BLACK _IPPORT 0x82
|
||||
#define HITSER_WHITE_URL 0x83
|
||||
#define HITSER_BLACK_URL 0x84
|
||||
#define HITSER_WHITE_DOMAIN 0x85
|
||||
#define HITSER_BLACK_DOMAIN 0x86
|
||||
|
||||
// Data_flag defination
|
||||
struct metainfo_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
CHAR flag;
|
||||
UINT8 hitservice;
|
||||
UINT64 prog_len:48;
|
||||
UINT cap_IP;
|
||||
UCHAR protocol; // Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR media_type; // Media type
|
||||
UCHAR data_flag; // Data Flag;
|
||||
UCHAR opt_num; //ѡ<><D1A1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
struct opt_unit_t * opt_unit;
|
||||
};
|
||||
#define METAINFO_HEAD_LEN 24
|
||||
//<2F><>Ӧ<EFBFBD><D3A6>Ϣ<EFBFBD><CFA2>ʽ
|
||||
struct survey_ind_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR service; // ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CHAR level; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г̶<D0B3>
|
||||
CHAR pad[2]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
||||
UINT cfg_id; // <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ID
|
||||
UINT file_header_size; //
|
||||
UINT file_packet_size;
|
||||
};
|
||||
#define SURVEY_MSG_FIX_LEN (sizeof(struct survey_ind_t))
|
||||
#define SURVEY_PAYLOAD_LEN_MAX (1460-MSG_HEADER_LEN-SURVEY_MSG_FIX_LEN)
|
||||
|
||||
struct msg_survey_ack_t {
|
||||
CHAR prog_id[8];
|
||||
UCHAR service;
|
||||
CHAR level;
|
||||
CHAR pad[2];
|
||||
UINT cfg_id;
|
||||
};
|
||||
|
||||
|
||||
struct live_data_t {
|
||||
CHAR prog_id[8];
|
||||
};
|
||||
|
||||
|
||||
// for log
|
||||
|
||||
struct msg_log_t
|
||||
{
|
||||
|
||||
CHAR prog_id[8];// program rule id;
|
||||
UINT cfg_id; // hitted rule id;
|
||||
UINT fount_time; // found time
|
||||
UINT server_ip; // server ip;
|
||||
UINT client_ip; // client ip;
|
||||
USHORT server_port; // server port;
|
||||
USHORT client_port; // client port;
|
||||
UCHAR protocol; // translation protocol num;
|
||||
UCHAR service; // service type;
|
||||
UCHAR level; // result level;
|
||||
UCHAR fd_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0<><30>ʾ<EFBFBD><CABE>̬<EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʾ<EFBFBD><CABE>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>2<EFBFBD><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>С<EFBFBD>
|
||||
USHORT opt_num; // option number;
|
||||
struct opt_unit_t * opt_info; // option point;
|
||||
|
||||
};
|
||||
//#define MSG_LOG_FIX_LEN (sizeof(struct msg_log_t)-sizeof(void *))
|
||||
|
||||
#define FD_TYPE_DYNAMIC 0
|
||||
#define FD_TYPE_STATIC 1
|
||||
#define FD_TYPE_ANALYSE 2
|
||||
|
||||
#define SET_LOG_MSG(log,pid,cid,ft,sip,cip,sport,cport,pro,s,l,ftype,o_num,o_info) \
|
||||
{ \
|
||||
memcpy(log.prog_id,pid,8); \
|
||||
log.cfg_id = cid;\
|
||||
log.fount_time = ft; \
|
||||
log.server_ip = sip; \
|
||||
log.client_ip = cip; \
|
||||
log.server_port =sport; \
|
||||
log.client_port =cport; \
|
||||
log.protocol = pro; \
|
||||
log.service = s; \
|
||||
log.level = l; \
|
||||
log.fd_type = ftype; \
|
||||
log.opt_num = o_num; \
|
||||
log.opt_info = o_info; \
|
||||
}
|
||||
|
||||
|
||||
struct msg_tup5_resp_t {
|
||||
UINT src_ip; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ԴIP<49><50>ַ
|
||||
UINT dst_ip; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ
|
||||
USHORT src_port; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Դ<EFBFBD>˿<EFBFBD>
|
||||
USHORT dst_port; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6>
|
||||
UCHAR protocol; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR pad; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶΣ<D6B6><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
USHORT cont_len; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
||||
char *cont; // <20><>Ϣ<EFBFBD><CFA2>URL<52><4C><EFBFBD><EFBFBD>
|
||||
};
|
||||
#define MSG_TUP5_RESP_FIX_LEN 16
|
||||
|
||||
|
||||
// Common
|
||||
int feedback_mem (int service, void *info, char *buf, int buf_len);
|
||||
// soft balance
|
||||
int feedback_mem_soft_balance (unsigned long long pid, char *buf, int buf_len);
|
||||
// soft balance
|
||||
int direct_feedback_mem_soft_balance (unsigned long long pid, char *buf, int buf_len, int thread_num);
|
||||
// hardware balance
|
||||
int feedback_mem_balance (unsigned long long pid, char *buf, int buf_len);
|
||||
// feedback init
|
||||
int feedback_init();
|
||||
//void gfn_AppCounterInit();
|
||||
//void gfn_AppCounterFree();
|
||||
//int gfn_AppCounterAdd(int ProtolType);
|
||||
//void gfn_AddSendBackOpt(struct msg_header_t *pMsgHeader,struct msg_body_t *pMsgBodyHeader,
|
||||
// char *pSendBackBuf,int OptType,char *SrcData,int SrcLen,char **ppOptbuf);
|
||||
//void gfn_AddSendBackData(struct msg_header_t *pMsgHeader,struct msg_body_t *pMsgBodyHeader,
|
||||
// char *pSendBackBuf,char *SrcData,int SrcLen,char **ppOptbuf);
|
||||
//int gfn_iSendToBEnd(tdLog* pstLog, int iLen, CBuffer* pBuf);
|
||||
|
||||
|
||||
|
||||
//void InitLogMessageLocal();
|
||||
//int LogMessageLocal(char *buf,int buflen);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
|
||||
struct CFG_Common
|
||||
{
|
||||
UCHAR pad;
|
||||
UCHAR service;
|
||||
UCHAR weight;
|
||||
UCHAR flag;
|
||||
UINT cfg_id;
|
||||
};
|
||||
|
||||
#define CFG_COMMON_LEN sizeof(struct CFG_Common)
|
||||
|
||||
struct CFG_AV_Content
|
||||
{
|
||||
struct CFG_Common comm_header; // common header;
|
||||
UINT contentlen; // length of content;
|
||||
char * content; // AV config Content;
|
||||
};
|
||||
|
||||
#define CFG_AV_CONTENT_FIXLEN (CFG_COMMON_LEN+sizeof(UINT))
|
||||
|
||||
struct CFG_IP_SETTING{
|
||||
UINT sip; // server ip;
|
||||
UINT mask; //
|
||||
USHORT port; // server port;
|
||||
UCHAR udpkey[4];
|
||||
}__attribute__((__packed__));
|
||||
|
||||
|
||||
int sendnto(int s, const void *msg, int n, unsigned int flags, const struct sockaddr *to, int tolen);
|
||||
|
||||
int gfn_iSetAVNewRuleTable(int iScanType,int iTableType,int iRuleNum,void * pstRTable);
|
||||
|
||||
int gfn_CScan_AVSearchMem(int iScanType,int iRuleType, char *data, int datalen, int begPos,struct cfg_unit_t *gResult, int *pFoundPostion, void **ppParam,int thread_num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
8
src/tool/sendprog/Makefile
Normal file
8
src/tool/sendprog/Makefile
Normal file
@@ -0,0 +1,8 @@
|
||||
.PHONY: clean sendprog
|
||||
all: sendprog
|
||||
|
||||
sendprog: sendprog.c
|
||||
gcc -g -Wall sendprog.c output.c input.c -lpthread -o sendprog
|
||||
|
||||
clean:
|
||||
rm -f sendprog
|
||||
78
src/tool/sendprog/input.c
Normal file
78
src/tool/sendprog/input.c
Normal file
@@ -0,0 +1,78 @@
|
||||
// input.c
|
||||
//
|
||||
//
|
||||
//
|
||||
// MODIFIED by
|
||||
// CREATED by Guo Le, 09/11/2010
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <fcntl.h>
|
||||
#include "input.h"
|
||||
|
||||
|
||||
int input_udp_init(uint16_t port)
|
||||
{
|
||||
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (-1 == sockfd) {
|
||||
//DEBUG_PRINTF("listener: socket %s", strerror());
|
||||
perror("listener: socket");
|
||||
return -1;
|
||||
}
|
||||
struct sockaddr_in my_addr; /* my address information */
|
||||
my_addr.sin_family = AF_INET; /* host byte order */
|
||||
my_addr.sin_port = port; /* short, network byte order */
|
||||
my_addr.sin_addr.s_addr = INADDR_ANY; /* auto-fill with my IP */
|
||||
bzero(&(my_addr.sin_zero), 8); /* zero the rest of the struct */
|
||||
|
||||
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) {
|
||||
//DEBUG_PRINTF("listener: bind %s", strerror());
|
||||
perror("listener: bind");
|
||||
close(sockfd);
|
||||
return -1;
|
||||
}
|
||||
/*
|
||||
if(fcntl(sockfd, F_SETFL, O_NONBLOCK) == -1) {
|
||||
close(sockfd);
|
||||
perror("fcntl");
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
void input_udp_clear(int sockfd)
|
||||
{
|
||||
close(sockfd);
|
||||
}
|
||||
|
||||
|
||||
int input_udp_recv(int sockfd, uint32_t *src_ip, uint8_t *buf, uint32_t *size)
|
||||
{
|
||||
if (NULL == buf)
|
||||
return -1;
|
||||
|
||||
int numbytes;
|
||||
struct sockaddr_storage their_addr;
|
||||
socklen_t addr_len = sizeof their_addr;
|
||||
//printf("listener: waiting to recvfrom...\n");
|
||||
if ((numbytes = recvfrom(sockfd, buf, 1500 , 0,
|
||||
(struct sockaddr *)&their_addr, &addr_len)) == -1) {
|
||||
perror("recvfrom");
|
||||
return -1;
|
||||
}
|
||||
//*src_ip = get_in_addr((struct sockaddr *)&their_addr);
|
||||
*src_ip = ((struct sockaddr_in *)&their_addr)->sin_addr.s_addr;
|
||||
*size = numbytes;
|
||||
return numbytes;
|
||||
}
|
||||
|
||||
11
src/tool/sendprog/input.h
Normal file
11
src/tool/sendprog/input.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef _INPUT_H_
|
||||
#define _INPUT_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
int input_udp_init(uint16_t port);
|
||||
|
||||
void input_udp_clear(int sockfd);
|
||||
|
||||
int input_udp_recv(int sockfd, uint32_t *src_ip, uint8_t *buf, uint32_t *size);
|
||||
#endif /* _INPUT_H_ */
|
||||
109
src/tool/sendprog/output.c
Normal file
109
src/tool/sendprog/output.c
Normal file
@@ -0,0 +1,109 @@
|
||||
// output.c
|
||||
//
|
||||
//
|
||||
//
|
||||
// MODIFIED by
|
||||
// CREATED BY Guo Le, 08/24/2010
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
|
||||
#include "output.h"
|
||||
|
||||
int output_udp_init()
|
||||
{
|
||||
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (-1 == sockfd) {
|
||||
printf("udpout_init: socket %s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
|
||||
void output_udp_clear(int sockfd)
|
||||
{
|
||||
close(sockfd);
|
||||
}
|
||||
|
||||
// send udp packet
|
||||
int output_udp_send(int sockfd, uint32_t addr, uint16_t port, uint8_t *data, int datalen)
|
||||
{
|
||||
struct sockaddr_in dst_addr; /* connector's address information */
|
||||
dst_addr.sin_family = AF_INET; /* host byte order */
|
||||
dst_addr.sin_port = port; /* short, network byte order */
|
||||
dst_addr.sin_addr.s_addr = addr;
|
||||
bzero(&(dst_addr.sin_zero), 8); /* zero the rest of the struct */
|
||||
|
||||
int numbytes = sendto(sockfd, data, datalen, 0, (struct sockaddr *)&dst_addr, sizeof(struct sockaddr));
|
||||
if (-1 == numbytes) {
|
||||
printf("udpout_send: sendto: %s", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
//printf("sent %d bytes to %s\n",numbytes,inet_ntoa(dst_addr.sin_addr));
|
||||
|
||||
if (numbytes != datalen)
|
||||
printf("udpout_send: loss data");
|
||||
|
||||
return numbytes;
|
||||
}
|
||||
|
||||
|
||||
int output_udp_init_connect(uint32_t addr, uint16_t port, char *dev)
|
||||
{
|
||||
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (-1 == sockfd) {
|
||||
printf("udpout_init_connect: socket %s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
struct sockaddr_in dst_addr; /* connector's address information */
|
||||
dst_addr.sin_family = AF_INET; /* host byte order */
|
||||
dst_addr.sin_port = port; /* short, network byte order */
|
||||
dst_addr.sin_addr.s_addr = addr;
|
||||
bzero(&(dst_addr.sin_zero), 8); /* zero the rest of the struct */
|
||||
|
||||
if (-1 == connect(sockfd, (struct sockaddr*)&dst_addr, sizeof(dst_addr)))
|
||||
{
|
||||
printf("udpout_init_connect: error in connect %s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (dev) {
|
||||
struct ifreq interface;
|
||||
strncpy(interface.ifr_ifrn.ifrn_name, dev, IFNAMSIZ);
|
||||
if (setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, (char *)&interface, sizeof(interface)) < 0) {
|
||||
printf("SO_BINDTODEVICE failed %s\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
void output_udp_clear_connect(int sockfd)
|
||||
{
|
||||
close(sockfd);
|
||||
}
|
||||
|
||||
// send udp packet
|
||||
int output_udp_send_connect(int sockfd, uint8_t *data, int datalen)
|
||||
{
|
||||
int numbytes = send(sockfd, data, datalen, 0);
|
||||
if (-1 == numbytes) {
|
||||
printf("udpout_send_connect: send: %d %s\n", errno, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (numbytes != datalen) {
|
||||
printf("udpout_send_connect: loss data");
|
||||
}
|
||||
return numbytes;
|
||||
}
|
||||
16
src/tool/sendprog/output.h
Normal file
16
src/tool/sendprog/output.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef _OUTPUT_H_
|
||||
#define _OUTPUT_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// send udp packet
|
||||
|
||||
int output_udp_init();
|
||||
void output_udp_clear(int sockfd);
|
||||
int output_udp_send(int sockfd, uint32_t addr, uint16_t port, uint8_t *data, int datalen);
|
||||
|
||||
|
||||
int output_udp_init_connect(uint32_t addr, uint16_t port, char *dev);
|
||||
void output_udp_clear_connect(int sockfd);
|
||||
int output_udp_send_connect(int sockfd, uint8_t *data, int datalen);
|
||||
#endif /* _OUTPUT_H_ */
|
||||
BIN
src/tool/sendprog/sendprog
Normal file
BIN
src/tool/sendprog/sendprog
Normal file
Binary file not shown.
274
src/tool/sendprog/sendprog.c
Normal file
274
src/tool/sendprog/sendprog.c
Normal file
@@ -0,0 +1,274 @@
|
||||
// sendprog.c
|
||||
//
|
||||
//
|
||||
//
|
||||
// MODIFIED by
|
||||
// CREATED by Guo Le, 10/16/2011
|
||||
|
||||
#include "sendprog.h"
|
||||
void print_usage(char *pname)
|
||||
{
|
||||
static const char *USAGE =
|
||||
"Usage: %s -i <input file> -o <output addr> [OPTION]\n"
|
||||
" -i <input file>, input file name.\n"
|
||||
" -o <output addr>, output socket. eg. 127.0.0.1:22082\n"
|
||||
" -t <timeout sec>, default 1 sec.\n"
|
||||
" -p <prog_id>, in hex or dec. eg.0x624353641237 \n"
|
||||
" -h, print this help.\n"
|
||||
"\n"
|
||||
" eg. %s -i ./if.mp3 -o 127.0.0.1:22082 -t 310 -p 0x624353641237\n";
|
||||
|
||||
fprintf(stderr, USAGE, pname, pname);
|
||||
|
||||
}
|
||||
|
||||
int send_prog(FILE *fp, int sockfd, uint64_t flen, uint64_t prog_id, int timeout)
|
||||
{
|
||||
char pkt_mi[1500];
|
||||
char pkt_ad[1500];
|
||||
|
||||
struct msg_header_t *mh_mi = (struct msg_header_t*)pkt_mi;
|
||||
struct msg_header_t *mh_ad = (struct msg_header_t*)pkt_ad;
|
||||
struct metainfo_t *mi = (struct metainfo_t*)(pkt_mi + MSG_HEADER_LEN);
|
||||
struct avs_data_t *ad = (struct avs_data_t*)(pkt_ad + MSG_HEADER_LEN);
|
||||
uint8_t *data = (uint8_t*)ad + AVS_DATA_HEAD_LEN;
|
||||
uint64_t max_data_len = 1400 - MSG_HEADER_LEN - AVS_DATA_HEAD_LEN;
|
||||
|
||||
|
||||
// init metainfo pkt
|
||||
*((uint64_t *)(mi->prog_id)) = prog_id;
|
||||
//mi->flag = META_FLAG_DUMP;
|
||||
mi->hitservice = 0x83;
|
||||
mi->prog_len = flen;
|
||||
mi->cap_IP = inet_addr("10.53.2.15");
|
||||
mi->protocol = 0;
|
||||
mi->media_type = 0x68;
|
||||
mi->data_flag = 0x02;
|
||||
mi->opt_num = 0;
|
||||
mh_mi->magic_num = PROTO_MAGICNUM;
|
||||
mh_mi->version = PROTO_VERSION;
|
||||
mh_mi->msg_type = MSG_DATA_METAINFO;
|
||||
mh_mi->cont_len = METAINFO_HEAD_LEN;
|
||||
|
||||
// init avs_data pkt
|
||||
*((uint64_t *)(ad->prog_id)) = prog_id;
|
||||
ad->pad = 0;
|
||||
ad->flags = 0;
|
||||
ad->offset = 0;
|
||||
mh_ad->magic_num = PROTO_MAGICNUM;
|
||||
mh_ad->version = PROTO_VERSION;
|
||||
mh_ad->msg_type = MSG_DATA_BODY;
|
||||
mh_ad->cont_len = 0;
|
||||
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
printf("Sending metainfo * 3 ... \n");
|
||||
|
||||
// send metainfo 3 times
|
||||
for (i=0; i<1; i++) {
|
||||
ret = output_udp_send_connect(sockfd, pkt_mi, mh_mi->cont_len + MSG_HEADER_LEN);
|
||||
if (ret != mh_mi->cont_len + MSG_HEADER_LEN) {
|
||||
fprintf(stderr, "output_udp_send_connect error!\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// send avs_data
|
||||
fprintf(stdout, "Sending avs_data ... \n");
|
||||
while (flen > 0) {
|
||||
int payload;
|
||||
if (flen > max_data_len) {
|
||||
payload = max_data_len;
|
||||
} else {
|
||||
payload = flen;
|
||||
}
|
||||
mh_ad->cont_len = payload + AVS_DATA_HEAD_LEN;
|
||||
flen -= payload;
|
||||
|
||||
if (1 != fread(data, payload, 1, fp)) {
|
||||
fprintf(stderr, "fread error!\n");
|
||||
break;
|
||||
}
|
||||
|
||||
//printf("%lu \n", mh_ad->cont_len + MSG_HEADER_LEN);
|
||||
ret = output_udp_send_connect(sockfd, pkt_ad, mh_ad->cont_len + MSG_HEADER_LEN);
|
||||
if (ret != mh_ad->cont_len + MSG_HEADER_LEN) {
|
||||
fprintf(stderr, "output_udp_send_connect error!\n");
|
||||
perror("");
|
||||
break;
|
||||
}
|
||||
ad->offset += payload;
|
||||
}
|
||||
return 0;
|
||||
|
||||
printf("Waiting until timesout ... ");
|
||||
for (i=0; i<timeout; i++) {
|
||||
fprintf(stdout, "\b\b\b\b\b\b\b%3d sec", i);
|
||||
fflush(stdout);
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
fprintf(stdout, "\nSending metainfo * 3 ... \n");
|
||||
// send metainfo 3 times again
|
||||
for (i=0; i<3; i++) {
|
||||
ret = output_udp_send_connect(sockfd, pkt_mi, mh_mi->cont_len + MSG_HEADER_LEN);
|
||||
if (ret != mh_mi->cont_len + MSG_HEADER_LEN) {
|
||||
fprintf(stderr, "output_udp_send_connect error!\n");
|
||||
perror("");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *rcv(void *args)
|
||||
{
|
||||
fprintf(stdout, "[Thread] Message handling thread run...\n");
|
||||
int sockfd;
|
||||
sockfd = input_udp_init(22080);
|
||||
if (sockfd < 0) {
|
||||
fprintf(stderr, "input_udp_init error");
|
||||
fflush(stderr);
|
||||
return NULL;
|
||||
}
|
||||
uint32_t src_ip;
|
||||
uint32_t size;
|
||||
char buf[1500];
|
||||
struct msg_header_t *mh = (struct msg_header_t*)buf;
|
||||
|
||||
while (1) {
|
||||
fflush(stderr);
|
||||
// recv
|
||||
while (input_udp_recv(sockfd, &src_ip, buf, &size) < 0);
|
||||
// Ignore invalid packet
|
||||
if (size < MSG_HEADER_LEN + SURVEY_MSG_FIX_LEN) {
|
||||
fprintf(stderr, "size error");
|
||||
continue;
|
||||
}
|
||||
if (PROTO_MAGICNUM != mh->magic_num) {
|
||||
fprintf(stderr, "magic num error");
|
||||
continue;
|
||||
}
|
||||
if (0x11 != mh->msg_type) {
|
||||
fprintf(stderr, "msg_type error");
|
||||
continue;
|
||||
}
|
||||
struct survey_ind_t *si = (struct survey_ind_t*)(buf + MSG_HEADER_LEN);
|
||||
printf("%s\n", (char *)si + SURVEY_MSG_FIX_LEN);
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
char *opt_output = NULL;
|
||||
char *opt_input = NULL;
|
||||
|
||||
char optchr;
|
||||
char *s;
|
||||
char buf[20];
|
||||
int len1, len2;
|
||||
uint32_t ip;
|
||||
uint16_t port;
|
||||
int sockfd;
|
||||
FILE *fp;
|
||||
uint64_t flen;
|
||||
int timeout = -1;
|
||||
uint64_t prog_id = 0x6000000000000000;
|
||||
|
||||
while ((optchr = getopt(argc, argv, "i:o:p:t:v")) != -1) {
|
||||
switch(optchr) {
|
||||
case 'i':
|
||||
opt_input = optarg;
|
||||
break;
|
||||
case 'o':
|
||||
opt_output = optarg;
|
||||
break;
|
||||
case 't':
|
||||
timeout = atoi(optarg);
|
||||
break;
|
||||
case 'p':
|
||||
if (strstr(optarg, "0x")) {
|
||||
prog_id = strtoll(optarg, (char **)NULL, 16);
|
||||
} else {
|
||||
prog_id = strtoll(optarg, (char **)NULL, 10);
|
||||
}
|
||||
break;
|
||||
case 'v':
|
||||
fprintf(stderr, "%s version : "SENDPROG_VERSION"\n", argv[0]);
|
||||
return 0;
|
||||
default:
|
||||
print_usage(argv[0]);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (NULL == opt_input || NULL == opt_output) {
|
||||
print_usage(argv[0]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (timeout < 0) {
|
||||
timeout = 1;
|
||||
}
|
||||
|
||||
s = strchr (opt_output, ':');
|
||||
if (NULL == s) {
|
||||
fprintf(stderr, "output format error: %s\n", opt_output);
|
||||
return -1;
|
||||
}
|
||||
len1 = s - opt_output;
|
||||
len2 = strlen(opt_output) - len1;
|
||||
if (0 == len1 || len2 < 2) {
|
||||
fprintf(stderr, "output format error: %s\n", opt_output);
|
||||
return -1;
|
||||
}
|
||||
strncpy(buf, opt_output, len1);
|
||||
buf[len1] = 0;
|
||||
ip = inet_addr(buf);
|
||||
s += 1;
|
||||
strncpy(buf, s, len2);
|
||||
port = htons(atoi(buf));
|
||||
|
||||
sockfd = output_udp_init_connect(ip, port, NULL);
|
||||
if (-1 == sockfd) {
|
||||
fprintf(stderr, "output_udp_init_connect error");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
fp = fopen(opt_input, "r");
|
||||
if (fp == NULL) {
|
||||
fprintf(stderr, "fopen %s\n", opt_input);
|
||||
exit(-1);
|
||||
}
|
||||
fseek(fp, 0L, SEEK_END);
|
||||
flen = ftell(fp);
|
||||
fseek(fp, 0L, SEEK_SET);
|
||||
|
||||
printf("========= <parameter> =========\n");
|
||||
printf(" prog_id : 0x%lx (hex)\n", prog_id);
|
||||
printf(" %lu (dec)\n", prog_id);
|
||||
printf(" timeout : %d s\n", timeout);
|
||||
printf(" file : %s (%lu Byte)\n", opt_input, flen);
|
||||
printf(" dst : %s %d\n", inet_ntop(AF_INET, &ip, buf, sizeof buf), ntohs(port));
|
||||
printf("========= <parameter> =========\n");
|
||||
|
||||
pthread_t rcv_tid;
|
||||
int ret = pthread_create(&rcv_tid, NULL, rcv, NULL);
|
||||
if (ret != 0) {
|
||||
printf("pthread_create error");
|
||||
return -1;
|
||||
}
|
||||
|
||||
sleep(3);
|
||||
|
||||
send_prog(fp, sockfd, flen, prog_id, timeout);
|
||||
|
||||
fclose(fp);
|
||||
output_udp_clear_connect(sockfd);
|
||||
return 0;
|
||||
}
|
||||
20
src/tool/sendprog/sendprog.h
Normal file
20
src/tool/sendprog/sendprog.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifndef __SEND_PROG_H__
|
||||
#define __SEND_PROG_H__
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <getopt.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include "input.h"
|
||||
#include "output.h"
|
||||
#include "Com_SendToBack.h"
|
||||
|
||||
#define SENDPROG_VERSION "0.1"
|
||||
#define META_FLAG_DUMP 0x02
|
||||
|
||||
#endif /* __SEND_PROG_H__ */
|
||||
482
src/tool/sendsurvey/Com_SendToBack.h
Normal file
482
src/tool/sendsurvey/Com_SendToBack.h
Normal file
@@ -0,0 +1,482 @@
|
||||
#ifndef _H_COM_SENDTOBACK_H
|
||||
#define _H_COM_SENDTOBACK_H
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
// Defination for all kinds of msg
|
||||
#define PROTO_MAGICNUM 0x5641
|
||||
#define PROTO_VERSION 3
|
||||
|
||||
// Conf Msg
|
||||
#define MSG_MANAGER 0x00 // System Manager Configure Message
|
||||
#define MSG_CONFIG_ALL 0x01 // All Configure Update Message
|
||||
#define MSG_CONFIG_INC 0x02 // Increase Configure Update Message
|
||||
#define MSG_CONFIG_REQ 0x03 // Configure Request Message
|
||||
|
||||
#define MSG_D_CONFIG_ALL 0x04 // Configure Require's Response Message .
|
||||
#define MSG_D_CONFIG_INC 0x05 // Configure Require's Response Message .
|
||||
#define MSG_D_CONFIG_REQ 0x06 // Dynamic Configure Item Require Message This message come from configure server ;
|
||||
#define MSG_TUPLE5_URL_REQ 0x0A // Tuple5 to url Request;
|
||||
|
||||
#define MSG_P2P_D_CONFIG_ALL 0x71 // Configure Require's Response Message .
|
||||
#define MSG_P2P_D_CONFIG_INC 0x72 // Configure Require's Response Message .
|
||||
#define MSG_P2P_D_CONFIG_REQ 0x73 // Configure Require's Response Message .
|
||||
// Conf Operation defination
|
||||
#define CONFIG_OP_TYPE_NO 0x00 // no any operation
|
||||
#define CONFIG_OP_TYPE_ADD 0x01 // add a config rule
|
||||
#define CONFIG_OP_TYPE_DEL 0x02 // del a config rule
|
||||
#define CONFIG_OP_TYPE_MOD 0x03 // modify a config rule
|
||||
|
||||
// Response Msg
|
||||
|
||||
#define MSG_RESP_CHECKRESULT 0x11 // Check Result notification
|
||||
#define MSG_RESP_REJECT 0x12 // Reject Message notification
|
||||
#define MSG_RESP_CHARACTER 0x13 // Character notification
|
||||
|
||||
// Log Msg
|
||||
#define MSG_MANAGER_LOG 0x20 // Manager Log Msg
|
||||
#define MSG_RESULT_LOG 0x21 // Result Log Msg for Block or Monitor
|
||||
#define MSG_STATIC_LOG 0x22 // Valid Message
|
||||
#define MSG_TUPLE5_URL_LOG 0x2A // Tuple response Message
|
||||
|
||||
// Data Msg
|
||||
#define MSG_DATA_METAINFO 0x31
|
||||
#define MSG_DATA_BODY 0x32
|
||||
#define MSG_DATA_TAIL 0x33
|
||||
|
||||
// Definatin for all types of vidio and audio file;
|
||||
#define FILE_UNKNOWN 0x00
|
||||
#define FILE_VIDEO 0x60
|
||||
#define FILE_WMV 0x61
|
||||
#define FILE_MPG 0x62
|
||||
#define FILE_FLV 0x63
|
||||
#define FILE_RMFF 0x65
|
||||
#define FILE_AVI 0x66
|
||||
#define FILE_SWF 0x67
|
||||
#define FILE_MPG4 0x68
|
||||
#define FILE_AIFF 0x69
|
||||
#define FILE_OGG 0x6A
|
||||
#define FILE_DRC 0x6B
|
||||
#define FILE_DIRECTSHOW 0x6C
|
||||
#define FILE_FLIC 0x6D
|
||||
#define FILE_INDEO 0x6E
|
||||
#define FILE_MKV 0x6F
|
||||
|
||||
#define FILE_AUDIO 0x70
|
||||
#define FILE_MP3 0x71
|
||||
|
||||
#define BE_IMAGE_TYPE(t) ((t>=FILE_IMAGE) && (t<0x90))
|
||||
#define BE_VIDEO_TYPE(t) ((t>=FILE_VIDEO) && (t<0x70))
|
||||
#define BE_AUDIO_TYPE(t) ((t>=FILE_AUDIO) && (t<0x80))
|
||||
|
||||
#define FILE_IMAGE 0x80
|
||||
|
||||
#define FILE_JPG 0x84
|
||||
#define FILE_BMP 0x85
|
||||
#define FILE_GIF 0x86
|
||||
|
||||
#define MMS_TYPE 0x90
|
||||
#define HTTP_STREAM_TYPE 0x90
|
||||
#define RTSP_RDT_TYPE 0x92
|
||||
#define RTSP_RTP_TYPE 0x91
|
||||
|
||||
|
||||
#define SERVICE_FLAG_FD 0 // FenDu Flag
|
||||
#define SERVICE_FLAG_JC 1 // JianCe Flag
|
||||
// Defination of service type ;
|
||||
#define SERVICE_IPPORT_WHITE 0x01 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_IPPORT_BLACK 0x02 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_WHITE 0x03 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_BLACK 0x04 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_WHITE 0x05 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_BLACK 0x06 //<2F><>Ŀ<EFBFBD><C4BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// added by cxj 20100811
|
||||
#define SERVICE_P2P_STATIC_WHITEIP 0x15
|
||||
#define SERVICE_P2P_BI_WHITEIP 0x16
|
||||
#define SERVICE_P2P_MI_WHITEIP 0x17
|
||||
|
||||
#define SERVICE_P2P_EMULE_SERVER 0x51 //
|
||||
#define SERVICE_P2P_EMULE_KEY 0x52 //
|
||||
#define SERVICE_P2P_EMULE_FILEID 0x53 //
|
||||
#define SERVICE_P2P_EMULE_NODE 0x54 //
|
||||
|
||||
#define SERVICE_P2P_BT_INFOHASH 0x41 // BT Infohash Black List
|
||||
#define SERVICE_P2P_BT_NODE 0x44 // BT Bone Node
|
||||
#define SERVICE_P2P_BT_SERVICE 0x61 // BT DHT Index Server List
|
||||
|
||||
#define SERVICE_P2P_BT_ECLIPSE_IPLIST 0x45
|
||||
#define SERVICE_P2P_BT_POLLUTION_IPLIST 0x46
|
||||
#define SERVICE_P2P_EMULE_POLLUTION_IPLIST 0x55
|
||||
|
||||
|
||||
//
|
||||
#define SERVICE_EMULE_SERVER 0x71 //<2F><>ĿΨһID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_KEYS 0x72 //<2F><>ĿΨһID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_FHID 0x73 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_FNAME 0x74 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_EMULE_NODE 0x75 //emule<6C><65>hashkey<65><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define SERVICE_IPPORT_WHITE_JC 0x81 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_IPPORT_BLACK_JC 0x82 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_WHITE_JC 0x83 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_URL_BLACK_JC 0x84 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_WHITE_JC 0x85 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SERVICE_HOST_BLACK_JC 0x86 //IP+PORT<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#define MAX_SERVICE_NUM 0xff
|
||||
// Manager Command Defination
|
||||
#define MANAGER_AV_SYS_CMD 0x02010000 //<2F><><EFBFBD><EFBFBD>Ƶϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MANAGER_AV_PIC_CMD 0x02020000 //
|
||||
#define MANAGER_AV_SYS_QUERY 0x01 //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>״̬
|
||||
#define MANAGER_AV_SYS_OPEN 0x02 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>
|
||||
#define MANAGER_AV_SYS_CLOSE 0x03 //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5><C4A3>
|
||||
#define MANAGER_AV_SYS_CHANGE 0x04 //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>Ƶģ<C6B5>鴦<EFBFBD><E9B4A6>״̬
|
||||
// add by cxj for P2P Manager Command
|
||||
#define MANAGER_P2P_BI_GROUP_UPDATE 0x11 // BISys's IP List Update
|
||||
#define MANAGER_P2P_MI_GROUP_UPDATE 0x12 // MISys's IP List Update
|
||||
#define MANAGER_P2P_BT_ECLIPSE_UPDATE 0x13 // MISys's IP List Update
|
||||
|
||||
|
||||
|
||||
// Manager Command state Defination
|
||||
#define MANAGER_PROCESS_STATE_UNKNOWN 0x00 // δ֪
|
||||
#define MANAGER_PROCESS_STATE_RUNING 0x10 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_OK 0x20 // <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_UNTHORITY 0x30 // δ<><CEB4>Ȩ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_FAILED 0x40 // <20>ɻָ<C9BB><D6B8>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
#define MANAGER_PROCESS_STATE_ERROR 0x50 // <20><><EFBFBD>ɻָ<C9BB><D6B8>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
|
||||
|
||||
#define MATCH_METHOD_SUB 0x00 // sub match;
|
||||
#define MATCH_METHOD_FUL 0x01 // full match;
|
||||
|
||||
#define MsgBodyHeadLen sizeof(struct msg_body_t)
|
||||
#define UDP_SENDBACK_MAX_LEN 4*1024
|
||||
#define UDP_SENDBACK_MAX_DATALEN UDP_SENDBACK_MAX_LEN-MsgHeadLen-MsgBodyHeadLen
|
||||
|
||||
|
||||
typedef unsigned char UINT8;
|
||||
typedef unsigned int UINT;
|
||||
typedef unsigned long long UINT64;
|
||||
typedef unsigned int UINT32;
|
||||
typedef unsigned short UINT16;
|
||||
typedef unsigned char UCHAR;
|
||||
typedef char CHAR;
|
||||
typedef unsigned short USHORT;
|
||||
|
||||
#define MSG_HEADER_LEN sizeof(struct msg_header_t)
|
||||
struct msg_header_t {
|
||||
USHORT magic_num; /* ħ<><C4A7><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Ϊ0xECD5BCBC */
|
||||
UCHAR version; /* <20>汾<EFBFBD>ţ<EFBFBD>ĿǰֵΪ1 */
|
||||
UCHAR msg_type; /* <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> */
|
||||
UINT cont_len; /* <20><>Ϣ<EFBFBD><CFA2><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD> */
|
||||
}; /* sizeof = 8B */
|
||||
|
||||
#define OPT_HEAD_LEN (sizeof(UINT)+1)
|
||||
struct opt_unit_t {
|
||||
UINT opt_len; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> */
|
||||
UCHAR opt_type; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
CHAR *opt_value; /* <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
};
|
||||
|
||||
//ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
#define MAX_STATICSSENDNUM 10000
|
||||
struct statlog_unit_t {
|
||||
UINT16 unit_len; // <20><>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||||
UINT16 log_type; // ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
UINT32 hit_num; // <20><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
|
||||
char prog_id[8]; // <20><>ĿID
|
||||
|
||||
};
|
||||
struct msg_statlog_t {
|
||||
UINT32 log_time; // ͳ<><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
UINT32 log_num; // <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>־<EFBFBD><D6BE>Ԫ<EFBFBD><D4AA>
|
||||
};
|
||||
|
||||
|
||||
//<2F><>Ԫ<EFBFBD>鶨<EFBFBD><E9B6A8>
|
||||
struct msg_tup5_req_t {
|
||||
UINT src_ip;
|
||||
UINT dst_ip;
|
||||
USHORT src_port;
|
||||
USHORT dst_port;
|
||||
UCHAR protocol;
|
||||
CHAR pad[3];
|
||||
};
|
||||
|
||||
// Service Configure Unit Defination
|
||||
|
||||
struct cfg_unit_t {
|
||||
UCHAR op_type;
|
||||
UCHAR service;
|
||||
UCHAR weight;
|
||||
UCHAR flag;
|
||||
UINT cfg_id;
|
||||
UINT unit_len;
|
||||
CHAR * value;
|
||||
};
|
||||
#define CFG_UNIT_HEAD_LEN (sizeof(UCHAR)*4 + sizeof(UINT)*2)
|
||||
|
||||
// added by cxj 20110811
|
||||
// dynamic Configure Unit Defination;
|
||||
struct d_cfg_unit_t{
|
||||
UINT64 groupid;
|
||||
UINT service;
|
||||
UINT unit_len;
|
||||
CHAR *value;
|
||||
};
|
||||
|
||||
#define D_CFG_UNIT_HEAD_LEN (sizeof(uint64_t) * sizeof(INT) *2)
|
||||
|
||||
// Manager Configure Unit Defination
|
||||
|
||||
struct cmd_unit_t{
|
||||
UINT optor_id;
|
||||
UINT cmd_sn;
|
||||
UINT cmd_code;
|
||||
UINT cmd_val;
|
||||
UINT opt_len;
|
||||
};
|
||||
|
||||
#define CMD_UNIT_HEAD_LEN (sizeof(UINT) *5)
|
||||
|
||||
struct msg_cmdlog_t {
|
||||
UINT log_time; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʱ<EFBFBD>䡣<EFBFBD><E4A1A3>ֵ<EFBFBD><D6B5>[0,0x7FFFFFFF]<5D><><EFBFBD><EFBFBD>ʱȡֵ<C8A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ time_t<5F>ṹ<EFBFBD><E1B9B9>ֵ<EFBFBD><D6B5><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
||||
UINT log_num; // <20><><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
||||
// struct cmdlog_unit_t[log_num] cmdlog_unit;
|
||||
};
|
||||
|
||||
#define MSG_CMDLOG_HEAD_LEN (sizeof(UINT) *2)
|
||||
|
||||
struct cmdlog_unit_t {
|
||||
UINT CLJ_IP; //ִ<><D6B4>ָ<EFBFBD><D6B8><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT operator_ID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>ԱID
|
||||
UINT cmd_SN; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ˮ<EFBFBD><CBAE>
|
||||
UINT cmd_code; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8>
|
||||
UCHAR state; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ָ<EFBFBD><D6B8><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>״̬
|
||||
UCHAR pad; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶΣ<D6B6>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
USHORT opt_len; // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'\0'<27>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
// char * opt_value;
|
||||
};
|
||||
|
||||
#define CMDLOG_UNIT_HEAD_LEN 20
|
||||
|
||||
|
||||
|
||||
// Dynamic Configure Defination;
|
||||
// The Unit Defination be same with cfg_struct_t, only the flag value is not same;
|
||||
#define DYNAMIC_WHITE_FLAG 0
|
||||
#define DYNAMIC_BLACK_FLAG 1
|
||||
|
||||
struct msg_cfg_t {
|
||||
UINT cfg_time;
|
||||
UINT cfg_num;
|
||||
};
|
||||
#define MSG_CFG_HEAD_LEN (sizeof(UINT) * 2)
|
||||
|
||||
|
||||
|
||||
struct avs_data_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT8 pad;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
UINT8 flags;// <20><><EFBFBD>ݱ<EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UINT64 offset:48; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>е<EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
|
||||
|
||||
/* unsigned long long offset; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5><C4B6><EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>
|
||||
UINT dst_ip; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ
|
||||
UINT src_ip; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>ԴIP<49><50>ַ
|
||||
USHORT dst_port; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6>
|
||||
USHORT src_port; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>Դ<EFBFBD>˿<EFBFBD>
|
||||
*/
|
||||
};
|
||||
#define AVS_DATA_HEAD_LEN (sizeof(struct avs_data_t))
|
||||
//Protocol Defination
|
||||
#define PROTO_HTTP 0x01
|
||||
#define PROTO_SMTP 0x02
|
||||
#define PROTO_POP3 0x03
|
||||
#define PROTO_FTP 0x04
|
||||
|
||||
#define PROTO_HTTP_STREAM 0x81
|
||||
#define PROTO_RTSP_RDT 0x82
|
||||
#define PROTO_RTSP_RTP 0x83
|
||||
#define PROTO_MMS 0x84
|
||||
#define PROTO_ED2K 0x85
|
||||
|
||||
#define HITSER_WHITE _IPPORT 0x81
|
||||
#define HITSER_BLACK _IPPORT 0x82
|
||||
#define HITSER_WHITE_URL 0x83
|
||||
#define HITSER_BLACK_URL 0x84
|
||||
#define HITSER_WHITE_DOMAIN 0x85
|
||||
#define HITSER_BLACK_DOMAIN 0x86
|
||||
|
||||
// Data_flag defination
|
||||
struct metainfo_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
CHAR flag;
|
||||
UINT8 hitservice;
|
||||
UINT64 prog_len:48;
|
||||
UINT cap_IP;
|
||||
UCHAR protocol; // Э<><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR media_type; // Media type
|
||||
UCHAR data_flag; // Data Flag;
|
||||
UCHAR opt_num; //ѡ<><D1A1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||
struct opt_unit_t * opt_unit;
|
||||
};
|
||||
#define METAINFO_HEAD_LEN 24
|
||||
//<2F><>Ӧ<EFBFBD><D3A6>Ϣ<EFBFBD><CFA2>ʽ
|
||||
struct survey_ind_t {
|
||||
CHAR prog_id[8]; // <20><>Ŀ<EFBFBD><C4BF>ID<49><44><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR service; // ҵ<><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CHAR level; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г̶<D0B3>
|
||||
CHAR pad[2]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
||||
UINT cfg_id; // <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ID
|
||||
UINT file_header_size; //
|
||||
UINT file_packet_size;
|
||||
};
|
||||
#define SURVEY_MSG_FIX_LEN (sizeof(struct survey_ind_t))
|
||||
#define SURVEY_PAYLOAD_LEN_MAX (1460-MSG_HEADER_LEN-SURVEY_MSG_FIX_LEN)
|
||||
|
||||
struct msg_survey_ack_t {
|
||||
CHAR prog_id[8];
|
||||
UCHAR service;
|
||||
CHAR level;
|
||||
CHAR pad[2];
|
||||
UINT cfg_id;
|
||||
};
|
||||
|
||||
|
||||
struct live_data_t {
|
||||
CHAR prog_id[8];
|
||||
};
|
||||
|
||||
|
||||
// for log
|
||||
|
||||
struct msg_log_t
|
||||
{
|
||||
|
||||
CHAR prog_id[8];// program rule id;
|
||||
UINT cfg_id; // hitted rule id;
|
||||
UINT fount_time; // found time
|
||||
UINT server_ip; // server ip;
|
||||
UINT client_ip; // client ip;
|
||||
USHORT server_port; // server port;
|
||||
USHORT client_port; // client port;
|
||||
UCHAR protocol; // translation protocol num;
|
||||
UCHAR service; // service type;
|
||||
UCHAR level; // result level;
|
||||
UCHAR fd_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0<><30>ʾ<EFBFBD><CABE>̬<EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʾ<EFBFBD><CABE>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>2<EFBFBD><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>С<EFBFBD>
|
||||
USHORT opt_num; // option number;
|
||||
struct opt_unit_t * opt_info; // option point;
|
||||
|
||||
};
|
||||
//#define MSG_LOG_FIX_LEN (sizeof(struct msg_log_t)-sizeof(void *))
|
||||
|
||||
#define FD_TYPE_DYNAMIC 0
|
||||
#define FD_TYPE_STATIC 1
|
||||
#define FD_TYPE_ANALYSE 2
|
||||
|
||||
#define SET_LOG_MSG(log,pid,cid,ft,sip,cip,sport,cport,pro,s,l,ftype,o_num,o_info) \
|
||||
{ \
|
||||
memcpy(log.prog_id,pid,8); \
|
||||
log.cfg_id = cid;\
|
||||
log.fount_time = ft; \
|
||||
log.server_ip = sip; \
|
||||
log.client_ip = cip; \
|
||||
log.server_port =sport; \
|
||||
log.client_port =cport; \
|
||||
log.protocol = pro; \
|
||||
log.service = s; \
|
||||
log.level = l; \
|
||||
log.fd_type = ftype; \
|
||||
log.opt_num = o_num; \
|
||||
log.opt_info = o_info; \
|
||||
}
|
||||
|
||||
|
||||
struct msg_tup5_resp_t {
|
||||
UINT src_ip; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ԴIP<49><50>ַ
|
||||
UINT dst_ip; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>ַ
|
||||
USHORT src_port; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Դ<EFBFBD>˿<EFBFBD>
|
||||
USHORT dst_port; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ŀ<EFBFBD>Ķ˿<C4B6>
|
||||
UCHAR protocol; // <20><>Ԫ<EFBFBD><D4AA>֮һ<D6AE><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UCHAR pad; // <20><><EFBFBD><EFBFBD><EFBFBD>ֶΣ<D6B6><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ֵ
|
||||
USHORT cont_len; // <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
||||
char *cont; // <20><>Ϣ<EFBFBD><CFA2>URL<52><4C><EFBFBD><EFBFBD>
|
||||
};
|
||||
#define MSG_TUP5_RESP_FIX_LEN 16
|
||||
|
||||
|
||||
// Common
|
||||
int feedback_mem (int service, void *info, char *buf, int buf_len);
|
||||
// soft balance
|
||||
int feedback_mem_soft_balance (unsigned long long pid, char *buf, int buf_len);
|
||||
// soft balance
|
||||
int direct_feedback_mem_soft_balance (unsigned long long pid, char *buf, int buf_len, int thread_num);
|
||||
// hardware balance
|
||||
int feedback_mem_balance (unsigned long long pid, char *buf, int buf_len);
|
||||
// feedback init
|
||||
int feedback_init();
|
||||
//void gfn_AppCounterInit();
|
||||
//void gfn_AppCounterFree();
|
||||
//int gfn_AppCounterAdd(int ProtolType);
|
||||
//void gfn_AddSendBackOpt(struct msg_header_t *pMsgHeader,struct msg_body_t *pMsgBodyHeader,
|
||||
// char *pSendBackBuf,int OptType,char *SrcData,int SrcLen,char **ppOptbuf);
|
||||
//void gfn_AddSendBackData(struct msg_header_t *pMsgHeader,struct msg_body_t *pMsgBodyHeader,
|
||||
// char *pSendBackBuf,char *SrcData,int SrcLen,char **ppOptbuf);
|
||||
//int gfn_iSendToBEnd(tdLog* pstLog, int iLen, CBuffer* pBuf);
|
||||
|
||||
|
||||
|
||||
//void InitLogMessageLocal();
|
||||
//int LogMessageLocal(char *buf,int buflen);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
|
||||
struct CFG_Common
|
||||
{
|
||||
UCHAR pad;
|
||||
UCHAR service;
|
||||
UCHAR weight;
|
||||
UCHAR flag;
|
||||
UINT cfg_id;
|
||||
};
|
||||
|
||||
#define CFG_COMMON_LEN sizeof(struct CFG_Common)
|
||||
|
||||
struct CFG_AV_Content
|
||||
{
|
||||
struct CFG_Common comm_header; // common header;
|
||||
UINT contentlen; // length of content;
|
||||
char * content; // AV config Content;
|
||||
};
|
||||
|
||||
#define CFG_AV_CONTENT_FIXLEN (CFG_COMMON_LEN+sizeof(UINT))
|
||||
|
||||
struct CFG_IP_SETTING{
|
||||
UINT sip; // server ip;
|
||||
UINT mask; //
|
||||
USHORT port; // server port;
|
||||
UCHAR udpkey[4];
|
||||
}__attribute__((__packed__));
|
||||
|
||||
|
||||
int sendnto(int s, const void *msg, int n, unsigned int flags, const struct sockaddr *to, int tolen);
|
||||
|
||||
int gfn_iSetAVNewRuleTable(int iScanType,int iTableType,int iRuleNum,void * pstRTable);
|
||||
|
||||
int gfn_CScan_AVSearchMem(int iScanType,int iRuleType, char *data, int datalen, int begPos,struct cfg_unit_t *gResult, int *pFoundPostion, void **ppParam,int thread_num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
46
src/tool/sendsurvey/Makefile
Normal file
46
src/tool/sendsurvey/Makefile
Normal file
@@ -0,0 +1,46 @@
|
||||
# CREATED by Guo Le, 08/23/2010
|
||||
#
|
||||
CC = gcc
|
||||
PROGRAM = backend sendsurvey sendbeat
|
||||
CFLAGS = -g -Wall
|
||||
INCLUDE = -I. -I./common
|
||||
LDFLAGS = -lpthread -Wall
|
||||
OBJS = backend.o
|
||||
DEPLOY_DIR = /home/ictsoft/fake_backend
|
||||
BUILD_DIR = ./debug
|
||||
|
||||
.PHONY : all clean
|
||||
all: $(PROGRAM)
|
||||
|
||||
backend: backend.o
|
||||
$(CC) $(INCLUDE) $(LDFLAGS) backend.o common.a -o backend
|
||||
|
||||
sendsurvey: sendsurvey.c
|
||||
gcc $(INCLUDE) $(LDFLAGS) -g -Wall sendsurvey.c common.a -o sendsurvey
|
||||
|
||||
sendbeat: sendbeat.c
|
||||
gcc $(INCLUDE) $(LDFLAGS) -g -Wall sendbeat.c common.a -o sendbeat
|
||||
|
||||
$(OBJS): %.o: %.c
|
||||
$(CC) -c $(CFLAGS) $(INCLUDE) $< -o $@
|
||||
|
||||
|
||||
clean:
|
||||
$(RM) *.o $(PROGRAM)
|
||||
|
||||
localdeploy: $(PROGRAM)
|
||||
@echo "- Kill previous process ---------------------------------------------"
|
||||
@-killall -vq backend_video backend_audio;
|
||||
@echo "---------------------------------------------------------------------"
|
||||
@echo "- Check deploy dir --------------------------------------------------"
|
||||
@if [ ! -d "$(DEPLOY_DIR)" ]; \
|
||||
then echo "DEPLOY_DIR doesn't exist!"; mkdir -p $(DEPLOY_DIR); \
|
||||
else echo "DEPLOY_DIR exist, remove all"; fi
|
||||
@-rm -rfv $(DEPLOY_DIR)/*
|
||||
@echo "---------------------------------------------------------------------"
|
||||
@echo "- Deploy ------------------------------------------------------------"
|
||||
@cp -rv $(BUILD_DIR)/* $(DEPLOY_DIR)
|
||||
@echo "---------------------------------------------------------------------"
|
||||
@echo "- Run ---------------------------------------------------------------"
|
||||
@cd $(DEPLOY_DIR); ./r2;
|
||||
@ps au | grep -e "backend" | grep -v grep
|
||||
BIN
src/tool/sendsurvey/backend
Normal file
BIN
src/tool/sendsurvey/backend
Normal file
Binary file not shown.
211
src/tool/sendsurvey/backend.c
Normal file
211
src/tool/sendsurvey/backend.c
Normal file
@@ -0,0 +1,211 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "loadprof.h"
|
||||
#include "input.h"
|
||||
#include "output.h"
|
||||
#include "Com_SendToBack.h"
|
||||
#include "log.h"
|
||||
#include "backend.h"
|
||||
|
||||
delay_queue_t *g_delay_queue;
|
||||
parameter_t *g_para = NULL;
|
||||
|
||||
delay_queue_t *delay_queue_init(int max_len)
|
||||
{
|
||||
delay_queue_t *dq = (delay_queue_t *)calloc(1, sizeof(delay_queue_t));
|
||||
if (NULL == dq) {
|
||||
fprintf(stderr, "No enough Memory for queue!");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dq->buf = (delay_elem_t *)calloc(max_len, sizeof(delay_elem_t));
|
||||
if (NULL == dq->buf) {
|
||||
fprintf(stderr, "No enough Memory for q->buf!");
|
||||
free(dq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dq->head = 0;
|
||||
dq->tail = 1;
|
||||
dq->max_len = max_len;
|
||||
return dq;
|
||||
}
|
||||
|
||||
|
||||
void *send_routine(void *arg)
|
||||
{
|
||||
uint16_t port_survey = g_para->survey_port;
|
||||
FILE *fd_log;
|
||||
|
||||
char buf_survey[BUF_SIZE];
|
||||
struct msg_header_t *mh_survey = (struct msg_header_t*)buf_survey;
|
||||
struct survey_ind_t *msi_survey = (struct survey_ind_t *)(buf_survey + MSG_HEADER_LEN);
|
||||
|
||||
memset(buf_survey, 0, BUF_SIZE);
|
||||
mh_survey->magic_num = PROTO_MAGICNUM;
|
||||
mh_survey->version = 3;
|
||||
mh_survey->msg_type = MSG_RESP_CHECKRESULT;
|
||||
mh_survey->cont_len = SURVEY_MSG_FIX_LEN;
|
||||
msi_survey->service = g_para->service;
|
||||
msi_survey->level = g_para->level;
|
||||
msi_survey->cfg_id = 28;
|
||||
|
||||
int fd_survey = output_udp_init();
|
||||
if (fd_survey < 0) {
|
||||
printf("socket error!");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (g_para->log_switch) {
|
||||
fd_log = fopen(LOG_SURVEY,"ab+");
|
||||
if (NULL == fd_log) {
|
||||
printf("log init error!");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
int head_new;
|
||||
int url_len;
|
||||
delay_queue_t *q = g_delay_queue;
|
||||
while (1) {
|
||||
head_new = (q->head + 1) % q->max_len;
|
||||
while (head_new == q->tail)
|
||||
if (g_para->timeout > 0)
|
||||
sleep(g_para->timeout);
|
||||
else
|
||||
sleep(1);
|
||||
delay_elem_t *qe = q->buf + head_new;
|
||||
while (qe->expire_time > time(NULL))
|
||||
sleep(1);
|
||||
|
||||
memcpy(msi_survey->prog_id, qe->prog_id, 8);
|
||||
url_len = 1 + sprintf(buf_survey + MSG_HEADER_LEN + SURVEY_MSG_FIX_LEN, "/home/log/%lu.log", *((uint64_t *)qe->prog_id));
|
||||
mh_survey->cont_len = SURVEY_MSG_FIX_LEN + url_len;
|
||||
output_udp_send(fd_survey, qe->src_ip, port_survey,
|
||||
(unsigned char *)buf_survey, MSG_HEADER_LEN + SURVEY_MSG_FIX_LEN + url_len);
|
||||
|
||||
if (g_para->log_switch) {
|
||||
char ntop_buf[20];
|
||||
write_local_log(fd_log, "dst %s pid %-11llu service 0x%2x level %d",
|
||||
inet_ntop(AF_INET, &qe->src_ip, ntop_buf, sizeof ntop_buf),
|
||||
*((unsigned long long*)msi_survey->prog_id),
|
||||
msi_survey->service,
|
||||
msi_survey->level);
|
||||
fflush(fd_log);
|
||||
}
|
||||
|
||||
q->head = head_new;
|
||||
}
|
||||
}
|
||||
|
||||
int read_profile(char *fpath)
|
||||
{
|
||||
if (NULL != g_para) {
|
||||
fprintf(stderr, "g_para has been initialized!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
static parameter_t para;
|
||||
g_para = ¶
|
||||
|
||||
int rc;
|
||||
/* [SYSTEM] */
|
||||
rc = profile_read_nport(fpath, "SYSTEM", "SURVEY_PORT", &g_para->survey_port, 1);
|
||||
if (rc < 1)
|
||||
return -1;
|
||||
rc = profile_read_nport(fpath, "SYSTEM", "DATA_PORT", &g_para->data_port, 1);
|
||||
if (rc < 1)
|
||||
return -1;
|
||||
rc = profile_read_nbyte_hex(fpath, "SYSTEM", "SERVICE", &g_para->service, 1);
|
||||
if (rc < 1)
|
||||
return -1;
|
||||
profile_read_uint(fpath, "SYSTEM", "TIMEOUT", &g_para->timeout, 0);
|
||||
profile_read_uint(fpath, "SYSTEM", "LOG_SWITCH", &g_para->log_switch, 0);
|
||||
profile_read_uint(fpath, "SYSTEM", "LEVEL", &g_para->level, 0);
|
||||
profile_read_uint(fpath, "SYSTEM", "QUEUE_SIZE", &g_para->queue_size, 10);
|
||||
if (g_para->queue_size < 1)
|
||||
g_para->queue_size = 10;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
char *fprof;
|
||||
if (argc > 2) {
|
||||
fprintf(stderr, "\nUsage: %s [<config_file>]\n", argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
// read in configs
|
||||
fprof = DEFAULT_CONFIG;
|
||||
if (argc > 1)
|
||||
fprof = argv[1];
|
||||
|
||||
if (read_profile(fprof) < 0) {
|
||||
fprintf(stderr, "[Error]: Read config file error!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
g_delay_queue = delay_queue_init(g_para->queue_size);
|
||||
if (NULL == g_delay_queue) {
|
||||
printf("g_delay_queue init error!");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int fd_data = input_udp_init(g_para->data_port);
|
||||
if (fd_data < 0) {
|
||||
printf("socket error!");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
FILE *fd_error;
|
||||
if (g_para->log_switch) {
|
||||
fd_error = fopen(LOG_ERROR,"ab+");
|
||||
if (NULL == fd_error) {
|
||||
printf("log init error!");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
pthread_t send_tid;
|
||||
pthread_create(&send_tid, NULL, send_routine, NULL);
|
||||
|
||||
uint32_t src_ip;
|
||||
uint32_t size;
|
||||
char buf_data[BUF_SIZE];
|
||||
struct msg_header_t *mh_data = (struct msg_header_t *)buf_data;
|
||||
struct metainfo_t *mi_data = (struct metainfo_t *)(buf_data + MSG_HEADER_LEN);
|
||||
delay_queue_t *q = g_delay_queue;
|
||||
delay_elem_t *qe;
|
||||
while(1) {
|
||||
if (input_udp_recv(fd_data, &src_ip, (unsigned char *)buf_data, &size) < 0)
|
||||
continue;
|
||||
if (MSG_DATA_METAINFO != mh_data->msg_type)
|
||||
continue;
|
||||
if ((q->tail + 1) % q->max_len == q->head) {
|
||||
if (g_para->log_switch) {
|
||||
char ntop_buf[20];
|
||||
write_local_log(fd_error, "drop - src %s pid %-11llu",
|
||||
inet_ntop(AF_INET, &src_ip, ntop_buf, sizeof ntop_buf),
|
||||
*((unsigned long long*)mi_data->prog_id));
|
||||
fflush(fd_error);
|
||||
}
|
||||
sleep (1);
|
||||
continue;
|
||||
}
|
||||
qe = q->buf + q->tail;
|
||||
memcpy(qe->prog_id, mi_data->prog_id, 8);
|
||||
qe->expire_time = time(NULL) + g_para->timeout;
|
||||
qe->src_ip = src_ip;
|
||||
q->tail = (q->tail + 1) % q->max_len;
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
} // end of function main
|
||||
|
||||
19
src/tool/sendsurvey/backend.conf
Normal file
19
src/tool/sendsurvey/backend.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
[SYSTEM]
|
||||
|
||||
#发送建议端口
|
||||
SURVEY_PORT = 22080
|
||||
#接受数据端口
|
||||
DATA_PORT = 33096
|
||||
|
||||
#队列大小
|
||||
QUEUE_SIZE = 100000
|
||||
#延迟发送时间
|
||||
TIMEOUT = 1
|
||||
|
||||
#建议相关选项
|
||||
SERVICE = 0x11
|
||||
LEVEL = 90
|
||||
|
||||
#日志开关
|
||||
LOG_SWITCH = 1
|
||||
|
||||
35
src/tool/sendsurvey/backend.h
Normal file
35
src/tool/sendsurvey/backend.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _BACKEND_H_
|
||||
#define _BACKEND_H_
|
||||
|
||||
#include "loadprof.h"
|
||||
|
||||
#define BUF_SIZE 1500
|
||||
|
||||
#define LOG_SURVEY "survey.log"
|
||||
#define LOG_ERROR "error.log"
|
||||
#define DEFAULT_CONFIG "backend.conf"
|
||||
|
||||
typedef struct parameter {
|
||||
uint32_t log_switch;
|
||||
uint32_t timeout;
|
||||
uint32_t queue_size;
|
||||
uint32_t level;
|
||||
uint16_t data_port;
|
||||
uint16_t survey_port;
|
||||
uint8_t service;
|
||||
} parameter_t;
|
||||
|
||||
typedef struct delay_elem {
|
||||
char prog_id[8];
|
||||
long long expire_time;
|
||||
uint32_t src_ip;
|
||||
} delay_elem_t;
|
||||
|
||||
typedef struct delay_queue {
|
||||
delay_elem_t *buf;
|
||||
int head;
|
||||
int tail;
|
||||
int max_len;
|
||||
} delay_queue_t;
|
||||
|
||||
#endif /*_BACKEND_H_*/
|
||||
BIN
src/tool/sendsurvey/common.a
Normal file
BIN
src/tool/sendsurvey/common.a
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user